diff --git a/.github/actions/javascript/authorChecklist/index.js b/.github/actions/javascript/authorChecklist/index.js
index 44d3f203f786..e5f746f8001c 100644
--- a/.github/actions/javascript/authorChecklist/index.js
+++ b/.github/actions/javascript/authorChecklist/index.js
@@ -49929,8 +49929,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports["default"] = void 0;
var _index = __nccwpck_require__(9380);
-var _default = createTypeAnnotationBasedOnTypeof;
-exports["default"] = _default;
+var _default = exports["default"] = createTypeAnnotationBasedOnTypeof;
function createTypeAnnotationBasedOnTypeof(type) {
switch (type) {
case "string":
@@ -51553,12 +51552,11 @@ function tsConstructSignatureDeclaration(typeParameters = null, parameters, type
typeAnnotation
});
}
-function tsPropertySignature(key, typeAnnotation = null, initializer = null) {
+function tsPropertySignature(key, typeAnnotation = null) {
return (0, _validateNode.default)({
type: "TSPropertySignature",
key,
typeAnnotation,
- initializer,
kind: null
});
}
@@ -53966,106 +53964,56 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.WHILE_TYPES = exports.USERWHITESPACABLE_TYPES = exports.UNARYLIKE_TYPES = exports.TYPESCRIPT_TYPES = exports.TSTYPE_TYPES = exports.TSTYPEELEMENT_TYPES = exports.TSENTITYNAME_TYPES = exports.TSBASETYPE_TYPES = exports.TERMINATORLESS_TYPES = exports.STATEMENT_TYPES = exports.STANDARDIZED_TYPES = exports.SCOPABLE_TYPES = exports.PUREISH_TYPES = exports.PROPERTY_TYPES = exports.PRIVATE_TYPES = exports.PATTERN_TYPES = exports.PATTERNLIKE_TYPES = exports.OBJECTMEMBER_TYPES = exports.MODULESPECIFIER_TYPES = exports.MODULEDECLARATION_TYPES = exports.MISCELLANEOUS_TYPES = exports.METHOD_TYPES = exports.LVAL_TYPES = exports.LOOP_TYPES = exports.LITERAL_TYPES = exports.JSX_TYPES = exports.IMPORTOREXPORTDECLARATION_TYPES = exports.IMMUTABLE_TYPES = exports.FUNCTION_TYPES = exports.FUNCTIONPARENT_TYPES = exports.FOR_TYPES = exports.FORXSTATEMENT_TYPES = exports.FLOW_TYPES = exports.FLOWTYPE_TYPES = exports.FLOWPREDICATE_TYPES = exports.FLOWDECLARATION_TYPES = exports.FLOWBASEANNOTATION_TYPES = exports.EXPRESSION_TYPES = exports.EXPRESSIONWRAPPER_TYPES = exports.EXPORTDECLARATION_TYPES = exports.ENUMMEMBER_TYPES = exports.ENUMBODY_TYPES = exports.DECLARATION_TYPES = exports.CONDITIONAL_TYPES = exports.COMPLETIONSTATEMENT_TYPES = exports.CLASS_TYPES = exports.BLOCK_TYPES = exports.BLOCKPARENT_TYPES = exports.BINARY_TYPES = exports.ACCESSOR_TYPES = void 0;
var _index = __nccwpck_require__(5078);
-const STANDARDIZED_TYPES = _index.FLIPPED_ALIAS_KEYS["Standardized"];
-exports.STANDARDIZED_TYPES = STANDARDIZED_TYPES;
-const EXPRESSION_TYPES = _index.FLIPPED_ALIAS_KEYS["Expression"];
-exports.EXPRESSION_TYPES = EXPRESSION_TYPES;
-const BINARY_TYPES = _index.FLIPPED_ALIAS_KEYS["Binary"];
-exports.BINARY_TYPES = BINARY_TYPES;
-const SCOPABLE_TYPES = _index.FLIPPED_ALIAS_KEYS["Scopable"];
-exports.SCOPABLE_TYPES = SCOPABLE_TYPES;
-const BLOCKPARENT_TYPES = _index.FLIPPED_ALIAS_KEYS["BlockParent"];
-exports.BLOCKPARENT_TYPES = BLOCKPARENT_TYPES;
-const BLOCK_TYPES = _index.FLIPPED_ALIAS_KEYS["Block"];
-exports.BLOCK_TYPES = BLOCK_TYPES;
-const STATEMENT_TYPES = _index.FLIPPED_ALIAS_KEYS["Statement"];
-exports.STATEMENT_TYPES = STATEMENT_TYPES;
-const TERMINATORLESS_TYPES = _index.FLIPPED_ALIAS_KEYS["Terminatorless"];
-exports.TERMINATORLESS_TYPES = TERMINATORLESS_TYPES;
-const COMPLETIONSTATEMENT_TYPES = _index.FLIPPED_ALIAS_KEYS["CompletionStatement"];
-exports.COMPLETIONSTATEMENT_TYPES = COMPLETIONSTATEMENT_TYPES;
-const CONDITIONAL_TYPES = _index.FLIPPED_ALIAS_KEYS["Conditional"];
-exports.CONDITIONAL_TYPES = CONDITIONAL_TYPES;
-const LOOP_TYPES = _index.FLIPPED_ALIAS_KEYS["Loop"];
-exports.LOOP_TYPES = LOOP_TYPES;
-const WHILE_TYPES = _index.FLIPPED_ALIAS_KEYS["While"];
-exports.WHILE_TYPES = WHILE_TYPES;
-const EXPRESSIONWRAPPER_TYPES = _index.FLIPPED_ALIAS_KEYS["ExpressionWrapper"];
-exports.EXPRESSIONWRAPPER_TYPES = EXPRESSIONWRAPPER_TYPES;
-const FOR_TYPES = _index.FLIPPED_ALIAS_KEYS["For"];
-exports.FOR_TYPES = FOR_TYPES;
-const FORXSTATEMENT_TYPES = _index.FLIPPED_ALIAS_KEYS["ForXStatement"];
-exports.FORXSTATEMENT_TYPES = FORXSTATEMENT_TYPES;
-const FUNCTION_TYPES = _index.FLIPPED_ALIAS_KEYS["Function"];
-exports.FUNCTION_TYPES = FUNCTION_TYPES;
-const FUNCTIONPARENT_TYPES = _index.FLIPPED_ALIAS_KEYS["FunctionParent"];
-exports.FUNCTIONPARENT_TYPES = FUNCTIONPARENT_TYPES;
-const PUREISH_TYPES = _index.FLIPPED_ALIAS_KEYS["Pureish"];
-exports.PUREISH_TYPES = PUREISH_TYPES;
-const DECLARATION_TYPES = _index.FLIPPED_ALIAS_KEYS["Declaration"];
-exports.DECLARATION_TYPES = DECLARATION_TYPES;
-const PATTERNLIKE_TYPES = _index.FLIPPED_ALIAS_KEYS["PatternLike"];
-exports.PATTERNLIKE_TYPES = PATTERNLIKE_TYPES;
-const LVAL_TYPES = _index.FLIPPED_ALIAS_KEYS["LVal"];
-exports.LVAL_TYPES = LVAL_TYPES;
-const TSENTITYNAME_TYPES = _index.FLIPPED_ALIAS_KEYS["TSEntityName"];
-exports.TSENTITYNAME_TYPES = TSENTITYNAME_TYPES;
-const LITERAL_TYPES = _index.FLIPPED_ALIAS_KEYS["Literal"];
-exports.LITERAL_TYPES = LITERAL_TYPES;
-const IMMUTABLE_TYPES = _index.FLIPPED_ALIAS_KEYS["Immutable"];
-exports.IMMUTABLE_TYPES = IMMUTABLE_TYPES;
-const USERWHITESPACABLE_TYPES = _index.FLIPPED_ALIAS_KEYS["UserWhitespacable"];
-exports.USERWHITESPACABLE_TYPES = USERWHITESPACABLE_TYPES;
-const METHOD_TYPES = _index.FLIPPED_ALIAS_KEYS["Method"];
-exports.METHOD_TYPES = METHOD_TYPES;
-const OBJECTMEMBER_TYPES = _index.FLIPPED_ALIAS_KEYS["ObjectMember"];
-exports.OBJECTMEMBER_TYPES = OBJECTMEMBER_TYPES;
-const PROPERTY_TYPES = _index.FLIPPED_ALIAS_KEYS["Property"];
-exports.PROPERTY_TYPES = PROPERTY_TYPES;
-const UNARYLIKE_TYPES = _index.FLIPPED_ALIAS_KEYS["UnaryLike"];
-exports.UNARYLIKE_TYPES = UNARYLIKE_TYPES;
-const PATTERN_TYPES = _index.FLIPPED_ALIAS_KEYS["Pattern"];
-exports.PATTERN_TYPES = PATTERN_TYPES;
-const CLASS_TYPES = _index.FLIPPED_ALIAS_KEYS["Class"];
-exports.CLASS_TYPES = CLASS_TYPES;
-const IMPORTOREXPORTDECLARATION_TYPES = _index.FLIPPED_ALIAS_KEYS["ImportOrExportDeclaration"];
-exports.IMPORTOREXPORTDECLARATION_TYPES = IMPORTOREXPORTDECLARATION_TYPES;
-const EXPORTDECLARATION_TYPES = _index.FLIPPED_ALIAS_KEYS["ExportDeclaration"];
-exports.EXPORTDECLARATION_TYPES = EXPORTDECLARATION_TYPES;
-const MODULESPECIFIER_TYPES = _index.FLIPPED_ALIAS_KEYS["ModuleSpecifier"];
-exports.MODULESPECIFIER_TYPES = MODULESPECIFIER_TYPES;
-const ACCESSOR_TYPES = _index.FLIPPED_ALIAS_KEYS["Accessor"];
-exports.ACCESSOR_TYPES = ACCESSOR_TYPES;
-const PRIVATE_TYPES = _index.FLIPPED_ALIAS_KEYS["Private"];
-exports.PRIVATE_TYPES = PRIVATE_TYPES;
-const FLOW_TYPES = _index.FLIPPED_ALIAS_KEYS["Flow"];
-exports.FLOW_TYPES = FLOW_TYPES;
-const FLOWTYPE_TYPES = _index.FLIPPED_ALIAS_KEYS["FlowType"];
-exports.FLOWTYPE_TYPES = FLOWTYPE_TYPES;
-const FLOWBASEANNOTATION_TYPES = _index.FLIPPED_ALIAS_KEYS["FlowBaseAnnotation"];
-exports.FLOWBASEANNOTATION_TYPES = FLOWBASEANNOTATION_TYPES;
-const FLOWDECLARATION_TYPES = _index.FLIPPED_ALIAS_KEYS["FlowDeclaration"];
-exports.FLOWDECLARATION_TYPES = FLOWDECLARATION_TYPES;
-const FLOWPREDICATE_TYPES = _index.FLIPPED_ALIAS_KEYS["FlowPredicate"];
-exports.FLOWPREDICATE_TYPES = FLOWPREDICATE_TYPES;
-const ENUMBODY_TYPES = _index.FLIPPED_ALIAS_KEYS["EnumBody"];
-exports.ENUMBODY_TYPES = ENUMBODY_TYPES;
-const ENUMMEMBER_TYPES = _index.FLIPPED_ALIAS_KEYS["EnumMember"];
-exports.ENUMMEMBER_TYPES = ENUMMEMBER_TYPES;
-const JSX_TYPES = _index.FLIPPED_ALIAS_KEYS["JSX"];
-exports.JSX_TYPES = JSX_TYPES;
-const MISCELLANEOUS_TYPES = _index.FLIPPED_ALIAS_KEYS["Miscellaneous"];
-exports.MISCELLANEOUS_TYPES = MISCELLANEOUS_TYPES;
-const TYPESCRIPT_TYPES = _index.FLIPPED_ALIAS_KEYS["TypeScript"];
-exports.TYPESCRIPT_TYPES = TYPESCRIPT_TYPES;
-const TSTYPEELEMENT_TYPES = _index.FLIPPED_ALIAS_KEYS["TSTypeElement"];
-exports.TSTYPEELEMENT_TYPES = TSTYPEELEMENT_TYPES;
-const TSTYPE_TYPES = _index.FLIPPED_ALIAS_KEYS["TSType"];
-exports.TSTYPE_TYPES = TSTYPE_TYPES;
-const TSBASETYPE_TYPES = _index.FLIPPED_ALIAS_KEYS["TSBaseType"];
-exports.TSBASETYPE_TYPES = TSBASETYPE_TYPES;
-const MODULEDECLARATION_TYPES = IMPORTOREXPORTDECLARATION_TYPES;
-exports.MODULEDECLARATION_TYPES = MODULEDECLARATION_TYPES;
+const STANDARDIZED_TYPES = exports.STANDARDIZED_TYPES = _index.FLIPPED_ALIAS_KEYS["Standardized"];
+const EXPRESSION_TYPES = exports.EXPRESSION_TYPES = _index.FLIPPED_ALIAS_KEYS["Expression"];
+const BINARY_TYPES = exports.BINARY_TYPES = _index.FLIPPED_ALIAS_KEYS["Binary"];
+const SCOPABLE_TYPES = exports.SCOPABLE_TYPES = _index.FLIPPED_ALIAS_KEYS["Scopable"];
+const BLOCKPARENT_TYPES = exports.BLOCKPARENT_TYPES = _index.FLIPPED_ALIAS_KEYS["BlockParent"];
+const BLOCK_TYPES = exports.BLOCK_TYPES = _index.FLIPPED_ALIAS_KEYS["Block"];
+const STATEMENT_TYPES = exports.STATEMENT_TYPES = _index.FLIPPED_ALIAS_KEYS["Statement"];
+const TERMINATORLESS_TYPES = exports.TERMINATORLESS_TYPES = _index.FLIPPED_ALIAS_KEYS["Terminatorless"];
+const COMPLETIONSTATEMENT_TYPES = exports.COMPLETIONSTATEMENT_TYPES = _index.FLIPPED_ALIAS_KEYS["CompletionStatement"];
+const CONDITIONAL_TYPES = exports.CONDITIONAL_TYPES = _index.FLIPPED_ALIAS_KEYS["Conditional"];
+const LOOP_TYPES = exports.LOOP_TYPES = _index.FLIPPED_ALIAS_KEYS["Loop"];
+const WHILE_TYPES = exports.WHILE_TYPES = _index.FLIPPED_ALIAS_KEYS["While"];
+const EXPRESSIONWRAPPER_TYPES = exports.EXPRESSIONWRAPPER_TYPES = _index.FLIPPED_ALIAS_KEYS["ExpressionWrapper"];
+const FOR_TYPES = exports.FOR_TYPES = _index.FLIPPED_ALIAS_KEYS["For"];
+const FORXSTATEMENT_TYPES = exports.FORXSTATEMENT_TYPES = _index.FLIPPED_ALIAS_KEYS["ForXStatement"];
+const FUNCTION_TYPES = exports.FUNCTION_TYPES = _index.FLIPPED_ALIAS_KEYS["Function"];
+const FUNCTIONPARENT_TYPES = exports.FUNCTIONPARENT_TYPES = _index.FLIPPED_ALIAS_KEYS["FunctionParent"];
+const PUREISH_TYPES = exports.PUREISH_TYPES = _index.FLIPPED_ALIAS_KEYS["Pureish"];
+const DECLARATION_TYPES = exports.DECLARATION_TYPES = _index.FLIPPED_ALIAS_KEYS["Declaration"];
+const PATTERNLIKE_TYPES = exports.PATTERNLIKE_TYPES = _index.FLIPPED_ALIAS_KEYS["PatternLike"];
+const LVAL_TYPES = exports.LVAL_TYPES = _index.FLIPPED_ALIAS_KEYS["LVal"];
+const TSENTITYNAME_TYPES = exports.TSENTITYNAME_TYPES = _index.FLIPPED_ALIAS_KEYS["TSEntityName"];
+const LITERAL_TYPES = exports.LITERAL_TYPES = _index.FLIPPED_ALIAS_KEYS["Literal"];
+const IMMUTABLE_TYPES = exports.IMMUTABLE_TYPES = _index.FLIPPED_ALIAS_KEYS["Immutable"];
+const USERWHITESPACABLE_TYPES = exports.USERWHITESPACABLE_TYPES = _index.FLIPPED_ALIAS_KEYS["UserWhitespacable"];
+const METHOD_TYPES = exports.METHOD_TYPES = _index.FLIPPED_ALIAS_KEYS["Method"];
+const OBJECTMEMBER_TYPES = exports.OBJECTMEMBER_TYPES = _index.FLIPPED_ALIAS_KEYS["ObjectMember"];
+const PROPERTY_TYPES = exports.PROPERTY_TYPES = _index.FLIPPED_ALIAS_KEYS["Property"];
+const UNARYLIKE_TYPES = exports.UNARYLIKE_TYPES = _index.FLIPPED_ALIAS_KEYS["UnaryLike"];
+const PATTERN_TYPES = exports.PATTERN_TYPES = _index.FLIPPED_ALIAS_KEYS["Pattern"];
+const CLASS_TYPES = exports.CLASS_TYPES = _index.FLIPPED_ALIAS_KEYS["Class"];
+const IMPORTOREXPORTDECLARATION_TYPES = exports.IMPORTOREXPORTDECLARATION_TYPES = _index.FLIPPED_ALIAS_KEYS["ImportOrExportDeclaration"];
+const EXPORTDECLARATION_TYPES = exports.EXPORTDECLARATION_TYPES = _index.FLIPPED_ALIAS_KEYS["ExportDeclaration"];
+const MODULESPECIFIER_TYPES = exports.MODULESPECIFIER_TYPES = _index.FLIPPED_ALIAS_KEYS["ModuleSpecifier"];
+const ACCESSOR_TYPES = exports.ACCESSOR_TYPES = _index.FLIPPED_ALIAS_KEYS["Accessor"];
+const PRIVATE_TYPES = exports.PRIVATE_TYPES = _index.FLIPPED_ALIAS_KEYS["Private"];
+const FLOW_TYPES = exports.FLOW_TYPES = _index.FLIPPED_ALIAS_KEYS["Flow"];
+const FLOWTYPE_TYPES = exports.FLOWTYPE_TYPES = _index.FLIPPED_ALIAS_KEYS["FlowType"];
+const FLOWBASEANNOTATION_TYPES = exports.FLOWBASEANNOTATION_TYPES = _index.FLIPPED_ALIAS_KEYS["FlowBaseAnnotation"];
+const FLOWDECLARATION_TYPES = exports.FLOWDECLARATION_TYPES = _index.FLIPPED_ALIAS_KEYS["FlowDeclaration"];
+const FLOWPREDICATE_TYPES = exports.FLOWPREDICATE_TYPES = _index.FLIPPED_ALIAS_KEYS["FlowPredicate"];
+const ENUMBODY_TYPES = exports.ENUMBODY_TYPES = _index.FLIPPED_ALIAS_KEYS["EnumBody"];
+const ENUMMEMBER_TYPES = exports.ENUMMEMBER_TYPES = _index.FLIPPED_ALIAS_KEYS["EnumMember"];
+const JSX_TYPES = exports.JSX_TYPES = _index.FLIPPED_ALIAS_KEYS["JSX"];
+const MISCELLANEOUS_TYPES = exports.MISCELLANEOUS_TYPES = _index.FLIPPED_ALIAS_KEYS["Miscellaneous"];
+const TYPESCRIPT_TYPES = exports.TYPESCRIPT_TYPES = _index.FLIPPED_ALIAS_KEYS["TypeScript"];
+const TSTYPEELEMENT_TYPES = exports.TSTYPEELEMENT_TYPES = _index.FLIPPED_ALIAS_KEYS["TSTypeElement"];
+const TSTYPE_TYPES = exports.TSTYPE_TYPES = _index.FLIPPED_ALIAS_KEYS["TSType"];
+const TSBASETYPE_TYPES = exports.TSBASETYPE_TYPES = _index.FLIPPED_ALIAS_KEYS["TSBaseType"];
+const MODULEDECLARATION_TYPES = exports.MODULEDECLARATION_TYPES = IMPORTOREXPORTDECLARATION_TYPES;
//# sourceMappingURL=index.js.map
@@ -54082,49 +54030,29 @@ Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports.UPDATE_OPERATORS = exports.UNARY_OPERATORS = exports.STRING_UNARY_OPERATORS = exports.STATEMENT_OR_BLOCK_KEYS = exports.NUMBER_UNARY_OPERATORS = exports.NUMBER_BINARY_OPERATORS = exports.NOT_LOCAL_BINDING = exports.LOGICAL_OPERATORS = exports.INHERIT_KEYS = exports.FOR_INIT_KEYS = exports.FLATTENABLE_KEYS = exports.EQUALITY_BINARY_OPERATORS = exports.COMPARISON_BINARY_OPERATORS = exports.COMMENT_KEYS = exports.BOOLEAN_UNARY_OPERATORS = exports.BOOLEAN_NUMBER_BINARY_OPERATORS = exports.BOOLEAN_BINARY_OPERATORS = exports.BLOCK_SCOPED_SYMBOL = exports.BINARY_OPERATORS = exports.ASSIGNMENT_OPERATORS = void 0;
-const STATEMENT_OR_BLOCK_KEYS = ["consequent", "body", "alternate"];
-exports.STATEMENT_OR_BLOCK_KEYS = STATEMENT_OR_BLOCK_KEYS;
-const FLATTENABLE_KEYS = ["body", "expressions"];
-exports.FLATTENABLE_KEYS = FLATTENABLE_KEYS;
-const FOR_INIT_KEYS = ["left", "init"];
-exports.FOR_INIT_KEYS = FOR_INIT_KEYS;
-const COMMENT_KEYS = ["leadingComments", "trailingComments", "innerComments"];
-exports.COMMENT_KEYS = COMMENT_KEYS;
-const LOGICAL_OPERATORS = ["||", "&&", "??"];
-exports.LOGICAL_OPERATORS = LOGICAL_OPERATORS;
-const UPDATE_OPERATORS = ["++", "--"];
-exports.UPDATE_OPERATORS = UPDATE_OPERATORS;
-const BOOLEAN_NUMBER_BINARY_OPERATORS = [">", "<", ">=", "<="];
-exports.BOOLEAN_NUMBER_BINARY_OPERATORS = BOOLEAN_NUMBER_BINARY_OPERATORS;
-const EQUALITY_BINARY_OPERATORS = ["==", "===", "!=", "!=="];
-exports.EQUALITY_BINARY_OPERATORS = EQUALITY_BINARY_OPERATORS;
-const COMPARISON_BINARY_OPERATORS = [...EQUALITY_BINARY_OPERATORS, "in", "instanceof"];
-exports.COMPARISON_BINARY_OPERATORS = COMPARISON_BINARY_OPERATORS;
-const BOOLEAN_BINARY_OPERATORS = [...COMPARISON_BINARY_OPERATORS, ...BOOLEAN_NUMBER_BINARY_OPERATORS];
-exports.BOOLEAN_BINARY_OPERATORS = BOOLEAN_BINARY_OPERATORS;
-const NUMBER_BINARY_OPERATORS = ["-", "/", "%", "*", "**", "&", "|", ">>", ">>>", "<<", "^"];
-exports.NUMBER_BINARY_OPERATORS = NUMBER_BINARY_OPERATORS;
-const BINARY_OPERATORS = ["+", ...NUMBER_BINARY_OPERATORS, ...BOOLEAN_BINARY_OPERATORS, "|>"];
-exports.BINARY_OPERATORS = BINARY_OPERATORS;
-const ASSIGNMENT_OPERATORS = ["=", "+=", ...NUMBER_BINARY_OPERATORS.map(op => op + "="), ...LOGICAL_OPERATORS.map(op => op + "=")];
-exports.ASSIGNMENT_OPERATORS = ASSIGNMENT_OPERATORS;
-const BOOLEAN_UNARY_OPERATORS = ["delete", "!"];
-exports.BOOLEAN_UNARY_OPERATORS = BOOLEAN_UNARY_OPERATORS;
-const NUMBER_UNARY_OPERATORS = ["+", "-", "~"];
-exports.NUMBER_UNARY_OPERATORS = NUMBER_UNARY_OPERATORS;
-const STRING_UNARY_OPERATORS = ["typeof"];
-exports.STRING_UNARY_OPERATORS = STRING_UNARY_OPERATORS;
-const UNARY_OPERATORS = ["void", "throw", ...BOOLEAN_UNARY_OPERATORS, ...NUMBER_UNARY_OPERATORS, ...STRING_UNARY_OPERATORS];
-exports.UNARY_OPERATORS = UNARY_OPERATORS;
-const INHERIT_KEYS = {
+const STATEMENT_OR_BLOCK_KEYS = exports.STATEMENT_OR_BLOCK_KEYS = ["consequent", "body", "alternate"];
+const FLATTENABLE_KEYS = exports.FLATTENABLE_KEYS = ["body", "expressions"];
+const FOR_INIT_KEYS = exports.FOR_INIT_KEYS = ["left", "init"];
+const COMMENT_KEYS = exports.COMMENT_KEYS = ["leadingComments", "trailingComments", "innerComments"];
+const LOGICAL_OPERATORS = exports.LOGICAL_OPERATORS = ["||", "&&", "??"];
+const UPDATE_OPERATORS = exports.UPDATE_OPERATORS = ["++", "--"];
+const BOOLEAN_NUMBER_BINARY_OPERATORS = exports.BOOLEAN_NUMBER_BINARY_OPERATORS = [">", "<", ">=", "<="];
+const EQUALITY_BINARY_OPERATORS = exports.EQUALITY_BINARY_OPERATORS = ["==", "===", "!=", "!=="];
+const COMPARISON_BINARY_OPERATORS = exports.COMPARISON_BINARY_OPERATORS = [...EQUALITY_BINARY_OPERATORS, "in", "instanceof"];
+const BOOLEAN_BINARY_OPERATORS = exports.BOOLEAN_BINARY_OPERATORS = [...COMPARISON_BINARY_OPERATORS, ...BOOLEAN_NUMBER_BINARY_OPERATORS];
+const NUMBER_BINARY_OPERATORS = exports.NUMBER_BINARY_OPERATORS = ["-", "/", "%", "*", "**", "&", "|", ">>", ">>>", "<<", "^"];
+const BINARY_OPERATORS = exports.BINARY_OPERATORS = ["+", ...NUMBER_BINARY_OPERATORS, ...BOOLEAN_BINARY_OPERATORS, "|>"];
+const ASSIGNMENT_OPERATORS = exports.ASSIGNMENT_OPERATORS = ["=", "+=", ...NUMBER_BINARY_OPERATORS.map(op => op + "="), ...LOGICAL_OPERATORS.map(op => op + "=")];
+const BOOLEAN_UNARY_OPERATORS = exports.BOOLEAN_UNARY_OPERATORS = ["delete", "!"];
+const NUMBER_UNARY_OPERATORS = exports.NUMBER_UNARY_OPERATORS = ["+", "-", "~"];
+const STRING_UNARY_OPERATORS = exports.STRING_UNARY_OPERATORS = ["typeof"];
+const UNARY_OPERATORS = exports.UNARY_OPERATORS = ["void", "throw", ...BOOLEAN_UNARY_OPERATORS, ...NUMBER_UNARY_OPERATORS, ...STRING_UNARY_OPERATORS];
+const INHERIT_KEYS = exports.INHERIT_KEYS = {
optional: ["typeAnnotation", "typeParameters", "returnType"],
force: ["start", "loc", "end"]
};
-exports.INHERIT_KEYS = INHERIT_KEYS;
-const BLOCK_SCOPED_SYMBOL = Symbol.for("var used to be block scoped");
-exports.BLOCK_SCOPED_SYMBOL = BLOCK_SCOPED_SYMBOL;
-const NOT_LOCAL_BINDING = Symbol.for("should not be considered a local binding");
-exports.NOT_LOCAL_BINDING = NOT_LOCAL_BINDING;
+const BLOCK_SCOPED_SYMBOL = exports.BLOCK_SCOPED_SYMBOL = Symbol.for("var used to be block scoped");
+const NOT_LOCAL_BINDING = exports.NOT_LOCAL_BINDING = Symbol.for("should not be considered a local binding");
//# sourceMappingURL=index.js.map
@@ -54167,6 +54095,7 @@ var _getBindingIdentifiers = __nccwpck_require__(3331);
var _index = __nccwpck_require__(2605);
var _index2 = __nccwpck_require__(9380);
var _cloneNode = __nccwpck_require__(5823);
+;
function gatherSequenceExpressions(nodes, scope, declars) {
const exprs = [];
let ensureLastUndefined = true;
@@ -54317,8 +54246,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports["default"] = void 0;
var _index = __nccwpck_require__(2605);
-var _default = toExpression;
-exports["default"] = _default;
+var _default = exports["default"] = toExpression;
function toExpression(node) {
if ((0, _index.isExpressionStatement)(node)) {
node = node.expression;
@@ -54425,13 +54353,15 @@ toKeyAlias.increment = function () {
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
"use strict";
+var __webpack_unused_export__;
-Object.defineProperty(exports, "__esModule", ({
+__webpack_unused_export__ = ({
value: true
-}));
+});
exports["default"] = toSequenceExpression;
var _gatherSequenceExpressions = __nccwpck_require__(1022);
+;
function toSequenceExpression(nodes, scope) {
if (!(nodes != null && nodes.length)) return;
const declars = [];
@@ -54460,8 +54390,7 @@ Object.defineProperty(exports, "__esModule", ({
exports["default"] = void 0;
var _index = __nccwpck_require__(2605);
var _index2 = __nccwpck_require__(9380);
-var _default = toStatement;
-exports["default"] = _default;
+var _default = exports["default"] = toStatement;
function toStatement(node, ignore) {
if ((0, _index.isStatement)(node)) {
return node;
@@ -54508,8 +54437,7 @@ Object.defineProperty(exports, "__esModule", ({
exports["default"] = void 0;
var _isValidIdentifier = __nccwpck_require__(1698);
var _index = __nccwpck_require__(9380);
-var _default = valueToNode;
-exports["default"] = _default;
+var _default = exports["default"] = valueToNode;
const objectToString = Function.call.bind(Object.prototype.toString);
function isRegExp(value) {
return objectToString(value) === "[object RegExp]";
@@ -55881,7 +55809,7 @@ const classMethodOrPropertyCommon = () => ({
},
key: {
validate: (0, _utils.chain)(function () {
- const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral");
+ const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral");
const computed = (0, _utils.assertNodeType)("Expression");
return function (node, key, val) {
const validator = node.computed ? computed : normal;
@@ -56291,10 +56219,9 @@ Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports.DEPRECATED_ALIASES = void 0;
-const DEPRECATED_ALIASES = {
+const DEPRECATED_ALIASES = exports.DEPRECATED_ALIASES = {
ModuleDeclaration: "ImportOrExportDeclaration"
};
-exports.DEPRECATED_ALIASES = DEPRECATED_ALIASES;
//# sourceMappingURL=deprecated-aliases.js.map
@@ -57036,8 +56963,7 @@ _toFastProperties(_utils.BUILDER_KEYS);
_toFastProperties(_utils.DEPRECATED_KEYS);
_toFastProperties(_placeholders.PLACEHOLDERS_ALIAS);
_toFastProperties(_placeholders.PLACEHOLDERS_FLIPPED_ALIAS);
-const TYPES = [].concat(Object.keys(_utils.VISITOR_KEYS), Object.keys(_utils.FLIPPED_ALIAS_KEYS), Object.keys(_utils.DEPRECATED_KEYS));
-exports.TYPES = TYPES;
+const TYPES = exports.TYPES = [].concat(Object.keys(_utils.VISITOR_KEYS), Object.keys(_utils.FLIPPED_ALIAS_KEYS), Object.keys(_utils.DEPRECATED_KEYS));
//# sourceMappingURL=index.js.map
@@ -57261,19 +57187,16 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports.PLACEHOLDERS_FLIPPED_ALIAS = exports.PLACEHOLDERS_ALIAS = exports.PLACEHOLDERS = void 0;
var _utils = __nccwpck_require__(4106);
-const PLACEHOLDERS = ["Identifier", "StringLiteral", "Expression", "Statement", "Declaration", "BlockStatement", "ClassBody", "Pattern"];
-exports.PLACEHOLDERS = PLACEHOLDERS;
-const PLACEHOLDERS_ALIAS = {
+const PLACEHOLDERS = exports.PLACEHOLDERS = ["Identifier", "StringLiteral", "Expression", "Statement", "Declaration", "BlockStatement", "ClassBody", "Pattern"];
+const PLACEHOLDERS_ALIAS = exports.PLACEHOLDERS_ALIAS = {
Declaration: ["Statement"],
Pattern: ["PatternLike", "LVal"]
};
-exports.PLACEHOLDERS_ALIAS = PLACEHOLDERS_ALIAS;
for (const type of PLACEHOLDERS) {
const alias = _utils.ALIAS_KEYS[type];
if (alias != null && alias.length) PLACEHOLDERS_ALIAS[type] = alias;
}
-const PLACEHOLDERS_FLIPPED_ALIAS = {};
-exports.PLACEHOLDERS_FLIPPED_ALIAS = PLACEHOLDERS_FLIPPED_ALIAS;
+const PLACEHOLDERS_FLIPPED_ALIAS = exports.PLACEHOLDERS_FLIPPED_ALIAS = {};
Object.keys(PLACEHOLDERS_ALIAS).forEach(type => {
PLACEHOLDERS_ALIAS[type].forEach(alias => {
if (!Object.hasOwnProperty.call(PLACEHOLDERS_FLIPPED_ALIAS, alias)) {
@@ -57372,11 +57295,10 @@ const namedTypeElementCommon = () => ({
});
defineType("TSPropertySignature", {
aliases: ["TSTypeElement"],
- visitor: ["key", "typeAnnotation", "initializer"],
+ visitor: ["key", "typeAnnotation"],
fields: Object.assign({}, namedTypeElementCommon(), {
readonly: (0, _utils.validateOptional)(bool),
typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation"),
- initializer: (0, _utils.validateOptionalType)("Expression"),
kind: {
validate: (0, _utils.assertOneOf)("get", "set")
}
@@ -57816,20 +57738,13 @@ exports.validateOptionalType = validateOptionalType;
exports.validateType = validateType;
var _is = __nccwpck_require__(3860);
var _validate = __nccwpck_require__(8036);
-const VISITOR_KEYS = {};
-exports.VISITOR_KEYS = VISITOR_KEYS;
-const ALIAS_KEYS = {};
-exports.ALIAS_KEYS = ALIAS_KEYS;
-const FLIPPED_ALIAS_KEYS = {};
-exports.FLIPPED_ALIAS_KEYS = FLIPPED_ALIAS_KEYS;
-const NODE_FIELDS = {};
-exports.NODE_FIELDS = NODE_FIELDS;
-const BUILDER_KEYS = {};
-exports.BUILDER_KEYS = BUILDER_KEYS;
-const DEPRECATED_KEYS = {};
-exports.DEPRECATED_KEYS = DEPRECATED_KEYS;
-const NODE_PARENT_VALIDATIONS = {};
-exports.NODE_PARENT_VALIDATIONS = NODE_PARENT_VALIDATIONS;
+const VISITOR_KEYS = exports.VISITOR_KEYS = {};
+const ALIAS_KEYS = exports.ALIAS_KEYS = {};
+const FLIPPED_ALIAS_KEYS = exports.FLIPPED_ALIAS_KEYS = {};
+const NODE_FIELDS = exports.NODE_FIELDS = {};
+const BUILDER_KEYS = exports.BUILDER_KEYS = {};
+const DEPRECATED_KEYS = exports.DEPRECATED_KEYS = {};
+const NODE_PARENT_VALIDATIONS = exports.NODE_PARENT_VALIDATIONS = {};
function getType(val) {
if (Array.isArray(val)) {
return "array";
@@ -58109,7 +58024,6 @@ var _exportNames = {
toExpression: true,
toIdentifier: true,
toKeyAlias: true,
- toSequenceExpression: true,
toStatement: true,
valueToNode: true,
appendToMemberExpression: true,
@@ -58450,12 +58364,6 @@ Object.defineProperty(exports, "toKeyAlias", ({
return _toKeyAlias.default;
}
}));
-Object.defineProperty(exports, "toSequenceExpression", ({
- enumerable: true,
- get: function () {
- return _toSequenceExpression.default;
- }
-}));
Object.defineProperty(exports, "toStatement", ({
enumerable: true,
get: function () {
@@ -58584,7 +58492,6 @@ var _toComputedKey = __nccwpck_require__(2544);
var _toExpression = __nccwpck_require__(5626);
var _toIdentifier = __nccwpck_require__(5166);
var _toKeyAlias = __nccwpck_require__(5640);
-var _toSequenceExpression = __nccwpck_require__(8902);
var _toStatement = __nccwpck_require__(1938);
var _valueToNode = __nccwpck_require__(2129);
var _index5 = __nccwpck_require__(5078);
@@ -58652,12 +58559,14 @@ Object.keys(_index6).forEach(function (key) {
});
});
var _deprecationWarning = __nccwpck_require__(496);
-const react = {
+const react = exports.react = {
isReactComponent: _isReactComponent.default,
isCompatTag: _isCompatTag.default,
buildChildren: _buildChildren.default
};
-exports.react = react;
+{
+ exports.toSequenceExpression = __nccwpck_require__(8902)["default"];
+}
//# sourceMappingURL=index.js.map
@@ -58959,12 +58868,15 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports["default"] = getBindingIdentifiers;
var _index = __nccwpck_require__(2605);
-function getBindingIdentifiers(node, duplicates, outerOnly) {
+function getBindingIdentifiers(node, duplicates, outerOnly, newBindingsOnly) {
const search = [].concat(node);
const ids = Object.create(null);
while (search.length) {
const id = search.shift();
if (!id) continue;
+ if (newBindingsOnly && ((0, _index.isAssignmentExpression)(id) || (0, _index.isUnaryExpression)(id))) {
+ continue;
+ }
const keys = getBindingIdentifiers.keys[id.type];
if ((0, _index.isIdentifier)(id)) {
if (duplicates) {
@@ -59060,8 +58972,7 @@ Object.defineProperty(exports, "__esModule", ({
}));
exports["default"] = void 0;
var _getBindingIdentifiers = __nccwpck_require__(3331);
-var _default = getOuterBindingIdentifiers;
-exports["default"] = _default;
+var _default = exports["default"] = getOuterBindingIdentifiers;
function getOuterBindingIdentifiers(node, duplicates) {
return (0, _getBindingIdentifiers.default)(node, duplicates, true);
}
@@ -62670,8 +62581,7 @@ Object.defineProperty(exports, "__esModule", ({
exports["default"] = void 0;
var _buildMatchMemberExpression = __nccwpck_require__(1941);
const isReactComponent = (0, _buildMatchMemberExpression.default)("React.Component");
-var _default = isReactComponent;
-exports["default"] = _default;
+var _default = exports["default"] = isReactComponent;
//# sourceMappingURL=isReactComponent.js.map
diff --git a/.github/workflows/createNewVersion.yml b/.github/workflows/createNewVersion.yml
index f772bfb818f0..653495b5a01a 100644
--- a/.github/workflows/createNewVersion.yml
+++ b/.github/workflows/createNewVersion.yml
@@ -89,7 +89,8 @@ jobs:
./package-lock.json \
./android/app/build.gradle \
./ios/NewExpensify/Info.plist \
- ./ios/NewExpensifyTests/Info.plist
+ ./ios/NewExpensifyTests/Info.plist \
+ ./ios/NotificationServiceExtension/Info.plist
git commit -m "Update version to ${{ steps.bumpVersion.outputs.NEW_VERSION }}"
- name: Update main branch
diff --git a/Gemfile b/Gemfile
index 33f0cd9333db..751e05d2d32b 100644
--- a/Gemfile
+++ b/Gemfile
@@ -3,7 +3,8 @@ source "https://rubygems.org"
# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version
ruby ">= 2.6.10"
-gem "cocoapods", "~> 1.12"
+gem "cocoapods", "~> 1.13"
+gem "activesupport", ">= 6.1.7.3", "< 7.1.0"
gem "fastlane", "~> 2"
gem "xcpretty", "~> 0"
diff --git a/Gemfile.lock b/Gemfile.lock
index fcf4f878e2de..ed190579d306 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -3,12 +3,11 @@ GEM
specs:
CFPropertyList (3.0.6)
rexml
- activesupport (6.1.7.3)
+ activesupport (7.0.8)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
- zeitwerk (~> 2.3)
addressable (2.8.5)
public_suffix (>= 2.0.2, < 6.0)
algoliasearch (1.27.5)
@@ -36,10 +35,10 @@ GEM
aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4)
claide (1.1.0)
- cocoapods (1.12.1)
+ cocoapods (1.13.0)
addressable (~> 2.8)
claide (>= 1.0.2, < 2.0)
- cocoapods-core (= 1.12.1)
+ cocoapods-core (= 1.13.0)
cocoapods-deintegrate (>= 1.0.3, < 2.0)
cocoapods-downloader (>= 1.6.0, < 2.0)
cocoapods-plugins (>= 1.0.0, < 2.0)
@@ -53,8 +52,8 @@ GEM
molinillo (~> 0.8.0)
nap (~> 1.0)
ruby-macho (>= 2.3.0, < 3.0)
- xcodeproj (>= 1.21.0, < 2.0)
- cocoapods-core (1.12.1)
+ xcodeproj (>= 1.23.0, < 2.0)
+ cocoapods-core (1.13.0)
activesupport (>= 5.0, < 8)
addressable (~> 2.8)
algoliasearch (~> 1.0)
@@ -162,7 +161,7 @@ GEM
apktools (~> 0.7)
aws-sdk-s3 (~> 1)
mime-types (~> 3.3)
- ffi (1.15.5)
+ ffi (1.16.3)
fourflusher (2.3.1)
fuzzy_match (2.0.4)
gh_inspector (1.1.3)
@@ -207,17 +206,17 @@ GEM
http-cookie (1.0.5)
domain_name (~> 0.5)
httpclient (2.8.3)
- i18n (1.13.0)
+ i18n (1.14.1)
concurrent-ruby (~> 1.0)
jmespath (1.6.2)
json (2.6.3)
jwt (2.7.1)
- mime-types (3.4.1)
+ mime-types (3.5.1)
mime-types-data (~> 3.2015)
- mime-types-data (3.2023.0218.1)
+ mime-types-data (3.2023.1003)
mini_magick (4.12.0)
mini_mime (1.1.5)
- minitest (5.18.0)
+ minitest (5.20.0)
molinillo (0.8.0)
multi_json (1.15.0)
multipart-post (2.3.0)
@@ -257,7 +256,7 @@ GEM
tty-screen (0.8.1)
tty-spinner (0.9.3)
tty-cursor (~> 0.7)
- typhoeus (1.4.0)
+ typhoeus (1.4.1)
ethon (>= 0.9.0)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
@@ -279,7 +278,6 @@ GEM
rouge (~> 2.0.7)
xcpretty-travis-formatter (1.0.1)
xcpretty (~> 0.2, >= 0.0.7)
- zeitwerk (2.6.8)
PLATFORMS
arm64-darwin-21
@@ -289,7 +287,8 @@ PLATFORMS
x86_64-linux
DEPENDENCIES
- cocoapods (~> 1.12)
+ activesupport (>= 6.1.7.3, < 7.1.0)
+ cocoapods (~> 1.13)
fastlane (~> 2)
fastlane-plugin-aws_s3
xcpretty (~> 0)
diff --git a/__mocks__/react-native-webview.js b/__mocks__/react-native-webview.js
new file mode 100644
index 000000000000..58875fd5288b
--- /dev/null
+++ b/__mocks__/react-native-webview.js
@@ -0,0 +1,6 @@
+jest.mock('react-native-webview', () => {
+ const {View} = require('react-native');
+ return {
+ WebView: () => View,
+ };
+});
diff --git a/android/app/build.gradle b/android/app/build.gradle
index fea9cdad0a90..ed2944632aad 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -1,4 +1,5 @@
apply plugin: "com.android.application"
+apply plugin: "org.jetbrains.kotlin.android"
apply plugin: "com.facebook.react"
apply plugin: "com.google.firebase.firebase-perf"
apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"
@@ -88,6 +89,7 @@ def jscFlavor = 'org.webkit:android-jsc:+'
android {
ndkVersion rootProject.ext.ndkVersion
+ buildToolsVersion rootProject.ext.buildToolsVersion
compileSdkVersion rootProject.ext.compileSdkVersion
namespace "com.expensify.chat"
@@ -96,8 +98,8 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
multiDexEnabled rootProject.ext.multiDexEnabled
- versionCode 1001042404
- versionName "1.4.24-4"
+ versionCode 1001042504
+ versionName "1.4.25-4"
}
flavorDimensions "default"
@@ -178,17 +180,8 @@ android {
dependencies {
// The version of react-native is set by the React Native Gradle Plugin
implementation("com.facebook.react:react-android")
- debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}")
+ implementation("com.facebook.react:flipper-integration")
- debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") {
- exclude group:'com.facebook.fbjni'
- }
-
- debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
- exclude group:'com.squareup.okhttp3', module:'okhttp'
- }
-
- debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}")
if (hermesEnabled.toBoolean()) {
implementation("com.facebook.react:hermes-android")
} else {
diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml
index 2eab8de1eb7b..f0600d3a680a 100644
--- a/android/app/src/debug/AndroidManifest.xml
+++ b/android/app/src/debug/AndroidManifest.xml
@@ -2,7 +2,6 @@
-
@@ -10,6 +9,5 @@
android:name="firebase_performance_logcat_enabled"
android:value="true"
/>
-
diff --git a/android/app/src/debug/java/com/expensify/chat/ReactNativeFlipper.java b/android/app/src/debug/java/com/expensify/chat/ReactNativeFlipper.java
deleted file mode 100644
index 6e859e27c54a..000000000000
--- a/android/app/src/debug/java/com/expensify/chat/ReactNativeFlipper.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
- * Copyright (c) Meta Platforms, Inc. and affiliates.
- *
- *
This source code is licensed under the MIT license found in the LICENSE file in the root
- * directory of this source tree.
- */
-package com.expensify.chat;
-
-import android.content.Context;
-import com.facebook.flipper.android.AndroidFlipperClient;
-import com.facebook.flipper.android.utils.FlipperUtils;
-import com.facebook.flipper.core.FlipperClient;
-import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin;
-import com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin;
-import com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin;
-import com.facebook.flipper.plugins.inspector.DescriptorMapping;
-import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin;
-import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor;
-import com.facebook.flipper.plugins.network.NetworkFlipperPlugin;
-import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin;
-import com.facebook.react.ReactInstanceEventListener;
-import com.facebook.react.ReactInstanceManager;
-import com.facebook.react.bridge.ReactContext;
-import com.facebook.react.modules.network.NetworkingModule;
-import okhttp3.OkHttpClient;
-
-/**
- * Class responsible of loading Flipper inside your React Native application. This is the debug
- * flavor of it. Here you can add your own plugins and customize the Flipper setup.
- */
-public class ReactNativeFlipper {
- public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {
- if (FlipperUtils.shouldEnableFlipper(context)) {
- final FlipperClient client = AndroidFlipperClient.getInstance(context);
-
- client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults()));
- client.addPlugin(new DatabasesFlipperPlugin(context));
- client.addPlugin(new SharedPreferencesFlipperPlugin(context));
- client.addPlugin(CrashReporterPlugin.getInstance());
-
- NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
- NetworkingModule.setCustomClientBuilder(
- new NetworkingModule.CustomClientBuilder() {
- @Override
- public void apply(OkHttpClient.Builder builder) {
- builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
- }
- });
- client.addPlugin(networkFlipperPlugin);
- client.start();
-
- // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized
- // Hence we run if after all native modules have been initialized
- ReactContext reactContext = reactInstanceManager.getCurrentReactContext();
- if (reactContext == null) {
- reactInstanceManager.addReactInstanceEventListener(
- new ReactInstanceEventListener() {
- @Override
- public void onReactContextInitialized(ReactContext reactContext) {
- reactInstanceManager.removeReactInstanceEventListener(this);
- reactContext.runOnNativeModulesQueueThread(
- new Runnable() {
- @Override
- public void run() {
- client.addPlugin(new FrescoFlipperPlugin());
- }
- });
- }
- });
- } else {
- client.addPlugin(new FrescoFlipperPlugin());
- }
- }
- }
-}
diff --git a/android/app/src/main/java/com/expensify/chat/MainActivity.java b/android/app/src/main/java/com/expensify/chat/MainActivity.java
deleted file mode 100644
index e9f84039cf8a..000000000000
--- a/android/app/src/main/java/com/expensify/chat/MainActivity.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package com.expensify.chat;
-import expo.modules.ReactActivityDelegateWrapper;
-
-import android.os.Bundle;
-import android.content.pm.ActivityInfo;
-import android.view.KeyEvent;
-import android.view.View;
-import android.view.WindowInsets;
-
-import com.expensify.chat.bootsplash.BootSplash;
-import com.expensify.reactnativekeycommand.KeyCommandModule;
-import com.facebook.react.ReactActivity;
-import com.facebook.react.ReactActivityDelegate;
-import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;
-import com.facebook.react.defaults.DefaultReactActivityDelegate;
-
-public class MainActivity extends ReactActivity {
-
- /**
- * Returns the name of the main component registered from JavaScript. This is used to schedule
- * rendering of the component.
- */
- @Override
- protected String getMainComponentName() {
- return "NewExpensify";
- }
-
- /**
- * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link
- * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React
- * (aka React 18) with two boolean flags.
- */
- @Override
- protected ReactActivityDelegate createReactActivityDelegate() {
- return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, new DefaultReactActivityDelegate(
- this,
- getMainComponentName(),
- // If you opted-in for the New Architecture, we enable the Fabric Renderer.
- DefaultNewArchitectureEntryPoint.getFabricEnabled()));
- }
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- BootSplash.init(this);
- super.onCreate(null);
- if (getResources().getBoolean(R.bool.portrait_only)) {
- setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
- }
-
- // Sets translucent status bar. This code is based on what the react-native StatusBar
- // module does, but we need to do it here to avoid the splash screen jumping on app start.
- View decorView = getWindow().getDecorView();
- decorView.setOnApplyWindowInsetsListener(
- (v, insets) -> {
- WindowInsets defaultInsets = v.onApplyWindowInsets(insets);
- return defaultInsets.replaceSystemWindowInsets(
- defaultInsets.getSystemWindowInsetLeft(),
- 0,
- defaultInsets.getSystemWindowInsetRight(),
- defaultInsets.getSystemWindowInsetBottom());
- });
- }
-
- /**
- * This method is called when a key down event has occurred.
- * Forwards the event to the KeyCommandModule
- */
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- // Disabling hardware ESCAPE support which is handled by Android
- if (event.getKeyCode() == KeyEvent.KEYCODE_ESCAPE) {
- return false;
- }
- KeyCommandModule.getInstance().onKeyDownEvent(keyCode, event);
- return super.onKeyDown(keyCode, event);
- }
-
- @Override
- public boolean onKeyLongPress(int keyCode, KeyEvent event) {
- // Disabling hardware ESCAPE support which is handled by Android
- if (event.getKeyCode() == KeyEvent.KEYCODE_ESCAPE) { return false; }
- KeyCommandModule.getInstance().onKeyDownEvent(keyCode, event);
- return super.onKeyLongPress(keyCode, event);
- }
-
- @Override
- public boolean onKeyUp(int keyCode, KeyEvent event) {
- // Disabling hardware ESCAPE support which is handled by Android
- if (event.getKeyCode() == KeyEvent.KEYCODE_ESCAPE) { return false; }
- KeyCommandModule.getInstance().onKeyDownEvent(keyCode, event);
- return super.onKeyUp(keyCode, event);
- }
-}
diff --git a/android/app/src/main/java/com/expensify/chat/MainActivity.kt b/android/app/src/main/java/com/expensify/chat/MainActivity.kt
new file mode 100644
index 000000000000..935ba8c8825f
--- /dev/null
+++ b/android/app/src/main/java/com/expensify/chat/MainActivity.kt
@@ -0,0 +1,85 @@
+package com.expensify.chat
+
+import expo.modules.ReactActivityDelegateWrapper
+
+import android.content.pm.ActivityInfo
+import android.os.Bundle
+import android.view.KeyEvent
+import android.view.View
+import android.view.WindowInsets
+import com.expensify.chat.bootsplash.BootSplash
+import com.expensify.reactnativekeycommand.KeyCommandModule
+import com.facebook.react.ReactActivity
+import com.facebook.react.ReactActivityDelegate
+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled
+import com.facebook.react.defaults.DefaultReactActivityDelegate
+
+class MainActivity : ReactActivity() {
+ /**
+ * Returns the name of the main component registered from JavaScript. This is used to schedule
+ * rendering of the component.
+ */
+ override fun getMainComponentName() = "NewExpensify"
+
+ /**
+ * Returns the instance of the [ReactActivityDelegate]. Here we use a util class [ ] which allows you to easily enable Fabric and Concurrent React
+ * (aka React 18) with two boolean flags.
+ */
+ override fun createReactActivityDelegate() = ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, DefaultReactActivityDelegate(
+ this,
+ mainComponentName, // If you opted-in for the New Architecture, we enable the Fabric Renderer.
+ fabricEnabled
+ ))
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ BootSplash.init(this)
+ super.onCreate(null)
+ if (resources.getBoolean(R.bool.portrait_only)) {
+ requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
+ }
+
+ // Sets translucent status bar. This code is based on what the react-native StatusBar
+ // module does, but we need to do it here to avoid the splash screen jumping on app start.
+ val decorView = window.decorView
+ decorView.setOnApplyWindowInsetsListener { v: View, insets: WindowInsets? ->
+ val defaultInsets = v.onApplyWindowInsets(insets)
+ defaultInsets.replaceSystemWindowInsets(
+ defaultInsets.systemWindowInsetLeft,
+ 0,
+ defaultInsets.systemWindowInsetRight,
+ defaultInsets.systemWindowInsetBottom
+ )
+ }
+ }
+
+ /**
+ * This method is called when a key down event has occurred.
+ * Forwards the event to the KeyCommandModule
+ */
+ override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
+ // Disabling hardware ESCAPE support which is handled by Android
+ if (event.keyCode == KeyEvent.KEYCODE_ESCAPE) {
+ return false
+ }
+ KeyCommandModule.getInstance().onKeyDownEvent(keyCode, event)
+ return super.onKeyDown(keyCode, event)
+ }
+
+ override fun onKeyLongPress(keyCode: Int, event: KeyEvent): Boolean {
+ // Disabling hardware ESCAPE support which is handled by Android
+ if (event.keyCode == KeyEvent.KEYCODE_ESCAPE) {
+ return false
+ }
+ KeyCommandModule.getInstance().onKeyDownEvent(keyCode, event)
+ return super.onKeyLongPress(keyCode, event)
+ }
+
+ override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean {
+ // Disabling hardware ESCAPE support which is handled by Android
+ if (event.keyCode == KeyEvent.KEYCODE_ESCAPE) {
+ return false
+ }
+ KeyCommandModule.getInstance().onKeyDownEvent(keyCode, event)
+ return super.onKeyUp(keyCode, event)
+ }
+}
diff --git a/android/app/src/main/java/com/expensify/chat/MainApplication.java b/android/app/src/main/java/com/expensify/chat/MainApplication.java
deleted file mode 100644
index 6e5db5d14ab3..000000000000
--- a/android/app/src/main/java/com/expensify/chat/MainApplication.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package com.expensify.chat;
-import android.content.res.Configuration;
-import expo.modules.ApplicationLifecycleDispatcher;
-import expo.modules.ReactNativeHostWrapper;
-
-import android.content.Context;
-import android.database.CursorWindow;
-
-import androidx.multidex.MultiDexApplication;
-
-import com.expensify.chat.bootsplash.BootSplashPackage;
-import com.facebook.react.PackageList;
-import com.facebook.react.ReactApplication;
-import com.facebook.react.ReactNativeHost;
-import com.facebook.react.ReactPackage;
-import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;
-import com.facebook.react.defaults.DefaultReactNativeHost;
-import com.facebook.react.modules.i18nmanager.I18nUtil;
-import com.facebook.soloader.SoLoader;
-import com.google.firebase.crashlytics.FirebaseCrashlytics;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.util.List;
-
-public class MainApplication extends MultiDexApplication implements ReactApplication {
- private final ReactNativeHost mReactNativeHost =
- new ReactNativeHostWrapper(this, new DefaultReactNativeHost(this) {
- @Override
- public boolean getUseDeveloperSupport() {
- return BuildConfig.DEBUG;
- }
-
- @Override
- protected List getPackages() {
- @SuppressWarnings("UnnecessaryLocalVariable")
- List packages = new PackageList(this).getPackages();
- // Packages that cannot be autolinked yet can be added manually here, for example:
- // packages.add(new MyReactNativePackage());
- packages.add(new BootSplashPackage());
- packages.add(new ExpensifyAppPackage());
- packages.add(new RNTextInputResetPackage());
-
- return packages;
- }
-
- @Override
- protected String getJSMainModuleName() {
- return ".expo/.virtual-metro-entry";
- }
-
- @Override
- protected boolean isNewArchEnabled() {
- return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
- }
-
- @Override
- protected Boolean isHermesEnabled() {
- return BuildConfig.IS_HERMES_ENABLED;
- }
- });
-
- @Override
- public ReactNativeHost getReactNativeHost() {
- return mReactNativeHost;
- }
-
- @Override
- public void onCreate() {
- super.onCreate();
-
- SoLoader.init(this, /* native exopackage */ false);
- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
- // If you opted-in for the New Architecture, we load the native entry point for this app.
- DefaultNewArchitectureEntryPoint.load();
- }
- ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
-
- if (BuildConfig.DEBUG) {
- FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(false);
- }
-
- // Force the app to LTR mode.
- I18nUtil sharedI18nUtilInstance = I18nUtil.getInstance();
- sharedI18nUtilInstance.allowRTL(getApplicationContext(), false);
-
- // Start the "js_load" custom performance tracing metric. This timer is stopped by a native
- // module in the JS so we can measure total time starting in the native layer and ending in
- // the JS layer.
- StartupTimer.start();
-
- // Increase SQLite DB write size
- try {
- Field field = CursorWindow.class.getDeclaredField("sCursorWindowSize");
- field.setAccessible(true);
- field.set(null, 100 * 1024 * 1024); //the 100MB is the new size
- } catch (Exception e) {
- e.printStackTrace();
- }
- ApplicationLifecycleDispatcher.onApplicationCreate(this);
- }
-
- @Override
- public void onConfigurationChanged(Configuration newConfig) {
- super.onConfigurationChanged(newConfig);
- ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/expensify/chat/MainApplication.kt b/android/app/src/main/java/com/expensify/chat/MainApplication.kt
new file mode 100644
index 000000000000..193333368991
--- /dev/null
+++ b/android/app/src/main/java/com/expensify/chat/MainApplication.kt
@@ -0,0 +1,76 @@
+package com.expensify.chat
+
+import android.content.res.Configuration
+import android.database.CursorWindow
+import androidx.multidex.MultiDexApplication
+import com.expensify.chat.bootsplash.BootSplashPackage
+import com.facebook.react.PackageList
+import com.facebook.react.ReactApplication
+import com.facebook.react.ReactNativeHost
+import com.facebook.react.ReactPackage
+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load
+import com.facebook.react.defaults.DefaultReactNativeHost
+import com.facebook.react.modules.i18nmanager.I18nUtil
+import com.facebook.soloader.SoLoader
+import com.google.firebase.crashlytics.FirebaseCrashlytics
+import expo.modules.ApplicationLifecycleDispatcher
+import expo.modules.ReactNativeHostWrapper
+
+class MainApplication : MultiDexApplication(), ReactApplication {
+ override val reactNativeHost: ReactNativeHost = ReactNativeHostWrapper(this, object : DefaultReactNativeHost(this) {
+ override fun getUseDeveloperSupport() = BuildConfig.DEBUG
+
+ override fun getPackages(): List =
+ PackageList(this).packages.apply {
+ // Packages that cannot be autolinked yet can be added manually here, for example:
+ // add(MyReactNativePackage());
+ add(BootSplashPackage())
+ add(ExpensifyAppPackage())
+ add(RNTextInputResetPackage())
+ }
+
+ override fun getJSMainModuleName() = ".expo/.virtual-metro-entry"
+
+ override val isNewArchEnabled: Boolean
+ get() = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
+ override val isHermesEnabled: Boolean
+ get() = BuildConfig.IS_HERMES_ENABLED
+ })
+
+ override fun onCreate() {
+ super.onCreate()
+
+ SoLoader.init(this, /* native exopackage */false)
+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
+ // If you opted-in for the New Architecture, we load the native entry point for this app.
+ load()
+ }
+ if (BuildConfig.DEBUG) {
+ FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(false)
+ }
+
+ // Force the app to LTR mode.
+ val sharedI18nUtilInstance = I18nUtil.getInstance()
+ sharedI18nUtilInstance.allowRTL(applicationContext, false)
+
+ // Start the "js_load" custom performance tracing metric. This timer is stopped by a native
+ // module in the JS so we can measure total time starting in the native layer and ending in
+ // the JS layer.
+ StartupTimer.start()
+
+ // Increase SQLite DB write size
+ try {
+ val field = CursorWindow::class.java.getDeclaredField("sCursorWindowSize")
+ field.isAccessible = true
+ field[null] = 100 * 1024 * 1024 //the 100MB is the new size
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
+ ApplicationLifecycleDispatcher.onApplicationCreate(this);
+ }
+
+ override fun onConfigurationChanged(newConfig: Configuration) {
+ super.onConfigurationChanged(newConfig)
+ ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig)
+ }
+}
diff --git a/android/app/src/main/res/drawable/ic_launcher_monochrome.png b/android/app/src/main/res/drawable/ic_launcher_monochrome.png
index b1a286b6f8dd..0af99b087923 100644
Binary files a/android/app/src/main/res/drawable/ic_launcher_monochrome.png and b/android/app/src/main/res/drawable/ic_launcher_monochrome.png differ
diff --git a/android/app/src/release/java/com/expensify/chat/ReactNativeFlipper.java b/android/app/src/release/java/com/expensify/chat/ReactNativeFlipper.java
deleted file mode 100644
index 0e3c02f072e6..000000000000
--- a/android/app/src/release/java/com/expensify/chat/ReactNativeFlipper.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * Copyright (c) Meta Platforms, Inc. and affiliates.
- *
- * This source code is licensed under the MIT license found in the LICENSE file in the root
- * directory of this source tree.
- */
-package com.expensify.chat;
-
-import android.content.Context;
-import com.facebook.react.ReactInstanceManager;
-
-/**
- * Class responsible of loading Flipper inside your React Native application. This is the release
- * flavor of it so it's empty as we don't want to load Flipper.
- */
-public class ReactNativeFlipper {
- public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {
- // Do nothing as we don't want to initialize Flipper on Release.
- }
-}
\ No newline at end of file
diff --git a/android/build.gradle b/android/build.gradle
index 789104556b1b..c4e25dde9e2b 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -2,13 +2,11 @@
buildscript {
ext {
- buildToolsVersion = "33.0.0"
+ buildToolsVersion = "34.0.0"
minSdkVersion = 21
- compileSdkVersion = 33
- targetSdkVersion = 33
-
- // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP.
- ndkVersion = "23.1.7779620"
+ compileSdkVersion = 34
+ targetSdkVersion = 34
+ ndkVersion = "25.1.8937393"
androidXCore = "1.0.2"
multiDexEnabled = true
@@ -72,3 +70,5 @@ allprojects {
}
}
}
+
+apply plugin: "com.facebook.react.rootproject"
diff --git a/android/gradle.properties b/android/gradle.properties
index 0de47ef7d184..c77d6b16f1b3 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -28,9 +28,6 @@ android.enableJetifier=true
AsyncStorage_db_size_in_MB=10
AsyncStorage_useNextStorage=true
-# Version of flipper SDK to use with React Native
-FLIPPER_VERSION=0.182.0
-
# Use this property to specify which architecture you want to build.
# You can also override it from the CLI using
# ./gradlew -PreactNativeArchitectures=x86_64
@@ -55,3 +52,5 @@ MYAPP_UPLOAD_KEY_ALIAS=ReactNativeChat-Key-Alias
# Disable Frame Processors for VisionCamera.
# We might want to re-enable them if we need QR code scanning or other frame processing features (maybe in VisionCamera V3)
disableFrameProcessors=true
+
+android.nonTransitiveRClass=false
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
index 6ec1567a0f88..d11cdd907dd9 100644
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip
networkTimeout=10000
+validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/android/gradlew b/android/gradlew
index 5bb05716bd7f..0adc8e1a5321 100755
--- a/android/gradlew
+++ b/android/gradlew
@@ -83,10 +83,8 @@ done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
-APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
+APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
@@ -133,10 +131,13 @@ location of your Java installation."
fi
else
JAVACMD=java
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+ if ! command -v java >/dev/null 2>&1
+ then
+ die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
+ fi
fi
# Increase the maximum file descriptors if we can.
@@ -144,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
- # shellcheck disable=SC3045
+ # shellcheck disable=SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
@@ -152,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
- # shellcheck disable=SC3045
+ # shellcheck disable=SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
@@ -197,6 +198,10 @@ if "$cygwin" || "$msys" ; then
done
fi
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
@@ -241,4 +246,4 @@ eval "set -- $(
tr '\n' ' '
)" '"$@"'
-exec "$JAVACMD" "$@"
\ No newline at end of file
+exec "$JAVACMD" "$@"
diff --git a/assets/animations/Coin.lottie b/assets/animations/Coin.lottie
new file mode 100644
index 000000000000..e426f7efdc3c
Binary files /dev/null and b/assets/animations/Coin.lottie differ
diff --git a/assets/images/expensify-logo--adhoc.svg b/assets/images/expensify-logo--adhoc.svg
index 273002deca9b..52b381dc4b78 100644
--- a/assets/images/expensify-logo--adhoc.svg
+++ b/assets/images/expensify-logo--adhoc.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/assets/images/expensify-logo--dev.svg b/assets/images/expensify-logo--dev.svg
index e8e3fb5033d9..2c9ae142e283 100644
--- a/assets/images/expensify-logo--dev.svg
+++ b/assets/images/expensify-logo--dev.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/assets/images/expensify-logo--staging.svg b/assets/images/expensify-logo--staging.svg
index 78dcc1581f99..a1e7482c133b 100644
--- a/assets/images/expensify-logo--staging.svg
+++ b/assets/images/expensify-logo--staging.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/assets/images/home-background--mobile-new.svg b/assets/images/home-background--mobile-new.svg
index 0da937cae059..d81f2a18cc78 100644
--- a/assets/images/home-background--mobile-new.svg
+++ b/assets/images/home-background--mobile-new.svg
@@ -1,8835 +1 @@
-
-
-
+
\ No newline at end of file
diff --git a/assets/images/new-expensify.svg b/assets/images/new-expensify.svg
index 38276ecd9385..7bfef1fd38b4 100644
--- a/assets/images/new-expensify.svg
+++ b/assets/images/new-expensify.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/assets/images/product-illustrations/telescope.svg b/assets/images/product-illustrations/telescope.svg
index 95617c801789..1830dff0fe3c 100644
--- a/assets/images/product-illustrations/telescope.svg
+++ b/assets/images/product-illustrations/telescope.svg
@@ -1,79 +1 @@
-
-
-
+
\ No newline at end of file
diff --git a/assets/images/signIn/google-logo.svg b/assets/images/signIn/google-logo.svg
index 4fbdc804a0a2..169ea34b23ee 100644
--- a/assets/images/signIn/google-logo.svg
+++ b/assets/images/signIn/google-logo.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/assets/images/simple-illustrations/simple-illustration__bigrocket.svg b/assets/images/simple-illustrations/simple-illustration__bigrocket.svg
index 1afd5f66b6ea..64d6dc2200f0 100644
--- a/assets/images/simple-illustrations/simple-illustration__bigrocket.svg
+++ b/assets/images/simple-illustrations/simple-illustration__bigrocket.svg
@@ -1,100 +1 @@
-
+
\ No newline at end of file
diff --git a/assets/images/simple-illustrations/simple-illustration__commentbubbles.svg b/assets/images/simple-illustrations/simple-illustration__commentbubbles.svg
index 829d3ee2e3fe..ab9d3ae4db70 100644
--- a/assets/images/simple-illustrations/simple-illustration__commentbubbles.svg
+++ b/assets/images/simple-illustrations/simple-illustration__commentbubbles.svg
@@ -1,22 +1 @@
-
-
-
+
\ No newline at end of file
diff --git a/assets/images/simple-illustrations/simple-illustration__handcard.svg b/assets/images/simple-illustrations/simple-illustration__handcard.svg
index 7419b33d425c..a49e0ee5b77f 100644
--- a/assets/images/simple-illustrations/simple-illustration__handcard.svg
+++ b/assets/images/simple-illustrations/simple-illustration__handcard.svg
@@ -1,41 +1 @@
-
-
-
+
\ No newline at end of file
diff --git a/assets/images/simple-illustrations/simple-illustration__hotdogstand.svg b/assets/images/simple-illustrations/simple-illustration__hotdogstand.svg
index 471b978bb97e..5b5e12a99a9b 100644
--- a/assets/images/simple-illustrations/simple-illustration__hotdogstand.svg
+++ b/assets/images/simple-illustrations/simple-illustration__hotdogstand.svg
@@ -1,98 +1 @@
-
+
\ No newline at end of file
diff --git a/assets/images/simple-illustrations/simple-illustration__hourglass.svg b/assets/images/simple-illustrations/simple-illustration__hourglass.svg
index 539e1e45b795..683e74a657e8 100644
--- a/assets/images/simple-illustrations/simple-illustration__hourglass.svg
+++ b/assets/images/simple-illustrations/simple-illustration__hourglass.svg
@@ -1,56 +1 @@
-
-
-
+
\ No newline at end of file
diff --git a/assets/images/simple-illustrations/simple-illustration__mailbox.svg b/assets/images/simple-illustrations/simple-illustration__mailbox.svg
index 81b1f508fb52..7af7c71e24f3 100644
--- a/assets/images/simple-illustrations/simple-illustration__mailbox.svg
+++ b/assets/images/simple-illustrations/simple-illustration__mailbox.svg
@@ -1,71 +1 @@
-
-
-
+
\ No newline at end of file
diff --git a/assets/images/simple-illustrations/simple-illustration__smallrocket.svg b/assets/images/simple-illustrations/simple-illustration__smallrocket.svg
index 0f8f166c849f..388bb968a762 100644
--- a/assets/images/simple-illustrations/simple-illustration__smallrocket.svg
+++ b/assets/images/simple-illustrations/simple-illustration__smallrocket.svg
@@ -1,45 +1 @@
-
+
\ No newline at end of file
diff --git a/assets/images/simple-illustrations/simple-illustration__trashcan.svg b/assets/images/simple-illustrations/simple-illustration__trashcan.svg
index 4e66efa0a67e..66cc9ee27550 100644
--- a/assets/images/simple-illustrations/simple-illustration__trashcan.svg
+++ b/assets/images/simple-illustrations/simple-illustration__trashcan.svg
@@ -1,52 +1 @@
-
-
-
+
\ No newline at end of file
diff --git a/assets/images/thumbs-up.svg b/assets/images/thumbs-up.svg
index ef81c88fc854..3e2a4a5125b6 100644
--- a/assets/images/thumbs-up.svg
+++ b/assets/images/thumbs-up.svg
@@ -1,8 +1 @@
-
-
+
\ No newline at end of file
diff --git a/babel.config.js b/babel.config.js
index d8ad66917b82..0a17f2b0f01c 100644
--- a/babel.config.js
+++ b/babel.config.js
@@ -22,7 +22,7 @@ const webpack = {
};
const metro = {
- presets: [require('metro-react-native-babel-preset')],
+ presets: [require('@react-native/babel-preset')],
plugins: [
// This is needed due to a react-native bug: https://github.com/facebook/react-native/issues/29084#issuecomment-1030732709
// It is included in metro-react-native-babel-preset but needs to be before plugin-proposal-class-properties or FlatList will break
diff --git a/contributingGuides/CONTRIBUTING.md b/contributingGuides/CONTRIBUTING.md
index 6e02cae677bb..186d7def3423 100644
--- a/contributingGuides/CONTRIBUTING.md
+++ b/contributingGuides/CONTRIBUTING.md
@@ -5,7 +5,7 @@ Welcome! Thanks for checking out the New Expensify app and taking the time to co
If you would like to become an Expensify contributor, the first step is to read this document in its **entirety**. The second step is to review the README guidelines [here](https://github.com/Expensify/App/blob/main/README.md) to understand our coding philosophy and for a general overview of the code repository (i.e. how to run the app locally, testing, storage, our app philosophy, etc). Please read both documents before asking questions, as it may be covered within the documentation.
#### Test Accounts
-You can create as many accounts as needed in order to test your changes directly from [the app](https://new.expensify.com/). An initial account can be created when logging in for the first time, and additional accounts can be created by opening the "New Chat" or "Group Chat" pages via the Global Create menu, inputting a valid email or phone number, and tapping the user's avatar.
+You can create as many accounts as needed in order to test your changes directly from [the app](https://new.expensify.com/). An initial account can be created when logging in for the first time, and additional accounts can be created by opening the "New Chat" or "Group Chat" pages via the Global Create menu, inputting a valid email or phone number, and tapping the user's avatar. Do use Expensify employee or customer accounts for testing.
**Notes**:
diff --git a/desktop/main.js b/desktop/main.js
index 5ae02377e2b9..c9d614d3de15 100644
--- a/desktop/main.js
+++ b/desktop/main.js
@@ -511,6 +511,15 @@ const mainWindow = () => {
}
});
+ browserWindow.on('swipe', (e, direction) => {
+ if (direction === 'right') {
+ browserWindow.webContents.goBack();
+ }
+ if (direction === 'left') {
+ browserWindow.webContents.goForward();
+ }
+ });
+
browserWindow.on(ELECTRON_EVENTS.FOCUS, () => {
browserWindow.webContents.send(ELECTRON_EVENTS.FOCUS);
});
diff --git a/docs/assets/images/send-money.svg b/docs/assets/images/send-money.svg
index e858f0d5c327..7abce818f09e 100644
--- a/docs/assets/images/send-money.svg
+++ b/docs/assets/images/send-money.svg
@@ -1,25 +1 @@
-
+
\ No newline at end of file
diff --git a/docs/assets/images/subscription-annual.svg b/docs/assets/images/subscription-annual.svg
index a4b99a43b16e..f74ce086b2c7 100644
--- a/docs/assets/images/subscription-annual.svg
+++ b/docs/assets/images/subscription-annual.svg
@@ -1,23 +1 @@
-
+
\ No newline at end of file
diff --git a/ios/NewExpensify.xcodeproj/project.pbxproj b/ios/NewExpensify.xcodeproj/project.pbxproj
index c239f4da183f..acd08500fc11 100644
--- a/ios/NewExpensify.xcodeproj/project.pbxproj
+++ b/ios/NewExpensify.xcodeproj/project.pbxproj
@@ -370,7 +370,7 @@
isa = PBXNativeTarget;
buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "NewExpensifyTests" */;
buildPhases = (
- 89BAEBD1F6440299C91536C7 /* [CP] Check Pods Manifest.lock */,
+ A3D1E02743106A34295E533A /* [CP] Check Pods Manifest.lock */,
04B99F6AA578E2A877802F05 /* [Expo] Configure project */,
00E356EA1AD99517003FC87E /* Sources */,
00E356EB1AD99517003FC87E /* Frameworks */,
@@ -614,7 +614,7 @@
"${PODS_CONFIGURATION_BUILD_DIR}/Airship/AirshipMessageCenterResources.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/Airship/AirshipPreferenceCenterResources.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/GoogleSignIn/GoogleSignIn.bundle",
- "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
+ "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle",
);
name = "[CP] Copy Pods Resources";
outputPaths = (
@@ -624,7 +624,7 @@
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AirshipMessageCenterResources.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AirshipPreferenceCenterResources.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleSignIn.bundle",
- "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
+ "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
@@ -688,7 +688,7 @@
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
- 89BAEBD1F6440299C91536C7 /* [CP] Check Pods Manifest.lock */ = {
+ A3D1E02743106A34295E533A /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -783,7 +783,7 @@
"${PODS_CONFIGURATION_BUILD_DIR}/Airship/AirshipMessageCenterResources.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/Airship/AirshipPreferenceCenterResources.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/GoogleSignIn/GoogleSignIn.bundle",
- "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
+ "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle",
);
name = "[CP] Copy Pods Resources";
outputPaths = (
@@ -793,7 +793,7 @@
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AirshipMessageCenterResources.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AirshipPreferenceCenterResources.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleSignIn.bundle",
- "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
+ "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
@@ -946,7 +946,7 @@
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 368M544MTT;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = "$(SRCROOT)/NewExpensify/Info.plist";
- IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.4;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -984,7 +984,7 @@
DEVELOPMENT_TEAM = 368M544MTT;
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 368M544MTT;
INFOPLIST_FILE = NewExpensify/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.4;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -1573,9 +1573,15 @@
ONLY_ACTIVE_ARCH = YES;
OTHER_CFLAGS = "$(inherited)";
OTHER_CPLUSPLUSFLAGS = "$(inherited)";
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-Wl",
+ "-ld_classic",
+ );
PRODUCT_BUNDLE_IDENTIFIER = "";
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
+ USE_HERMES = true;
};
name = DebugDevelopment;
};
@@ -1633,10 +1639,16 @@
MTL_ENABLE_DEBUG_INFO = NO;
OTHER_CFLAGS = "$(inherited)";
OTHER_CPLUSPLUSFLAGS = "$(inherited)";
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-Wl",
+ "-ld_classic",
+ );
PRODUCT_BUNDLE_IDENTIFIER = "";
PRODUCT_NAME = "";
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
+ USE_HERMES = true;
VALIDATE_PRODUCT = YES;
};
name = ReleaseDevelopment;
@@ -1703,9 +1715,15 @@
ONLY_ACTIVE_ARCH = YES;
OTHER_CFLAGS = "$(inherited)";
OTHER_CPLUSPLUSFLAGS = "$(inherited)";
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-Wl",
+ "-ld_classic",
+ );
PRODUCT_BUNDLE_IDENTIFIER = "";
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
+ USE_HERMES = true;
};
name = DebugProduction;
};
@@ -1724,7 +1742,7 @@
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 368M544MTT;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = "$(SRCROOT)/NewExpensify/Info.plist";
- IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.4;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -1839,9 +1857,15 @@
ONLY_ACTIVE_ARCH = YES;
OTHER_CFLAGS = "$(inherited)";
OTHER_CPLUSPLUSFLAGS = "$(inherited)";
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-Wl",
+ "-ld_classic",
+ );
PRODUCT_BUNDLE_IDENTIFIER = "";
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
+ USE_HERMES = true;
};
name = DebugAdHoc;
};
@@ -1860,7 +1884,7 @@
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 368M544MTT;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = "$(SRCROOT)/NewExpensify/Info.plist";
- IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.4;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -1967,10 +1991,16 @@
MTL_ENABLE_DEBUG_INFO = NO;
OTHER_CFLAGS = "$(inherited)";
OTHER_CPLUSPLUSFLAGS = "$(inherited)";
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-Wl",
+ "-ld_classic",
+ );
PRODUCT_BUNDLE_IDENTIFIER = "";
PRODUCT_NAME = "";
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
+ USE_HERMES = true;
VALIDATE_PRODUCT = YES;
};
name = ReleaseProduction;
@@ -1989,7 +2019,7 @@
DEVELOPMENT_TEAM = 368M544MTT;
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 368M544MTT;
INFOPLIST_FILE = NewExpensify/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.4;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@@ -2093,10 +2123,16 @@
MTL_ENABLE_DEBUG_INFO = NO;
OTHER_CFLAGS = "$(inherited)";
OTHER_CPLUSPLUSFLAGS = "$(inherited)";
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-Wl",
+ "-ld_classic",
+ );
PRODUCT_BUNDLE_IDENTIFIER = "";
PRODUCT_NAME = "";
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
+ USE_HERMES = true;
VALIDATE_PRODUCT = YES;
};
name = ReleaseAdHoc;
@@ -2115,7 +2151,7 @@
DEVELOPMENT_TEAM = 368M544MTT;
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 368M544MTT;
INFOPLIST_FILE = NewExpensify/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.4;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
diff --git a/ios/NewExpensify/AppDelegate.mm b/ios/NewExpensify/AppDelegate.mm
index 7dbdb20c73b5..f5ddba46f5f1 100644
--- a/ios/NewExpensify/AppDelegate.mm
+++ b/ios/NewExpensify/AppDelegate.mm
@@ -67,7 +67,13 @@ - (BOOL)application:(UIApplication *)application
restorationHandler:restorationHandler];
}
-- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge {
+- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
+{
+ return [self getBundleURL];
+}
+
+- (NSURL *)getBundleURL
+{
#if DEBUG
return
[[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"];
diff --git a/ios/NewExpensify/Info.plist b/ios/NewExpensify/Info.plist
index 2dc6d59d5e4f..305e7a8ede5e 100644
--- a/ios/NewExpensify/Info.plist
+++ b/ios/NewExpensify/Info.plist
@@ -19,7 +19,7 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- 1.4.24
+ 1.4.25
CFBundleSignature
????
CFBundleURLTypes
@@ -40,7 +40,7 @@
CFBundleVersion
- 1.4.24.4
+ 1.4.25.4
ITSAppUsesNonExemptEncryption
LSApplicationQueriesSchemes
@@ -54,24 +54,9 @@
NSAppTransportSecurity
NSAllowsArbitraryLoads
+
+ NSAllowsLocalNetworking
- NSExceptionDomains
-
- localhost
-
- NSExceptionAllowsInsecureHTTPLoads
-
- NSIncludesSubdomains
-
-
- www.expensify.com.dev
-
- NSExceptionAllowsInsecureHTTPLoads
-
- NSIncludesSubdomains
-
-
-
NSCameraUsageDescription
Your camera is used to create chat attachments, documents, and facial capture.
diff --git a/ios/NewExpensifyTests/Info.plist b/ios/NewExpensifyTests/Info.plist
index 5f68b5ba2579..438a9331b4f6 100644
--- a/ios/NewExpensifyTests/Info.plist
+++ b/ios/NewExpensifyTests/Info.plist
@@ -15,10 +15,10 @@
CFBundlePackageType
BNDL
CFBundleShortVersionString
- 1.4.24
+ 1.4.25
CFBundleSignature
????
CFBundleVersion
- 1.4.24.4
+ 1.4.25.4
diff --git a/ios/NotificationServiceExtension/Info.plist b/ios/NotificationServiceExtension/Info.plist
index ccc7422fe3b4..1782fd6daf98 100644
--- a/ios/NotificationServiceExtension/Info.plist
+++ b/ios/NotificationServiceExtension/Info.plist
@@ -2,6 +2,10 @@
+ CFBundleShortVersionString
+ 1.4.25
+ CFBundleVersion
+ 1.4.25.4
NSExtension
NSExtensionPointIdentifier
@@ -9,9 +13,5 @@
NSExtensionPrincipalClass
$(PRODUCT_MODULE_NAME).NotificationService
- CFBundleVersion
- 1.4.23.0
- CFBundleShortVersionString
- 1.4.23
-
\ No newline at end of file
+
diff --git a/ios/Podfile b/ios/Podfile
index c12596d3191e..aa87c3e295f3 100644
--- a/ios/Podfile
+++ b/ios/Podfile
@@ -16,7 +16,7 @@ node_require('react-native/scripts/react_native_pods.rb')
node_require('react-native-permissions/scripts/setup.rb')
# Our min supported iOS version is higher than the default (min_ios_version_supported) to support libraires such as Airship
-platform :ios, 13
+platform :ios, 13.4
prepare_react_native_project!
setup_permissions([
@@ -84,14 +84,8 @@ target 'NewExpensify' do
config = use_native_modules!
- # Flags change depending on the env values.
- flags = get_default_flags()
-
use_react_native!(
:path => config[:reactNativePath],
- # Hermes is now enabled by default. Disable by setting this flag to false.
- :hermes_enabled => flags[:hermes_enabled],
- :fabric_enabled => flags[:fabric_enabled],
# Enables Flipper.
#
# Note that if you have use_frameworks! enabled, Flipper will not work and
@@ -117,7 +111,6 @@ target 'NewExpensify' do
config[:reactNativePath],
:mac_catalyst_enabled => false
)
- __apply_Xcode_12_5_M1_post_install_workaround(installer)
__apply_Xcode_14_3_RC_post_install_workaround(installer)
installer.pods_project.targets.each do |target|
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index 77c390c46416..f433c4f1e1e2 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -27,35 +27,34 @@ PODS:
- AppAuth/Core (1.6.2)
- AppAuth/ExternalUserAgent (1.6.2):
- AppAuth/Core
- - boost (1.76.0)
+ - boost (1.83.0)
- BVLinearGradient (2.8.1):
- React-Core
- CocoaAsyncSocket (7.6.5)
- DoubleConversion (1.1.6)
- - EXApplication (5.3.1):
+ - Expo (50.0.0-preview.7):
- ExpoModulesCore
- - Expo (49.0.21):
- - ExpoModulesCore
- - ExpoImage (1.8.1):
+ - ExpoImage (1.10.1):
- ExpoModulesCore
- SDWebImage (~> 5.17.0)
- SDWebImageAVIFCoder (~> 0.10.1)
- SDWebImageSVGCoder (~> 1.7.0)
- SDWebImageWebPCoder (~> 0.13.0)
- - ExpoModulesCore (1.5.12):
- - RCT-Folly (= 2021.07.22.00)
+ - ExpoModulesCore (1.11.4):
+ - glog
+ - RCT-Folly (= 2022.05.16.00)
- React-Core
- React-NativeModulesApple
- React-RCTAppDelegate
- ReactCommon/turbomodule/core
- - FBLazyVector (0.72.4)
- - FBReactNativeSpec (0.72.4):
- - RCT-Folly (= 2021.07.22.00)
- - RCTRequired (= 0.72.4)
- - RCTTypeSafety (= 0.72.4)
- - React-Core (= 0.72.4)
- - React-jsi (= 0.72.4)
- - ReactCommon/turbomodule/core (= 0.72.4)
+ - FBLazyVector (0.73.2)
+ - FBReactNativeSpec (0.73.2):
+ - RCT-Folly (= 2022.05.16.00)
+ - RCTRequired (= 0.73.2)
+ - RCTTypeSafety (= 0.73.2)
+ - React-Core (= 0.73.2)
+ - React-jsi (= 0.73.2)
+ - ReactCommon/turbomodule/core (= 0.73.2)
- Firebase/Analytics (8.8.0):
- Firebase/Core
- Firebase/Core (8.8.0):
@@ -125,7 +124,7 @@ PODS:
- FirebaseInstallations (~> 8.0)
- GoogleUtilities/Environment (~> 7.7)
- "GoogleUtilities/NSData+zlib (~> 7.7)"
- - Flipper (0.182.0):
+ - Flipper (0.201.0):
- Flipper-Folly (~> 2.6)
- Flipper-Boost-iOSX (1.76.0.1.11)
- Flipper-DoubleConversion (3.2.0.1)
@@ -139,48 +138,46 @@ PODS:
- OpenSSL-Universal (= 1.1.1100)
- Flipper-Glog (0.5.0.5)
- Flipper-PeerTalk (0.0.4)
- - FlipperKit (0.182.0):
- - FlipperKit/Core (= 0.182.0)
- - FlipperKit/Core (0.182.0):
- - Flipper (~> 0.182.0)
+ - FlipperKit (0.201.0):
+ - FlipperKit/Core (= 0.201.0)
+ - FlipperKit/Core (0.201.0):
+ - Flipper (~> 0.201.0)
- FlipperKit/CppBridge
- FlipperKit/FBCxxFollyDynamicConvert
- FlipperKit/FBDefines
- FlipperKit/FKPortForwarding
- SocketRocket (~> 0.6.0)
- - FlipperKit/CppBridge (0.182.0):
- - Flipper (~> 0.182.0)
- - FlipperKit/FBCxxFollyDynamicConvert (0.182.0):
+ - FlipperKit/CppBridge (0.201.0):
+ - Flipper (~> 0.201.0)
+ - FlipperKit/FBCxxFollyDynamicConvert (0.201.0):
- Flipper-Folly (~> 2.6)
- - FlipperKit/FBDefines (0.182.0)
- - FlipperKit/FKPortForwarding (0.182.0):
+ - FlipperKit/FBDefines (0.201.0)
+ - FlipperKit/FKPortForwarding (0.201.0):
- CocoaAsyncSocket (~> 7.6)
- Flipper-PeerTalk (~> 0.0.4)
- - FlipperKit/FlipperKitHighlightOverlay (0.182.0)
- - FlipperKit/FlipperKitLayoutHelpers (0.182.0):
+ - FlipperKit/FlipperKitHighlightOverlay (0.201.0)
+ - FlipperKit/FlipperKitLayoutHelpers (0.201.0):
- FlipperKit/Core
- FlipperKit/FlipperKitHighlightOverlay
- FlipperKit/FlipperKitLayoutTextSearchable
- - FlipperKit/FlipperKitLayoutIOSDescriptors (0.182.0):
+ - FlipperKit/FlipperKitLayoutIOSDescriptors (0.201.0):
- FlipperKit/Core
- FlipperKit/FlipperKitHighlightOverlay
- FlipperKit/FlipperKitLayoutHelpers
- - YogaKit (~> 1.18)
- - FlipperKit/FlipperKitLayoutPlugin (0.182.0):
+ - FlipperKit/FlipperKitLayoutPlugin (0.201.0):
- FlipperKit/Core
- FlipperKit/FlipperKitHighlightOverlay
- FlipperKit/FlipperKitLayoutHelpers
- FlipperKit/FlipperKitLayoutIOSDescriptors
- FlipperKit/FlipperKitLayoutTextSearchable
- - YogaKit (~> 1.18)
- - FlipperKit/FlipperKitLayoutTextSearchable (0.182.0)
- - FlipperKit/FlipperKitNetworkPlugin (0.182.0):
+ - FlipperKit/FlipperKitLayoutTextSearchable (0.201.0)
+ - FlipperKit/FlipperKitNetworkPlugin (0.201.0):
- FlipperKit/Core
- - FlipperKit/FlipperKitReactPlugin (0.182.0):
+ - FlipperKit/FlipperKitReactPlugin (0.201.0):
- FlipperKit/Core
- - FlipperKit/FlipperKitUserDefaultsPlugin (0.182.0):
+ - FlipperKit/FlipperKitUserDefaultsPlugin (0.201.0):
- FlipperKit/Core
- - FlipperKit/SKIOSNetworkPlugin (0.182.0):
+ - FlipperKit/SKIOSNetworkPlugin (0.201.0):
- FlipperKit/Core
- FlipperKit/FlipperKitNetworkPlugin
- fmt (6.2.1)
@@ -205,7 +202,7 @@ PODS:
- GoogleUtilities/Network (~> 7.4)
- "GoogleUtilities/NSData+zlib (~> 7.4)"
- nanopb (~> 2.30908.0)
- - GoogleDataTransport (9.2.3):
+ - GoogleDataTransport (9.3.0):
- GoogleUtilities/Environment (~> 7.7)
- nanopb (< 2.30910.0, >= 2.30908.0)
- PromisesObjC (< 3.0, >= 1.2)
@@ -213,33 +210,33 @@ PODS:
- AppAuth (~> 1.5)
- GTMAppAuth (< 3.0, >= 1.3)
- GTMSessionFetcher/Core (< 4.0, >= 1.1)
- - GoogleUtilities/AppDelegateSwizzler (7.11.1):
+ - GoogleUtilities/AppDelegateSwizzler (7.12.0):
- GoogleUtilities/Environment
- GoogleUtilities/Logger
- GoogleUtilities/Network
- - GoogleUtilities/Environment (7.11.1):
+ - GoogleUtilities/Environment (7.12.0):
- PromisesObjC (< 3.0, >= 1.2)
- - GoogleUtilities/ISASwizzler (7.11.1)
- - GoogleUtilities/Logger (7.11.1):
+ - GoogleUtilities/ISASwizzler (7.12.0)
+ - GoogleUtilities/Logger (7.12.0):
- GoogleUtilities/Environment
- - GoogleUtilities/MethodSwizzler (7.11.1):
+ - GoogleUtilities/MethodSwizzler (7.12.0):
- GoogleUtilities/Logger
- - GoogleUtilities/Network (7.11.1):
+ - GoogleUtilities/Network (7.12.0):
- GoogleUtilities/Logger
- "GoogleUtilities/NSData+zlib"
- GoogleUtilities/Reachability
- - "GoogleUtilities/NSData+zlib (7.11.1)"
- - GoogleUtilities/Reachability (7.11.1):
+ - "GoogleUtilities/NSData+zlib (7.12.0)"
+ - GoogleUtilities/Reachability (7.12.0):
- GoogleUtilities/Logger
- - GoogleUtilities/UserDefaults (7.11.1):
+ - GoogleUtilities/UserDefaults (7.12.0):
- GoogleUtilities/Logger
- GTMAppAuth (2.0.0):
- AppAuth/Core (~> 1.6)
- GTMSessionFetcher/Core (< 4.0, >= 1.5)
- - GTMSessionFetcher/Core (3.1.1)
- - hermes-engine (0.72.4):
- - hermes-engine/Pre-built (= 0.72.4)
- - hermes-engine/Pre-built (0.72.4)
+ - GTMSessionFetcher/Core (3.2.0)
+ - hermes-engine (0.73.2):
+ - hermes-engine/Pre-built (= 0.73.2)
+ - hermes-engine/Pre-built (0.73.2)
- libaom (3.0.0):
- libvmaf (>= 2.2.0)
- libavif (0.11.1):
@@ -262,8 +259,8 @@ PODS:
- libwebp/sharpyuv (1.3.2)
- libwebp/webp (1.3.2):
- libwebp/sharpyuv
- - lottie-ios (4.3.3)
- - lottie-react-native (6.4.0):
+ - lottie-ios (4.3.4)
+ - lottie-react-native (6.4.1):
- lottie-ios (~> 4.3.3)
- React-Core
- MapboxCommon (23.6.0)
@@ -280,50 +277,55 @@ PODS:
- nanopb/encode (= 2.30908.0)
- nanopb/decode (2.30908.0)
- nanopb/encode (2.30908.0)
- - Onfido (28.3.0)
+ - Onfido (28.3.1)
- onfido-react-native-sdk (8.3.0):
- Onfido (~> 28.3.0)
- React
- OpenSSL-Universal (1.1.1100)
- Plaid (4.7.0)
- - PromisesObjC (2.2.0)
- - RCT-Folly (2021.07.22.00):
+ - PromisesObjC (2.3.1)
+ - RCT-Folly (2022.05.16.00):
+ - boost
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - RCT-Folly/Default (= 2022.05.16.00)
+ - RCT-Folly/Default (2022.05.16.00):
- boost
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- - RCT-Folly/Default (= 2021.07.22.00)
- - RCT-Folly/Default (2021.07.22.00):
+ - RCT-Folly/Fabric (2022.05.16.00):
- boost
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- - RCT-Folly/Futures (2021.07.22.00):
+ - RCT-Folly/Futures (2022.05.16.00):
- boost
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- libevent
- - RCTRequired (0.72.4)
- - RCTTypeSafety (0.72.4):
- - FBLazyVector (= 0.72.4)
- - RCTRequired (= 0.72.4)
- - React-Core (= 0.72.4)
- - React (0.72.4):
- - React-Core (= 0.72.4)
- - React-Core/DevSupport (= 0.72.4)
- - React-Core/RCTWebSocket (= 0.72.4)
- - React-RCTActionSheet (= 0.72.4)
- - React-RCTAnimation (= 0.72.4)
- - React-RCTBlob (= 0.72.4)
- - React-RCTImage (= 0.72.4)
- - React-RCTLinking (= 0.72.4)
- - React-RCTNetwork (= 0.72.4)
- - React-RCTSettings (= 0.72.4)
- - React-RCTText (= 0.72.4)
- - React-RCTVibration (= 0.72.4)
- - React-callinvoker (0.72.4)
- - React-Codegen (0.72.4):
+ - RCTRequired (0.73.2)
+ - RCTTypeSafety (0.73.2):
+ - FBLazyVector (= 0.73.2)
+ - RCTRequired (= 0.73.2)
+ - React-Core (= 0.73.2)
+ - React (0.73.2):
+ - React-Core (= 0.73.2)
+ - React-Core/DevSupport (= 0.73.2)
+ - React-Core/RCTWebSocket (= 0.73.2)
+ - React-RCTActionSheet (= 0.73.2)
+ - React-RCTAnimation (= 0.73.2)
+ - React-RCTBlob (= 0.73.2)
+ - React-RCTImage (= 0.73.2)
+ - React-RCTLinking (= 0.73.2)
+ - React-RCTNetwork (= 0.73.2)
+ - React-RCTSettings (= 0.73.2)
+ - React-RCTText (= 0.73.2)
+ - React-RCTVibration (= 0.73.2)
+ - React-callinvoker (0.73.2)
+ - React-Codegen (0.73.2):
- DoubleConversion
- FBReactNativeSpec
- glog
@@ -338,255 +340,821 @@ PODS:
- React-rncore
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - React-Core (0.72.4):
+ - React-Core (0.73.2):
- glog
- hermes-engine
- - RCT-Folly (= 2021.07.22.00)
- - React-Core/Default (= 0.72.4)
+ - RCT-Folly (= 2022.05.16.00)
+ - React-Core/Default (= 0.73.2)
- React-cxxreact
- React-hermes
- React-jsi
- React-jsiexecutor
- React-perflogger
- - React-runtimeexecutor
+ - React-runtimescheduler
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/CoreModulesHeaders (0.72.4):
+ - React-Core/CoreModulesHeaders (0.73.2):
- glog
- hermes-engine
- - RCT-Folly (= 2021.07.22.00)
+ - RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-hermes
- React-jsi
- React-jsiexecutor
- React-perflogger
- - React-runtimeexecutor
+ - React-runtimescheduler
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/Default (0.72.4):
+ - React-Core/Default (0.73.2):
- glog
- hermes-engine
- - RCT-Folly (= 2021.07.22.00)
+ - RCT-Folly (= 2022.05.16.00)
- React-cxxreact
- React-hermes
- React-jsi
- React-jsiexecutor
- React-perflogger
- - React-runtimeexecutor
+ - React-runtimescheduler
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/DevSupport (0.72.4):
+ - React-Core/DevSupport (0.73.2):
- glog
- hermes-engine
- - RCT-Folly (= 2021.07.22.00)
- - React-Core/Default (= 0.72.4)
- - React-Core/RCTWebSocket (= 0.72.4)
+ - RCT-Folly (= 2022.05.16.00)
+ - React-Core/Default (= 0.73.2)
+ - React-Core/RCTWebSocket (= 0.73.2)
- React-cxxreact
- React-hermes
- React-jsi
- React-jsiexecutor
- - React-jsinspector (= 0.72.4)
+ - React-jsinspector (= 0.73.2)
- React-perflogger
- - React-runtimeexecutor
+ - React-runtimescheduler
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTActionSheetHeaders (0.72.4):
+ - React-Core/RCTActionSheetHeaders (0.73.2):
- glog
- hermes-engine
- - RCT-Folly (= 2021.07.22.00)
+ - RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-hermes
- React-jsi
- React-jsiexecutor
- React-perflogger
- - React-runtimeexecutor
+ - React-runtimescheduler
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTAnimationHeaders (0.72.4):
+ - React-Core/RCTAnimationHeaders (0.73.2):
- glog
- hermes-engine
- - RCT-Folly (= 2021.07.22.00)
+ - RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-hermes
- React-jsi
- React-jsiexecutor
- React-perflogger
- - React-runtimeexecutor
+ - React-runtimescheduler
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTBlobHeaders (0.72.4):
+ - React-Core/RCTBlobHeaders (0.73.2):
- glog
- hermes-engine
- - RCT-Folly (= 2021.07.22.00)
+ - RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-hermes
- React-jsi
- React-jsiexecutor
- React-perflogger
- - React-runtimeexecutor
+ - React-runtimescheduler
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTImageHeaders (0.72.4):
+ - React-Core/RCTImageHeaders (0.73.2):
- glog
- hermes-engine
- - RCT-Folly (= 2021.07.22.00)
+ - RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-hermes
- React-jsi
- React-jsiexecutor
- React-perflogger
- - React-runtimeexecutor
+ - React-runtimescheduler
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTLinkingHeaders (0.72.4):
+ - React-Core/RCTLinkingHeaders (0.73.2):
- glog
- hermes-engine
- - RCT-Folly (= 2021.07.22.00)
+ - RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-hermes
- React-jsi
- React-jsiexecutor
- React-perflogger
- - React-runtimeexecutor
+ - React-runtimescheduler
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTNetworkHeaders (0.72.4):
+ - React-Core/RCTNetworkHeaders (0.73.2):
- glog
- hermes-engine
- - RCT-Folly (= 2021.07.22.00)
+ - RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-hermes
- React-jsi
- React-jsiexecutor
- React-perflogger
- - React-runtimeexecutor
+ - React-runtimescheduler
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTSettingsHeaders (0.72.4):
+ - React-Core/RCTSettingsHeaders (0.73.2):
- glog
- hermes-engine
- - RCT-Folly (= 2021.07.22.00)
+ - RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-hermes
- React-jsi
- React-jsiexecutor
- React-perflogger
- - React-runtimeexecutor
+ - React-runtimescheduler
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTTextHeaders (0.72.4):
+ - React-Core/RCTTextHeaders (0.73.2):
- glog
- hermes-engine
- - RCT-Folly (= 2021.07.22.00)
+ - RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-hermes
- React-jsi
- React-jsiexecutor
- React-perflogger
- - React-runtimeexecutor
+ - React-runtimescheduler
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTVibrationHeaders (0.72.4):
+ - React-Core/RCTVibrationHeaders (0.73.2):
- glog
- hermes-engine
- - RCT-Folly (= 2021.07.22.00)
+ - RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-hermes
- React-jsi
- React-jsiexecutor
- React-perflogger
- - React-runtimeexecutor
+ - React-runtimescheduler
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-Core/RCTWebSocket (0.72.4):
+ - React-Core/RCTWebSocket (0.73.2):
- glog
- hermes-engine
- - RCT-Folly (= 2021.07.22.00)
- - React-Core/Default (= 0.72.4)
+ - RCT-Folly (= 2022.05.16.00)
+ - React-Core/Default (= 0.73.2)
- React-cxxreact
- React-hermes
- React-jsi
- React-jsiexecutor
- React-perflogger
- - React-runtimeexecutor
+ - React-runtimescheduler
- React-utils
- SocketRocket (= 0.6.1)
- Yoga
- - React-CoreModules (0.72.4):
- - RCT-Folly (= 2021.07.22.00)
- - RCTTypeSafety (= 0.72.4)
- - React-Codegen (= 0.72.4)
- - React-Core/CoreModulesHeaders (= 0.72.4)
- - React-jsi (= 0.72.4)
+ - React-CoreModules (0.73.2):
+ - RCT-Folly (= 2022.05.16.00)
+ - RCTTypeSafety (= 0.73.2)
+ - React-Codegen
+ - React-Core/CoreModulesHeaders (= 0.73.2)
+ - React-jsi (= 0.73.2)
+ - React-NativeModulesApple
- React-RCTBlob
- - React-RCTImage (= 0.72.4)
- - ReactCommon/turbomodule/core (= 0.72.4)
+ - React-RCTImage (= 0.73.2)
+ - ReactCommon
- SocketRocket (= 0.6.1)
- - React-cxxreact (0.72.4):
- - boost (= 1.76.0)
+ - React-cxxreact (0.73.2):
+ - boost (= 1.83.0)
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2022.05.16.00)
+ - React-callinvoker (= 0.73.2)
+ - React-debug (= 0.73.2)
+ - React-jsi (= 0.73.2)
+ - React-jsinspector (= 0.73.2)
+ - React-logger (= 0.73.2)
+ - React-perflogger (= 0.73.2)
+ - React-runtimeexecutor (= 0.73.2)
+ - React-debug (0.73.2)
+ - React-Fabric (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric/animations (= 0.73.2)
+ - React-Fabric/attributedstring (= 0.73.2)
+ - React-Fabric/componentregistry (= 0.73.2)
+ - React-Fabric/componentregistrynative (= 0.73.2)
+ - React-Fabric/components (= 0.73.2)
+ - React-Fabric/core (= 0.73.2)
+ - React-Fabric/imagemanager (= 0.73.2)
+ - React-Fabric/leakchecker (= 0.73.2)
+ - React-Fabric/mounting (= 0.73.2)
+ - React-Fabric/scheduler (= 0.73.2)
+ - React-Fabric/telemetry (= 0.73.2)
+ - React-Fabric/templateprocessor (= 0.73.2)
+ - React-Fabric/textlayoutmanager (= 0.73.2)
+ - React-Fabric/uimanager (= 0.73.2)
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/animations (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/attributedstring (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/componentregistry (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/componentregistrynative (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/components (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric/components/inputaccessory (= 0.73.2)
+ - React-Fabric/components/legacyviewmanagerinterop (= 0.73.2)
+ - React-Fabric/components/modal (= 0.73.2)
+ - React-Fabric/components/rncore (= 0.73.2)
+ - React-Fabric/components/root (= 0.73.2)
+ - React-Fabric/components/safeareaview (= 0.73.2)
+ - React-Fabric/components/scrollview (= 0.73.2)
+ - React-Fabric/components/text (= 0.73.2)
+ - React-Fabric/components/textinput (= 0.73.2)
+ - React-Fabric/components/unimplementedview (= 0.73.2)
+ - React-Fabric/components/view (= 0.73.2)
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/components/inputaccessory (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/components/legacyviewmanagerinterop (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/components/modal (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/components/rncore (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/components/root (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/components/safeareaview (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/components/scrollview (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/components/text (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/components/textinput (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/components/unimplementedview (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/components/view (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-Fabric/core (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/imagemanager (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/leakchecker (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/mounting (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/scheduler (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/telemetry (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/templateprocessor (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/textlayoutmanager (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric/uimanager
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/uimanager (0.73.2):
- DoubleConversion
+ - fmt (~> 6.2.1)
- glog
- hermes-engine
- - RCT-Folly (= 2021.07.22.00)
- - React-callinvoker (= 0.72.4)
- - React-debug (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-jsinspector (= 0.72.4)
- - React-logger (= 0.72.4)
- - React-perflogger (= 0.72.4)
- - React-runtimeexecutor (= 0.72.4)
- - React-debug (0.72.4)
- - React-hermes (0.72.4):
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-FabricImage (0.73.2):
- DoubleConversion
+ - fmt (~> 6.2.1)
- glog
- hermes-engine
- - RCT-Folly (= 2021.07.22.00)
- - RCT-Folly/Futures (= 2021.07.22.00)
- - React-cxxreact (= 0.72.4)
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - RCTRequired (= 0.73.2)
+ - RCTTypeSafety (= 0.73.2)
+ - React-Fabric
+ - React-graphics
+ - React-ImageManager
- React-jsi
- - React-jsiexecutor (= 0.72.4)
- - React-jsinspector (= 0.72.4)
- - React-perflogger (= 0.72.4)
- - React-jsi (0.72.4):
- - boost (= 1.76.0)
+ - React-jsiexecutor (= 0.73.2)
+ - React-logger
+ - React-rendererdebug
+ - React-utils
+ - ReactCommon
+ - Yoga
+ - React-graphics (0.73.2):
+ - glog
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - React-Core/Default (= 0.73.2)
+ - React-utils
+ - React-hermes (0.73.2):
- DoubleConversion
+ - fmt (~> 6.2.1)
- glog
- hermes-engine
- - RCT-Folly (= 2021.07.22.00)
- - React-jsiexecutor (0.72.4):
+ - RCT-Folly (= 2022.05.16.00)
+ - RCT-Folly/Futures (= 2022.05.16.00)
+ - React-cxxreact (= 0.73.2)
+ - React-jsi
+ - React-jsiexecutor (= 0.73.2)
+ - React-jsinspector (= 0.73.2)
+ - React-perflogger (= 0.73.2)
+ - React-ImageManager (0.73.2):
+ - glog
+ - RCT-Folly/Fabric
+ - React-Core/Default
+ - React-debug
+ - React-Fabric
+ - React-graphics
+ - React-rendererdebug
+ - React-utils
+ - React-jserrorhandler (0.73.2):
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - React-debug
+ - React-jsi
+ - React-Mapbuffer
+ - React-jsi (0.73.2):
+ - boost (= 1.83.0)
- DoubleConversion
+ - fmt (~> 6.2.1)
- glog
- hermes-engine
- - RCT-Folly (= 2021.07.22.00)
- - React-cxxreact (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-perflogger (= 0.72.4)
- - React-jsinspector (0.72.4)
- - React-logger (0.72.4):
+ - RCT-Folly (= 2022.05.16.00)
+ - React-jsiexecutor (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
- glog
+ - hermes-engine
+ - RCT-Folly (= 2022.05.16.00)
+ - React-cxxreact (= 0.73.2)
+ - React-jsi (= 0.73.2)
+ - React-perflogger (= 0.73.2)
+ - React-jsinspector (0.73.2)
+ - React-logger (0.73.2):
+ - glog
+ - React-Mapbuffer (0.73.2):
+ - glog
+ - React-debug
- react-native-airship (15.3.1):
- AirshipFrameworkProxy (= 2.1.1)
- React-Core
@@ -600,8 +1168,6 @@ PODS:
- React-Core
- react-native-document-picker (8.2.1):
- React-Core
- - react-native-flipper (0.159.0):
- - React-Core
- react-native-geolocation (3.0.6):
- React-Core
- react-native-image-manipulator (1.0.5):
@@ -610,9 +1176,9 @@ PODS:
- React-Core
- react-native-key-command (1.0.6):
- React-Core
- - react-native-netinfo (9.3.10):
+ - react-native-netinfo (11.2.1):
- React-Core
- - react-native-pager-view (6.2.0):
+ - react-native-pager-view (6.2.2):
- React-Core
- react-native-pdf (6.7.3):
- React-Core
@@ -627,17 +1193,15 @@ PODS:
- React-Core
- react-native-render-html (6.3.1):
- React-Core
- - react-native-safe-area-context (4.4.1):
- - RCT-Folly
- - RCTRequired
- - RCTTypeSafety
+ - react-native-safe-area-context (4.7.4):
- React-Core
- - ReactCommon/turbomodule/core
- - react-native-view-shot (3.6.0):
+ - react-native-view-shot (3.8.0):
- React-Core
- - react-native-webview (11.23.0):
+ - react-native-webview (13.6.3):
- React-Core
- - React-NativeModulesApple (0.72.4):
+ - React-nativeconfig (0.73.2)
+ - React-NativeModulesApple (0.73.2):
+ - glog
- hermes-engine
- React-callinvoker
- React-Core
@@ -646,114 +1210,169 @@ PODS:
- React-runtimeexecutor
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - React-perflogger (0.72.4)
- - React-RCTActionSheet (0.72.4):
- - React-Core/RCTActionSheetHeaders (= 0.72.4)
- - React-RCTAnimation (0.72.4):
- - RCT-Folly (= 2021.07.22.00)
- - RCTTypeSafety (= 0.72.4)
- - React-Codegen (= 0.72.4)
- - React-Core/RCTAnimationHeaders (= 0.72.4)
- - React-jsi (= 0.72.4)
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-RCTAppDelegate (0.72.4):
+ - React-perflogger (0.73.2)
+ - React-RCTActionSheet (0.73.2):
+ - React-Core/RCTActionSheetHeaders (= 0.73.2)
+ - React-RCTAnimation (0.73.2):
+ - RCT-Folly (= 2022.05.16.00)
+ - RCTTypeSafety
+ - React-Codegen
+ - React-Core/RCTAnimationHeaders
+ - React-jsi
+ - React-NativeModulesApple
+ - ReactCommon
+ - React-RCTAppDelegate (0.73.2):
- RCT-Folly
- RCTRequired
- RCTTypeSafety
- React-Core
- React-CoreModules
- React-hermes
+ - React-nativeconfig
- React-NativeModulesApple
+ - React-RCTFabric
- React-RCTImage
- React-RCTNetwork
- React-runtimescheduler
- - ReactCommon/turbomodule/core
- - React-RCTBlob (0.72.4):
+ - ReactCommon
+ - React-RCTBlob (0.73.2):
- hermes-engine
- - RCT-Folly (= 2021.07.22.00)
- - React-Codegen (= 0.72.4)
- - React-Core/RCTBlobHeaders (= 0.72.4)
- - React-Core/RCTWebSocket (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-RCTNetwork (= 0.72.4)
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-RCTImage (0.72.4):
- - RCT-Folly (= 2021.07.22.00)
- - RCTTypeSafety (= 0.72.4)
- - React-Codegen (= 0.72.4)
- - React-Core/RCTImageHeaders (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-RCTNetwork (= 0.72.4)
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-RCTLinking (0.72.4):
- - React-Codegen (= 0.72.4)
- - React-Core/RCTLinkingHeaders (= 0.72.4)
- - React-jsi (= 0.72.4)
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-RCTNetwork (0.72.4):
- - RCT-Folly (= 2021.07.22.00)
- - RCTTypeSafety (= 0.72.4)
- - React-Codegen (= 0.72.4)
- - React-Core/RCTNetworkHeaders (= 0.72.4)
- - React-jsi (= 0.72.4)
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-RCTSettings (0.72.4):
- - RCT-Folly (= 2021.07.22.00)
- - RCTTypeSafety (= 0.72.4)
- - React-Codegen (= 0.72.4)
- - React-Core/RCTSettingsHeaders (= 0.72.4)
- - React-jsi (= 0.72.4)
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-RCTText (0.72.4):
- - React-Core/RCTTextHeaders (= 0.72.4)
- - React-RCTVibration (0.72.4):
- - RCT-Folly (= 2021.07.22.00)
- - React-Codegen (= 0.72.4)
- - React-Core/RCTVibrationHeaders (= 0.72.4)
- - React-jsi (= 0.72.4)
- - ReactCommon/turbomodule/core (= 0.72.4)
- - React-rncore (0.72.4)
- - React-runtimeexecutor (0.72.4):
- - React-jsi (= 0.72.4)
- - React-runtimescheduler (0.72.4):
+ - RCT-Folly (= 2022.05.16.00)
+ - React-Codegen
+ - React-Core/RCTBlobHeaders
+ - React-Core/RCTWebSocket
+ - React-jsi
+ - React-NativeModulesApple
+ - React-RCTNetwork
+ - ReactCommon
+ - React-RCTFabric (0.73.2):
- glog
- hermes-engine
- - RCT-Folly (= 2021.07.22.00)
+ - RCT-Folly/Fabric (= 2022.05.16.00)
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-FabricImage
+ - React-graphics
+ - React-ImageManager
+ - React-jsi
+ - React-nativeconfig
+ - React-RCTImage
+ - React-RCTText
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - Yoga
+ - React-RCTImage (0.73.2):
+ - RCT-Folly (= 2022.05.16.00)
+ - RCTTypeSafety
+ - React-Codegen
+ - React-Core/RCTImageHeaders
+ - React-jsi
+ - React-NativeModulesApple
+ - React-RCTNetwork
+ - ReactCommon
+ - React-RCTLinking (0.73.2):
+ - React-Codegen
+ - React-Core/RCTLinkingHeaders (= 0.73.2)
+ - React-jsi (= 0.73.2)
+ - React-NativeModulesApple
+ - ReactCommon
+ - ReactCommon/turbomodule/core (= 0.73.2)
+ - React-RCTNetwork (0.73.2):
+ - RCT-Folly (= 2022.05.16.00)
+ - RCTTypeSafety
+ - React-Codegen
+ - React-Core/RCTNetworkHeaders
+ - React-jsi
+ - React-NativeModulesApple
+ - ReactCommon
+ - React-RCTSettings (0.73.2):
+ - RCT-Folly (= 2022.05.16.00)
+ - RCTTypeSafety
+ - React-Codegen
+ - React-Core/RCTSettingsHeaders
+ - React-jsi
+ - React-NativeModulesApple
+ - ReactCommon
+ - React-RCTText (0.73.2):
+ - React-Core/RCTTextHeaders (= 0.73.2)
+ - Yoga
+ - React-RCTVibration (0.73.2):
+ - RCT-Folly (= 2022.05.16.00)
+ - React-Codegen
+ - React-Core/RCTVibrationHeaders
+ - React-jsi
+ - React-NativeModulesApple
+ - ReactCommon
+ - React-rendererdebug (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - RCT-Folly (= 2022.05.16.00)
+ - React-debug
+ - React-rncore (0.73.2)
+ - React-runtimeexecutor (0.73.2):
+ - React-jsi (= 0.73.2)
+ - React-runtimescheduler (0.73.2):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2022.05.16.00)
- React-callinvoker
+ - React-cxxreact
- React-debug
- React-jsi
+ - React-rendererdebug
- React-runtimeexecutor
- - React-utils (0.72.4):
+ - React-utils
+ - React-utils (0.73.2):
- glog
- - RCT-Folly (= 2021.07.22.00)
+ - RCT-Folly (= 2022.05.16.00)
- React-debug
- - ReactCommon/turbomodule/bridging (0.72.4):
+ - ReactCommon (0.73.2):
+ - React-logger (= 0.73.2)
+ - ReactCommon/turbomodule (= 0.73.2)
+ - ReactCommon/turbomodule (0.73.2):
- DoubleConversion
+ - fmt (~> 6.2.1)
- glog
- hermes-engine
- - RCT-Folly (= 2021.07.22.00)
- - React-callinvoker (= 0.72.4)
- - React-cxxreact (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-logger (= 0.72.4)
- - React-perflogger (= 0.72.4)
- - ReactCommon/turbomodule/core (0.72.4):
+ - RCT-Folly (= 2022.05.16.00)
+ - React-callinvoker (= 0.73.2)
+ - React-cxxreact (= 0.73.2)
+ - React-jsi (= 0.73.2)
+ - React-logger (= 0.73.2)
+ - React-perflogger (= 0.73.2)
+ - ReactCommon/turbomodule/bridging (= 0.73.2)
+ - ReactCommon/turbomodule/core (= 0.73.2)
+ - ReactCommon/turbomodule/bridging (0.73.2):
- DoubleConversion
+ - fmt (~> 6.2.1)
- glog
- hermes-engine
- - RCT-Folly (= 2021.07.22.00)
- - React-callinvoker (= 0.72.4)
- - React-cxxreact (= 0.72.4)
- - React-jsi (= 0.72.4)
- - React-logger (= 0.72.4)
- - React-perflogger (= 0.72.4)
+ - RCT-Folly (= 2022.05.16.00)
+ - React-callinvoker (= 0.73.2)
+ - React-cxxreact (= 0.73.2)
+ - React-jsi (= 0.73.2)
+ - React-logger (= 0.73.2)
+ - React-perflogger (= 0.73.2)
+ - ReactCommon/turbomodule/core (0.73.2):
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2022.05.16.00)
+ - React-callinvoker (= 0.73.2)
+ - React-cxxreact (= 0.73.2)
+ - React-jsi (= 0.73.2)
+ - React-logger (= 0.73.2)
+ - React-perflogger (= 0.73.2)
- RNAppleAuthentication (2.2.2):
- React-Core
- - RNCAsyncStorage (1.19.3):
+ - RNCAsyncStorage (1.21.0):
- React-Core
- RNCClipboard (1.12.1):
- React-Core
- - RNCPicker (2.4.4):
+ - RNCPicker (2.5.1):
- React-Core
- RNDeviceInfo (10.3.0):
- React-Core
@@ -776,11 +1395,13 @@ PODS:
- Firebase/Performance (= 8.8.0)
- React-Core
- RNFBApp
- - RNFlashList (1.6.1):
+ - RNFlashList (1.6.3):
- React-Core
- RNFS (2.20.0):
- React-Core
- - RNGestureHandler (2.12.0):
+ - RNGestureHandler (2.14.0):
+ - glog
+ - RCT-Folly (= 2022.05.16.00)
- React-Core
- RNGoogleSignin (10.0.1):
- GoogleSignIn (~> 7.0)
@@ -803,13 +1424,15 @@ PODS:
- RNReactNativeHapticFeedback (1.14.0):
- React-Core
- RNReanimated (3.6.1):
- - RCT-Folly (= 2021.07.22.00)
+ - glog
+ - RCT-Folly (= 2022.05.16.00)
- React-Core
- ReactCommon/turbomodule/core
- - RNScreens (3.21.0):
+ - RNScreens (3.29.0):
+ - glog
+ - RCT-Folly (= 2022.05.16.00)
- React-Core
- - React-RCTImage
- - RNSVG (13.14.0):
+ - RNSVG (14.0.0):
- React-Core
- SDWebImage (5.17.0):
- SDWebImage/Core (= 5.17.0)
@@ -823,46 +1446,43 @@ PODS:
- libwebp (~> 1.0)
- SDWebImage/Core (~> 5.17)
- SocketRocket (0.6.1)
- - Turf (2.6.1)
+ - Turf (2.7.0)
- VisionCamera (2.16.2):
- React
- React-callinvoker
- React-Core
- Yoga (1.14.0)
- - YogaKit (1.18.1):
- - Yoga (~> 1.14)
DEPENDENCIES:
- AirshipServiceExtension
- boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`)
- BVLinearGradient (from `../node_modules/react-native-linear-gradient`)
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
- - EXApplication (from `../node_modules/expo-application/ios`)
- Expo (from `../node_modules/expo`)
- ExpoImage (from `../node_modules/expo-image/ios`)
- ExpoModulesCore (from `../node_modules/expo-modules-core`)
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
- FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
- - Flipper (= 0.182.0)
+ - Flipper (= 0.201.0)
- Flipper-Boost-iOSX (= 1.76.0.1.11)
- Flipper-DoubleConversion (= 3.2.0.1)
- Flipper-Fmt (= 7.1.7)
- Flipper-Folly (= 2.6.10)
- Flipper-Glog (= 0.5.0.5)
- Flipper-PeerTalk (= 0.0.4)
- - FlipperKit (= 0.182.0)
- - FlipperKit/Core (= 0.182.0)
- - FlipperKit/CppBridge (= 0.182.0)
- - FlipperKit/FBCxxFollyDynamicConvert (= 0.182.0)
- - FlipperKit/FBDefines (= 0.182.0)
- - FlipperKit/FKPortForwarding (= 0.182.0)
- - FlipperKit/FlipperKitHighlightOverlay (= 0.182.0)
- - FlipperKit/FlipperKitLayoutPlugin (= 0.182.0)
- - FlipperKit/FlipperKitLayoutTextSearchable (= 0.182.0)
- - FlipperKit/FlipperKitNetworkPlugin (= 0.182.0)
- - FlipperKit/FlipperKitReactPlugin (= 0.182.0)
- - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.182.0)
- - FlipperKit/SKIOSNetworkPlugin (= 0.182.0)
+ - FlipperKit (= 0.201.0)
+ - FlipperKit/Core (= 0.201.0)
+ - FlipperKit/CppBridge (= 0.201.0)
+ - FlipperKit/FBCxxFollyDynamicConvert (= 0.201.0)
+ - FlipperKit/FBDefines (= 0.201.0)
+ - FlipperKit/FKPortForwarding (= 0.201.0)
+ - FlipperKit/FlipperKitHighlightOverlay (= 0.201.0)
+ - FlipperKit/FlipperKitLayoutPlugin (= 0.201.0)
+ - FlipperKit/FlipperKitLayoutTextSearchable (= 0.201.0)
+ - FlipperKit/FlipperKitNetworkPlugin (= 0.201.0)
+ - FlipperKit/FlipperKitReactPlugin (= 0.201.0)
+ - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.201.0)
+ - FlipperKit/SKIOSNetworkPlugin (= 0.201.0)
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
- hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`)
- libevent (~> 2.1.12)
@@ -870,6 +1490,7 @@ DEPENDENCIES:
- "onfido-react-native-sdk (from `../node_modules/@onfido/react-native-sdk`)"
- OpenSSL-Universal (= 1.1.1100)
- RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
+ - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
- RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
- RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)
- React (from `../node_modules/react-native/`)
@@ -881,17 +1502,22 @@ DEPENDENCIES:
- React-CoreModules (from `../node_modules/react-native/React/CoreModules`)
- React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`)
- React-debug (from `../node_modules/react-native/ReactCommon/react/debug`)
+ - React-Fabric (from `../node_modules/react-native/ReactCommon`)
+ - React-FabricImage (from `../node_modules/react-native/ReactCommon`)
+ - React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`)
- React-hermes (from `../node_modules/react-native/ReactCommon/hermes`)
+ - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`)
+ - React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`)
- React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)
- React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
- - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
+ - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector-modern`)
- React-logger (from `../node_modules/react-native/ReactCommon/logger`)
+ - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`)
- "react-native-airship (from `../node_modules/@ua/react-native-airship`)"
- react-native-blob-util (from `../node_modules/react-native-blob-util`)
- "react-native-cameraroll (from `../node_modules/@react-native-camera-roll/camera-roll`)"
- react-native-config (from `../node_modules/react-native-config`)
- react-native-document-picker (from `../node_modules/react-native-document-picker`)
- - react-native-flipper (from `../node_modules/react-native-flipper`)
- "react-native-geolocation (from `../node_modules/@react-native-community/geolocation`)"
- "react-native-image-manipulator (from `../node_modules/@oguzhnatly/react-native-image-manipulator`)"
- react-native-image-picker (from `../node_modules/react-native-image-picker`)
@@ -906,18 +1532,21 @@ DEPENDENCIES:
- react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
- react-native-view-shot (from `../node_modules/react-native-view-shot`)
- react-native-webview (from `../node_modules/react-native-webview`)
+ - React-nativeconfig (from `../node_modules/react-native/ReactCommon`)
- React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`)
- React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)
- React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
- React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`)
- React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`)
- React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`)
+ - React-RCTFabric (from `../node_modules/react-native/React`)
- React-RCTImage (from `../node_modules/react-native/Libraries/Image`)
- React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`)
- React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`)
- React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`)
- React-RCTText (from `../node_modules/react-native/Libraries/Text`)
- React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
+ - React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`)
- React-rncore (from `../node_modules/react-native/ReactCommon`)
- React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`)
- React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`)
@@ -999,7 +1628,6 @@ SPEC REPOS:
- SDWebImageWebPCoder
- SocketRocket
- Turf
- - YogaKit
EXTERNAL SOURCES:
boost:
@@ -1008,8 +1636,6 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native-linear-gradient"
DoubleConversion:
:podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
- EXApplication:
- :path: "../node_modules/expo-application/ios"
Expo:
:path: "../node_modules/expo"
ExpoImage:
@@ -1024,7 +1650,7 @@ EXTERNAL SOURCES:
:podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
hermes-engine:
:podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec"
- :tag: hermes-2023-08-07-RNv0.72.4-813b2def12bc9df02654b3e3653ae4a68d0572e0
+ :tag: hermes-2023-11-17-RNv0.73.0-21043a3fc062be445e56a2c10ecd8be028dd9cc5
lottie-react-native:
:path: "../node_modules/lottie-react-native"
onfido-react-native-sdk:
@@ -1049,16 +1675,28 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/ReactCommon/cxxreact"
React-debug:
:path: "../node_modules/react-native/ReactCommon/react/debug"
+ React-Fabric:
+ :path: "../node_modules/react-native/ReactCommon"
+ React-FabricImage:
+ :path: "../node_modules/react-native/ReactCommon"
+ React-graphics:
+ :path: "../node_modules/react-native/ReactCommon/react/renderer/graphics"
React-hermes:
:path: "../node_modules/react-native/ReactCommon/hermes"
+ React-ImageManager:
+ :path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios"
+ React-jserrorhandler:
+ :path: "../node_modules/react-native/ReactCommon/jserrorhandler"
React-jsi:
:path: "../node_modules/react-native/ReactCommon/jsi"
React-jsiexecutor:
:path: "../node_modules/react-native/ReactCommon/jsiexecutor"
React-jsinspector:
- :path: "../node_modules/react-native/ReactCommon/jsinspector"
+ :path: "../node_modules/react-native/ReactCommon/jsinspector-modern"
React-logger:
:path: "../node_modules/react-native/ReactCommon/logger"
+ React-Mapbuffer:
+ :path: "../node_modules/react-native/ReactCommon"
react-native-airship:
:path: "../node_modules/@ua/react-native-airship"
react-native-blob-util:
@@ -1069,8 +1707,6 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native-config"
react-native-document-picker:
:path: "../node_modules/react-native-document-picker"
- react-native-flipper:
- :path: "../node_modules/react-native-flipper"
react-native-geolocation:
:path: "../node_modules/@react-native-community/geolocation"
react-native-image-manipulator:
@@ -1099,6 +1735,8 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native-view-shot"
react-native-webview:
:path: "../node_modules/react-native-webview"
+ React-nativeconfig:
+ :path: "../node_modules/react-native/ReactCommon"
React-NativeModulesApple:
:path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios"
React-perflogger:
@@ -1111,6 +1749,8 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/Libraries/AppDelegate"
React-RCTBlob:
:path: "../node_modules/react-native/Libraries/Blob"
+ React-RCTFabric:
+ :path: "../node_modules/react-native/React"
React-RCTImage:
:path: "../node_modules/react-native/Libraries/Image"
React-RCTLinking:
@@ -1123,6 +1763,8 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/Libraries/Text"
React-RCTVibration:
:path: "../node_modules/react-native/Libraries/Vibration"
+ React-rendererdebug:
+ :path: "../node_modules/react-native/ReactCommon/react/renderer/debug"
React-rncore:
:path: "../node_modules/react-native/ReactCommon"
React-runtimeexecutor:
@@ -1185,16 +1827,15 @@ SPEC CHECKSUMS:
AirshipFrameworkProxy: ea1b6c665c798637b93c465b5e505be3011f1d9d
AirshipServiceExtension: 89c6e25a69f3458d9dbd581c700cffb196b61930
AppAuth: 3bb1d1cd9340bd09f5ed189fb00b1cc28e1e8570
- boost: 57d2868c099736d80fcd648bf211b4431e51a558
+ boost: d3f49c53809116a5d38da093a8aa78bf551aed09
BVLinearGradient: 421743791a59d259aec53f4c58793aad031da2ca
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
- DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54
- EXApplication: 042aa2e3f05258a16962ea1a9914bf288db9c9a1
- Expo: 61a8e1aa94311557c137c0a4dfd4fe78281cfbb4
- ExpoImage: e35fb1acb84c01575b4f5c5f6260906639a3320b
- ExpoModulesCore: c480fd4e3c7c8e81f0a6ba3a7c56869f25fe016d
- FBLazyVector: 5d4a3b7f411219a45a6d952f77d2c0a6c9989da5
- FBReactNativeSpec: 3fc2d478e1c4b08276f9dd9128f80ec6d5d85c1f
+ DoubleConversion: fea03f2699887d960129cc54bba7e52542b6f953
+ Expo: cd2dc043dd1cc3d9e8e4e035fb9a41b421e8f13f
+ ExpoImage: 1cdaa65a6a70bb01067e21ad1347ff2d973885f5
+ ExpoModulesCore: 01c0abfa6cd9c41c4bd76d8a1a079e6b591db10f
+ FBLazyVector: fbc4957d9aa695250b55d879c1d86f79d7e69ab4
+ FBReactNativeSpec: 86de768f89901ef6ed3207cd686362189d64ac88
Firebase: 629510f1a9ddb235f3a7c5c8ceb23ba887f0f814
FirebaseABTesting: 10cbce8db9985ae2e3847ea44e9947dd18f94e10
FirebaseAnalytics: 5506ea8b867d8423485a84b4cd612d279f7b0b8a
@@ -1204,123 +1845,130 @@ SPEC CHECKSUMS:
FirebaseInstallations: 40bd9054049b2eae9a2c38ef1c3dd213df3605cd
FirebasePerformance: 0c01a7a496657d7cea86d40c0b1725259d164c6c
FirebaseRemoteConfig: 2d6e2cfdb49af79535c8af8a80a4a5009038ec2b
- Flipper: 6edb735e6c3e332975d1b17956bcc584eccf5818
+ Flipper: c7a0093234c4bdd456e363f2f19b2e4b27652d44
Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c
Flipper-DoubleConversion: 2dc99b02f658daf147069aad9dbd29d8feb06d30
Flipper-Fmt: 60cbdd92fc254826e61d669a5d87ef7015396a9b
Flipper-Folly: 584845625005ff068a6ebf41f857f468decd26b3
Flipper-Glog: 70c50ce58ddaf67dc35180db05f191692570f446
Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9
- FlipperKit: 2efad7007d6745a3f95e4034d547be637f89d3f6
+ FlipperKit: 37525a5d056ef9b93d1578e04bc3ea1de940094f
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
- glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b
+ glog: c5d68082e772fa1c511173d6b30a9de2c05a69a2
GoogleAppMeasurement: 5ba1164e3c844ba84272555e916d0a6d3d977e91
- GoogleDataTransport: f0308f5905a745f94fb91fea9c6cbaf3831cb1bd
+ GoogleDataTransport: 57c22343ab29bc686febbf7cbb13bad167c2d8fe
GoogleSignIn: b232380cf495a429b8095d3178a8d5855b42e842
- GoogleUtilities: 9aa0ad5a7bc171f8bae016300bfcfa3fb8425749
+ GoogleUtilities: 0759d1a57ebb953965c2dfe0ba4c82e95ccc2e34
GTMAppAuth: 99fb010047ba3973b7026e45393f51f27ab965ae
- GTMSessionFetcher: e8647203b65cee28c5f73d0f473d096653945e72
- hermes-engine: 81191603c4eaa01f5e4ae5737a9efcf64756c7b2
+ GTMSessionFetcher: 41b9ef0b4c08a6db4b7eb51a21ae5183ec99a2c8
+ hermes-engine: b361c9ef5ef3cda53f66e195599b47e1f84ffa35
libaom: 144606b1da4b5915a1054383c3a4459ccdb3c661
libavif: 84bbb62fb232c3018d6f1bab79beea87e35de7b7
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
libvmaf: 27f523f1e63c694d14d534cd0fddd2fab0ae8711
libwebp: 1786c9f4ff8a279e4dac1e8f385004d5fc253009
- lottie-ios: 25e7b2675dad5c3ddad369ac9baab03560c5bfdd
- lottie-react-native: 3a3084faddd3891c276f23fd6e797b83f2021bbc
+ lottie-ios: 3d98679b41fa6fd6aff2352b3953dbd3df8a397e
+ lottie-react-native: a2ae9c27c273b060b2affff2957bc0ff7fdca353
MapboxCommon: 4a0251dd470ee37e7fadda8e285c01921a5e1eb0
MapboxCoreMaps: eb07203bbb0b1509395db5ab89cd3ad6c2e3c04c
MapboxMaps: af50ec61a7eb3b032c3f7962c6bd671d93d2a209
MapboxMobileEvents: de50b3a4de180dd129c326e09cd12c8adaaa46d6
nanopb: a0ba3315591a9ae0a16a309ee504766e90db0c96
- Onfido: c7d010d9793790d44a07799d9be25aa8e3814ee7
+ Onfido: 564f60c39819635ec5b549285a1eec278cc9ba67
onfido-react-native-sdk: b346a620af5669f9fecb6dc3052314a35a94ad9f
OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c
Plaid: 431ef9be5314a1345efb451bc5e6b067bfb3b4c6
- PromisesObjC: 09985d6d70fbe7878040aa746d78236e6946d2ef
- RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1
- RCTRequired: c0569ecc035894e4a68baecb30fe6a7ea6e399f9
- RCTTypeSafety: e90354072c21236e0bcf1699011e39acd25fea2f
- React: a1be3c6dc0a6e949ccd3e659781aa47bbae1868f
- React-callinvoker: 1020b33f6cb1a1824f9ca2a86609fbce2a73c6ed
- React-Codegen: a0a26badf098d4a779acda922caf74f6ecabed28
- React-Core: 52075b80f10c26f62219d7b5d13d7d8089f027b3
- React-CoreModules: 21abab85d7ad9038ce2b1c33d39e3baaf7dc9244
- React-cxxreact: 4ad1cc861e32fb533dad6ff7a4ea25680fa1c994
- React-debug: 17366a3d5c5d2f5fc04f09101a4af38cb42b54ae
- React-hermes: 37377d0a56aa0cf55c65248271866ce3268cde3f
- React-jsi: 6de8b0ccc6b765b58e4eee9ee38049dbeaf5c221
- React-jsiexecutor: c7f826e40fa9cab5d37cab6130b1af237332b594
- React-jsinspector: aaed4cf551c4a1c98092436518c2d267b13a673f
- React-logger: da1ebe05ae06eb6db4b162202faeafac4b435e77
+ PromisesObjC: c50d2056b5253dadbd6c2bea79b0674bd5a52fa4
+ RCT-Folly: 7169b2b1c44399c76a47b5deaaba715eeeb476c0
+ RCTRequired: 9b1e7e262745fb671e33c51c1078d093bd30e322
+ RCTTypeSafety: a759e3b086eccf3e2cbf2493d22f28e082f958e6
+ React: 805f5dd55bbdb92c36b4914c64aaae4c97d358dc
+ React-callinvoker: 6a697867607c990c2c2c085296ee32cfb5e47c01
+ React-Codegen: c4447ffa339f4e7a22e0c9c800eec9084f31899c
+ React-Core: 49f66fecc7695464e9b7bc7dc7cd9473d2c60584
+ React-CoreModules: 710e7c557a1a8180bd1645f5b4bf79f4bd3f5417
+ React-cxxreact: 345857b5e4be000c0527df78be3b41a0677a20ce
+ React-debug: f1637bce73342b2f6eee4982508fdfb088667a87
+ React-Fabric: 4dfcff8f14d8e5a7a60b11b7862dad2a9d99c65b
+ React-FabricImage: 4a9e9510b7f28bbde6a743b18c0cb941a142e938
+ React-graphics: dd5af9d8b1b45171fd6933e19fed522f373bcb10
+ React-hermes: a52d183a5cf8ccb7020ce3df4275b89d01e6b53e
+ React-ImageManager: c5b7db131eff71443d7f3a8d686fd841d18befd3
+ React-jserrorhandler: 97a6a12e2344c3c4fdd7ba1edefb005215c732f8
+ React-jsi: a182068133f80918cd0eec77875abaf943a0b6be
+ React-jsiexecutor: dacd00ce8a18fc00a0ae6c25e3015a6437e5d2e8
+ React-jsinspector: 03644c063fc3621c9a4e8bf263a8150909129618
+ React-logger: 66b168e2b2bee57bd8ce9e69f739d805732a5570
+ React-Mapbuffer: 9ee041e1d7be96da6d76a251f92e72b711c651d6
react-native-airship: 6ded22e4ca54f2f80db80b7b911c2b9b696d9335
react-native-blob-util: 99f4d79189252f597fe0d810c57a3733b1b1dea6
react-native-cameraroll: 8ffb0af7a5e5de225fd667610e2979fc1f0c2151
react-native-config: 7cd105e71d903104e8919261480858940a6b9c0e
react-native-document-picker: 69ca2094d8780cfc1e7e613894d15290fdc54bba
- react-native-flipper: dc5290261fbeeb2faec1bdc57ae6dd8d562e1de4
react-native-geolocation: 0f7fe8a4c2de477e278b0365cce27d089a8c5903
react-native-image-manipulator: c48f64221cfcd46e9eec53619c4c0374f3328a56
react-native-image-picker: c33d4e79f0a14a2b66e5065e14946ae63749660b
react-native-key-command: 5af6ee30ff4932f78da6a2109017549042932aa5
- react-native-netinfo: ccbe1085dffd16592791d550189772e13bf479e2
- react-native-pager-view: 0ccb8bf60e2ebd38b1f3669fa3650ecce81db2df
+ react-native-netinfo: 8a7fd3f7130ef4ad2fb4276d5c9f8d3f28d2df3d
+ react-native-pager-view: 02a5c4962530f7efc10dd51ee9cdabeff5e6c631
react-native-pdf: b4ca3d37a9a86d9165287741c8b2ef4d8940c00e
react-native-performance: cef2b618d47b277fb5c3280b81a3aad1e72f2886
react-native-plaid-link-sdk: df1618a85a615d62ff34e34b76abb7a56497fbc1
react-native-quick-sqlite: bcc7a7a250a40222f18913a97cd356bf82d0a6c4
react-native-render-html: 96c979fe7452a0a41559685d2f83b12b93edac8c
- react-native-safe-area-context: 99b24a0c5acd0d5dcac2b1a7f18c49ea317be99a
- react-native-view-shot: 705f999ac2a24e4e6c909c0ca65c732ed33ca2ff
- react-native-webview: e771bc375f789ebfa02a26939a57dbc6fa897336
- React-NativeModulesApple: edb5ace14f73f4969df6e7b1f3e41bef0012740f
- React-perflogger: 496a1a3dc6737f964107cb3ddae7f9e265ddda58
- React-RCTActionSheet: 02904b932b50e680f4e26e7a686b33ebf7ef3c00
- React-RCTAnimation: 88feaf0a85648fb8fd497ce749829774910276d6
- React-RCTAppDelegate: 5792ac0f0feccb584765fdd7aa81ea320c4d9b0b
- React-RCTBlob: 0dbc9e2a13d241b37d46b53e54630cbad1f0e141
- React-RCTImage: b111645ab901f8e59fc68fbe31f5731bdbeef087
- React-RCTLinking: 3d719727b4c098aad3588aa3559361ee0579f5de
- React-RCTNetwork: b44d3580be05d74556ba4efbf53570f17e38f734
- React-RCTSettings: c0c54b330442c29874cd4dae6e94190dc11a6f6f
- React-RCTText: 9b9f5589d9b649d7246c3f336e116496df28cfe6
- React-RCTVibration: 691c67f3beaf1d084ceed5eb5c1dddd9afa8591e
- React-rncore: 142268f6c92e296dc079aadda3fade778562f9e4
- React-runtimeexecutor: d465ba0c47ef3ed8281143f59605cacc2244d5c7
- React-runtimescheduler: 4941cc1b3cf08b792fbf666342c9fc95f1969035
- React-utils: b79f2411931f9d3ea5781404dcbb2fa8a837e13a
- ReactCommon: 4b2bdcb50a3543e1c2b2849ad44533686610826d
+ react-native-safe-area-context: 2cd91d532de12acdb0a9cbc8d43ac72a8e4c897c
+ react-native-view-shot: 6b7ed61d77d88580fed10954d45fad0eb2d47688
+ react-native-webview: 88293a0f23eca8465c0433c023ec632930e644d0
+ React-nativeconfig: d753fbbc8cecc8ae413d615599ac378bbf6999bb
+ React-NativeModulesApple: 964f4eeab1b4325e8b6a799cf4444c3fd4eb0a9c
+ React-perflogger: 29efe63b7ef5fbaaa50ef6eaa92482f98a24b97e
+ React-RCTActionSheet: 69134c62aefd362027b20da01cd5d14ffd39db3f
+ React-RCTAnimation: 3b5a57087c7a5e727855b803d643ac1d445488f5
+ React-RCTAppDelegate: a3ce9b69c0620a1717d08e826d4dc7ad8a3a3cae
+ React-RCTBlob: 26ea660f2be1e6de62f2d2ad9a9c7b9bfabb786f
+ React-RCTFabric: bb6dbbff2f80b9489f8b2f1d2554aa040aa2e3cd
+ React-RCTImage: 27b27f4663df9e776d0549ed2f3536213e793f1b
+ React-RCTLinking: 962880ce9d0e2ea83fd182953538fc4ed757d4da
+ React-RCTNetwork: 73a756b44d4ad584bae13a5f1484e3ce12accac8
+ React-RCTSettings: 6d7f8d807f05de3d01cfb182d14e5f400716faac
+ React-RCTText: 73006e95ca359595c2510c1c0114027c85a6ddd3
+ React-RCTVibration: 599f427f9cbdd9c4bf38959ca020e8fef0717211
+ React-rendererdebug: f2946e0a1c3b906e71555a7c4a39aa6a6c0e639b
+ React-rncore: 74030de0ffef7b1a3fb77941168624534cc9ae7f
+ React-runtimeexecutor: 2d1f64f58193f00a3ad71d3f89c2bfbfe11cf5a5
+ React-runtimescheduler: df8945a656356ff10f58f65a70820478bfcf33ad
+ React-utils: f5bc61e7ea3325c0732ae2d755f4441940163b85
+ ReactCommon: 45b5d4f784e869c44a6f5a8fad5b114ca8f78c53
RNAppleAuthentication: 0571c08da8c327ae2afc0261b48b4a515b0286a6
- RNCAsyncStorage: c913ede1fa163a71cea118ed4670bbaaa4b511bb
+ RNCAsyncStorage: 618d03a5f52fbccb3d7010076bc54712844c18ef
RNCClipboard: d77213bfa269013bf4b857b7a9ca37ee062d8ef1
- RNCPicker: 0b65be85fe7954fbb2062ef079e3d1cde252d888
+ RNCPicker: 529d564911e93598cc399b56cc0769ce3675f8c8
RNDeviceInfo: 4701f0bf2a06b34654745053db0ce4cb0c53ada7
RNDevMenu: 72807568fe4188bd4c40ce32675d82434b43c45d
RNFBAnalytics: f76bfa164ac235b00505deb9fc1776634056898c
RNFBApp: 729c0666395b1953198dc4a1ec6deb8fbe1c302e
RNFBCrashlytics: 2061ca863e8e2fa1aae9b12477d7dfa8e88ca0f9
RNFBPerf: 389914cda4000fe0d996a752532a591132cbf3f9
- RNFlashList: 236646d48f224a034f35baa0242e1b77db063b1e
+ RNFlashList: 4b4b6b093afc0df60ae08f9cbf6ccd4c836c667a
RNFS: 4ac0f0ea233904cb798630b3c077808c06931688
- RNGestureHandler: dec4645026e7401a0899f2846d864403478ff6a5
+ RNGestureHandler: 61bfdfc05db9b79dd61f894dcd29d3dcc6db3c02
RNGoogleSignin: ccaa4a81582cf713eea562c5dd9dc1961a715fd0
RNLocalize: d4b8af4e442d4bcca54e68fc687a2129b4d71a81
rnmapbox-maps: 6f638ec002aa6e906a6f766d69cd45f968d98e64
RNPermissions: 9b086c8f05b2e2faa587fdc31f4c5ab4509728aa
RNReactNativeHapticFeedback: 1e3efeca9628ff9876ee7cdd9edec1b336913f8c
- RNReanimated: fdbaa9c964bbab7fac50c90862b6cc5f041679b9
- RNScreens: d037903436160a4b039d32606668350d2a808806
- RNSVG: d00c8f91c3cbf6d476451313a18f04d220d4f396
+ RNReanimated: 57f436e7aa3d277fbfed05e003230b43428157c0
+ RNScreens: b582cb834dc4133307562e930e8fa914b8c04ef2
+ RNSVG: 255767813dac22db1ec2062c8b7e7b856d4e5ae6
SDWebImage: 750adf017a315a280c60fde706ab1e552a3ae4e9
SDWebImageAVIFCoder: 8348fef6d0ec69e129c66c9fe4d74fbfbf366112
SDWebImageSVGCoder: 15a300a97ec1c8ac958f009c02220ac0402e936c
SDWebImageWebPCoder: af09429398d99d524cae2fe00f6f0f6e491ed102
SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17
- Turf: 469ce2c3d22e5e8e4818d5a3b254699a5c89efa4
- VisionCamera: 95f969b8950b411285579d633a1014782fe0e634
- Yoga: 3efc43e0d48686ce2e8c60f99d4e6bd349aff981
- YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
+ Turf: 13d1a92d969ca0311bbc26e8356cca178ce95da2
+ VisionCamera: 7d13aae043ffb38b224a0f725d1e23ca9c190fe7
+ Yoga: 13c8ef87792450193e117976337b8527b49e8c03
-PODFILE CHECKSUM: c403784ee1fdf281bcc552696504207f3022cb66
+PODFILE CHECKSUM: 0ccbb4f2406893c6e9f266dc1e7470dcd72885d2
-COCOAPODS: 1.12.1
+COCOAPODS: 1.13.0
diff --git a/package-lock.json b/package-lock.json
index 5416b5d4ea19..ae77c1751229 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "new.expensify",
- "version": "1.4.24-4",
+ "version": "1.4.25-4",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "new.expensify",
- "version": "1.4.24-4",
+ "version": "1.4.25-4",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
@@ -23,23 +23,23 @@
"@kie/mock-github": "^1.0.0",
"@oguzhnatly/react-native-image-manipulator": "github:Expensify/react-native-image-manipulator#5cdae3d4455b03a04c57f50be3863e2fe6c92c52",
"@onfido/react-native-sdk": "8.3.0",
- "@react-native-async-storage/async-storage": "^1.17.10",
+ "@react-native-async-storage/async-storage": "^1.19.5",
"@react-native-camera-roll/camera-roll": "5.4.0",
"@react-native-clipboard/clipboard": "^1.12.1",
"@react-native-community/geolocation": "^3.0.6",
- "@react-native-community/netinfo": "^9.3.10",
+ "@react-native-community/netinfo": "11.2.1",
"@react-native-firebase/analytics": "^12.3.0",
"@react-native-firebase/app": "^12.3.0",
"@react-native-firebase/crashlytics": "^12.3.0",
"@react-native-firebase/perf": "^12.3.0",
"@react-native-google-signin/google-signin": "^10.0.1",
- "@react-native-picker/picker": "^2.4.3",
+ "@react-native-picker/picker": "2.5.1",
"@react-navigation/material-top-tabs": "^6.6.3",
"@react-navigation/native": "6.1.8",
"@react-navigation/stack": "6.3.16",
"@react-ng/bounds-observer": "^0.2.1",
"@rnmapbox/maps": "^10.0.11",
- "@shopify/flash-list": "^1.6.1",
+ "@shopify/flash-list": "^1.6.3",
"@types/node": "^18.14.0",
"@ua/react-native-airship": "^15.3.1",
"@vue/preload-webpack-plugin": "^2.0.0",
@@ -51,16 +51,16 @@
"date-fns-tz": "^2.0.0",
"dom-serializer": "^0.2.2",
"domhandler": "^4.3.0",
- "expensify-common": "git+ssh://git@github.com/Expensify/expensify-common.git#398bf7c6a6d37f229a41d92bd7a4324c0fd32849",
- "expo": "^49.0.0",
- "expo-image": "1.8.1",
+ "expensify-common": "git+ssh://git@github.com/Expensify/expensify-common.git#c6bb3cfa56d12af9fa02e2bfc729646f5b64ef44",
+ "expo": "^50.0.0-preview.7",
+ "expo-image": "1.10.1",
"fbjs": "^3.0.2",
"htmlparser2": "^7.2.0",
"idb-keyval": "^6.2.1",
- "jest-expo": "^49.0.0",
+ "jest-expo": "50.0.1",
"jest-when": "^3.5.2",
"lodash": "4.17.21",
- "lottie-react-native": "^6.4.0",
+ "lottie-react-native": "6.4.1",
"mapbox-gl": "^2.15.0",
"onfido-sdk-ui": "13.1.0",
"patch-package": "^8.0.0",
@@ -74,7 +74,7 @@
"react-dom": "18.1.0",
"react-error-boundary": "^4.0.11",
"react-map-gl": "^7.1.3",
- "react-native": "0.72.4",
+ "react-native": "0.73.2",
"react-native-android-location-enabler": "^1.2.2",
"react-native-blob-util": "^0.17.3",
"react-native-collapsible": "^1.6.1",
@@ -84,7 +84,7 @@
"react-native-document-picker": "^8.2.1",
"react-native-draggable-flatlist": "^4.0.1",
"react-native-fs": "^2.20.0",
- "react-native-gesture-handler": "2.12.0",
+ "react-native-gesture-handler": "2.14.0",
"react-native-google-places-autocomplete": "2.5.6",
"react-native-haptic-feedback": "^1.13.0",
"react-native-image-pan-zoom": "^2.1.12",
@@ -94,9 +94,9 @@
"react-native-linear-gradient": "^2.8.1",
"react-native-localize": "^2.2.6",
"react-native-modal": "^13.0.0",
- "react-native-onyx": "1.0.118",
- "react-native-pager-view": "^6.2.0",
- "react-native-pdf": "^6.7.3",
+ "react-native-onyx": "1.0.126",
+ "react-native-pager-view": "6.2.2",
+ "react-native-pdf": "6.7.3",
"react-native-performance": "^5.1.0",
"react-native-permissions": "^3.9.3",
"react-native-picker-select": "git+https://github.com/Expensify/react-native-picker-select.git#7a407cd4174d9838a944c1c2e1cb4a9737ac69c5",
@@ -105,16 +105,16 @@
"react-native-quick-sqlite": "^8.0.0-beta.2",
"react-native-reanimated": "^3.6.1",
"react-native-render-html": "6.3.1",
- "react-native-safe-area-context": "4.4.1",
- "react-native-screens": "3.21.0",
- "react-native-svg": "^13.13.0",
+ "react-native-safe-area-context": "4.7.4",
+ "react-native-screens": "3.29.0",
+ "react-native-svg": "14.0.0",
"react-native-tab-view": "^3.5.2",
"react-native-url-polyfill": "^2.0.0",
- "react-native-view-shot": "^3.6.0",
+ "react-native-view-shot": "3.8.0",
"react-native-vision-camera": "^2.16.2",
"react-native-web": "^0.19.9",
"react-native-web-linear-gradient": "^1.1.2",
- "react-native-webview": "^11.17.2",
+ "react-native-webview": "13.6.3",
"react-pdf": "^6.2.2",
"react-plaid-link": "3.3.2",
"react-web-config": "^1.0.0",
@@ -147,7 +147,8 @@
"@octokit/plugin-paginate-rest": "3.1.0",
"@octokit/plugin-throttling": "4.1.0",
"@react-native-community/eslint-config": "3.0.0",
- "@react-native/metro-config": "^0.72.11",
+ "@react-native/babel-preset": "^0.73.19",
+ "@react-native/metro-config": "^0.73.3",
"@react-navigation/devtools": "^6.0.10",
"@storybook/addon-a11y": "^6.5.9",
"@storybook/addon-essentials": "^7.0.0",
@@ -169,7 +170,7 @@
"@types/lodash": "^4.14.195",
"@types/mapbox-gl": "^2.7.13",
"@types/pusher-js": "^5.1.0",
- "@types/react": "^18.2.12",
+ "@types/react": "18.2.45",
"@types/react-beautiful-dnd": "^13.1.4",
"@types/react-collapse": "^5.0.1",
"@types/react-dom": "^18.2.4",
@@ -217,13 +218,11 @@
"jest-environment-jsdom": "^29.4.1",
"jest-transformer-svg": "^2.0.1",
"memfs": "^4.6.0",
- "metro-react-native-babel-preset": "0.76.8",
"onchange": "^7.1.0",
"portfinder": "^1.0.28",
"prettier": "^2.8.8",
"pusher-js-mock": "^0.3.3",
"react-native-clean-project": "^4.0.0-alpha4.0",
- "react-native-flipper": "https://gitpkg.now.sh/facebook/flipper/react-native/react-native-flipper?9cacc9b59402550eae866e0e81e5f0c2f8203e6b",
"react-native-performance-flipper-reporter": "^2.0.0",
"react-test-renderer": "18.2.0",
"reassure": "^0.10.1",
@@ -533,14 +532,14 @@
"license": "ISC"
},
"node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.22.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.9.tgz",
- "integrity": "sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==",
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz",
+ "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"@babel/helper-environment-visitor": "^7.22.5",
"@babel/helper-function-name": "^7.22.5",
- "@babel/helper-member-expression-to-functions": "^7.22.5",
+ "@babel/helper-member-expression-to-functions": "^7.22.15",
"@babel/helper-optimise-call-expression": "^7.22.5",
"@babel/helper-replace-supers": "^7.22.9",
"@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
@@ -641,22 +640,22 @@
}
},
"node_modules/@babel/helper-member-expression-to-functions": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz",
- "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==",
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz",
+ "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==",
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.23.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-imports": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz",
- "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==",
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
+ "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.22.15"
},
"engines": {
"node": ">=6.9.0"
@@ -766,9 +765,9 @@
}
},
"node_modules/@babel/helper-string-parser": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
- "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
+ "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
"engines": {
"node": ">=6.9.0"
}
@@ -782,9 +781,9 @@
}
},
"node_modules/@babel/helper-validator-option": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz",
- "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==",
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
+ "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
"engines": {
"node": ">=6.9.0"
}
@@ -935,6 +934,7 @@
},
"node_modules/@babel/plugin-proposal-export-namespace-from": {
"version": "7.18.9",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.18.9",
@@ -1247,9 +1247,9 @@
}
},
"node_modules/@babel/plugin-syntax-jsx": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz",
- "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz",
+ "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1608,9 +1608,9 @@
}
},
"node_modules/@babel/plugin-transform-export-namespace-from": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz",
- "integrity": "sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz",
+ "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/plugin-syntax-export-namespace-from": "^7.8.3"
@@ -1925,9 +1925,9 @@
}
},
"node_modules/@babel/plugin-transform-parameters": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz",
- "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz",
+ "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==",
"dependencies": {
"@babel/helper-plugin-utils": "^7.22.5"
},
@@ -1954,12 +1954,12 @@
}
},
"node_modules/@babel/plugin-transform-private-property-in-object": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz",
- "integrity": "sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.3.tgz",
+ "integrity": "sha512-a5m2oLNFyje2e/rGKjVfAELTVI5mbA0FeZpBnkOWWV7eSmKQ+T/XW0Vf+29ScLzSxX+rnsarvU0oie/4m6hkxA==",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-create-class-features-plugin": "^7.22.5",
+ "@babel/helper-create-class-features-plugin": "^7.22.15",
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/plugin-syntax-private-property-in-object": "^7.14.5"
},
@@ -2000,10 +2000,11 @@
}
},
"node_modules/@babel/plugin-transform-react-display-name": {
- "version": "7.18.6",
- "license": "MIT",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz",
+ "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -2013,14 +2014,15 @@
}
},
"node_modules/@babel/plugin-transform-react-jsx": {
- "version": "7.18.10",
- "license": "MIT",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz",
+ "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-module-imports": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.9",
- "@babel/plugin-syntax-jsx": "^7.18.6",
- "@babel/types": "^7.18.10"
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-module-imports": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-jsx": "^7.23.3",
+ "@babel/types": "^7.23.4"
},
"engines": {
"node": ">=6.9.0"
@@ -2030,11 +2032,11 @@
}
},
"node_modules/@babel/plugin-transform-react-jsx-development": {
- "version": "7.18.6",
- "dev": true,
- "license": "MIT",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz",
+ "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==",
"dependencies": {
- "@babel/plugin-transform-react-jsx": "^7.18.6"
+ "@babel/plugin-transform-react-jsx": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -2070,12 +2072,12 @@
}
},
"node_modules/@babel/plugin-transform-react-pure-annotations": {
- "version": "7.18.6",
- "dev": true,
- "license": "MIT",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz",
+ "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
},
"engines": {
"node": ">=6.9.0"
@@ -2479,16 +2481,16 @@
}
},
"node_modules/@babel/preset-react": {
- "version": "7.18.6",
- "dev": true,
- "license": "MIT",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz",
+ "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/helper-validator-option": "^7.18.6",
- "@babel/plugin-transform-react-display-name": "^7.18.6",
- "@babel/plugin-transform-react-jsx": "^7.18.6",
- "@babel/plugin-transform-react-jsx-development": "^7.18.6",
- "@babel/plugin-transform-react-pure-annotations": "^7.18.6"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-validator-option": "^7.22.15",
+ "@babel/plugin-transform-react-display-name": "^7.23.3",
+ "@babel/plugin-transform-react-jsx": "^7.22.15",
+ "@babel/plugin-transform-react-jsx-development": "^7.22.5",
+ "@babel/plugin-transform-react-pure-annotations": "^7.23.3"
},
"engines": {
"node": ">=6.9.0"
@@ -2587,11 +2589,11 @@
}
},
"node_modules/@babel/types": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
- "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz",
+ "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==",
"dependencies": {
- "@babel/helper-string-parser": "^7.22.5",
+ "@babel/helper-string-parser": "^7.23.4",
"@babel/helper-validator-identifier": "^7.22.20",
"to-fast-properties": "^2.0.0"
},
@@ -3362,53 +3364,62 @@
}
},
"node_modules/@expo/cli": {
- "version": "0.10.16",
- "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.10.16.tgz",
- "integrity": "sha512-EwgnRN5AMElg0JJjFLJTPk5hYkVXxnNMLIvZBiTfGoCq+rDw6u7Mg5l2Bbm/geSHOoplaHyPZ/Wr23FAuZWehA==",
+ "version": "0.16.5",
+ "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.16.5.tgz",
+ "integrity": "sha512-4SAAymmV97OeskbYbpiJ/HFSUHLIyYmP8RlZE0svH+A1Z2lsAbjm8G7t5dFt5WPZGHWuj0y/DzIT8eElqvwHEg==",
"dependencies": {
"@babel/runtime": "^7.20.0",
"@expo/code-signing-certificates": "0.0.5",
- "@expo/config": "~8.1.0",
- "@expo/config-plugins": "~7.2.0",
- "@expo/dev-server": "0.5.5",
+ "@expo/config": "~8.5.0",
+ "@expo/config-plugins": "~7.8.0",
"@expo/devcert": "^1.0.0",
- "@expo/env": "0.0.5",
+ "@expo/env": "~0.2.0",
+ "@expo/image-utils": "^0.4.0",
"@expo/json-file": "^8.2.37",
- "@expo/metro-config": "~0.10.0",
+ "@expo/metro-config": "~0.17.0",
"@expo/osascript": "^2.0.31",
- "@expo/package-manager": "~1.1.0",
- "@expo/plist": "^0.0.20",
- "@expo/prebuild-config": "6.2.6",
+ "@expo/package-manager": "^1.1.1",
+ "@expo/plist": "^0.1.0",
+ "@expo/prebuild-config": "6.7.2",
"@expo/rudder-sdk-node": "1.1.1",
+ "@expo/server": "^0.3.0",
"@expo/spawn-async": "1.5.0",
- "@expo/xcpretty": "^4.2.1",
+ "@expo/xcpretty": "^4.3.0",
+ "@react-native/dev-middleware": "^0.73.6",
"@urql/core": "2.3.6",
"@urql/exchange-retry": "0.3.0",
"accepts": "^1.3.8",
- "arg": "4.1.0",
+ "arg": "5.0.2",
"better-opn": "~3.0.2",
"bplist-parser": "^0.3.1",
"cacache": "^15.3.0",
"chalk": "^4.0.0",
"ci-info": "^3.3.0",
+ "connect": "^3.7.0",
"debug": "^4.3.4",
"env-editor": "^0.4.1",
+ "find-yarn-workspace-root": "~2.0.0",
"form-data": "^3.0.1",
"freeport-async": "2.0.0",
"fs-extra": "~8.1.0",
"getenv": "^1.0.0",
+ "glob": "^7.1.7",
"graphql": "15.8.0",
"graphql-tag": "^2.10.1",
"https-proxy-agent": "^5.0.1",
"internal-ip": "4.3.0",
+ "is-docker": "^2.0.0",
+ "is-wsl": "^2.1.1",
"js-yaml": "^3.13.1",
"json-schema-deref-sync": "^0.13.0",
- "md5-file": "^3.2.3",
+ "lodash.debounce": "^4.0.8",
"md5hex": "^1.0.0",
- "minipass": "3.1.6",
+ "minimatch": "^3.0.4",
+ "minipass": "3.3.6",
"node-fetch": "^2.6.7",
"node-forge": "^1.3.1",
"npm-package-arg": "^7.0.0",
+ "open": "^8.3.0",
"ora": "3.4.0",
"pretty-bytes": "5.6.0",
"progress": "2.0.3",
@@ -3416,12 +3427,15 @@
"qrcode-terminal": "0.11.0",
"require-from-string": "^2.0.2",
"requireg": "^0.2.2",
+ "resolve": "^1.22.2",
"resolve-from": "^5.0.0",
+ "resolve.exports": "^2.0.2",
"semver": "^7.5.3",
"send": "^0.18.0",
"slugify": "^1.3.4",
"structured-headers": "^0.4.1",
"tar": "^6.0.5",
+ "temp-dir": "^2.0.0",
"tempy": "^0.7.1",
"terminal-link": "^2.1.1",
"text-table": "^0.2.0",
@@ -3442,13 +3456,14 @@
}
},
"node_modules/@expo/cli/node_modules/@expo/config-plugins": {
- "version": "7.2.5",
- "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.2.5.tgz",
- "integrity": "sha512-w+5ccu1IxBHgyQk9CPFKLZOk8yZQEyTjbJwOzESK1eR7QwosbcsLkN1c1WWUZYiCXwORu3UTwJYll4+X2xxJhQ==",
- "dependencies": {
- "@expo/config-types": "^49.0.0-alpha.1",
- "@expo/json-file": "~8.2.37",
- "@expo/plist": "^0.0.20",
+ "version": "7.8.2",
+ "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.8.2.tgz",
+ "integrity": "sha512-XM2eXA5EvcpmXFCui48+bVy8GTskYSjPf2yC+LliYv8PDcedu7+pdgmbnvH4eZCyHfTMO8/UiF+w8e5WgOEj5A==",
+ "dependencies": {
+ "@expo/config-types": "^50.0.0-alpha.1",
+ "@expo/fingerprint": "^0.6.0",
+ "@expo/json-file": "~8.3.0",
+ "@expo/plist": "^0.1.0",
"@expo/sdk-runtime-versions": "^1.0.0",
"@react-native/normalize-color": "^2.0.0",
"chalk": "^4.1.2",
@@ -3459,19 +3474,39 @@
"resolve-from": "^5.0.0",
"semver": "^7.5.3",
"slash": "^3.0.0",
+ "slugify": "^1.6.6",
"xcode": "^3.0.1",
"xml2js": "0.6.0"
}
},
+ "node_modules/@expo/cli/node_modules/@expo/config-plugins/node_modules/glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/@expo/cli/node_modules/@expo/config-types": {
- "version": "49.0.0",
- "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-49.0.0.tgz",
- "integrity": "sha512-8eyREVi+K2acnMBe/rTIu1dOfyR2+AMnTLHlut+YpMV9OZPdeKV0Bs9BxAewGqBA2slslbQ9N39IS2CuTKpXkA=="
+ "version": "50.0.0",
+ "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-50.0.0.tgz",
+ "integrity": "sha512-0kkhIwXRT6EdFDwn+zTg9R2MZIAEYGn1MVkyRohAd+C9cXOb5RA8WLQi7vuxKF9m1SMtNAUrf0pO+ENK0+/KSw=="
},
"node_modules/@expo/cli/node_modules/@expo/json-file": {
- "version": "8.2.37",
- "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz",
- "integrity": "sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==",
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.0.tgz",
+ "integrity": "sha512-yROUeXJXR5goagB8c3muFLCzLmdGOvoPpR5yDNaXrnTp4euNykr9yW0wWhJx4YVRTNOPtGBnEbbJBW+a9q+S6g==",
"dependencies": {
"@babel/code-frame": "~7.10.4",
"json5": "^2.2.2",
@@ -3479,9 +3514,9 @@
}
},
"node_modules/@expo/cli/node_modules/@expo/plist": {
- "version": "0.0.20",
- "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.20.tgz",
- "integrity": "sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA==",
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.1.0.tgz",
+ "integrity": "sha512-xWD+8vIFif0wKyuqe3fmnmnSouXYucciZXFzS0ZD5OV9eSAS1RGQI5FaGGJ6zxJ4mpdy/4QzbLdBjnYE5vxA0g==",
"dependencies": {
"@xmldom/xmldom": "~0.7.7",
"base64-js": "^1.2.3",
@@ -3503,9 +3538,9 @@
}
},
"node_modules/@expo/cli/node_modules/arg": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz",
- "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg=="
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="
},
"node_modules/@expo/cli/node_modules/better-opn": {
"version": "3.0.2",
@@ -3592,6 +3627,25 @@
"node": ">=6 <7 || >=8"
}
},
+ "node_modules/@expo/cli/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"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",
@@ -3683,17 +3737,6 @@
"node": ">=4"
}
},
- "node_modules/@expo/cli/node_modules/minipass": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz",
- "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/@expo/cli/node_modules/onetime": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
@@ -3849,13 +3892,13 @@
}
},
"node_modules/@expo/config": {
- "version": "8.1.2",
- "resolved": "https://registry.npmjs.org/@expo/config/-/config-8.1.2.tgz",
- "integrity": "sha512-4e7hzPj50mQIlsrzOH6XZ36O094mPfPTIDIH4yv49bWNMc7GFLTofB/lcT+QyxiLaJuC0Wlk9yOLB8DIqmtwug==",
+ "version": "8.5.2",
+ "resolved": "https://registry.npmjs.org/@expo/config/-/config-8.5.2.tgz",
+ "integrity": "sha512-UYy9kWxjQAEDwlX7gwLk0+8IxGPcHJMLnYRYtR5C5xGIV+ML7tCA+qFz1p4gHZRPkJD+k7iZyqBtyqt8xm+zXw==",
"dependencies": {
"@babel/code-frame": "~7.10.4",
- "@expo/config-plugins": "~7.2.0",
- "@expo/config-types": "^49.0.0-alpha.1",
+ "@expo/config-plugins": "~7.8.2",
+ "@expo/config-types": "^50.0.0",
"@expo/json-file": "^8.2.37",
"getenv": "^1.0.0",
"glob": "7.1.6",
@@ -3974,13 +4017,14 @@
}
},
"node_modules/@expo/config/node_modules/@expo/config-plugins": {
- "version": "7.2.5",
- "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.2.5.tgz",
- "integrity": "sha512-w+5ccu1IxBHgyQk9CPFKLZOk8yZQEyTjbJwOzESK1eR7QwosbcsLkN1c1WWUZYiCXwORu3UTwJYll4+X2xxJhQ==",
- "dependencies": {
- "@expo/config-types": "^49.0.0-alpha.1",
- "@expo/json-file": "~8.2.37",
- "@expo/plist": "^0.0.20",
+ "version": "7.8.2",
+ "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.8.2.tgz",
+ "integrity": "sha512-XM2eXA5EvcpmXFCui48+bVy8GTskYSjPf2yC+LliYv8PDcedu7+pdgmbnvH4eZCyHfTMO8/UiF+w8e5WgOEj5A==",
+ "dependencies": {
+ "@expo/config-types": "^50.0.0-alpha.1",
+ "@expo/fingerprint": "^0.6.0",
+ "@expo/json-file": "~8.3.0",
+ "@expo/plist": "^0.1.0",
"@expo/sdk-runtime-versions": "^1.0.0",
"@react-native/normalize-color": "^2.0.0",
"chalk": "^4.1.2",
@@ -3991,19 +4035,20 @@
"resolve-from": "^5.0.0",
"semver": "^7.5.3",
"slash": "^3.0.0",
+ "slugify": "^1.6.6",
"xcode": "^3.0.1",
"xml2js": "0.6.0"
}
},
"node_modules/@expo/config/node_modules/@expo/config-types": {
- "version": "49.0.0",
- "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-49.0.0.tgz",
- "integrity": "sha512-8eyREVi+K2acnMBe/rTIu1dOfyR2+AMnTLHlut+YpMV9OZPdeKV0Bs9BxAewGqBA2slslbQ9N39IS2CuTKpXkA=="
+ "version": "50.0.0",
+ "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-50.0.0.tgz",
+ "integrity": "sha512-0kkhIwXRT6EdFDwn+zTg9R2MZIAEYGn1MVkyRohAd+C9cXOb5RA8WLQi7vuxKF9m1SMtNAUrf0pO+ENK0+/KSw=="
},
"node_modules/@expo/config/node_modules/@expo/json-file": {
- "version": "8.2.37",
- "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz",
- "integrity": "sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==",
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.0.tgz",
+ "integrity": "sha512-yROUeXJXR5goagB8c3muFLCzLmdGOvoPpR5yDNaXrnTp4euNykr9yW0wWhJx4YVRTNOPtGBnEbbJBW+a9q+S6g==",
"dependencies": {
"@babel/code-frame": "~7.10.4",
"json5": "^2.2.2",
@@ -4011,9 +4056,9 @@
}
},
"node_modules/@expo/config/node_modules/@expo/plist": {
- "version": "0.0.20",
- "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.20.tgz",
- "integrity": "sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA==",
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.1.0.tgz",
+ "integrity": "sha512-xWD+8vIFif0wKyuqe3fmnmnSouXYucciZXFzS0ZD5OV9eSAS1RGQI5FaGGJ6zxJ4mpdy/4QzbLdBjnYE5vxA0g==",
"dependencies": {
"@xmldom/xmldom": "~0.7.7",
"base64-js": "^1.2.3",
@@ -4118,222 +4163,6 @@
"node": ">=4.0"
}
},
- "node_modules/@expo/dev-server": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/@expo/dev-server/-/dev-server-0.5.5.tgz",
- "integrity": "sha512-t0fT8xH1exwYsH5hh7bAt85VF+gXxg24qrbny2rR/iKoPTWFCd2JNQV8pvfLg51hvrywQ3YCBuT3lU1w7aZxFA==",
- "dependencies": {
- "@expo/bunyan": "4.0.0",
- "@expo/metro-config": "~0.10.0",
- "@expo/osascript": "2.0.33",
- "@expo/spawn-async": "^1.5.0",
- "body-parser": "^1.20.1",
- "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",
- "serialize-error": "6.0.0",
- "temp-dir": "^2.0.0"
- }
- },
- "node_modules/@expo/dev-server/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/dev-server/node_modules/body-parser": {
- "version": "1.20.2",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
- "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
- "dependencies": {
- "bytes": "3.1.2",
- "content-type": "~1.0.5",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "on-finished": "2.4.1",
- "qs": "6.11.0",
- "raw-body": "2.5.2",
- "type-is": "~1.6.18",
- "unpipe": "1.0.0"
- },
- "engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
- }
- },
- "node_modules/@expo/dev-server/node_modules/bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/@expo/dev-server/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/dev-server/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/dev-server/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/dev-server/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/@expo/dev-server/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/dev-server/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/dev-server/node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@expo/dev-server/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "node_modules/@expo/dev-server/node_modules/qs": {
- "version": "6.11.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
- "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
- "dependencies": {
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/@expo/dev-server/node_modules/raw-body": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
- "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
- "dependencies": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/@expo/dev-server/node_modules/serialize-error": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-6.0.0.tgz",
- "integrity": "sha512-3vmBkMZLQO+BR4RPHcyRGdE09XCF6cvxzk2N2qn8Er3F91cy8Qt7VvEbZBOpaL53qsBbe2cFOefU6tRY6WDelA==",
- "dependencies": {
- "type-fest": "^0.12.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@expo/dev-server/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-server/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/@expo/dev-server/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/devcert": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.1.0.tgz",
@@ -4401,9 +4230,9 @@
}
},
"node_modules/@expo/env": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/@expo/env/-/env-0.0.5.tgz",
- "integrity": "sha512-UXuKAqyXfhMQC3gP0OyjXmFX08Z1fkVWiGBN7bYzfoX8LHatjeHrDtI6w5nDvd8XPxPvmqaZoEDw1lW3+dz3oQ==",
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@expo/env/-/env-0.2.1.tgz",
+ "integrity": "sha512-deZmRS7Dvp18VM8s559dq/ZjPlV1D9vtLoLXwHmCK/JYOvtNptdKsfxcWjI7ewmo6ln2PqgNI9HRI74q6Wk2eA==",
"dependencies": {
"chalk": "^4.0.0",
"debug": "^4.3.4",
@@ -4492,17 +4321,97 @@
"node": ">=8"
}
},
+ "node_modules/@expo/fingerprint": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.6.0.tgz",
+ "integrity": "sha512-KfpoVRTMwMNJ/Cf5o+Ou8M/Y0EGSTqK+rbi70M2Y0K2qgWNfMJ1gm6sYO9uc8lcTr7YSYM1Rme3dk7QXhpScNA==",
+ "dependencies": {
+ "@expo/spawn-async": "^1.5.0",
+ "chalk": "^4.1.2",
+ "debug": "^4.3.4",
+ "find-up": "^5.0.0",
+ "minimatch": "^3.0.4",
+ "p-limit": "^3.1.0",
+ "resolve-from": "^5.0.0"
+ },
+ "bin": {
+ "fingerprint": "bin/cli.js"
+ }
+ },
+ "node_modules/@expo/fingerprint/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/fingerprint/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/fingerprint/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/fingerprint/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/fingerprint/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/fingerprint/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/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==",
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.4.1.tgz",
+ "integrity": "sha512-EZb+VHSmw+a5s2hS9qksTcWylY0FDaIAVufcxoaRS9tHIXLjW5zcKW7Rhj9dSEbZbRVy9yXXdHKa3GQdUQIOFw==",
"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",
@@ -4687,22 +4596,33 @@
}
},
"node_modules/@expo/metro-config": {
- "version": "0.10.7",
- "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.10.7.tgz",
- "integrity": "sha512-uACymEiyX0447hI4unt+2cemLQkTZXKvTev936NhtsgVnql45EP0V0pzmo/0H0WlHaAGXgvOBZJl8wFqcJ3CbQ==",
+ "version": "0.17.1",
+ "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.17.1.tgz",
+ "integrity": "sha512-ZOE0Jx0YTZyPpsGiiE09orGEFgZ5sMrOOFSgOe8zrns925g/uCuEbowyNq38IfQt//3xSl5mW3z0l4rxgi7hHQ==",
"dependencies": {
- "@expo/config": "~8.1.0",
- "@expo/env": "0.0.5",
- "@expo/json-file": "~8.2.37",
+ "@babel/core": "^7.20.0",
+ "@babel/generator": "^7.20.5",
+ "@babel/parser": "^7.20.0",
+ "@babel/types": "^7.20.0",
+ "@expo/config": "~8.5.0",
+ "@expo/env": "~0.2.0",
+ "@expo/json-file": "~8.3.0",
+ "@expo/spawn-async": "^1.7.2",
+ "babel-preset-fbjs": "^3.4.0",
"chalk": "^4.1.0",
"debug": "^4.3.2",
"find-yarn-workspace-root": "~2.0.0",
+ "fs-extra": "^9.1.0",
"getenv": "^1.0.0",
+ "glob": "^7.2.3",
"jsc-safe-url": "^0.2.4",
"lightningcss": "~1.19.0",
"postcss": "~8.4.21",
"resolve-from": "^5.0.0",
"sucrase": "^3.20.0"
+ },
+ "peerDependencies": {
+ "@react-native/babel-preset": "*"
}
},
"node_modules/@expo/metro-config/node_modules/@babel/code-frame": {
@@ -4714,15 +4634,26 @@
}
},
"node_modules/@expo/metro-config/node_modules/@expo/json-file": {
- "version": "8.2.37",
- "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz",
- "integrity": "sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==",
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.0.tgz",
+ "integrity": "sha512-yROUeXJXR5goagB8c3muFLCzLmdGOvoPpR5yDNaXrnTp4euNykr9yW0wWhJx4YVRTNOPtGBnEbbJBW+a9q+S6g==",
"dependencies": {
"@babel/code-frame": "~7.10.4",
"json5": "^2.2.2",
"write-file-atomic": "^2.3.0"
}
},
+ "node_modules/@expo/metro-config/node_modules/@expo/spawn-async": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.2.tgz",
+ "integrity": "sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==",
+ "dependencies": {
+ "cross-spawn": "^7.0.3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/@expo/metro-config/node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -4768,6 +4699,25 @@
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
+ "node_modules/@expo/metro-config/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/@expo/metro-config/node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -4782,9 +4732,9 @@
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
},
"node_modules/@expo/metro-config/node_modules/postcss": {
- "version": "8.4.30",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.30.tgz",
- "integrity": "sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==",
+ "version": "8.4.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz",
+ "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==",
"funding": [
{
"type": "opencollective",
@@ -4800,7 +4750,7 @@
}
],
"dependencies": {
- "nanoid": "^3.3.6",
+ "nanoid": "^3.3.7",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.2"
},
@@ -4956,14 +4906,14 @@
}
},
"node_modules/@expo/prebuild-config": {
- "version": "6.2.6",
- "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-6.2.6.tgz",
- "integrity": "sha512-uFVvDAm9dPg9p1qpnr4CVnpo2hmkZIL5FQz+VlIdXXJpe7ySh/qTGHtKWY/lWUshQkAJ0nwbKGPztGWdABns/Q==",
- "dependencies": {
- "@expo/config": "~8.1.0",
- "@expo/config-plugins": "~7.2.0",
- "@expo/config-types": "^49.0.0-alpha.1",
- "@expo/image-utils": "0.3.22",
+ "version": "6.7.2",
+ "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-6.7.2.tgz",
+ "integrity": "sha512-Z1GyWfl923wU29YQg6Xik4URls4qcIddWA4vLhW6mUgiRhC3HCf1keHEzK5AtWsrga4bH/H+usAY0OltgABW1w==",
+ "dependencies": {
+ "@expo/config": "~8.5.0",
+ "@expo/config-plugins": "~7.8.0",
+ "@expo/config-types": "^50.0.0-alpha.1",
+ "@expo/image-utils": "^0.4.0",
"@expo/json-file": "^8.2.37",
"debug": "^4.3.1",
"fs-extra": "^9.0.0",
@@ -4984,13 +4934,14 @@
}
},
"node_modules/@expo/prebuild-config/node_modules/@expo/config-plugins": {
- "version": "7.2.5",
- "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.2.5.tgz",
- "integrity": "sha512-w+5ccu1IxBHgyQk9CPFKLZOk8yZQEyTjbJwOzESK1eR7QwosbcsLkN1c1WWUZYiCXwORu3UTwJYll4+X2xxJhQ==",
- "dependencies": {
- "@expo/config-types": "^49.0.0-alpha.1",
- "@expo/json-file": "~8.2.37",
- "@expo/plist": "^0.0.20",
+ "version": "7.8.2",
+ "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.8.2.tgz",
+ "integrity": "sha512-XM2eXA5EvcpmXFCui48+bVy8GTskYSjPf2yC+LliYv8PDcedu7+pdgmbnvH4eZCyHfTMO8/UiF+w8e5WgOEj5A==",
+ "dependencies": {
+ "@expo/config-types": "^50.0.0-alpha.1",
+ "@expo/fingerprint": "^0.6.0",
+ "@expo/json-file": "~8.3.0",
+ "@expo/plist": "^0.1.0",
"@expo/sdk-runtime-versions": "^1.0.0",
"@react-native/normalize-color": "^2.0.0",
"chalk": "^4.1.2",
@@ -5001,19 +4952,20 @@
"resolve-from": "^5.0.0",
"semver": "^7.5.3",
"slash": "^3.0.0",
+ "slugify": "^1.6.6",
"xcode": "^3.0.1",
"xml2js": "0.6.0"
}
},
"node_modules/@expo/prebuild-config/node_modules/@expo/config-types": {
- "version": "49.0.0",
- "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-49.0.0.tgz",
- "integrity": "sha512-8eyREVi+K2acnMBe/rTIu1dOfyR2+AMnTLHlut+YpMV9OZPdeKV0Bs9BxAewGqBA2slslbQ9N39IS2CuTKpXkA=="
+ "version": "50.0.0",
+ "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-50.0.0.tgz",
+ "integrity": "sha512-0kkhIwXRT6EdFDwn+zTg9R2MZIAEYGn1MVkyRohAd+C9cXOb5RA8WLQi7vuxKF9m1SMtNAUrf0pO+ENK0+/KSw=="
},
"node_modules/@expo/prebuild-config/node_modules/@expo/json-file": {
- "version": "8.2.37",
- "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz",
- "integrity": "sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==",
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.0.tgz",
+ "integrity": "sha512-yROUeXJXR5goagB8c3muFLCzLmdGOvoPpR5yDNaXrnTp4euNykr9yW0wWhJx4YVRTNOPtGBnEbbJBW+a9q+S6g==",
"dependencies": {
"@babel/code-frame": "~7.10.4",
"json5": "^2.2.2",
@@ -5021,9 +4973,9 @@
}
},
"node_modules/@expo/prebuild-config/node_modules/@expo/plist": {
- "version": "0.0.20",
- "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.20.tgz",
- "integrity": "sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA==",
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.1.0.tgz",
+ "integrity": "sha512-xWD+8vIFif0wKyuqe3fmnmnSouXYucciZXFzS0ZD5OV9eSAS1RGQI5FaGGJ6zxJ4mpdy/4QzbLdBjnYE5vxA0g==",
"dependencies": {
"@xmldom/xmldom": "~0.7.7",
"base64-js": "^1.2.3",
@@ -5156,6 +5108,17 @@
"integrity": "sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==",
"license": "MIT"
},
+ "node_modules/@expo/server": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@expo/server/-/server-0.3.0.tgz",
+ "integrity": "sha512-5oIqedpLVMnf1LGI9Xd5OOGmK3DjgH9VpuqVN4e/6DwLT05RZJMyI7ylfG6QSy1e44yOgjv242tLyg0e/zdZ+A==",
+ "dependencies": {
+ "@remix-run/node": "^1.19.3",
+ "abort-controller": "^3.0.0",
+ "debug": "^4.3.4",
+ "source-map-support": "~0.5.21"
+ }
+ },
"node_modules/@expo/spawn-async": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.5.0.tgz",
@@ -5234,9 +5197,9 @@
"integrity": "sha512-TI+l71+5aSKnShYclFa14Kum+hQMZ86b95SH6tQUG3qZEmLTarvWpKwqtTwQKqvlJSJrpFiSFu3eCuZokY6zWA=="
},
"node_modules/@expo/xcpretty": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.2.2.tgz",
- "integrity": "sha512-Lke/geldJqUV0Dfxg5/QIOugOzdqZ/rQ9yHKSgGbjZtG1uiSqWyFwWvXmrdd3/sIdX33eykGvIcf+OrvvcXVUw==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.3.0.tgz",
+ "integrity": "sha512-whBbvHZ2Q10T5TNmN0z5NbO6C9ZDw+XUTu8h6vVMnMzQrbGexc9oaCCZfz+L3Q7TEL5vfr+9L86nY62c3Bsm+g==",
"dependencies": {
"@babel/code-frame": "7.10.4",
"chalk": "^4.1.0",
@@ -5541,7 +5504,6 @@
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
"integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
- "dev": true,
"dependencies": {
"string-width": "^5.1.2",
"string-width-cjs": "npm:string-width@^4.2.0",
@@ -5558,7 +5520,6 @@
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
"integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
- "dev": true,
"engines": {
"node": ">=12"
},
@@ -5570,7 +5531,6 @@
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
"integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
- "dev": true,
"engines": {
"node": ">=12"
},
@@ -5581,14 +5541,12 @@
"node_modules/@isaacs/cliui/node_modules/emoji-regex": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
- "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
- "dev": true
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
},
"node_modules/@isaacs/cliui/node_modules/string-width": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
"integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
- "dev": true,
"dependencies": {
"eastasianwidth": "^0.2.0",
"emoji-regex": "^9.2.2",
@@ -5605,7 +5563,6 @@
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
"integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
- "dev": true,
"dependencies": {
"ansi-regex": "^6.0.1"
},
@@ -5620,7 +5577,6 @@
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
"integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
- "dev": true,
"dependencies": {
"ansi-styles": "^6.1.0",
"string-width": "^5.0.1",
@@ -5633,6 +5589,14 @@
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
+ "node_modules/@isaacs/ttlcache": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz",
+ "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/@istanbuljs/load-nyc-config": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
@@ -5977,22 +5941,22 @@
}
},
"node_modules/@jest/create-cache-key-function": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.5.0.tgz",
- "integrity": "sha512-LIDZyZgnZss7uikvBKBB/USWwG+GO8+GnwRWT+YkCGDGsqLQlhm9BC3z6+7+eMs1kUlvXQIWEzBR8Q2Pnvx6lg==",
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz",
+ "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==",
"dependencies": {
- "@jest/types": "^29.5.0"
+ "@jest/types": "^29.6.3"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/@jest/create-cache-key-function/node_modules/@jest/types": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz",
- "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
+ "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
"dependencies": {
- "@jest/schemas": "^29.4.3",
+ "@jest/schemas": "^29.6.3",
"@types/istanbul-lib-coverage": "^2.0.0",
"@types/istanbul-reports": "^3.0.0",
"@types/node": "*",
@@ -6004,9 +5968,9 @@
}
},
"node_modules/@jest/create-cache-key-function/node_modules/@types/yargs": {
- "version": "17.0.24",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz",
- "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==",
+ "version": "17.0.31",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.31.tgz",
+ "integrity": "sha512-bocYSx4DI8TmdlvxqGpVNXOgCNR1Jj0gNPhhAY+iz1rgKDAaYrAYdFYnhDV1IFuiuVc9HkOwyDcFxaTElF3/wg==",
"dependencies": {
"@types/yargs-parser": "*"
}
@@ -6076,14 +6040,14 @@
}
},
"node_modules/@jest/environment": {
- "version": "29.6.2",
- "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.2.tgz",
- "integrity": "sha512-AEcW43C7huGd/vogTddNNTDRpO6vQ2zaQNrttvWV18ArBx9Z56h7BIsXkNFJVOO4/kblWEQz30ckw0+L3izc+Q==",
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz",
+ "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==",
"dependencies": {
- "@jest/fake-timers": "^29.6.2",
- "@jest/types": "^29.6.1",
+ "@jest/fake-timers": "^29.7.0",
+ "@jest/types": "^29.6.3",
"@types/node": "*",
- "jest-mock": "^29.6.2"
+ "jest-mock": "^29.7.0"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
@@ -6201,16 +6165,16 @@
}
},
"node_modules/@jest/fake-timers": {
- "version": "29.6.2",
- "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.2.tgz",
- "integrity": "sha512-euZDmIlWjm1Z0lJ1D0f7a0/y5Kh/koLFMUBE5SUYWrmy8oNhJpbTBDAP6CxKnadcMLDoDf4waRYCe35cH6G6PA==",
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz",
+ "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==",
"dependencies": {
- "@jest/types": "^29.6.1",
+ "@jest/types": "^29.6.3",
"@sinonjs/fake-timers": "^10.0.2",
"@types/node": "*",
- "jest-message-util": "^29.6.2",
- "jest-mock": "^29.6.2",
- "jest-util": "^29.6.2"
+ "jest-message-util": "^29.7.0",
+ "jest-mock": "^29.7.0",
+ "jest-util": "^29.7.0"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
@@ -7957,7 +7921,6 @@
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
"integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
- "dev": true,
"optional": true,
"engines": {
"node": ">=14"
@@ -8551,14 +8514,14 @@
}
},
"node_modules/@react-native-async-storage/async-storage": {
- "version": "1.19.3",
- "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.19.3.tgz",
- "integrity": "sha512-CwGfoHCWdPOTPS+2fW6YRE1fFBpT9++ahLEroX5hkgwyoQ+TkmjOaUxixdEIoVua9Pz5EF2pGOIJzqOTMWfBlA==",
+ "version": "1.21.0",
+ "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.21.0.tgz",
+ "integrity": "sha512-JL0w36KuFHFCvnbOXRekqVAUplmOyT/OuCQkogo6X98MtpSaJOKEAeZnYO8JB0U/RIEixZaGI5px73YbRm/oag==",
"dependencies": {
"merge-options": "^3.0.4"
},
"peerDependencies": {
- "react-native": "^0.0.0-0 || 0.60 - 0.72 || 1000.0.0"
+ "react-native": "^0.0.0-0 || >=0.60 <1.0"
}
},
"node_modules/@react-native-camera-roll/camera-roll": {
@@ -8580,44 +8543,44 @@
}
},
"node_modules/@react-native-community/cli": {
- "version": "11.3.6",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-11.3.6.tgz",
- "integrity": "sha512-bdwOIYTBVQ9VK34dsf6t3u6vOUU5lfdhKaAxiAVArjsr7Je88Bgs4sAbsOYsNK3tkE8G77U6wLpekknXcanlww==",
- "dependencies": {
- "@react-native-community/cli-clean": "11.3.6",
- "@react-native-community/cli-config": "11.3.6",
- "@react-native-community/cli-debugger-ui": "11.3.6",
- "@react-native-community/cli-doctor": "11.3.6",
- "@react-native-community/cli-hermes": "11.3.6",
- "@react-native-community/cli-plugin-metro": "11.3.6",
- "@react-native-community/cli-server-api": "11.3.6",
- "@react-native-community/cli-tools": "11.3.6",
- "@react-native-community/cli-types": "11.3.6",
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-12.3.0.tgz",
+ "integrity": "sha512-XeQohi2E+S2+MMSz97QcEZ/bWpi8sfKiQg35XuYeJkc32Til2g0b97jRpn0/+fV0BInHoG1CQYWwHA7opMsrHg==",
+ "dependencies": {
+ "@react-native-community/cli-clean": "12.3.0",
+ "@react-native-community/cli-config": "12.3.0",
+ "@react-native-community/cli-debugger-ui": "12.3.0",
+ "@react-native-community/cli-doctor": "12.3.0",
+ "@react-native-community/cli-hermes": "12.3.0",
+ "@react-native-community/cli-plugin-metro": "12.3.0",
+ "@react-native-community/cli-server-api": "12.3.0",
+ "@react-native-community/cli-tools": "12.3.0",
+ "@react-native-community/cli-types": "12.3.0",
"chalk": "^4.1.2",
"commander": "^9.4.1",
+ "deepmerge": "^4.3.0",
"execa": "^5.0.0",
"find-up": "^4.1.0",
"fs-extra": "^8.1.0",
"graceful-fs": "^4.1.3",
- "prompts": "^2.4.0",
+ "prompts": "^2.4.2",
"semver": "^7.5.2"
},
"bin": {
"react-native": "build/bin.js"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
"node_modules/@react-native-community/cli-clean": {
- "version": "11.3.6",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-11.3.6.tgz",
- "integrity": "sha512-jOOaeG5ebSXTHweq1NznVJVAFKtTFWL4lWgUXl845bCGX7t1lL8xQNWHKwT8Oh1pGR2CI3cKmRjY4hBg+pEI9g==",
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-12.3.0.tgz",
+ "integrity": "sha512-iAgLCOWYRGh9ukr+eVQnhkV/OqN3V2EGd/in33Ggn/Mj4uO6+oUncXFwB+yjlyaUNz6FfjudhIz09yYGSF+9sg==",
"dependencies": {
- "@react-native-community/cli-tools": "11.3.6",
+ "@react-native-community/cli-tools": "12.3.0",
"chalk": "^4.1.2",
- "execa": "^5.0.0",
- "prompts": "^2.4.0"
+ "execa": "^5.0.0"
}
},
"node_modules/@react-native-community/cli-clean/node_modules/ansi-styles": {
@@ -8685,11 +8648,11 @@
}
},
"node_modules/@react-native-community/cli-config": {
- "version": "11.3.6",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-11.3.6.tgz",
- "integrity": "sha512-edy7fwllSFLan/6BG6/rznOBCLPrjmJAE10FzkEqNLHowi0bckiAPg1+1jlgQ2qqAxV5kuk+c9eajVfQvPLYDA==",
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-12.3.0.tgz",
+ "integrity": "sha512-BrTn5ndFD9uOxO8kxBQ32EpbtOvAsQExGPI7SokdI4Zlve70FziLtTq91LTlTUgMq1InVZn/jJb3VIDk6BTInQ==",
"dependencies": {
- "@react-native-community/cli-tools": "11.3.6",
+ "@react-native-community/cli-tools": "12.3.0",
"chalk": "^4.1.2",
"cosmiconfig": "^5.1.0",
"deepmerge": "^4.3.0",
@@ -8808,34 +8771,33 @@
}
},
"node_modules/@react-native-community/cli-debugger-ui": {
- "version": "11.3.6",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-11.3.6.tgz",
- "integrity": "sha512-jhMOSN/iOlid9jn/A2/uf7HbC3u7+lGktpeGSLnHNw21iahFBzcpuO71ekEdlmTZ4zC/WyxBXw9j2ka33T358w==",
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-12.3.0.tgz",
+ "integrity": "sha512-w3b0iwjQlk47GhZWHaeTG8kKH09NCMUJO729xSdMBXE8rlbm4kHpKbxQY9qKb6NlfWSJN4noGY+FkNZS2rRwnQ==",
"dependencies": {
"serve-static": "^1.13.1"
}
},
"node_modules/@react-native-community/cli-doctor": {
- "version": "11.3.6",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-11.3.6.tgz",
- "integrity": "sha512-UT/Tt6omVPi1j6JEX+CObc85eVFghSZwy4GR9JFMsO7gNg2Tvcu1RGWlUkrbmWMAMHw127LUu6TGK66Ugu1NLA==",
- "dependencies": {
- "@react-native-community/cli-config": "11.3.6",
- "@react-native-community/cli-platform-android": "11.3.6",
- "@react-native-community/cli-platform-ios": "11.3.6",
- "@react-native-community/cli-tools": "11.3.6",
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-12.3.0.tgz",
+ "integrity": "sha512-BPCwNNesoQMkKsxB08Ayy6URgGQ8Kndv6mMhIvJSNdST3J1+x3ehBHXzG9B9Vfi+DrTKRb8lmEl/b/7VkDlPkA==",
+ "dependencies": {
+ "@react-native-community/cli-config": "12.3.0",
+ "@react-native-community/cli-platform-android": "12.3.0",
+ "@react-native-community/cli-platform-ios": "12.3.0",
+ "@react-native-community/cli-tools": "12.3.0",
"chalk": "^4.1.2",
"command-exists": "^1.2.8",
- "envinfo": "^7.7.2",
+ "deepmerge": "^4.3.0",
+ "envinfo": "^7.10.0",
"execa": "^5.0.0",
"hermes-profile-transformer": "^0.0.6",
"ip": "^1.1.5",
"node-stream-zip": "^1.9.1",
"ora": "^5.4.1",
- "prompts": "^2.4.0",
"semver": "^7.5.2",
"strip-ansi": "^5.2.0",
- "sudo-prompt": "^9.0.0",
"wcwidth": "^1.0.1",
"yaml": "^2.2.1"
}
@@ -8921,12 +8883,12 @@
}
},
"node_modules/@react-native-community/cli-hermes": {
- "version": "11.3.6",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-11.3.6.tgz",
- "integrity": "sha512-O55YAYGZ3XynpUdePPVvNuUPGPY0IJdctLAOHme73OvS80gNwfntHDXfmY70TGHWIfkK2zBhA0B+2v8s5aTyTA==",
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-12.3.0.tgz",
+ "integrity": "sha512-G6FxpeZBO4AimKZwtWR3dpXRqTvsmEqlIkkxgwthdzn3LbVjDVIXKpVYU9PkR5cnT+KuAUxO0WwthrJ6Nmrrlg==",
"dependencies": {
- "@react-native-community/cli-platform-android": "11.3.6",
- "@react-native-community/cli-tools": "11.3.6",
+ "@react-native-community/cli-platform-android": "12.3.0",
+ "@react-native-community/cli-tools": "12.3.0",
"chalk": "^4.1.2",
"hermes-profile-transformer": "^0.0.6",
"ip": "^1.1.5"
@@ -9002,13 +8964,14 @@
}
},
"node_modules/@react-native-community/cli-platform-android": {
- "version": "11.3.6",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-11.3.6.tgz",
- "integrity": "sha512-ZARrpLv5tn3rmhZc//IuDM1LSAdYnjUmjrp58RynlvjLDI4ZEjBAGCQmgysRgXAsK7ekMrfkZgemUczfn9td2A==",
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-12.3.0.tgz",
+ "integrity": "sha512-VU1NZw63+GLU2TnyQ919bEMThpHQ/oMFju9MCfrd3pyPJz4Sn+vc3NfnTDUVA5Z5yfLijFOkHIHr4vo/C9bjnw==",
"dependencies": {
- "@react-native-community/cli-tools": "11.3.6",
+ "@react-native-community/cli-tools": "12.3.0",
"chalk": "^4.1.2",
"execa": "^5.0.0",
+ "fast-xml-parser": "^4.2.4",
"glob": "^7.1.3",
"logkitty": "^0.7.1"
}
@@ -9078,11 +9041,11 @@
}
},
"node_modules/@react-native-community/cli-platform-ios": {
- "version": "11.3.6",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-11.3.6.tgz",
- "integrity": "sha512-tZ9VbXWiRW+F+fbZzpLMZlj93g3Q96HpuMsS6DRhrTiG+vMQ3o6oPWSEEmMGOvJSYU7+y68Dc9ms2liC7VD6cw==",
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-12.3.0.tgz",
+ "integrity": "sha512-H95Sgt3wT7L8V75V0syFJDtv4YgqK5zbu69ko4yrXGv8dv2EBi6qZP0VMmkqXDamoPm9/U7tDTdbcf26ctnLfg==",
"dependencies": {
- "@react-native-community/cli-tools": "11.3.6",
+ "@react-native-community/cli-tools": "12.3.0",
"chalk": "^4.1.2",
"execa": "^5.0.0",
"fast-xml-parser": "^4.0.12",
@@ -9155,696 +9118,17 @@
}
},
"node_modules/@react-native-community/cli-plugin-metro": {
- "version": "11.3.6",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-11.3.6.tgz",
- "integrity": "sha512-D97racrPX3069ibyabJNKw9aJpVcaZrkYiEzsEnx50uauQtPDoQ1ELb/5c6CtMhAEGKoZ0B5MS23BbsSZcLs2g==",
- "dependencies": {
- "@react-native-community/cli-server-api": "11.3.6",
- "@react-native-community/cli-tools": "11.3.6",
- "chalk": "^4.1.2",
- "execa": "^5.0.0",
- "metro": "0.76.7",
- "metro-config": "0.76.7",
- "metro-core": "0.76.7",
- "metro-react-native-babel-transformer": "0.76.7",
- "metro-resolver": "0.76.7",
- "metro-runtime": "0.76.7",
- "readline": "^1.3.0"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/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/@react-native-community/cli-plugin-metro/node_modules/@types/yargs": {
- "version": "16.0.6",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.6.tgz",
- "integrity": "sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A==",
- "dependencies": {
- "@types/yargs-parser": "*"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/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/@react-native-community/cli-plugin-metro/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/@react-native-community/cli-plugin-metro/node_modules/ci-info": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
- "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/cliui": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/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/@react-native-community/cli-plugin-metro/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/@react-native-community/cli-plugin-metro/node_modules/cosmiconfig": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
- "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
- "dependencies": {
- "import-fresh": "^2.0.0",
- "is-directory": "^0.3.1",
- "js-yaml": "^3.13.1",
- "parse-json": "^4.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/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/@react-native-community/cli-plugin-metro/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/@react-native-community/cli-plugin-metro/node_modules/import-fresh": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
- "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==",
- "dependencies": {
- "caller-path": "^2.0.0",
- "resolve-from": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/jest-regex-util": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz",
- "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==",
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/jest-util": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
- "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
- "dependencies": {
- "@jest/types": "^27.5.1",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "graceful-fs": "^4.2.9",
- "picomatch": "^2.2.3"
- },
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/jest-util/node_modules/ci-info": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz",
- "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/sibiraj-s"
- }
- ],
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/jest-worker": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
- "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
- "dependencies": {
- "@types/node": "*",
- "merge-stream": "^2.0.0",
- "supports-color": "^8.0.0"
- },
- "engines": {
- "node": ">= 10.13.0"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/jest-worker/node_modules/supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro/-/metro-0.76.7.tgz",
- "integrity": "sha512-67ZGwDeumEPnrHI+pEDSKH2cx+C81Gx8Mn5qOtmGUPm/Up9Y4I1H2dJZ5n17MWzejNo0XAvPh0QL0CrlJEODVQ==",
- "dependencies": {
- "@babel/code-frame": "^7.0.0",
- "@babel/core": "^7.20.0",
- "@babel/generator": "^7.20.0",
- "@babel/parser": "^7.20.0",
- "@babel/template": "^7.0.0",
- "@babel/traverse": "^7.20.0",
- "@babel/types": "^7.20.0",
- "accepts": "^1.3.7",
- "async": "^3.2.2",
- "chalk": "^4.0.0",
- "ci-info": "^2.0.0",
- "connect": "^3.6.5",
- "debug": "^2.2.0",
- "denodeify": "^1.2.1",
- "error-stack-parser": "^2.0.6",
- "graceful-fs": "^4.2.4",
- "hermes-parser": "0.12.0",
- "image-size": "^1.0.2",
- "invariant": "^2.2.4",
- "jest-worker": "^27.2.0",
- "jsc-safe-url": "^0.2.2",
- "lodash.throttle": "^4.1.1",
- "metro-babel-transformer": "0.76.7",
- "metro-cache": "0.76.7",
- "metro-cache-key": "0.76.7",
- "metro-config": "0.76.7",
- "metro-core": "0.76.7",
- "metro-file-map": "0.76.7",
- "metro-inspector-proxy": "0.76.7",
- "metro-minify-terser": "0.76.7",
- "metro-minify-uglify": "0.76.7",
- "metro-react-native-babel-preset": "0.76.7",
- "metro-resolver": "0.76.7",
- "metro-runtime": "0.76.7",
- "metro-source-map": "0.76.7",
- "metro-symbolicate": "0.76.7",
- "metro-transform-plugins": "0.76.7",
- "metro-transform-worker": "0.76.7",
- "mime-types": "^2.1.27",
- "node-fetch": "^2.2.0",
- "nullthrows": "^1.1.1",
- "rimraf": "^3.0.2",
- "serialize-error": "^2.1.0",
- "source-map": "^0.5.6",
- "strip-ansi": "^6.0.0",
- "throat": "^5.0.0",
- "ws": "^7.5.1",
- "yargs": "^17.6.2"
- },
- "bin": {
- "metro": "src/cli.js"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-babel-transformer": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.76.7.tgz",
- "integrity": "sha512-bgr2OFn0J4r0qoZcHrwEvccF7g9k3wdgTOgk6gmGHrtlZ1Jn3oCpklW/DfZ9PzHfjY2mQammKTc19g/EFGyOJw==",
- "dependencies": {
- "@babel/core": "^7.20.0",
- "hermes-parser": "0.12.0",
- "nullthrows": "^1.1.1"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-cache": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.76.7.tgz",
- "integrity": "sha512-nWBMztrs5RuSxZRI7hgFgob5PhYDmxICh9FF8anm9/ito0u0vpPvRxt7sRu8fyeD2AHdXqE7kX32rWY0LiXgeg==",
- "dependencies": {
- "metro-core": "0.76.7",
- "rimraf": "^3.0.2"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-cache-key": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.76.7.tgz",
- "integrity": "sha512-0pecoIzwsD/Whn/Qfa+SDMX2YyasV0ndbcgUFx7w1Ct2sLHClujdhQ4ik6mvQmsaOcnGkIyN0zcceMDjC2+BFQ==",
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-config": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.76.7.tgz",
- "integrity": "sha512-CFDyNb9bqxZemiChC/gNdXZ7OQkIwmXzkrEXivcXGbgzlt/b2juCv555GWJHyZSlorwnwJfY3uzAFu4A9iRVfg==",
- "dependencies": {
- "connect": "^3.6.5",
- "cosmiconfig": "^5.0.5",
- "jest-validate": "^29.2.1",
- "metro": "0.76.7",
- "metro-cache": "0.76.7",
- "metro-core": "0.76.7",
- "metro-runtime": "0.76.7"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-core": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.76.7.tgz",
- "integrity": "sha512-0b8KfrwPmwCMW+1V7ZQPkTy2tsEKZjYG9Pu1PTsu463Z9fxX7WaR0fcHFshv+J1CnQSUTwIGGjbNvj1teKe+pw==",
- "dependencies": {
- "lodash.throttle": "^4.1.1",
- "metro-resolver": "0.76.7"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-file-map": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.76.7.tgz",
- "integrity": "sha512-s+zEkTcJ4mOJTgEE2ht4jIo1DZfeWreQR3tpT3gDV/Y/0UQ8aJBTv62dE775z0GLsWZApiblAYZsj7ZE8P06nw==",
- "dependencies": {
- "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-util": "^27.2.0",
- "jest-worker": "^27.2.0",
- "micromatch": "^4.0.4",
- "node-abort-controller": "^3.1.1",
- "nullthrows": "^1.1.1",
- "walker": "^1.0.7"
- },
- "engines": {
- "node": ">=16"
- },
- "optionalDependencies": {
- "fsevents": "^2.3.2"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-inspector-proxy": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.76.7.tgz",
- "integrity": "sha512-rNZ/6edTl/1qUekAhAbaFjczMphM50/UjtxiKulo6vqvgn/Mjd9hVqDvVYfAMZXqPvlusD88n38UjVYPkruLSg==",
- "dependencies": {
- "connect": "^3.6.5",
- "debug": "^2.2.0",
- "node-fetch": "^2.2.0",
- "ws": "^7.5.1",
- "yargs": "^17.6.2"
- },
- "bin": {
- "metro-inspector-proxy": "src/cli.js"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-minify-terser": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.76.7.tgz",
- "integrity": "sha512-FQiZGhIxCzhDwK4LxyPMLlq0Tsmla10X7BfNGlYFK0A5IsaVKNJbETyTzhpIwc+YFRT4GkFFwgo0V2N5vxO5HA==",
- "dependencies": {
- "terser": "^5.15.0"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-minify-uglify": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.76.7.tgz",
- "integrity": "sha512-FuXIU3j2uNcSvQtPrAJjYWHruPiQ+EpE++J9Z+VznQKEHcIxMMoQZAfIF2IpZSrZYfLOjVFyGMvj41jQMxV1Vw==",
- "dependencies": {
- "uglify-es": "^3.1.9"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-react-native-babel-preset": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.76.7.tgz",
- "integrity": "sha512-R25wq+VOSorAK3hc07NW0SmN8z9S/IR0Us0oGAsBcMZnsgkbOxu77Mduqf+f4is/wnWHc5+9bfiqdLnaMngiVw==",
- "dependencies": {
- "@babel/core": "^7.20.0",
- "@babel/plugin-proposal-async-generator-functions": "^7.0.0",
- "@babel/plugin-proposal-class-properties": "^7.18.0",
- "@babel/plugin-proposal-export-default-from": "^7.0.0",
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0",
- "@babel/plugin-proposal-numeric-separator": "^7.0.0",
- "@babel/plugin-proposal-object-rest-spread": "^7.20.0",
- "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
- "@babel/plugin-proposal-optional-chaining": "^7.20.0",
- "@babel/plugin-syntax-dynamic-import": "^7.8.0",
- "@babel/plugin-syntax-export-default-from": "^7.0.0",
- "@babel/plugin-syntax-flow": "^7.18.0",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0",
- "@babel/plugin-syntax-optional-chaining": "^7.0.0",
- "@babel/plugin-transform-arrow-functions": "^7.0.0",
- "@babel/plugin-transform-async-to-generator": "^7.20.0",
- "@babel/plugin-transform-block-scoping": "^7.0.0",
- "@babel/plugin-transform-classes": "^7.0.0",
- "@babel/plugin-transform-computed-properties": "^7.0.0",
- "@babel/plugin-transform-destructuring": "^7.20.0",
- "@babel/plugin-transform-flow-strip-types": "^7.20.0",
- "@babel/plugin-transform-function-name": "^7.0.0",
- "@babel/plugin-transform-literals": "^7.0.0",
- "@babel/plugin-transform-modules-commonjs": "^7.0.0",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0",
- "@babel/plugin-transform-parameters": "^7.0.0",
- "@babel/plugin-transform-react-display-name": "^7.0.0",
- "@babel/plugin-transform-react-jsx": "^7.0.0",
- "@babel/plugin-transform-react-jsx-self": "^7.0.0",
- "@babel/plugin-transform-react-jsx-source": "^7.0.0",
- "@babel/plugin-transform-runtime": "^7.0.0",
- "@babel/plugin-transform-shorthand-properties": "^7.0.0",
- "@babel/plugin-transform-spread": "^7.0.0",
- "@babel/plugin-transform-sticky-regex": "^7.0.0",
- "@babel/plugin-transform-typescript": "^7.5.0",
- "@babel/plugin-transform-unicode-regex": "^7.0.0",
- "@babel/template": "^7.0.0",
- "babel-plugin-transform-flow-enums": "^0.0.2",
- "react-refresh": "^0.4.0"
- },
- "engines": {
- "node": ">=16"
- },
- "peerDependencies": {
- "@babel/core": "*"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-react-native-babel-transformer": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.76.7.tgz",
- "integrity": "sha512-W6lW3J7y/05ph3c2p3KKJNhH0IdyxdOCbQ5it7aM2MAl0SM4wgKjaV6EYv9b3rHklpV6K3qMH37UKVcjMooWiA==",
- "dependencies": {
- "@babel/core": "^7.20.0",
- "babel-preset-fbjs": "^3.4.0",
- "hermes-parser": "0.12.0",
- "metro-react-native-babel-preset": "0.76.7",
- "nullthrows": "^1.1.1"
- },
- "engines": {
- "node": ">=16"
- },
- "peerDependencies": {
- "@babel/core": "*"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-resolver": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.76.7.tgz",
- "integrity": "sha512-pC0Wgq29HHIHrwz23xxiNgylhI8Rq1V01kQaJ9Kz11zWrIdlrH0ZdnJ7GC6qA0ErROG+cXmJ0rJb8/SW1Zp2IA==",
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-runtime": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.76.7.tgz",
- "integrity": "sha512-MuWHubQHymUWBpZLwuKZQgA/qbb35WnDAKPo83rk7JRLIFPvzXSvFaC18voPuzJBt1V98lKQIonh6MiC9gd8Ug==",
- "dependencies": {
- "@babel/runtime": "^7.0.0",
- "react-refresh": "^0.4.0"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-source-map": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.76.7.tgz",
- "integrity": "sha512-Prhx7PeRV1LuogT0Kn5VjCuFu9fVD68eefntdWabrksmNY6mXK8pRqzvNJOhTojh6nek+RxBzZeD6MIOOyXS6w==",
- "dependencies": {
- "@babel/traverse": "^7.20.0",
- "@babel/types": "^7.20.0",
- "invariant": "^2.2.4",
- "metro-symbolicate": "0.76.7",
- "nullthrows": "^1.1.1",
- "ob1": "0.76.7",
- "source-map": "^0.5.6",
- "vlq": "^1.0.0"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-symbolicate": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.76.7.tgz",
- "integrity": "sha512-p0zWEME5qLSL1bJb93iq+zt5fz3sfVn9xFYzca1TJIpY5MommEaS64Va87lp56O0sfEIvh4307Oaf/ZzRjuLiQ==",
- "dependencies": {
- "invariant": "^2.2.4",
- "metro-source-map": "0.76.7",
- "nullthrows": "^1.1.1",
- "source-map": "^0.5.6",
- "through2": "^2.0.1",
- "vlq": "^1.0.0"
- },
- "bin": {
- "metro-symbolicate": "src/index.js"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-transform-plugins": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.76.7.tgz",
- "integrity": "sha512-iSmnjVApbdivjuzb88Orb0JHvcEt5veVyFAzxiS5h0QB+zV79w6JCSqZlHCrbNOkOKBED//LqtKbFVakxllnNg==",
- "dependencies": {
- "@babel/core": "^7.20.0",
- "@babel/generator": "^7.20.0",
- "@babel/template": "^7.0.0",
- "@babel/traverse": "^7.20.0",
- "nullthrows": "^1.1.1"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-transform-worker": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.76.7.tgz",
- "integrity": "sha512-cGvELqFMVk9XTC15CMVzrCzcO6sO1lURfcbgjuuPdzaWuD11eEyocvkTX0DPiRjsvgAmicz4XYxVzgYl3MykDw==",
- "dependencies": {
- "@babel/core": "^7.20.0",
- "@babel/generator": "^7.20.0",
- "@babel/parser": "^7.20.0",
- "@babel/types": "^7.20.0",
- "babel-preset-fbjs": "^3.4.0",
- "metro": "0.76.7",
- "metro-babel-transformer": "0.76.7",
- "metro-cache": "0.76.7",
- "metro-cache-key": "0.76.7",
- "metro-source-map": "0.76.7",
- "metro-transform-plugins": "0.76.7",
- "nullthrows": "^1.1.1"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/ob1": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.76.7.tgz",
- "integrity": "sha512-BQdRtxxoUNfSoZxqeBGOyuT9nEYSn18xZHwGMb0mMVpn2NBcYbnyKY4BK2LIHRgw33CBGlUmE+KMaNvyTpLLtQ==",
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
- "dependencies": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/react-refresh": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz",
- "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/resolve-from": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
- "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/serialize-error": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz",
- "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/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/@react-native-community/cli-plugin-metro/node_modules/ws": {
- "version": "7.5.9",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
- "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
- "engines": {
- "node": ">=8.3.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/yargs": {
- "version": "17.7.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
- "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
- "dependencies": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/yargs-parser": {
- "version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
- "engines": {
- "node": ">=12"
- }
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-12.3.0.tgz",
+ "integrity": "sha512-tYNHIYnNmxrBcsqbE2dAnLMzlKI3Cp1p1xUgTrNaOMsGPDN1epzNfa34n6Nps3iwKElSL7Js91CzYNqgTalucA=="
},
"node_modules/@react-native-community/cli-server-api": {
- "version": "11.3.6",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-11.3.6.tgz",
- "integrity": "sha512-8GUKodPnURGtJ9JKg8yOHIRtWepPciI3ssXVw5jik7+dZ43yN8P5BqCoDaq8e1H1yRer27iiOfT7XVnwk8Dueg==",
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-12.3.0.tgz",
+ "integrity": "sha512-Rode8NrdyByC+lBKHHn+/W8Zu0c+DajJvLmOWbe2WY/ECvnwcd9MHHbu92hlT2EQaJ9LbLhGrSbQE3cQy9EOCw==",
"dependencies": {
- "@react-native-community/cli-debugger-ui": "11.3.6",
- "@react-native-community/cli-tools": "11.3.6",
+ "@react-native-community/cli-debugger-ui": "12.3.0",
+ "@react-native-community/cli-tools": "12.3.0",
"compression": "^1.7.1",
"connect": "^3.6.5",
"errorhandler": "^1.5.1",
@@ -9932,9 +9216,9 @@
}
},
"node_modules/@react-native-community/cli-tools": {
- "version": "11.3.6",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-11.3.6.tgz",
- "integrity": "sha512-JpmUTcDwAGiTzLsfMlIAYpCMSJ9w2Qlf7PU7mZIRyEu61UzEawyw83DkqfbzDPBuRwRnaeN44JX2CP/yTO3ThQ==",
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-12.3.0.tgz",
+ "integrity": "sha512-2GafnCr8D88VdClwnm9KZfkEb+lzVoFdr/7ybqhdeYM0Vnt/tr2N+fM1EQzwI1DpzXiBzTYemw8GjRq+Utcz2Q==",
"dependencies": {
"appdirsjs": "^1.2.4",
"chalk": "^4.1.2",
@@ -9944,7 +9228,8 @@
"open": "^6.2.0",
"ora": "^5.4.1",
"semver": "^7.5.2",
- "shell-quote": "^1.7.3"
+ "shell-quote": "^1.7.3",
+ "sudo-prompt": "^9.0.0"
}
},
"node_modules/@react-native-community/cli-tools/node_modules/ansi-styles": {
@@ -10031,9 +9316,9 @@
}
},
"node_modules/@react-native-community/cli-types": {
- "version": "11.3.6",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-11.3.6.tgz",
- "integrity": "sha512-6DxjrMKx5x68N/tCJYVYRKAtlRHbtUVBZrnAvkxbRWFD9v4vhNgsPM0RQm8i2vRugeksnao5mbnRGpS6c0awCw==",
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-12.3.0.tgz",
+ "integrity": "sha512-MgOkmrXH4zsGxhte4YqKL7d+N8ZNEd3w1wo56MZlhu5WabwCJh87wYpU5T8vyfujFLYOFuFK5jjlcbs8F4/WDw==",
"dependencies": {
"joi": "^17.2.1"
}
@@ -10323,8 +9608,9 @@
}
},
"node_modules/@react-native-community/netinfo": {
- "version": "9.3.10",
- "license": "MIT",
+ "version": "11.2.1",
+ "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-11.2.1.tgz",
+ "integrity": "sha512-n9kgmH7vLaU7Cdo8vGfJGGwhrlgppaOSq5zKj9I7H4k5iRM3aNtwURw83mgrc22Ip7nSye2afZV2xDiIyvHttQ==",
"peerDependencies": {
"react-native": ">=0.59"
}
@@ -10394,53 +9680,314 @@
}
},
"node_modules/@react-native-picker/picker": {
- "version": "2.4.4",
- "license": "MIT",
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@react-native-picker/picker/-/picker-2.5.1.tgz",
+ "integrity": "sha512-/sADUfQsosMRYtrqqL3ZYZSECRygj0fXtpRLqxJfwuMEoqfvfn40756R6B1alzusVvDRZFI0ari0iQid56hA/Q==",
"peerDependencies": {
"react": ">=16",
"react-native": ">=0.57"
}
},
"node_modules/@react-native/assets-registry": {
- "version": "0.72.0",
- "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.72.0.tgz",
- "integrity": "sha512-Im93xRJuHHxb1wniGhBMsxLwcfzdYreSZVQGDoMJgkd6+Iky61LInGEHnQCTN0fKNYF1Dvcofb4uMmE1RQHXHQ=="
+ "version": "0.73.1",
+ "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.73.1.tgz",
+ "integrity": "sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg==",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@react-native/babel-plugin-codegen": {
+ "version": "0.73.2",
+ "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.73.2.tgz",
+ "integrity": "sha512-PadyFZWVaWXIBP7Q5dgEL7eAd7tnsgsLjoHJB1hIRZZuVUg1Zqe3nULwC7RFAqOtr5Qx7KXChkFFcKQ3WnZzGw==",
+ "dependencies": {
+ "@react-native/codegen": "0.73.2"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@react-native/babel-preset": {
+ "version": "0.73.19",
+ "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.73.19.tgz",
+ "integrity": "sha512-ujon01uMOREZecIltQxPDmJ6xlVqAUFGI/JCSpeVYdxyXBoBH5dBb0ihj7h6LKH1q1jsnO9z4MxfddtypKkIbg==",
+ "dependencies": {
+ "@babel/core": "^7.20.0",
+ "@babel/plugin-proposal-async-generator-functions": "^7.0.0",
+ "@babel/plugin-proposal-class-properties": "^7.18.0",
+ "@babel/plugin-proposal-export-default-from": "^7.0.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0",
+ "@babel/plugin-proposal-numeric-separator": "^7.0.0",
+ "@babel/plugin-proposal-object-rest-spread": "^7.20.0",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.20.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.0",
+ "@babel/plugin-syntax-export-default-from": "^7.0.0",
+ "@babel/plugin-syntax-flow": "^7.18.0",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-syntax-optional-chaining": "^7.0.0",
+ "@babel/plugin-transform-arrow-functions": "^7.0.0",
+ "@babel/plugin-transform-async-to-generator": "^7.20.0",
+ "@babel/plugin-transform-block-scoping": "^7.0.0",
+ "@babel/plugin-transform-classes": "^7.0.0",
+ "@babel/plugin-transform-computed-properties": "^7.0.0",
+ "@babel/plugin-transform-destructuring": "^7.20.0",
+ "@babel/plugin-transform-flow-strip-types": "^7.20.0",
+ "@babel/plugin-transform-function-name": "^7.0.0",
+ "@babel/plugin-transform-literals": "^7.0.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.0.0",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0",
+ "@babel/plugin-transform-parameters": "^7.0.0",
+ "@babel/plugin-transform-private-methods": "^7.22.5",
+ "@babel/plugin-transform-private-property-in-object": "^7.22.11",
+ "@babel/plugin-transform-react-display-name": "^7.0.0",
+ "@babel/plugin-transform-react-jsx": "^7.0.0",
+ "@babel/plugin-transform-react-jsx-self": "^7.0.0",
+ "@babel/plugin-transform-react-jsx-source": "^7.0.0",
+ "@babel/plugin-transform-runtime": "^7.0.0",
+ "@babel/plugin-transform-shorthand-properties": "^7.0.0",
+ "@babel/plugin-transform-spread": "^7.0.0",
+ "@babel/plugin-transform-sticky-regex": "^7.0.0",
+ "@babel/plugin-transform-typescript": "^7.5.0",
+ "@babel/plugin-transform-unicode-regex": "^7.0.0",
+ "@babel/template": "^7.0.0",
+ "@react-native/babel-plugin-codegen": "0.73.2",
+ "babel-plugin-transform-flow-enums": "^0.0.2",
+ "react-refresh": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@babel/core": "*"
+ }
+ },
+ "node_modules/@react-native/babel-preset/node_modules/react-refresh": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz",
+ "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
"node_modules/@react-native/codegen": {
- "version": "0.72.6",
- "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.72.6.tgz",
- "integrity": "sha512-idTVI1es/oopN0jJT/0jB6nKdvTUKE3757zA5+NPXZTeB46CIRbmmos4XBiAec8ufu9/DigLPbHTYAaMNZJ6Ig==",
+ "version": "0.73.2",
+ "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.73.2.tgz",
+ "integrity": "sha512-lfy8S7umhE3QLQG5ViC4wg5N1Z+E6RnaeIw8w1voroQsXXGPB72IBozh8dAHR3+ceTxIU0KX3A8OpJI8e1+HpQ==",
"dependencies": {
"@babel/parser": "^7.20.0",
"flow-parser": "^0.206.0",
+ "glob": "^7.1.1",
+ "invariant": "^2.2.4",
"jscodeshift": "^0.14.0",
+ "mkdirp": "^0.5.1",
"nullthrows": "^1.1.1"
},
+ "engines": {
+ "node": ">=18"
+ },
"peerDependencies": {
"@babel/preset-env": "^7.1.6"
}
},
+ "node_modules/@react-native/codegen/node_modules/mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "dependencies": {
+ "minimist": "^1.2.6"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin": {
+ "version": "0.73.12",
+ "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.73.12.tgz",
+ "integrity": "sha512-xWU06OkC1cX++Duh/cD/Wv+oZ0oSY3yqbtxAqQA2H3Q+MQltNNJM6MqIHt1VOZSabRf/LVlR1JL6U9TXJirkaw==",
+ "dependencies": {
+ "@react-native-community/cli-server-api": "12.3.0",
+ "@react-native-community/cli-tools": "12.3.0",
+ "@react-native/dev-middleware": "0.73.7",
+ "@react-native/metro-babel-transformer": "0.73.13",
+ "chalk": "^4.0.0",
+ "execa": "^5.1.1",
+ "metro": "^0.80.3",
+ "metro-config": "^0.80.3",
+ "metro-core": "^0.80.3",
+ "node-fetch": "^2.2.0",
+ "readline": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@react-native/community-cli-plugin/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/@react-native/community-cli-plugin/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/@react-native/community-cli-plugin/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/@react-native/community-cli-plugin/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/@react-native/community-cli-plugin/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/@react-native/community-cli-plugin/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/@react-native/debugger-frontend": {
+ "version": "0.73.3",
+ "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.73.3.tgz",
+ "integrity": "sha512-RgEKnWuoo54dh7gQhV7kvzKhXZEhpF9LlMdZolyhGxHsBqZ2gXdibfDlfcARFFifPIiaZ3lXuOVVa4ei+uPgTw==",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@react-native/dev-middleware": {
+ "version": "0.73.7",
+ "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.73.7.tgz",
+ "integrity": "sha512-BZXpn+qKp/dNdr4+TkZxXDttfx8YobDh8MFHsMk9usouLm22pKgFIPkGBV0X8Do4LBkFNPGtrnsKkWk/yuUXKg==",
+ "dependencies": {
+ "@isaacs/ttlcache": "^1.4.1",
+ "@react-native/debugger-frontend": "0.73.3",
+ "chrome-launcher": "^0.15.2",
+ "chromium-edge-launcher": "^1.0.0",
+ "connect": "^3.6.5",
+ "debug": "^2.2.0",
+ "node-fetch": "^2.2.0",
+ "open": "^7.0.3",
+ "serve-static": "^1.13.1",
+ "temp-dir": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@react-native/dev-middleware/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/@react-native/dev-middleware/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/@react-native/dev-middleware/node_modules/open": {
+ "version": "7.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
+ "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
+ "dependencies": {
+ "is-docker": "^2.0.0",
+ "is-wsl": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/@react-native/gradle-plugin": {
- "version": "0.72.11",
- "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.72.11.tgz",
- "integrity": "sha512-P9iRnxiR2w7EHcZ0mJ+fmbPzMby77ZzV6y9sJI3lVLJzF7TLSdbwcQyD3lwMsiL+q5lKUHoZJS4sYmih+P2HXw=="
+ "version": "0.73.4",
+ "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.73.4.tgz",
+ "integrity": "sha512-PMDnbsZa+tD55Ug+W8CfqXiGoGneSSyrBZCMb5JfiB3AFST3Uj5e6lw8SgI/B6SKZF7lG0BhZ6YHZsRZ5MlXmg==",
+ "engines": {
+ "node": ">=18"
+ }
},
"node_modules/@react-native/js-polyfills": {
- "version": "0.72.1",
- "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.72.1.tgz",
- "integrity": "sha512-cRPZh2rBswFnGt5X5EUEPs0r+pAsXxYsifv/fgy9ZLQokuT52bPH+9xjDR+7TafRua5CttGW83wP4TntRcWNDA==",
- "license": "MIT"
+ "version": "0.73.1",
+ "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.73.1.tgz",
+ "integrity": "sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g==",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@react-native/metro-babel-transformer": {
+ "version": "0.73.13",
+ "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.73.13.tgz",
+ "integrity": "sha512-k9AQifogQfgUXPlqQSoMtX2KUhniw4XvJl+nZ4hphCH7qiMDAwuP8OmkJbz5E/N+Ro9OFuLE7ax4GlwxaTsAWg==",
+ "dependencies": {
+ "@babel/core": "^7.20.0",
+ "@react-native/babel-preset": "0.73.19",
+ "hermes-parser": "0.15.0",
+ "nullthrows": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@babel/core": "*"
+ }
},
"node_modules/@react-native/metro-config": {
- "version": "0.72.11",
- "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.72.11.tgz",
- "integrity": "sha512-661EyQnDdVelyc0qP/ew7kKkGAh6N6KlkuPLC2SQ8sxaXskVU6fSuNlpLW4bUTBUDFKG8gEOU2hp6rzk4wQnGQ==",
+ "version": "0.73.3",
+ "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.73.3.tgz",
+ "integrity": "sha512-aIVh+lM52n7/RFDXLDiIp1vI21jc9thm2VxdkP7KwxMut7VvW+2tO38zKt74/2ker2ca0205tbf3pyCYBvV6Ww==",
"dev": true,
"dependencies": {
- "@react-native/js-polyfills": "^0.72.1",
- "metro-config": "0.76.8",
- "metro-react-native-babel-transformer": "0.76.8",
- "metro-runtime": "0.76.8"
+ "@react-native/js-polyfills": "0.73.1",
+ "@react-native/metro-babel-transformer": "0.73.13",
+ "metro-config": "^0.80.3",
+ "metro-runtime": "^0.80.3"
+ },
+ "engines": {
+ "node": ">=18"
}
},
"node_modules/@react-native/normalize-color": {
@@ -10450,18 +9997,21 @@
"license": "MIT"
},
"node_modules/@react-native/normalize-colors": {
- "version": "0.72.0",
- "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.72.0.tgz",
- "integrity": "sha512-285lfdqSXaqKuBbbtP9qL2tDrfxdOFtIMvkKadtleRQkdOxx+uzGvFr82KHmc/sSiMtfXGp7JnFYWVh4sFl7Yw=="
+ "version": "0.73.2",
+ "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.73.2.tgz",
+ "integrity": "sha512-bRBcb2T+I88aG74LMVHaKms2p/T8aQd8+BZ7LuuzXlRfog1bMWWn/C5i0HVuvW4RPtXQYgIlGiXVDy9Ir1So/w=="
},
"node_modules/@react-native/virtualized-lists": {
- "version": "0.72.8",
- "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.72.8.tgz",
- "integrity": "sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw==",
+ "version": "0.73.4",
+ "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.73.4.tgz",
+ "integrity": "sha512-HpmLg1FrEiDtrtAbXiwCgXFYyloK/dOIPIuWW3fsqukwJEWAiTzm1nXGJ7xPU5XTHiWZ4sKup5Ebaj8z7iyWog==",
"dependencies": {
"invariant": "^2.2.4",
"nullthrows": "^1.1.1"
},
+ "engines": {
+ "node": ">=18"
+ },
"peerDependencies": {
"react-native": "*"
}
@@ -10598,6 +10148,124 @@
"loose-envify": "^1.1.0"
}
},
+ "node_modules/@remix-run/node": {
+ "version": "1.19.3",
+ "resolved": "https://registry.npmjs.org/@remix-run/node/-/node-1.19.3.tgz",
+ "integrity": "sha512-z5qrVL65xLXIUpU4mkR4MKlMeKARLepgHAk4W5YY3IBXOreRqOGUC70POViYmY7x38c2Ia1NwqL80H+0h7jbMw==",
+ "dependencies": {
+ "@remix-run/server-runtime": "1.19.3",
+ "@remix-run/web-fetch": "^4.3.6",
+ "@remix-run/web-file": "^3.0.3",
+ "@remix-run/web-stream": "^1.0.4",
+ "@web3-storage/multipart-parser": "^1.0.0",
+ "abort-controller": "^3.0.0",
+ "cookie-signature": "^1.1.0",
+ "source-map-support": "^0.5.21",
+ "stream-slice": "^0.1.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@remix-run/node/node_modules/cookie-signature": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.1.tgz",
+ "integrity": "sha512-78KWk9T26NhzXtuL26cIJ8/qNHANyJ/ZYrmEXFzUmhZdjpBv+DlWlOANRTGBt48YcyslsLrj0bMLFTmXvLRCOw==",
+ "engines": {
+ "node": ">=6.6.0"
+ }
+ },
+ "node_modules/@remix-run/router": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.7.2.tgz",
+ "integrity": "sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A==",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@remix-run/server-runtime": {
+ "version": "1.19.3",
+ "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-1.19.3.tgz",
+ "integrity": "sha512-KzQ+htUsKqpBgKE2tWo7kIIGy3MyHP58Io/itUPvV+weDjApwr9tQr9PZDPA3yAY6rAzLax7BU0NMSYCXWFY5A==",
+ "dependencies": {
+ "@remix-run/router": "1.7.2",
+ "@types/cookie": "^0.4.1",
+ "@web3-storage/multipart-parser": "^1.0.0",
+ "cookie": "^0.4.1",
+ "set-cookie-parser": "^2.4.8",
+ "source-map": "^0.7.3"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@remix-run/server-runtime/node_modules/cookie": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
+ "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/@remix-run/server-runtime/node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@remix-run/web-blob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@remix-run/web-blob/-/web-blob-3.1.0.tgz",
+ "integrity": "sha512-owGzFLbqPH9PlKb8KvpNJ0NO74HWE2euAn61eEiyCXX/oteoVzTVSN8mpLgDjaxBf2btj5/nUllSUgpyd6IH6g==",
+ "dependencies": {
+ "@remix-run/web-stream": "^1.1.0",
+ "web-encoding": "1.1.5"
+ }
+ },
+ "node_modules/@remix-run/web-fetch": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/@remix-run/web-fetch/-/web-fetch-4.4.2.tgz",
+ "integrity": "sha512-jgKfzA713/4kAW/oZ4bC3MoLWyjModOVDjFPNseVqcJKSafgIscrYL9G50SurEYLswPuoU3HzSbO0jQCMYWHhA==",
+ "dependencies": {
+ "@remix-run/web-blob": "^3.1.0",
+ "@remix-run/web-file": "^3.1.0",
+ "@remix-run/web-form-data": "^3.1.0",
+ "@remix-run/web-stream": "^1.1.0",
+ "@web3-storage/multipart-parser": "^1.0.0",
+ "abort-controller": "^3.0.0",
+ "data-uri-to-buffer": "^3.0.1",
+ "mrmime": "^1.0.0"
+ },
+ "engines": {
+ "node": "^10.17 || >=12.3"
+ }
+ },
+ "node_modules/@remix-run/web-file": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@remix-run/web-file/-/web-file-3.1.0.tgz",
+ "integrity": "sha512-dW2MNGwoiEYhlspOAXFBasmLeYshyAyhIdrlXBi06Duex5tDr3ut2LFKVj7tyHLmn8nnNwFf1BjNbkQpygC2aQ==",
+ "dependencies": {
+ "@remix-run/web-blob": "^3.1.0"
+ }
+ },
+ "node_modules/@remix-run/web-form-data": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@remix-run/web-form-data/-/web-form-data-3.1.0.tgz",
+ "integrity": "sha512-NdeohLMdrb+pHxMQ/Geuzdp0eqPbea+Ieo8M8Jx2lGC6TBHsgHzYcBvr0LyPdPVycNRDEpWpiDdCOdCryo3f9A==",
+ "dependencies": {
+ "web-encoding": "1.1.5"
+ }
+ },
+ "node_modules/@remix-run/web-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@remix-run/web-stream/-/web-stream-1.1.0.tgz",
+ "integrity": "sha512-KRJtwrjRV5Bb+pM7zxcTJkhIqWWSy+MYsIxHK+0m5atcznsf15YwUBWHWulZerV2+vvHH1Lp1DD7pw6qKW8SgA==",
+ "dependencies": {
+ "web-streams-polyfill": "^3.1.1"
+ }
+ },
"node_modules/@rnmapbox/maps": {
"version": "10.0.11",
"resolved": "https://registry.npmjs.org/@rnmapbox/maps/-/maps-10.0.11.tgz",
@@ -10708,9 +10376,9 @@
"license": "0BSD"
},
"node_modules/@shopify/flash-list": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/@shopify/flash-list/-/flash-list-1.6.1.tgz",
- "integrity": "sha512-SlBlpP7+zol6D1SKaf402aS30Qgwdjwb8/Qn2CupYwXnTcu2l8TiXB766vcsIvKTqUO7ELfQnCwCq8NXx55FsQ==",
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/@shopify/flash-list/-/flash-list-1.6.3.tgz",
+ "integrity": "sha512-XM2iu4CeD9SOEUxaGG3UkxfUxGPWG9yacga1yQSgskAjUsRDFTsD3y4Dyon9n8MfDwgrRpEwuijd+7NeQQoWaQ==",
"dependencies": {
"recyclerlistview": "4.2.0",
"tslib": "2.4.0"
@@ -20952,6 +20620,11 @@
"@types/node": "*"
}
},
+ "node_modules/@types/cookie": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
+ "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q=="
+ },
"node_modules/@types/debug": {
"version": "4.1.8",
"resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz",
@@ -21381,9 +21054,9 @@
"license": "MIT"
},
"node_modules/@types/react": {
- "version": "18.2.12",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.12.tgz",
- "integrity": "sha512-ndmBMLCgn38v3SntMeoJaIrO6tGHYKMEBohCUmw8HoLLQdRMOIGXfeYaBTLe2lsFaSB3MOK1VXscYFnmLtTSmw==",
+ "version": "18.2.45",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.45.tgz",
+ "integrity": "sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==",
"dependencies": {
"@types/prop-types": "*",
"@types/scheduler": "*",
@@ -22334,6 +22007,11 @@
"webpack": "^5.20.0 || ^4.1.0"
}
},
+ "node_modules/@web3-storage/multipart-parser": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@web3-storage/multipart-parser/-/multipart-parser-1.0.0.tgz",
+ "integrity": "sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw=="
+ },
"node_modules/@webassemblyjs/ast": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz",
@@ -22692,6 +22370,12 @@
"integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==",
"license": "BSD-2-Clause"
},
+ "node_modules/@zxing/text-encoding": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz",
+ "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==",
+ "optional": true
+ },
"node_modules/7zip-bin": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz",
@@ -24347,6 +24031,7 @@
},
"node_modules/babel-plugin-module-resolver": {
"version": "5.0.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"find-babel-config": "^2.0.0",
@@ -24361,6 +24046,7 @@
},
"node_modules/babel-plugin-module-resolver/node_modules/brace-expansion": {
"version": "2.0.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
@@ -24370,6 +24056,7 @@
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
"integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+ "dev": true,
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -24388,6 +24075,7 @@
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "dev": true,
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -24549,18 +24237,27 @@
}
},
"node_modules/babel-preset-expo": {
- "version": "9.5.2",
- "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-9.5.2.tgz",
- "integrity": "sha512-hU1G1TDiikuXV6UDZjPnX+WdbjbtidDiYhftMEVrZQSst45pDPVBWbM41TUKrpJMwv4FypsLzK+378gnMPRVWQ==",
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-10.0.1.tgz",
+ "integrity": "sha512-uWIGmLfbP3dS5+8nesxaW6mQs41d4iP7X82ZwRdisB/wAhKQmuJM9Y1jQe4006uNYkw6Phf2TT03ykLVro7KuQ==",
"dependencies": {
"@babel/plugin-proposal-decorators": "^7.12.9",
- "@babel/plugin-proposal-export-namespace-from": "^7.18.9",
- "@babel/plugin-proposal-object-rest-spread": "^7.12.13",
- "@babel/plugin-transform-react-jsx": "^7.12.17",
+ "@babel/plugin-transform-export-namespace-from": "^7.22.11",
+ "@babel/plugin-transform-object-rest-spread": "^7.12.13",
+ "@babel/plugin-transform-parameters": "^7.22.15",
"@babel/preset-env": "^7.20.0",
- "babel-plugin-module-resolver": "^5.0.0",
+ "@babel/preset-react": "^7.22.15",
+ "@react-native/babel-preset": "^0.73.18",
"babel-plugin-react-native-web": "~0.18.10",
- "metro-react-native-babel-preset": "0.76.8"
+ "react-refresh": "0.14.0"
+ }
+ },
+ "node_modules/babel-preset-expo/node_modules/react-refresh": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz",
+ "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==",
+ "engines": {
+ "node": ">=0.10.0"
}
},
"node_modules/babel-preset-fbjs": {
@@ -24783,6 +24480,14 @@
"node": ">=0.10.0"
}
},
+ "node_modules/base64-arraybuffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
+ "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==",
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
"node_modules/base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
@@ -26141,6 +25846,23 @@
"node": ">=10"
}
},
+ "node_modules/chrome-launcher": {
+ "version": "0.15.2",
+ "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz",
+ "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==",
+ "dependencies": {
+ "@types/node": "*",
+ "escape-string-regexp": "^4.0.0",
+ "is-wsl": "^2.2.0",
+ "lighthouse-logger": "^1.0.0"
+ },
+ "bin": {
+ "print-chrome-path": "bin/print-chrome-path.js"
+ },
+ "engines": {
+ "node": ">=12.13.0"
+ }
+ },
"node_modules/chrome-trace-event": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
@@ -26150,6 +25872,19 @@
"node": ">=6.0"
}
},
+ "node_modules/chromium-edge-launcher": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz",
+ "integrity": "sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA==",
+ "dependencies": {
+ "@types/node": "*",
+ "escape-string-regexp": "^4.0.0",
+ "is-wsl": "^2.2.0",
+ "lighthouse-logger": "^1.0.0",
+ "mkdirp": "^1.0.4",
+ "rimraf": "^3.0.2"
+ }
+ },
"node_modules/chromium-pickle-js": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz",
@@ -26364,9 +26099,9 @@
}
},
"node_modules/cli-spinners": {
- "version": "2.9.1",
- "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz",
- "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==",
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz",
+ "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
"engines": {
"node": ">=6"
},
@@ -26418,10 +26153,9 @@
}
},
"node_modules/clipboard": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.4.tgz",
- "integrity": "sha512-Vw26VSLRpJfBofiVaFb/I8PVfdI1OxKcYShe6fm0sP/DtmiWQNCjhM/okTvdCo0G+lMMm1rMYbk4IK4x1X+kgQ==",
- "license": "MIT",
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz",
+ "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==",
"dependencies": {
"good-listener": "^1.2.2",
"select": "^1.1.2",
@@ -26749,11 +26483,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/compare-versions": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz",
- "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA=="
- },
"node_modules/complex.js": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.1.1.tgz",
@@ -26775,9 +26504,12 @@
"license": "MIT"
},
"node_modules/component-type": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/component-type/-/component-type-1.2.1.tgz",
- "integrity": "sha512-Kgy+2+Uwr75vAi6ChWXgHuLvd+QLD7ssgpaRq2zCvt80ptvAfMc/hijcJxXkBa2wMlEZcJvC2H8Ubo+A9ATHIg=="
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/component-type/-/component-type-1.2.2.tgz",
+ "integrity": "sha512-99VUHREHiN5cLeHm3YLq312p6v+HUEcwtLCAtelvUDI6+SH5g5Cr85oNR2S1o6ywzL0ykMbuwLzM2ANocjEOIA==",
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
"node_modules/compressible": {
"version": "2.0.18",
@@ -27836,6 +27568,14 @@
"isobject": "^3.0.1"
}
},
+ "node_modules/css-line-break": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz",
+ "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
+ "dependencies": {
+ "utrie": "^1.0.2"
+ }
+ },
"node_modules/css-loader": {
"version": "6.8.1",
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz",
@@ -28164,6 +27904,14 @@
"dev": true,
"license": "BSD-2-Clause"
},
+ "node_modules/data-uri-to-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz",
+ "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/data-urls": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz",
@@ -28554,8 +28302,7 @@
"node_modules/delegate": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
- "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==",
- "license": "MIT"
+ "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
},
"node_modules/delegates": {
"version": "1.0.0",
@@ -29065,8 +28812,7 @@
"node_modules/eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
- "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
- "dev": true
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
},
"node_modules/ee-first": {
"version": "1.1.1",
@@ -29583,8 +29329,9 @@
}
},
"node_modules/envinfo": {
- "version": "7.8.1",
- "license": "MIT",
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz",
+ "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==",
"bin": {
"envinfo": "dist/cli.js"
},
@@ -31845,37 +31592,26 @@
},
"node_modules/expensify-common": {
"version": "1.0.0",
- "resolved": "git+ssh://git@github.com/Expensify/expensify-common.git#398bf7c6a6d37f229a41d92bd7a4324c0fd32849",
- "integrity": "sha512-H7UrLgWIr8mCoPc1oxbeYW2RwLzUWI6jdjbV6cRnrlp8cDW3IyZISF+BQSPFDj7bMhNAbczQPtEOE1gld21Cvg==",
+ "resolved": "git+ssh://git@github.com/Expensify/expensify-common.git#c6bb3cfa56d12af9fa02e2bfc729646f5b64ef44",
+ "integrity": "sha512-a/UBkrerB57nB9xbBrFIeJG3IN0lVZV+/JWNbGMfT0FHxtg8/4sGWdC+AHqR3Bm01gwt67dd2csFferlZmTIsg==",
"license": "MIT",
"dependencies": {
"classnames": "2.3.1",
- "clipboard": "2.0.4",
- "html-entities": "^2.3.3",
+ "clipboard": "2.0.11",
+ "html-entities": "^2.4.0",
"jquery": "3.6.0",
"localforage": "^1.10.0",
"lodash": "4.17.21",
- "prop-types": "15.7.2",
+ "prop-types": "15.8.1",
"react": "16.12.0",
"react-dom": "16.12.0",
- "semver": "^7.3.5",
+ "semver": "^7.5.2",
"simply-deferred": "git+https://github.com/Expensify/simply-deferred.git#77a08a95754660c7bd6e0b6979fdf84e8e831bf5",
- "string.prototype.replaceall": "^1.0.6",
+ "string.prototype.replaceall": "^1.0.8",
"ua-parser-js": "^1.0.35",
"underscore": "1.13.6"
}
},
- "node_modules/expensify-common/node_modules/prop-types": {
- "version": "15.7.2",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
- "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
- "license": "MIT",
- "dependencies": {
- "loose-envify": "^1.4.0",
- "object-assign": "^4.1.1",
- "react-is": "^16.8.1"
- }
- },
"node_modules/expensify-common/node_modules/react": {
"version": "16.12.0",
"resolved": "https://registry.npmjs.org/react/-/react-16.12.0.tgz",
@@ -31935,107 +31671,66 @@
}
},
"node_modules/expo": {
- "version": "49.0.21",
- "resolved": "https://registry.npmjs.org/expo/-/expo-49.0.21.tgz",
- "integrity": "sha512-JpHL6V0yt8/fzsmkAdPdtsah+lU6Si4ac7MDklLYvzEil7HAFEsN/pf06wQ21ax4C+BL27hI6JJoD34tzXUCJA==",
+ "version": "50.0.0-preview.7",
+ "resolved": "https://registry.npmjs.org/expo/-/expo-50.0.0-preview.7.tgz",
+ "integrity": "sha512-FyoEJVf42Tr1On0IFa0dL7Qs9gnl252ah3e0B8FsU96G7Hi93cDz5Rcn81ezRiO6YIF4nFV3+bh6BHsm/nsA0A==",
"dependencies": {
"@babel/runtime": "^7.20.0",
- "@expo/cli": "0.10.16",
- "@expo/config": "8.1.2",
- "@expo/config-plugins": "7.2.5",
+ "@expo/cli": "0.16.5",
+ "@expo/config": "8.5.2",
+ "@expo/config-plugins": "7.8.2",
+ "@expo/metro-config": "0.17.1",
"@expo/vector-icons": "^13.0.0",
- "babel-preset-expo": "~9.5.2",
- "expo-application": "~5.3.0",
- "expo-asset": "~8.10.1",
- "expo-constants": "~14.4.2",
- "expo-file-system": "~15.4.5",
- "expo-font": "~11.4.0",
- "expo-keep-awake": "~12.3.0",
- "expo-modules-autolinking": "1.5.1",
- "expo-modules-core": "1.5.12",
+ "babel-preset-expo": "~10.0.1",
+ "expo-asset": "~9.0.1",
+ "expo-file-system": "~16.0.2",
+ "expo-font": "~11.10.0",
+ "expo-keep-awake": "~12.8.0",
+ "expo-modules-autolinking": "1.9.0",
+ "expo-modules-core": "1.11.4",
"fbemitter": "^3.0.0",
- "invariant": "^2.2.4",
- "md5-file": "^3.2.3",
- "node-fetch": "^2.6.7",
- "pretty-format": "^26.5.2",
- "uuid": "^3.4.0"
+ "whatwg-url-without-unicode": "8.0.0-3"
},
"bin": {
"expo": "bin/cli"
}
},
- "node_modules/expo-application": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-5.3.1.tgz",
- "integrity": "sha512-HR2+K+Hm33vLw/TfbFaHrvUbRRNRco8R+3QaCKy7eJC2LFfT05kZ15ynGaKfB5DJ/oqPV3mxXVR/EfwmE++hoA==",
- "peerDependencies": {
- "expo": "*"
- }
- },
"node_modules/expo-asset": {
- "version": "8.10.1",
- "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-8.10.1.tgz",
- "integrity": "sha512-5VMTESxgY9GBsspO/esY25SKEa7RyascVkLe/OcL1WgblNFm7xCCEEUIW8VWS1nHJQGYxpMZPr3bEfjMpdWdyA==",
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-9.0.1.tgz",
+ "integrity": "sha512-hoCzQ8ga6ZOmkwABQeAIStXmshpK+1oNpGNNeJCJ1QdoU6hlCu6DKnikreLZYr6FQzaQTS3yel86zuRQtwNpaQ==",
"dependencies": {
+ "@react-native/assets-registry": "~0.73.1",
"blueimp-md5": "^2.10.0",
- "expo-constants": "~14.4.2",
- "expo-file-system": "~15.4.0",
+ "expo-constants": "~15.4.0",
+ "expo-file-system": "~16.0.0",
"invariant": "^2.2.4",
- "md5-file": "^3.2.3",
- "path-browserify": "^1.0.0",
- "url-parse": "^1.5.9"
+ "md5-file": "^3.2.3"
}
},
- "node_modules/expo-asset/node_modules/path-browserify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
- "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
- },
"node_modules/expo-constants": {
- "version": "14.4.2",
- "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-14.4.2.tgz",
- "integrity": "sha512-nOB122DOAjk+KrJT69lFQAoYVQGQjFHSigCPVBzVdko9S1xGsfiOH9+X5dygTsZTIlVLpQJDdmZ7ONiv3i+26w==",
+ "version": "15.4.2",
+ "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-15.4.2.tgz",
+ "integrity": "sha512-goJ44MsjRkJQbi/w49n7HIsBnp7Caa4mPMDUgTwk07BCUM5yKPb3Ny2/0QsaUcqBNgke2IXxr4OhqDYLd1jWOQ==",
"dependencies": {
- "@expo/config": "~8.1.0",
- "uuid": "^3.3.2"
+ "@expo/config": "~8.5.0"
},
"peerDependencies": {
"expo": "*"
}
},
- "node_modules/expo-constants/node_modules/uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
- "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
- "bin": {
- "uuid": "bin/uuid"
- }
- },
"node_modules/expo-file-system": {
- "version": "15.4.5",
- "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-15.4.5.tgz",
- "integrity": "sha512-xy61KaTaDgXhT/dllwYDHm3ch026EyO8j4eC6wSVr/yE12MMMxAC09yGwy4f7kkOs6ztGVQF5j7ldRzNLN4l0Q==",
- "dependencies": {
- "uuid": "^3.4.0"
- },
+ "version": "16.0.2",
+ "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-16.0.2.tgz",
+ "integrity": "sha512-oqiM3aq4mGugdv6DRH0wjrULWdZFm4EMLgKmR24on/f9ZCDG9VB3waSy+9J3XaDTAXBaB9ta82ACnNzk8KPdMw==",
"peerDependencies": {
"expo": "*"
}
},
- "node_modules/expo-file-system/node_modules/uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
- "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
- "bin": {
- "uuid": "bin/uuid"
- }
- },
"node_modules/expo-font": {
- "version": "11.4.0",
- "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-11.4.0.tgz",
- "integrity": "sha512-nkmezCFD7gR/I6R+e3/ry18uEfF8uYrr6h+PdBJu+3dawoLOpo+wFb/RG9bHUekU1/cPanR58LR7G5MEMKHR2w==",
+ "version": "11.10.0",
+ "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-11.10.0.tgz",
+ "integrity": "sha512-yqlsoOKWiYv8aBMFqheHSUKKEY/lrB7zHjzDc60OF1xGa1q8kh7mKQVwSaRMS0G77GEUvvk8Vb/uKw51KY1kGA==",
"dependencies": {
"fontfaceobserver": "^2.1.0"
},
@@ -32044,27 +31739,30 @@
}
},
"node_modules/expo-image": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-1.8.1.tgz",
- "integrity": "sha512-YHoP3F6zRcI9ULjB84jPt62ggSrdGLtpSxZTUxwmfI+WfuucNd/zqqXx0edsCyREIA6VvoyWBT48BBgvi+H1TA==",
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-1.10.1.tgz",
+ "integrity": "sha512-NwJt2FS6sZXeP92RpsZxBKSnCPWMdcJ2Q2bXHc8WgOkLLInvRd0yBKAzEusXTZ6+N+RqAcWVojlh3EBbSQhkiA==",
+ "dependencies": {
+ "@react-native/assets-registry": "~0.73.1"
+ },
"peerDependencies": {
"expo": "*"
}
},
"node_modules/expo-keep-awake": {
- "version": "12.3.0",
- "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-12.3.0.tgz",
- "integrity": "sha512-ujiJg1p9EdCOYS05jh5PtUrfiZnK0yyLy+UewzqrjUqIT8eAGMQbkfOn3C3fHE7AKd5AefSMzJnS3lYZcZYHDw==",
+ "version": "12.8.0",
+ "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-12.8.0.tgz",
+ "integrity": "sha512-KMk9nnOEEI2w4aYr/PMnLT6ryXwmHfsb/baeHX/RSLNBZ4a5JVkNXP+mT66UNnYfXxy3pABruusd7KjeKW+F0A==",
"peerDependencies": {
"expo": "*"
}
},
"node_modules/expo-modules-autolinking": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.5.1.tgz",
- "integrity": "sha512-yt5a1VCp2BF9CrsO689PCD5oXKP14MMhnOanQMvDn4BDpURYfzAlDVGC5fZrNQKtwn/eq3bcrxIwZ7D9QjVVRg==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.9.0.tgz",
+ "integrity": "sha512-FVRuclmR7w6FZRXZmTwPdIr9PNCP7FUWMhpzaxbKU/xm7DbNw5ORAv2gaM8t9OaMxYjIAMSNYi0NnmLIinzBKA==",
"dependencies": {
- "@expo/config": "~8.1.0",
+ "@expo/config": "~8.5.0",
"chalk": "^4.1.0",
"commander": "^7.2.0",
"fast-glob": "^3.2.5",
@@ -32148,11 +31846,10 @@
}
},
"node_modules/expo-modules-core": {
- "version": "1.5.12",
- "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.5.12.tgz",
- "integrity": "sha512-mY4wTDU458dhwk7IVxLNkePlYXjs9BTgk4NQHBUXf0LapXsvr+i711qPZaFNO4egf5qq6fQV+Yfd/KUguHstnQ==",
+ "version": "1.11.4",
+ "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.11.4.tgz",
+ "integrity": "sha512-MeDvWvdI3cHJO2VsASXsNYVoou1sdEO/SGBdLh2lxRhNpCLB0IIEZ3uPZwQQ8WBfFyPk4QT7M3XhCdPCKaT21A==",
"dependencies": {
- "compare-versions": "^3.4.0",
"invariant": "^2.2.4"
}
},
@@ -32165,13 +31862,14 @@
}
},
"node_modules/expo/node_modules/@expo/config-plugins": {
- "version": "7.2.5",
- "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.2.5.tgz",
- "integrity": "sha512-w+5ccu1IxBHgyQk9CPFKLZOk8yZQEyTjbJwOzESK1eR7QwosbcsLkN1c1WWUZYiCXwORu3UTwJYll4+X2xxJhQ==",
- "dependencies": {
- "@expo/config-types": "^49.0.0-alpha.1",
- "@expo/json-file": "~8.2.37",
- "@expo/plist": "^0.0.20",
+ "version": "7.8.2",
+ "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.8.2.tgz",
+ "integrity": "sha512-XM2eXA5EvcpmXFCui48+bVy8GTskYSjPf2yC+LliYv8PDcedu7+pdgmbnvH4eZCyHfTMO8/UiF+w8e5WgOEj5A==",
+ "dependencies": {
+ "@expo/config-types": "^50.0.0-alpha.1",
+ "@expo/fingerprint": "^0.6.0",
+ "@expo/json-file": "~8.3.0",
+ "@expo/plist": "^0.1.0",
"@expo/sdk-runtime-versions": "^1.0.0",
"@react-native/normalize-color": "^2.0.0",
"chalk": "^4.1.2",
@@ -32182,19 +31880,20 @@
"resolve-from": "^5.0.0",
"semver": "^7.5.3",
"slash": "^3.0.0",
+ "slugify": "^1.6.6",
"xcode": "^3.0.1",
"xml2js": "0.6.0"
}
},
"node_modules/expo/node_modules/@expo/config-types": {
- "version": "49.0.0",
- "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-49.0.0.tgz",
- "integrity": "sha512-8eyREVi+K2acnMBe/rTIu1dOfyR2+AMnTLHlut+YpMV9OZPdeKV0Bs9BxAewGqBA2slslbQ9N39IS2CuTKpXkA=="
+ "version": "50.0.0",
+ "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-50.0.0.tgz",
+ "integrity": "sha512-0kkhIwXRT6EdFDwn+zTg9R2MZIAEYGn1MVkyRohAd+C9cXOb5RA8WLQi7vuxKF9m1SMtNAUrf0pO+ENK0+/KSw=="
},
"node_modules/expo/node_modules/@expo/json-file": {
- "version": "8.2.37",
- "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz",
- "integrity": "sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==",
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.0.tgz",
+ "integrity": "sha512-yROUeXJXR5goagB8c3muFLCzLmdGOvoPpR5yDNaXrnTp4euNykr9yW0wWhJx4YVRTNOPtGBnEbbJBW+a9q+S6g==",
"dependencies": {
"@babel/code-frame": "~7.10.4",
"json5": "^2.2.2",
@@ -32202,23 +31901,15 @@
}
},
"node_modules/expo/node_modules/@expo/plist": {
- "version": "0.0.20",
- "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.20.tgz",
- "integrity": "sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA==",
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.1.0.tgz",
+ "integrity": "sha512-xWD+8vIFif0wKyuqe3fmnmnSouXYucciZXFzS0ZD5OV9eSAS1RGQI5FaGGJ6zxJ4mpdy/4QzbLdBjnYE5vxA0g==",
"dependencies": {
"@xmldom/xmldom": "~0.7.7",
"base64-js": "^1.2.3",
"xmlbuilder": "^14.0.0"
}
},
- "node_modules/expo/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/expo/node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -32272,25 +31963,6 @@
"node": ">=8"
}
},
- "node_modules/expo/node_modules/pretty-format": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz",
- "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==",
- "dependencies": {
- "@jest/types": "^26.6.2",
- "ansi-regex": "^5.0.0",
- "ansi-styles": "^4.0.0",
- "react-is": "^17.0.1"
- },
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/expo/node_modules/react-is": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
- "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
- },
"node_modules/expo/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -32302,15 +31974,6 @@
"node": ">=8"
}
},
- "node_modules/expo/node_modules/uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
- "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
- "bin": {
- "uuid": "bin/uuid"
- }
- },
"node_modules/expo/node_modules/xml2js": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz",
@@ -32643,17 +32306,17 @@
"license": "MIT"
},
"node_modules/fast-xml-parser": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.1.tgz",
- "integrity": "sha512-viVv3xb8D+SiS1W4cv4tva3bni08kAkx0gQnWrykMM8nXPc1FxqZPU00dCEVjkiCg4HoXd2jC4x29Nzg/l2DAA==",
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.2.tgz",
+ "integrity": "sha512-rmrXUXwbJedoXkStenj1kkljNF7ugn5ZjR9FJcwmCfcCbtOMDghPajbc+Tck6vE6F5XsDmx+Pr2le9fw8+pXBg==",
"funding": [
- {
- "type": "paypal",
- "url": "https://paypal.me/naturalintelligence"
- },
{
"type": "github",
"url": "https://github.com/sponsors/NaturalIntelligence"
+ },
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/naturalintelligence"
}
],
"dependencies": {
@@ -32947,6 +32610,7 @@
},
"node_modules/find-babel-config": {
"version": "2.0.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"json5": "^2.1.1",
@@ -32958,6 +32622,7 @@
},
"node_modules/find-babel-config/node_modules/path-exists": {
"version": "4.0.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -33096,9 +32761,9 @@
"dev": true
},
"node_modules/flow-enums-runtime": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.5.tgz",
- "integrity": "sha512-PSZF9ZuaZD03sT9YaIs0FrGJ7lSUw7rHZIex+73UYVXg46eL/wxN5PaVcPJFudE2cJu5f0fezitV5aBkLHPUOQ=="
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz",
+ "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw=="
},
"node_modules/flow-parser": {
"version": "0.206.0",
@@ -33861,7 +33526,6 @@
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
"integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==",
- "license": "MIT",
"dependencies": {
"delegate": "^3.1.2"
}
@@ -34504,16 +34168,16 @@
}
},
"node_modules/hermes-estree": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.12.0.tgz",
- "integrity": "sha512-+e8xR6SCen0wyAKrMT3UD0ZCCLymKhRgjEB5sS28rKiFir/fXgLoeRilRUssFCILmGHb+OvHDUlhxs0+IEyvQw=="
+ "version": "0.15.0",
+ "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.15.0.tgz",
+ "integrity": "sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ=="
},
"node_modules/hermes-parser": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.12.0.tgz",
- "integrity": "sha512-d4PHnwq6SnDLhYl3LHNHvOg7nQ6rcI7QVil418REYksv0Mh3cEkHDcuhGxNQ3vgnLSLl4QSvDrFCwQNYdpWlzw==",
+ "version": "0.15.0",
+ "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.15.0.tgz",
+ "integrity": "sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q==",
"dependencies": {
- "hermes-estree": "0.12.0"
+ "hermes-estree": "0.15.0"
}
},
"node_modules/hermes-profile-transformer": {
@@ -34606,9 +34270,19 @@
}
},
"node_modules/html-entities": {
- "version": "2.3.5",
- "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.5.tgz",
- "integrity": "sha512-72TJlcMkYsEJASa/3HnX7VT59htM7iSHbH59NSZbtc+22Ap0Txnlx91sfeB+/A7wNZg7UxtZdhAW4y+/jimrdg=="
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz",
+ "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/mdevils"
+ },
+ {
+ "type": "patreon",
+ "url": "https://patreon.com/mdevils"
+ }
+ ]
},
"node_modules/html-escaper": {
"version": "2.0.2",
@@ -34699,6 +34373,18 @@
"node": ">=6"
}
},
+ "node_modules/html2canvas": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz",
+ "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
+ "dependencies": {
+ "css-line-break": "^2.1.0",
+ "text-segmentation": "^1.0.3"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
"node_modules/htmlparser2": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz",
@@ -35254,9 +34940,9 @@
}
},
"node_modules/image-size": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz",
- "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz",
+ "integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==",
"dependencies": {
"queue": "6.0.2"
},
@@ -35264,7 +34950,7 @@
"image-size": "bin/image-size.js"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=16.x"
}
},
"node_modules/immediate": {
@@ -35797,7 +35483,6 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
"integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
@@ -36124,7 +35809,6 @@
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
"integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
- "dev": true,
"dependencies": {
"has-tostringtag": "^1.0.0"
},
@@ -36723,10 +36407,9 @@
}
},
"node_modules/jackspeak": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz",
- "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==",
- "dev": true,
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
+ "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
"dependencies": {
"@isaacs/cliui": "^8.0.2"
},
@@ -37631,25 +37314,27 @@
}
},
"node_modules/jest-environment-node": {
- "version": "29.4.1",
- "license": "MIT",
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz",
+ "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==",
"dependencies": {
- "@jest/environment": "^29.4.1",
- "@jest/fake-timers": "^29.4.1",
- "@jest/types": "^29.4.1",
+ "@jest/environment": "^29.7.0",
+ "@jest/fake-timers": "^29.7.0",
+ "@jest/types": "^29.6.3",
"@types/node": "*",
- "jest-mock": "^29.4.1",
- "jest-util": "^29.4.1"
+ "jest-mock": "^29.7.0",
+ "jest-util": "^29.7.0"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-environment-node/node_modules/@jest/types": {
- "version": "29.4.1",
- "license": "MIT",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
+ "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
"dependencies": {
- "@jest/schemas": "^29.4.0",
+ "@jest/schemas": "^29.6.3",
"@types/istanbul-lib-coverage": "^2.0.0",
"@types/istanbul-reports": "^3.0.0",
"@types/node": "*",
@@ -37661,9 +37346,9 @@
}
},
"node_modules/jest-environment-node/node_modules/@types/yargs": {
- "version": "17.0.24",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz",
- "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==",
+ "version": "17.0.31",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.31.tgz",
+ "integrity": "sha512-bocYSx4DI8TmdlvxqGpVNXOgCNR1Jj0gNPhhAY+iz1rgKDAaYrAYdFYnhDV1IFuiuVc9HkOwyDcFxaTElF3/wg==",
"dependencies": {
"@types/yargs-parser": "*"
}
@@ -37672,7 +37357,6 @@
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -37687,7 +37371,6 @@
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -37703,7 +37386,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
},
@@ -37714,14 +37396,12 @@
"node_modules/jest-environment-node/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==",
- "license": "MIT"
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"node_modules/jest-environment-node/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==",
- "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -37730,7 +37410,6 @@
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -37739,11 +37418,12 @@
}
},
"node_modules/jest-expo": {
- "version": "49.0.0",
- "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-49.0.0.tgz",
- "integrity": "sha512-nglYg6QPYSqCsrsOFiGosQi+m1rrqmYluPbFXNnXNEOrB2MvxMOgQJeWfMHDExHMX1ymLWX+7y8mYo6XVJpBJQ==",
+ "version": "50.0.1",
+ "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-50.0.1.tgz",
+ "integrity": "sha512-osvA63UDLJ/v7MG9UHjU7WJ0oZ0Krq9UhXxm2s6rdOlnt85ARocyMU57RC0T0yzPN47C9Ref45sEeOIxoV4Mzg==",
"dependencies": {
- "@expo/config": "~8.1.0",
+ "@expo/config": "~8.5.0",
+ "@expo/json-file": "^8.2.37",
"@jest/create-cache-key-function": "^29.2.1",
"babel-jest": "^29.2.1",
"find-up": "^5.0.0",
@@ -37752,12 +37432,31 @@
"jest-watch-typeahead": "2.2.1",
"json5": "^2.2.3",
"lodash": "^4.17.19",
- "react-test-renderer": "18.2.0"
+ "react-test-renderer": "18.2.0",
+ "stacktrace-js": "^2.0.2"
},
"bin": {
"jest": "bin/jest.js"
}
},
+ "node_modules/jest-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/jest-expo/node_modules/@expo/json-file": {
+ "version": "8.2.37",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz",
+ "integrity": "sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==",
+ "dependencies": {
+ "@babel/code-frame": "~7.10.4",
+ "json5": "^2.2.2",
+ "write-file-atomic": "^2.3.0"
+ }
+ },
"node_modules/jest-get-type": {
"version": "29.6.3",
"resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz",
@@ -38002,17 +37701,17 @@
}
},
"node_modules/jest-message-util": {
- "version": "29.6.2",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.2.tgz",
- "integrity": "sha512-vnIGYEjoPSuRqV8W9t+Wow95SDp6KPX2Uf7EoeG9G99J2OVh7OSwpS4B6J0NfpEIpfkBNHlBZpA2rblEuEFhZQ==",
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz",
+ "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==",
"dependencies": {
"@babel/code-frame": "^7.12.13",
- "@jest/types": "^29.6.1",
+ "@jest/types": "^29.6.3",
"@types/stack-utils": "^2.0.0",
"chalk": "^4.0.0",
"graceful-fs": "^4.2.9",
"micromatch": "^4.0.4",
- "pretty-format": "^29.6.2",
+ "pretty-format": "^29.7.0",
"slash": "^3.0.0",
"stack-utils": "^2.0.3"
},
@@ -38109,13 +37808,13 @@
}
},
"node_modules/jest-mock": {
- "version": "29.6.2",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.2.tgz",
- "integrity": "sha512-hoSv3lb3byzdKfwqCuT6uTscan471GUECqgNYykg6ob0yiAw3zYc7OrPnI9Qv8Wwoa4lC7AZ9hyS4AiIx5U2zg==",
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz",
+ "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==",
"dependencies": {
- "@jest/types": "^29.6.1",
+ "@jest/types": "^29.6.3",
"@types/node": "*",
- "jest-util": "^29.6.2"
+ "jest-util": "^29.7.0"
},
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
@@ -38751,9 +38450,9 @@
}
},
"node_modules/jest-util": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.3.tgz",
- "integrity": "sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==",
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz",
+ "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==",
"dependencies": {
"@jest/types": "^29.6.3",
"@types/node": "*",
@@ -39453,9 +39152,9 @@
}
},
"node_modules/joi": {
- "version": "17.10.2",
- "resolved": "https://registry.npmjs.org/joi/-/joi-17.10.2.tgz",
- "integrity": "sha512-hcVhjBxRNW/is3nNLdGLIjkgXetkeGc2wyhydhz8KumG23Aerk4HPjU5zaPAMRqXQFc0xNqXTC7+zQjxr0GlKA==",
+ "version": "17.11.0",
+ "resolved": "https://registry.npmjs.org/joi/-/joi-17.11.0.tgz",
+ "integrity": "sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==",
"dependencies": {
"@hapi/hoek": "^9.0.0",
"@hapi/topo": "^5.0.0",
@@ -39606,17 +39305,6 @@
"node": ">=8"
}
},
- "node_modules/jscodeshift/node_modules/rimraf": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
- "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
"node_modules/jscodeshift/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -39628,17 +39316,6 @@
"node": ">=8"
}
},
- "node_modules/jscodeshift/node_modules/temp": {
- "version": "0.8.4",
- "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz",
- "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==",
- "dependencies": {
- "rimraf": "~2.6.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
"node_modules/jsdoc-type-pratt-parser": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz",
@@ -40109,6 +39786,28 @@
"immediate": "~3.0.5"
}
},
+ "node_modules/lighthouse-logger": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz",
+ "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==",
+ "dependencies": {
+ "debug": "^2.6.9",
+ "marky": "^1.2.2"
+ }
+ },
+ "node_modules/lighthouse-logger/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/lighthouse-logger/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
"node_modules/lightningcss": {
"version": "1.19.0",
"resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.19.0.tgz",
@@ -40738,9 +40437,9 @@
}
},
"node_modules/lottie-react-native": {
- "version": "6.4.0",
- "resolved": "https://registry.npmjs.org/lottie-react-native/-/lottie-react-native-6.4.0.tgz",
- "integrity": "sha512-wFO/gLPN1KliyznBa8OtYWkc9Vn9OEmIg1/b1536KANFtGaFAeoAGhijVxYKF3UPKJgjJYFmqg0W//FVrSXj+g==",
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/lottie-react-native/-/lottie-react-native-6.4.1.tgz",
+ "integrity": "sha512-DPsUPSxLc3ZffeRQ/AtKtcUl4PzmJEEPt965tNpWSE4vhDkoGFxRe0TPZ45xX8/3HbGsUl48aMdLlAu28MEDsQ==",
"peerDependencies": {
"@dotlottie/react-player": "^1.6.1",
"@lottiefiles/react-lottie-player": "^3.5.3",
@@ -41002,6 +40701,11 @@
"react": ">= 0.14.0"
}
},
+ "node_modules/marky": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz",
+ "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q=="
+ },
"node_modules/matcher": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz",
@@ -41996,10 +41700,9 @@
}
},
"node_modules/metro": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro/-/metro-0.76.8.tgz",
- "integrity": "sha512-oQA3gLzrrYv3qKtuWArMgHPbHu8odZOD9AoavrqSFllkPgOtmkBvNNDLCELqv5SjBfqjISNffypg+5UGG3y0pg==",
- "dev": true,
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro/-/metro-0.80.3.tgz",
+ "integrity": "sha512-7u6HjWVQR7wA/HbxzB0n6iQ0GI9s/fr49N++dZQ41BcrcFxrguIGaRe4W8VI5DtYifCVCjXDIFw6e9+MAccx/Q==",
"dependencies": {
"@babel/code-frame": "^7.0.0",
"@babel/core": "^7.20.0",
@@ -42009,7 +41712,6 @@
"@babel/traverse": "^7.20.0",
"@babel/types": "^7.20.0",
"accepts": "^1.3.7",
- "async": "^3.2.2",
"chalk": "^4.0.0",
"ci-info": "^2.0.0",
"connect": "^3.6.5",
@@ -42017,28 +41719,25 @@
"denodeify": "^1.2.1",
"error-stack-parser": "^2.0.6",
"graceful-fs": "^4.2.4",
- "hermes-parser": "0.12.0",
+ "hermes-parser": "0.18.2",
"image-size": "^1.0.2",
"invariant": "^2.2.4",
- "jest-worker": "^27.2.0",
+ "jest-worker": "^29.6.3",
"jsc-safe-url": "^0.2.2",
"lodash.throttle": "^4.1.1",
- "metro-babel-transformer": "0.76.8",
- "metro-cache": "0.76.8",
- "metro-cache-key": "0.76.8",
- "metro-config": "0.76.8",
- "metro-core": "0.76.8",
- "metro-file-map": "0.76.8",
- "metro-inspector-proxy": "0.76.8",
- "metro-minify-terser": "0.76.8",
- "metro-minify-uglify": "0.76.8",
- "metro-react-native-babel-preset": "0.76.8",
- "metro-resolver": "0.76.8",
- "metro-runtime": "0.76.8",
- "metro-source-map": "0.76.8",
- "metro-symbolicate": "0.76.8",
- "metro-transform-plugins": "0.76.8",
- "metro-transform-worker": "0.76.8",
+ "metro-babel-transformer": "0.80.3",
+ "metro-cache": "0.80.3",
+ "metro-cache-key": "0.80.3",
+ "metro-config": "0.80.3",
+ "metro-core": "0.80.3",
+ "metro-file-map": "0.80.3",
+ "metro-minify-terser": "0.80.3",
+ "metro-resolver": "0.80.3",
+ "metro-runtime": "0.80.3",
+ "metro-source-map": "0.80.3",
+ "metro-symbolicate": "0.80.3",
+ "metro-transform-plugins": "0.80.3",
+ "metro-transform-worker": "0.80.3",
"mime-types": "^2.1.27",
"node-fetch": "^2.2.0",
"nullthrows": "^1.1.1",
@@ -42054,68 +41753,76 @@
"metro": "src/cli.js"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
"node_modules/metro-babel-transformer": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.76.8.tgz",
- "integrity": "sha512-Hh6PW34Ug/nShlBGxkwQJSgPGAzSJ9FwQXhUImkzdsDgVu6zj5bx258J8cJVSandjNoQ8nbaHK6CaHlnbZKbyA==",
- "dev": true,
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.80.3.tgz",
+ "integrity": "sha512-Si1GO9fhiLi3DfHseFDaZcU+Y6iYHx54rszILnBIx80aas3pRZpL3z/UsEZ7coTQZTFsblt2QDIE+Izxlq4mwQ==",
"dependencies": {
"@babel/core": "^7.20.0",
- "hermes-parser": "0.12.0",
+ "hermes-parser": "0.18.2",
"nullthrows": "^1.1.1"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
+ }
+ },
+ "node_modules/metro-babel-transformer/node_modules/hermes-estree": {
+ "version": "0.18.2",
+ "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.18.2.tgz",
+ "integrity": "sha512-KoLsoWXJ5o81nit1wSyEZnWUGy9cBna9iYMZBR7skKh7okYAYKqQ9/OczwpMHn/cH0hKDyblulGsJ7FknlfVxQ=="
+ },
+ "node_modules/metro-babel-transformer/node_modules/hermes-parser": {
+ "version": "0.18.2",
+ "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.18.2.tgz",
+ "integrity": "sha512-1eQfvib+VPpgBZ2zYKQhpuOjw1tH+Emuib6QmjkJWJMhyjM8xnXMvA+76o9LhF0zOAJDZgPfQhg43cyXEyl5Ew==",
+ "dependencies": {
+ "hermes-estree": "0.18.2"
}
},
"node_modules/metro-cache": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.76.8.tgz",
- "integrity": "sha512-QBJSJIVNH7Hc/Yo6br/U/qQDUpiUdRgZ2ZBJmvAbmAKp2XDzsapnMwK/3BGj8JNWJF7OLrqrYHsRsukSbUBpvQ==",
- "dev": true,
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.80.3.tgz",
+ "integrity": "sha512-7gHcOIXdAHCBzsovF4b+VgcfIZtCpCIFiT2zx9amU58xrmkx+PRIl1KZDIUfRBbGrO9HJtZxH7lr7/hoiLIUWA==",
"dependencies": {
- "metro-core": "0.76.8",
+ "metro-core": "0.80.3",
"rimraf": "^3.0.2"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
"node_modules/metro-cache-key": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.76.8.tgz",
- "integrity": "sha512-buKQ5xentPig9G6T37Ww/R/bC+/V1MA5xU/D8zjnhlelsrPG6w6LtHUS61ID3zZcMZqYaELWk5UIadIdDsaaLw==",
- "dev": true,
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.80.3.tgz",
+ "integrity": "sha512-WNrtDpbhtW2Yqjp1t0WxJhKNR/Zbo1LZ4WvHsdv/PraAs2mr+SaM5bbiptBSKOOGJkV/FIQveW5riZi53JnCbw==",
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
"node_modules/metro-config": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.76.8.tgz",
- "integrity": "sha512-SL1lfKB0qGHALcAk2zBqVgQZpazDYvYFGwCK1ikz0S6Y/CM2i2/HwuZN31kpX6z3mqjv/6KvlzaKoTb1otuSAA==",
- "dev": true,
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.80.3.tgz",
+ "integrity": "sha512-cE7KPT1Usdrd2nLEVpzukKWmeBU1PufHPkuD9BjjtoABbzdj35gMLDnK+mhjSq9km2vF2QEPtE0M+WKvq9pXfQ==",
"dependencies": {
"connect": "^3.6.5",
"cosmiconfig": "^5.0.5",
- "jest-validate": "^29.2.1",
- "metro": "0.76.8",
- "metro-cache": "0.76.8",
- "metro-core": "0.76.8",
- "metro-runtime": "0.76.8"
+ "jest-validate": "^29.6.3",
+ "metro": "0.80.3",
+ "metro-cache": "0.80.3",
+ "metro-core": "0.80.3",
+ "metro-runtime": "0.80.3"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
"node_modules/metro-config/node_modules/cosmiconfig": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
"integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
- "dev": true,
"dependencies": {
"import-fresh": "^2.0.0",
"is-directory": "^0.3.1",
@@ -42130,7 +41837,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
"integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==",
- "dev": true,
"dependencies": {
"caller-path": "^2.0.0",
"resolve-from": "^3.0.0"
@@ -42143,7 +41849,6 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
"integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
- "dev": true,
"dependencies": {
"error-ex": "^1.3.1",
"json-parse-better-errors": "^1.0.1"
@@ -42156,129 +41861,49 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
"integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
- "dev": true,
"engines": {
"node": ">=4"
}
},
"node_modules/metro-core": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.76.8.tgz",
- "integrity": "sha512-sl2QLFI3d1b1XUUGxwzw/KbaXXU/bvFYrSKz6Sg19AdYGWFyzsgZ1VISRIDf+HWm4R/TJXluhWMEkEtZuqi3qA==",
- "dev": true,
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.80.3.tgz",
+ "integrity": "sha512-X2ZfAvR55TdD/Rv9i4gYVI68JpRPHcpKpkr6IVtidFPoNjf4Fodh1qH7gEAJUnO5FL3a1JyPffbW6eFaXPxkFw==",
"dependencies": {
"lodash.throttle": "^4.1.1",
- "metro-resolver": "0.76.8"
+ "metro-resolver": "0.80.3"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
"node_modules/metro-file-map": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.76.8.tgz",
- "integrity": "sha512-A/xP1YNEVwO1SUV9/YYo6/Y1MmzhL4ZnVgcJC3VmHp/BYVOXVStzgVbWv2wILe56IIMkfXU+jpXrGKKYhFyHVw==",
- "dev": true,
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.80.3.tgz",
+ "integrity": "sha512-4qu1ABPZRvboGGB8Q2RlQ26kZRWRCMDiktgCCrX/57V6cnWgdbdTrpnsgmU3i0Q7iiw+FevOGlfD4HqdauQ59g==",
"dependencies": {
"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-util": "^27.2.0",
- "jest-worker": "^27.2.0",
+ "jest-worker": "^29.6.3",
"micromatch": "^4.0.4",
"node-abort-controller": "^3.1.1",
"nullthrows": "^1.1.1",
"walker": "^1.0.7"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
},
"optionalDependencies": {
"fsevents": "^2.3.2"
}
},
- "node_modules/metro-file-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==",
- "dev": true,
- "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/metro-file-map/node_modules/@types/yargs": {
- "version": "16.0.6",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.6.tgz",
- "integrity": "sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A==",
- "dev": true,
- "dependencies": {
- "@types/yargs-parser": "*"
- }
- },
- "node_modules/metro-file-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==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/metro-file-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==",
- "dev": true,
- "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/metro-file-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==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/metro-file-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==",
- "dev": true
- },
"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==",
- "dev": true,
"dependencies": {
"ms": "2.0.0"
}
@@ -42287,217 +41912,60 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
"engines": {
"node": ">=8"
}
},
- "node_modules/metro-file-map/node_modules/jest-regex-util": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz",
- "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==",
- "dev": true,
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
- }
- },
- "node_modules/metro-file-map/node_modules/jest-util": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
- "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
- "dev": true,
- "dependencies": {
- "@jest/types": "^27.5.1",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "graceful-fs": "^4.2.9",
- "picomatch": "^2.2.3"
- },
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
- }
- },
"node_modules/metro-file-map/node_modules/jest-worker": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
- "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
- "dev": true,
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
+ "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
"dependencies": {
"@types/node": "*",
+ "jest-util": "^29.7.0",
"merge-stream": "^2.0.0",
"supports-color": "^8.0.0"
},
"engines": {
- "node": ">= 10.13.0"
- }
- },
- "node_modules/metro-file-map/node_modules/jest-worker/node_modules/supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
+ "node": "^14.15.0 || ^16.10.0 || >=18.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==",
- "dev": true
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"node_modules/metro-file-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==",
- "dev": true,
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dependencies": {
"has-flag": "^4.0.0"
},
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro-inspector-proxy": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.76.8.tgz",
- "integrity": "sha512-Us5o5UEd4Smgn1+TfHX4LvVPoWVo9VsVMn4Ldbk0g5CQx3Gu0ygc/ei2AKPGTwsOZmKxJeACj7yMH2kgxQP/iw==",
- "dev": true,
- "dependencies": {
- "connect": "^3.6.5",
- "debug": "^2.2.0",
- "node-fetch": "^2.2.0",
- "ws": "^7.5.1",
- "yargs": "^17.6.2"
- },
- "bin": {
- "metro-inspector-proxy": "src/cli.js"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/metro-inspector-proxy/node_modules/cliui": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
- "dev": true,
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/metro-inspector-proxy/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/metro-inspector-proxy/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
- "node_modules/metro-inspector-proxy/node_modules/ws": {
- "version": "7.5.9",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
- "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
- "dev": true,
- "engines": {
- "node": ">=8.3.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
- }
- },
- "node_modules/metro-inspector-proxy/node_modules/y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "dev": true,
"engines": {
"node": ">=10"
- }
- },
- "node_modules/metro-inspector-proxy/node_modules/yargs": {
- "version": "17.7.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
- "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
- "dev": true,
- "dependencies": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
},
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/metro-inspector-proxy/node_modules/yargs-parser": {
- "version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
- "dev": true,
- "engines": {
- "node": ">=12"
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
"node_modules/metro-minify-terser": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.76.8.tgz",
- "integrity": "sha512-Orbvg18qXHCrSj1KbaeSDVYRy/gkro2PC7Fy2tDSH1c9RB4aH8tuMOIXnKJE+1SXxBtjWmQ5Yirwkth2DyyEZA==",
- "dev": true,
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.80.3.tgz",
+ "integrity": "sha512-gVFwoL86emFoYbI2DZKk1Ved2CklYv//huWriF0UpLJHmVEO9ii2ajTx3aIxgSeuxFLPJhdp8RgUB2EDCooaJw==",
"dependencies": {
"terser": "^5.15.0"
},
"engines": {
- "node": ">=16"
- }
- },
- "node_modules/metro-minify-uglify": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.76.8.tgz",
- "integrity": "sha512-6l8/bEvtVaTSuhG1FqS0+Mc8lZ3Bl4RI8SeRIifVLC21eeSDp4CEBUWSGjpFyUDfi6R5dXzYaFnSgMNyfxADiQ==",
- "dev": true,
- "dependencies": {
- "uglify-es": "^3.1.9"
- },
- "engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
"node_modules/metro-react-native-babel-preset": {
"version": "0.76.8",
"resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.76.8.tgz",
"integrity": "sha512-Ptza08GgqzxEdK8apYsjTx2S8WDUlS2ilBlu9DR1CUcHmg4g3kOkFylZroogVAUKtpYQNYwAvdsjmrSdDNtiAg==",
+ "dev": true,
+ "peer": true,
"dependencies": {
"@babel/core": "^7.20.0",
"@babel/plugin-proposal-async-generator-functions": "^7.0.0",
@@ -42548,75 +42016,48 @@
},
"node_modules/metro-react-native-babel-preset/node_modules/react-refresh": {
"version": "0.4.3",
+ "dev": true,
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/metro-react-native-babel-transformer": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.76.8.tgz",
- "integrity": "sha512-3h+LfS1WG1PAzhq8QF0kfXjxuXetbY/lgz8vYMQhgrMMp17WM1DNJD0gjx8tOGYbpbBC1qesJ45KMS4o5TA73A==",
- "dev": true,
- "dependencies": {
- "@babel/core": "^7.20.0",
- "babel-preset-fbjs": "^3.4.0",
- "hermes-parser": "0.12.0",
- "metro-react-native-babel-preset": "0.76.8",
- "nullthrows": "^1.1.1"
- },
- "engines": {
- "node": ">=16"
- },
- "peerDependencies": {
- "@babel/core": "*"
- }
- },
"node_modules/metro-resolver": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.76.8.tgz",
- "integrity": "sha512-KccOqc10vrzS7ZhG2NSnL2dh3uVydarB7nOhjreQ7C4zyWuiW9XpLC4h47KtGQv3Rnv/NDLJYeDqaJ4/+140HQ==",
- "dev": true,
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.80.3.tgz",
+ "integrity": "sha512-zwa0i32rj/TI3NivcvMXHJwTG2gUgo2dXdcnAJlhEKKQvyN+7AfhNdQSlDdDqMQmU7FaLRdeWORnQJbYCrprQQ==",
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
"node_modules/metro-runtime": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.76.8.tgz",
- "integrity": "sha512-XKahvB+iuYJSCr3QqCpROli4B4zASAYpkK+j3a0CJmokxCDNbgyI4Fp88uIL6rNaZfN0Mv35S0b99SdFXIfHjg==",
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.80.3.tgz",
+ "integrity": "sha512-16RKcwpxriNnPdE5eKWJu7/KLgxE+AaDAdYthoS6zbzjaOu7RiY2zPM1Elz175Rw//74kOwtKXgxTW8ADHB8SQ==",
"dependencies": {
- "@babel/runtime": "^7.0.0",
- "react-refresh": "^0.4.0"
+ "@babel/runtime": "^7.0.0"
},
"engines": {
- "node": ">=16"
- }
- },
- "node_modules/metro-runtime/node_modules/react-refresh": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz",
- "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==",
- "engines": {
- "node": ">=0.10.0"
+ "node": ">=18"
}
},
"node_modules/metro-source-map": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.76.8.tgz",
- "integrity": "sha512-Hh0ncPsHPVf6wXQSqJqB3K9Zbudht4aUtNpNXYXSxH+pteWqGAXnjtPsRAnCsCWl38wL0jYF0rJDdMajUI3BDw==",
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.80.3.tgz",
+ "integrity": "sha512-5DYcOLPjDLx84ZCZ1i0DuWSPU7AY5G/7tR+u/WN6CZNxLyYEe3TwUBdIUgQj4HgZJl/zZ/7bGYJQOHd7ubuO0w==",
"dependencies": {
"@babel/traverse": "^7.20.0",
"@babel/types": "^7.20.0",
"invariant": "^2.2.4",
- "metro-symbolicate": "0.76.8",
+ "metro-symbolicate": "0.80.3",
"nullthrows": "^1.1.1",
- "ob1": "0.76.8",
+ "ob1": "0.80.3",
"source-map": "^0.5.6",
"vlq": "^1.0.0"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
"node_modules/metro-source-map/node_modules/source-map": {
@@ -42628,12 +42069,12 @@
}
},
"node_modules/metro-symbolicate": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.76.8.tgz",
- "integrity": "sha512-LrRL3uy2VkzrIXVlxoPtqb40J6Bf1mlPNmUQewipc3qfKKFgtPHBackqDy1YL0njDsWopCKcfGtFYLn0PTUn3w==",
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.80.3.tgz",
+ "integrity": "sha512-baIt8Ss2vTGbxolRTa5yg+tKVAIAB1OpwMzJ0FSUjLs+HDAzaOtSpGbNd3DPc+pzX8Gj/rdbDOA0wPuOhVsHKQ==",
"dependencies": {
"invariant": "^2.2.4",
- "metro-source-map": "0.76.8",
+ "metro-source-map": "0.80.3",
"nullthrows": "^1.1.1",
"source-map": "^0.5.6",
"through2": "^2.0.1",
@@ -42643,7 +42084,7 @@
"metro-symbolicate": "src/index.js"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
"node_modules/metro-symbolicate/node_modules/source-map": {
@@ -42655,10 +42096,9 @@
}
},
"node_modules/metro-transform-plugins": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.76.8.tgz",
- "integrity": "sha512-PlkGTQNqS51Bx4vuufSQCdSn2R2rt7korzngo+b5GCkeX5pjinPjnO2kNhQ8l+5bO0iUD/WZ9nsM2PGGKIkWFA==",
- "dev": true,
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.80.3.tgz",
+ "integrity": "sha512-/2hGGRdJPrNfB9lz8unukaqQpGpDhYwNM0Odfh37OVFjygMB30Ffd8neQ4FNqnHnFxhl5j8VTcopUg6QhygMGQ==",
"dependencies": {
"@babel/core": "^7.20.0",
"@babel/generator": "^7.20.0",
@@ -42667,37 +42107,34 @@
"nullthrows": "^1.1.1"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
"node_modules/metro-transform-worker": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.76.8.tgz",
- "integrity": "sha512-mE1fxVAnJKmwwJyDtThildxxos9+DGs9+vTrx2ktSFMEVTtXS/bIv2W6hux1pqivqAfyJpTeACXHk5u2DgGvIQ==",
- "dev": true,
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.80.3.tgz",
+ "integrity": "sha512-10ZwMDuSWyHwqNnZ50baNtHNuHhOnqThbTOgv03PsrmPHWmSv4/rrmm7711tEyLUxptY3A1hEgJ+LKYyOIQiUA==",
"dependencies": {
"@babel/core": "^7.20.0",
"@babel/generator": "^7.20.0",
"@babel/parser": "^7.20.0",
"@babel/types": "^7.20.0",
- "babel-preset-fbjs": "^3.4.0",
- "metro": "0.76.8",
- "metro-babel-transformer": "0.76.8",
- "metro-cache": "0.76.8",
- "metro-cache-key": "0.76.8",
- "metro-source-map": "0.76.8",
- "metro-transform-plugins": "0.76.8",
+ "metro": "0.80.3",
+ "metro-babel-transformer": "0.80.3",
+ "metro-cache": "0.80.3",
+ "metro-cache-key": "0.80.3",
+ "metro-source-map": "0.80.3",
+ "metro-transform-plugins": "0.80.3",
"nullthrows": "^1.1.1"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
"node_modules/metro/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==",
- "dev": true,
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -42712,7 +42149,6 @@
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -42727,14 +42163,12 @@
"node_modules/metro/node_modules/ci-info": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
- "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
- "dev": true
+ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="
},
"node_modules/metro/node_modules/cliui": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
"integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
- "dev": true,
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.1",
@@ -42748,7 +42182,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
"dependencies": {
"color-name": "~1.1.4"
},
@@ -42759,14 +42192,12 @@
"node_modules/metro/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==",
- "dev": true
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"node_modules/metro/node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
"dependencies": {
"ms": "2.0.0"
}
@@ -42775,30 +42206,41 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
"engines": {
"node": ">=8"
}
},
+ "node_modules/metro/node_modules/hermes-estree": {
+ "version": "0.18.2",
+ "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.18.2.tgz",
+ "integrity": "sha512-KoLsoWXJ5o81nit1wSyEZnWUGy9cBna9iYMZBR7skKh7okYAYKqQ9/OczwpMHn/cH0hKDyblulGsJ7FknlfVxQ=="
+ },
+ "node_modules/metro/node_modules/hermes-parser": {
+ "version": "0.18.2",
+ "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.18.2.tgz",
+ "integrity": "sha512-1eQfvib+VPpgBZ2zYKQhpuOjw1tH+Emuib6QmjkJWJMhyjM8xnXMvA+76o9LhF0zOAJDZgPfQhg43cyXEyl5Ew==",
+ "dependencies": {
+ "hermes-estree": "0.18.2"
+ }
+ },
"node_modules/metro/node_modules/jest-worker": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
- "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
- "dev": true,
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
+ "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
"dependencies": {
"@types/node": "*",
+ "jest-util": "^29.7.0",
"merge-stream": "^2.0.0",
"supports-color": "^8.0.0"
},
"engines": {
- "node": ">= 10.13.0"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/metro/node_modules/jest-worker/node_modules/supports-color": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dev": true,
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -42812,14 +42254,12 @@
"node_modules/metro/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"node_modules/metro/node_modules/serialize-error": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz",
"integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==",
- "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -42828,7 +42268,6 @@
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
"integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
- "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -42837,7 +42276,6 @@
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -42849,7 +42287,6 @@
"version": "7.5.9",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
"integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
- "dev": true,
"engines": {
"node": ">=8.3.0"
},
@@ -42870,7 +42307,6 @@
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "dev": true,
"engines": {
"node": ">=10"
}
@@ -42879,7 +42315,6 @@
"version": "17.7.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
"integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
- "dev": true,
"dependencies": {
"cliui": "^8.0.1",
"escalade": "^3.1.1",
@@ -42897,7 +42332,6 @@
"version": "21.1.1",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
- "dev": true,
"engines": {
"node": ">=12"
}
@@ -44083,7 +43517,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz",
"integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=10"
@@ -44192,9 +43625,9 @@
"optional": true
},
"node_modules/nanoid": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
- "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
"funding": [
{
"type": "github",
@@ -44612,11 +44045,11 @@
"license": "MIT"
},
"node_modules/ob1": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.76.8.tgz",
- "integrity": "sha512-dlBkJJV5M/msj9KYA9upc+nUWVwuOFFTbu28X6kZeGwcuW+JxaHSBZ70SYQnk5M+j5JbNLR6yKHmgW4M5E7X5g==",
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.80.3.tgz",
+ "integrity": "sha512-lKJ/Wp6eSyYKYKYds1lgiDRtD2j9nNhrhx4hwegxYXTBkWz4dqermZV+Bq0iw0SszUIb+fC+btNSXwc4AG1lBQ==",
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
"node_modules/object-assign": {
@@ -45752,7 +45185,6 @@
"version": "1.10.1",
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
"integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==",
- "dev": true,
"dependencies": {
"lru-cache": "^9.1.1 || ^10.0.0",
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
@@ -45768,7 +45200,6 @@
"version": "10.0.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz",
"integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==",
- "dev": true,
"engines": {
"node": "14 || >=16.14"
}
@@ -45777,7 +45208,6 @@
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz",
"integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==",
- "dev": true,
"engines": {
"node": ">=16 || 14 >=14.17"
}
@@ -45955,6 +45385,7 @@
},
"node_modules/pkg-up": {
"version": "3.1.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"find-up": "^3.0.0"
@@ -45965,6 +45396,7 @@
},
"node_modules/pkg-up/node_modules/find-up": {
"version": "3.0.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"locate-path": "^3.0.0"
@@ -45975,6 +45407,7 @@
},
"node_modules/pkg-up/node_modules/locate-path": {
"version": "3.0.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"p-locate": "^3.0.0",
@@ -45986,6 +45419,7 @@
},
"node_modules/pkg-up/node_modules/p-limit": {
"version": "2.3.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"p-try": "^2.0.0"
@@ -45999,6 +45433,7 @@
},
"node_modules/pkg-up/node_modules/p-locate": {
"version": "3.0.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"p-limit": "^2.0.0"
@@ -46328,9 +45763,9 @@
}
},
"node_modules/pretty-format": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz",
- "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==",
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
+ "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
"dependencies": {
"@jest/schemas": "^29.6.3",
"ansi-styles": "^5.0.0",
@@ -47247,43 +46682,44 @@
}
},
"node_modules/react-native": {
- "version": "0.72.4",
- "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.72.4.tgz",
- "integrity": "sha512-+vrObi0wZR+NeqL09KihAAdVlQ9IdplwznJWtYrjnQ4UbCW6rkzZJebRsugwUneSOKNFaHFEo1uKU89HsgtYBg==",
- "dependencies": {
- "@jest/create-cache-key-function": "^29.2.1",
- "@react-native-community/cli": "11.3.6",
- "@react-native-community/cli-platform-android": "11.3.6",
- "@react-native-community/cli-platform-ios": "11.3.6",
- "@react-native/assets-registry": "^0.72.0",
- "@react-native/codegen": "^0.72.6",
- "@react-native/gradle-plugin": "^0.72.11",
- "@react-native/js-polyfills": "^0.72.1",
- "@react-native/normalize-colors": "^0.72.0",
- "@react-native/virtualized-lists": "^0.72.8",
+ "version": "0.73.2",
+ "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.73.2.tgz",
+ "integrity": "sha512-7zj9tcUYpJUBdOdXY6cM8RcXYWkyql4kMyGZflW99E5EuFPoC7Ti+ZQSl7LP9ZPzGD0vMfslwyDW0I4tPWUCFw==",
+ "dependencies": {
+ "@jest/create-cache-key-function": "^29.6.3",
+ "@react-native-community/cli": "12.3.0",
+ "@react-native-community/cli-platform-android": "12.3.0",
+ "@react-native-community/cli-platform-ios": "12.3.0",
+ "@react-native/assets-registry": "0.73.1",
+ "@react-native/codegen": "0.73.2",
+ "@react-native/community-cli-plugin": "0.73.12",
+ "@react-native/gradle-plugin": "0.73.4",
+ "@react-native/js-polyfills": "0.73.1",
+ "@react-native/normalize-colors": "0.73.2",
+ "@react-native/virtualized-lists": "0.73.4",
"abort-controller": "^3.0.0",
"anser": "^1.4.9",
- "base64-js": "^1.1.2",
- "deprecated-react-native-prop-types": "4.1.0",
+ "ansi-regex": "^5.0.0",
+ "base64-js": "^1.5.1",
+ "deprecated-react-native-prop-types": "^5.0.0",
"event-target-shim": "^5.0.1",
- "flow-enums-runtime": "^0.0.5",
+ "flow-enums-runtime": "^0.0.6",
"invariant": "^2.2.4",
- "jest-environment-node": "^29.2.1",
+ "jest-environment-node": "^29.6.3",
"jsc-android": "^250231.0.0",
"memoize-one": "^5.0.0",
- "metro-runtime": "0.76.8",
- "metro-source-map": "0.76.8",
+ "metro-runtime": "^0.80.3",
+ "metro-source-map": "^0.80.3",
"mkdirp": "^0.5.1",
"nullthrows": "^1.1.1",
"pretty-format": "^26.5.2",
"promise": "^8.3.0",
- "react-devtools-core": "^4.27.2",
- "react-refresh": "^0.4.0",
+ "react-devtools-core": "^4.27.7",
+ "react-refresh": "^0.14.0",
"react-shallow-renderer": "^16.15.0",
"regenerator-runtime": "^0.13.2",
"scheduler": "0.24.0-canary-efb381bbf-20230505",
"stacktrace-parser": "^0.1.10",
- "use-sync-external-store": "^1.0.0",
"whatwg-fetch": "^3.0.0",
"ws": "^6.2.2",
"yargs": "^17.6.2"
@@ -47292,7 +46728,7 @@
"react-native": "cli.js"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
},
"peerDependencies": {
"react": "18.2.0"
@@ -47436,6 +46872,7 @@
"integrity": "sha512-M784S/qPuN/HqjdvXg98HIDmfm0sF8mACc56YNg87nzEF90zKSKp0XyOE83SEW+UJX2Gq/rf9BvM2GZeXlrhnQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react-native": ">0.62.0"
@@ -47460,9 +46897,9 @@
}
},
"node_modules/react-native-gesture-handler": {
- "version": "2.12.0",
- "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.12.0.tgz",
- "integrity": "sha512-rr+XwVzXAVpY8co25ukvyI38fKCxTQjz7WajeZktl8qUPdh1twnSExgpT47DqDi4n+m+OiJPAnHfZOkqqAQMOg==",
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.14.0.tgz",
+ "integrity": "sha512-cOmdaqbpzjWrOLUpX3hdSjsMby5wq3PIEdMq7okJeg9DmCzanysHSrktw1cXWNc/B5MAgxAn9J7Km0/4UIqKAQ==",
"dependencies": {
"@egjs/hammerjs": "^2.0.17",
"hoist-non-react-statics": "^3.3.0",
@@ -47597,17 +47034,17 @@
}
},
"node_modules/react-native-onyx": {
- "version": "1.0.118",
- "resolved": "https://registry.npmjs.org/react-native-onyx/-/react-native-onyx-1.0.118.tgz",
- "integrity": "sha512-w54jO+Bpu1ElHsrxZXIIpcBqNkrUvuVCQmwWdfOW5LvO4UwsPSwmMxzExbUZ4ip+7CROmm10IgXFaAoyfeYSVQ==",
+ "version": "1.0.126",
+ "resolved": "https://registry.npmjs.org/react-native-onyx/-/react-native-onyx-1.0.126.tgz",
+ "integrity": "sha512-tUJI1mQaWXLfyBFYQQWM6mm9GiCqIXGvjbqJkH1fLY3OqbGW6DyH4CxC+qJrqfi4bKZgZHp5xlBHhkPV4pKK2A==",
"dependencies": {
"ascii-table": "0.0.9",
"fast-equals": "^4.0.3",
"underscore": "^1.13.6"
},
"engines": {
- "node": ">=16.15.1 <=20.9.0",
- "npm": ">=8.11.0 <=10.1.0"
+ "node": "20.9.0",
+ "npm": "10.1.0"
},
"peerDependencies": {
"idb-keyval": "^6.2.1",
@@ -47633,9 +47070,9 @@
}
},
"node_modules/react-native-pager-view": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/react-native-pager-view/-/react-native-pager-view-6.2.0.tgz",
- "integrity": "sha512-pf9OnL/Tkr+5s4Gjmsn7xh91PtJLDa6qxYa/bmtUhd/+s4cQdWQ8DIFoOFghwZIHHHwVdWtoXkp6HtpjN+r20g==",
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/react-native-pager-view/-/react-native-pager-view-6.2.2.tgz",
+ "integrity": "sha512-MLkJB7iP6v0Hd4/B4/R/gLCSE+YBtjxG/vHZYBDU+fI3U7HBYgKAg4o6ad8HxbKVcWWyRDNeeVRGISw1MUjlHw==",
"peerDependencies": {
"react": "*",
"react-native": "*"
@@ -47811,19 +47248,18 @@
"license": "MIT"
},
"node_modules/react-native-safe-area-context": {
- "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==",
- "license": "MIT",
+ "version": "4.7.4",
+ "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.7.4.tgz",
+ "integrity": "sha512-3LR3DCq9pdzlbq6vsHGWBFehXAKDh2Ljug6jWhLWs1QFuJHM6AS2+mH2JfKlB2LqiSFZOBcZfHQFz0sGaA3uqg==",
"peerDependencies": {
"react": "*",
"react-native": "*"
}
},
"node_modules/react-native-screens": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-3.21.0.tgz",
- "integrity": "sha512-SybzBhceTN2LUfzvEQxpZ9SchlFgEdsR/+YOKcpIhKg2BdRObdIyQsRoJBvduZ55lKbO9Gpyl3Ke8tngz3873g==",
+ "version": "3.29.0",
+ "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-3.29.0.tgz",
+ "integrity": "sha512-yB1GoAMamFAcYf4ku94uBPn0/ani9QG7NdI98beJ5cet2YFESYYzuEIuU+kt+CNRcO8qqKeugxlfgAa3HyTqlg==",
"dependencies": {
"react-freeze": "^1.0.0",
"warn-once": "^0.1.0"
@@ -47834,9 +47270,9 @@
}
},
"node_modules/react-native-svg": {
- "version": "13.14.0",
- "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-13.14.0.tgz",
- "integrity": "sha512-27ZnxUkHgWICimhuj6MuqBkISN53lVvgWJB7pIypjXysAyM+nqgQBPh4vXg+7MbqLBoYvR4PiBgKfwwGAqVxHg==",
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-14.0.0.tgz",
+ "integrity": "sha512-17W/gWXRUMS7p7PSHu/WyGkZUc1NzRTGxxXc0VqBLjzKSchyb0EmgsiWf9aKmfC6gmY0wcsmKZcGV41bCcNfBA==",
"dependencies": {
"css-select": "^5.1.0",
"css-tree": "^1.1.3"
@@ -47871,8 +47307,12 @@
}
},
"node_modules/react-native-view-shot": {
- "version": "3.6.0",
- "license": "MIT",
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/react-native-view-shot/-/react-native-view-shot-3.8.0.tgz",
+ "integrity": "sha512-4cU8SOhMn3YQIrskh+5Q8VvVRxQOu8/s1M9NAL4z5BY1Rm0HXMWkQJ4N0XsZ42+Yca+y86ISF3LC5qdLPvPuiA==",
+ "dependencies": {
+ "html2canvas": "^1.4.1"
+ },
"peerDependencies": {
"react": "*",
"react-native": "*"
@@ -47920,8 +47360,9 @@
"integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
},
"node_modules/react-native-webview": {
- "version": "11.23.0",
- "license": "MIT",
+ "version": "13.6.3",
+ "resolved": "https://registry.npmjs.org/react-native-webview/-/react-native-webview-13.6.3.tgz",
+ "integrity": "sha512-IApO0JSj0uAWsBGKWagyfgDYoX29piiMYLmkHtRjKeL1rIVjLoR/bMe7KJ/0X47y86b//a6u3cYQtphyay+F2A==",
"dependencies": {
"escape-string-regexp": "2.0.0",
"invariant": "2.2.4"
@@ -47992,13 +47433,16 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"node_modules/react-native/node_modules/deprecated-react-native-prop-types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-4.1.0.tgz",
- "integrity": "sha512-WfepZHmRbbdTvhcolb8aOKEvQdcmTMn5tKLbqbXmkBvjFjRVWAYqsXk/DBsV8TZxws8SdGHLuHaJrHSQUPRdfw==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-5.0.0.tgz",
+ "integrity": "sha512-cIK8KYiiGVOFsKdPMmm1L3tA/Gl+JopXL6F5+C7x39MyPsQYnP57Im/D6bNUzcborD7fcMwiwZqcBdBXXZucYQ==",
"dependencies": {
- "@react-native/normalize-colors": "*",
- "invariant": "*",
- "prop-types": "*"
+ "@react-native/normalize-colors": "^0.73.0",
+ "invariant": "^2.2.4",
+ "prop-types": "^15.8.1"
+ },
+ "engines": {
+ "node": ">=18"
}
},
"node_modules/react-native/node_modules/mkdirp": {
@@ -48040,9 +47484,9 @@
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
},
"node_modules/react-native/node_modules/react-refresh": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz",
- "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==",
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz",
+ "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==",
"engines": {
"node": ">=0.10.0"
}
@@ -49874,6 +49318,7 @@
},
"node_modules/reselect": {
"version": "4.1.7",
+ "dev": true,
"license": "MIT"
},
"node_modules/resolve": {
@@ -49942,8 +49387,9 @@
"license": "MIT"
},
"node_modules/resolve.exports": {
- "version": "2.0.0",
- "license": "MIT",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz",
+ "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==",
"engines": {
"node": ">=10"
}
@@ -50309,8 +49755,7 @@
"node_modules/select": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
- "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==",
- "license": "MIT"
+ "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA=="
},
"node_modules/select-hose": {
"version": "2.0.0",
@@ -50585,6 +50030,11 @@
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
"license": "ISC"
},
+ "node_modules/set-cookie-parser": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz",
+ "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ=="
+ },
"node_modules/set-value": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
@@ -51777,6 +51227,11 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/stream-slice": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/stream-slice/-/stream-slice-0.1.2.tgz",
+ "integrity": "sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA=="
+ },
"node_modules/strict-uri-encode": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz",
@@ -51826,7 +51281,6 @@
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@@ -51888,14 +51342,15 @@
}
},
"node_modules/string.prototype.replaceall": {
- "version": "1.0.6",
- "license": "MIT",
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.replaceall/-/string.prototype.replaceall-1.0.8.tgz",
+ "integrity": "sha512-MmCXb9980obcnmbEd3guqVl6lXTxpP28zASfgAlAhlBMw5XehQeSKsdIWlAYtLxp/1GtALwex+2HyoIQtaLQwQ==",
"dependencies": {
"call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.19.1",
- "get-intrinsic": "^1.1.1",
- "has-symbols": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "has-symbols": "^1.0.3",
"is-regex": "^1.1.4"
},
"funding": {
@@ -51976,7 +51431,6 @@
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -51988,7 +51442,6 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
"engines": {
"node": ">=8"
}
@@ -52100,13 +51553,13 @@
"integrity": "sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA=="
},
"node_modules/sucrase": {
- "version": "3.34.0",
- "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz",
- "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==",
+ "version": "3.35.0",
+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
+ "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.2",
"commander": "^4.0.0",
- "glob": "7.1.6",
+ "glob": "^10.3.10",
"lines-and-columns": "^1.1.6",
"mz": "^2.7.0",
"pirates": "^4.0.1",
@@ -52117,7 +51570,7 @@
"sucrase-node": "bin/sucrase-node"
},
"engines": {
- "node": ">=8"
+ "node": ">=16 || 14 >=14.17"
}
},
"node_modules/sucrase/node_modules/@jridgewell/gen-mapping": {
@@ -52133,6 +51586,14 @@
"node": ">=6.0.0"
}
},
+ "node_modules/sucrase/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
"node_modules/sucrase/node_modules/commander": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
@@ -52141,6 +51602,75 @@
"node": ">= 6"
}
},
+ "node_modules/sucrase/node_modules/foreground-child": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
+ "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/sucrase/node_modules/glob": {
+ "version": "10.3.10",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
+ "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.3.5",
+ "minimatch": "^9.0.1",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
+ "path-scurry": "^1.10.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/sucrase/node_modules/minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/sucrase/node_modules/minipass": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
+ "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/sucrase/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/sudo-prompt": {
"version": "9.2.1",
"resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz",
@@ -52528,6 +52058,17 @@
"node": ">=0.10.0"
}
},
+ "node_modules/temp": {
+ "version": "0.8.4",
+ "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz",
+ "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==",
+ "dependencies": {
+ "rimraf": "~2.6.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
"node_modules/temp-dir": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz",
@@ -52560,6 +52101,17 @@
"node": ">=12"
}
},
+ "node_modules/temp/node_modules/rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ }
+ },
"node_modules/tempy": {
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/tempy/-/tempy-0.7.1.tgz",
@@ -52831,6 +52383,14 @@
"node": ">=8"
}
},
+ "node_modules/text-segmentation": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz",
+ "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
+ "dependencies": {
+ "utrie": "^1.0.2"
+ }
+ },
"node_modules/text-table": {
"version": "0.2.0",
"license": "MIT"
@@ -53206,9 +52766,12 @@
}
},
"node_modules/traverse": {
- "version": "0.6.7",
- "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz",
- "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==",
+ "version": "0.6.8",
+ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz",
+ "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==",
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -53587,27 +53150,6 @@
"node": "*"
}
},
- "node_modules/uglify-es": {
- "version": "3.3.9",
- "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz",
- "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==",
- "deprecated": "support for ECMAScript is superseded by `uglify-js` as of v3.13.0",
- "dependencies": {
- "commander": "~2.13.0",
- "source-map": "~0.6.1"
- },
- "bin": {
- "uglifyjs": "bin/uglifyjs"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/uglify-es/node_modules/commander": {
- "version": "2.13.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz",
- "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA=="
- },
"node_modules/uglify-js": {
"version": "3.17.4",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz",
@@ -54245,14 +53787,6 @@
}
}
},
- "node_modules/use-sync-external-store": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
- "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==",
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
- }
- },
"node_modules/utf8": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz",
@@ -54311,6 +53845,14 @@
"node": ">= 0.4.0"
}
},
+ "node_modules/utrie": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz",
+ "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
+ "dependencies": {
+ "base64-arraybuffer": "^1.0.2"
+ }
+ },
"node_modules/uuid": {
"version": "8.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
@@ -54869,6 +54411,29 @@
"defaults": "^1.0.3"
}
},
+ "node_modules/web-encoding": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz",
+ "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==",
+ "dependencies": {
+ "util": "^0.12.3"
+ },
+ "optionalDependencies": {
+ "@zxing/text-encoding": "0.9.0"
+ }
+ },
+ "node_modules/web-encoding/node_modules/util": {
+ "version": "0.12.5",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
+ "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "is-arguments": "^1.0.4",
+ "is-generator-function": "^1.0.7",
+ "is-typed-array": "^1.1.3",
+ "which-typed-array": "^1.1.2"
+ }
+ },
"node_modules/web-namespaces": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz",
@@ -55834,7 +55399,6 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@@ -55851,7 +55415,6 @@
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -55866,7 +55429,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
"dependencies": {
"color-name": "~1.1.4"
},
@@ -55877,8 +55439,7 @@
"node_modules/wrap-ansi-cjs/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==",
- "dev": true
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"node_modules/wrap-ansi/node_modules/ansi-styles": {
"version": "4.3.0",
@@ -56537,14 +56098,14 @@
}
},
"@babel/helper-create-class-features-plugin": {
- "version": "7.22.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.9.tgz",
- "integrity": "sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==",
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz",
+ "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==",
"requires": {
"@babel/helper-annotate-as-pure": "^7.22.5",
"@babel/helper-environment-visitor": "^7.22.5",
"@babel/helper-function-name": "^7.22.5",
- "@babel/helper-member-expression-to-functions": "^7.22.5",
+ "@babel/helper-member-expression-to-functions": "^7.22.15",
"@babel/helper-optimise-call-expression": "^7.22.5",
"@babel/helper-replace-supers": "^7.22.9",
"@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
@@ -56617,19 +56178,19 @@
}
},
"@babel/helper-member-expression-to-functions": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz",
- "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==",
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz",
+ "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==",
"requires": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.23.0"
}
},
"@babel/helper-module-imports": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz",
- "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==",
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
+ "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
"requires": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.22.15"
}
},
"@babel/helper-module-transforms": {
@@ -56703,9 +56264,9 @@
}
},
"@babel/helper-string-parser": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
- "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw=="
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
+ "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ=="
},
"@babel/helper-validator-identifier": {
"version": "7.22.20",
@@ -56713,9 +56274,9 @@
"integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A=="
},
"@babel/helper-validator-option": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz",
- "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw=="
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
+ "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw=="
},
"@babel/helper-wrap-function": {
"version": "7.22.5",
@@ -56808,6 +56369,7 @@
},
"@babel/plugin-proposal-export-namespace-from": {
"version": "7.18.9",
+ "dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.18.9",
"@babel/plugin-syntax-export-namespace-from": "^7.8.3"
@@ -56994,9 +56556,9 @@
}
},
"@babel/plugin-syntax-jsx": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz",
- "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz",
+ "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==",
"requires": {
"@babel/helper-plugin-utils": "^7.22.5"
}
@@ -57215,9 +56777,9 @@
}
},
"@babel/plugin-transform-export-namespace-from": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz",
- "integrity": "sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz",
+ "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==",
"requires": {
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/plugin-syntax-export-namespace-from": "^7.8.3"
@@ -57405,9 +56967,9 @@
}
},
"@babel/plugin-transform-parameters": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz",
- "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz",
+ "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==",
"requires": {
"@babel/helper-plugin-utils": "^7.22.5"
}
@@ -57422,12 +56984,12 @@
}
},
"@babel/plugin-transform-private-property-in-object": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz",
- "integrity": "sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.3.tgz",
+ "integrity": "sha512-a5m2oLNFyje2e/rGKjVfAELTVI5mbA0FeZpBnkOWWV7eSmKQ+T/XW0Vf+29ScLzSxX+rnsarvU0oie/4m6hkxA==",
"requires": {
"@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-create-class-features-plugin": "^7.22.5",
+ "@babel/helper-create-class-features-plugin": "^7.22.15",
"@babel/helper-plugin-utils": "^7.22.5",
"@babel/plugin-syntax-private-property-in-object": "^7.14.5"
}
@@ -57450,26 +57012,31 @@
}
},
"@babel/plugin-transform-react-display-name": {
- "version": "7.18.6",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz",
+ "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==",
"requires": {
- "@babel/helper-plugin-utils": "^7.18.6"
+ "@babel/helper-plugin-utils": "^7.22.5"
}
},
"@babel/plugin-transform-react-jsx": {
- "version": "7.18.10",
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz",
+ "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==",
"requires": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-module-imports": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.9",
- "@babel/plugin-syntax-jsx": "^7.18.6",
- "@babel/types": "^7.18.10"
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-module-imports": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-jsx": "^7.23.3",
+ "@babel/types": "^7.23.4"
}
},
"@babel/plugin-transform-react-jsx-development": {
- "version": "7.18.6",
- "dev": true,
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz",
+ "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==",
"requires": {
- "@babel/plugin-transform-react-jsx": "^7.18.6"
+ "@babel/plugin-transform-react-jsx": "^7.22.5"
}
},
"@babel/plugin-transform-react-jsx-self": {
@@ -57485,11 +57052,12 @@
}
},
"@babel/plugin-transform-react-pure-annotations": {
- "version": "7.18.6",
- "dev": true,
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz",
+ "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==",
"requires": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
}
},
"@babel/plugin-transform-regenerator": {
@@ -57772,15 +57340,16 @@
}
},
"@babel/preset-react": {
- "version": "7.18.6",
- "dev": true,
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz",
+ "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==",
"requires": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/helper-validator-option": "^7.18.6",
- "@babel/plugin-transform-react-display-name": "^7.18.6",
- "@babel/plugin-transform-react-jsx": "^7.18.6",
- "@babel/plugin-transform-react-jsx-development": "^7.18.6",
- "@babel/plugin-transform-react-pure-annotations": "^7.18.6"
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-validator-option": "^7.22.15",
+ "@babel/plugin-transform-react-display-name": "^7.23.3",
+ "@babel/plugin-transform-react-jsx": "^7.22.15",
+ "@babel/plugin-transform-react-jsx-development": "^7.22.5",
+ "@babel/plugin-transform-react-pure-annotations": "^7.23.3"
}
},
"@babel/preset-typescript": {
@@ -57853,11 +57422,11 @@
}
},
"@babel/types": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
- "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz",
+ "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==",
"requires": {
- "@babel/helper-string-parser": "^7.22.5",
+ "@babel/helper-string-parser": "^7.23.4",
"@babel/helper-validator-identifier": "^7.22.20",
"to-fast-properties": "^2.0.0"
}
@@ -58429,53 +57998,62 @@
}
},
"@expo/cli": {
- "version": "0.10.16",
- "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.10.16.tgz",
- "integrity": "sha512-EwgnRN5AMElg0JJjFLJTPk5hYkVXxnNMLIvZBiTfGoCq+rDw6u7Mg5l2Bbm/geSHOoplaHyPZ/Wr23FAuZWehA==",
+ "version": "0.16.5",
+ "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.16.5.tgz",
+ "integrity": "sha512-4SAAymmV97OeskbYbpiJ/HFSUHLIyYmP8RlZE0svH+A1Z2lsAbjm8G7t5dFt5WPZGHWuj0y/DzIT8eElqvwHEg==",
"requires": {
"@babel/runtime": "^7.20.0",
"@expo/code-signing-certificates": "0.0.5",
- "@expo/config": "~8.1.0",
- "@expo/config-plugins": "~7.2.0",
- "@expo/dev-server": "0.5.5",
+ "@expo/config": "~8.5.0",
+ "@expo/config-plugins": "~7.8.0",
"@expo/devcert": "^1.0.0",
- "@expo/env": "0.0.5",
+ "@expo/env": "~0.2.0",
+ "@expo/image-utils": "^0.4.0",
"@expo/json-file": "^8.2.37",
- "@expo/metro-config": "~0.10.0",
+ "@expo/metro-config": "~0.17.0",
"@expo/osascript": "^2.0.31",
- "@expo/package-manager": "~1.1.0",
- "@expo/plist": "^0.0.20",
- "@expo/prebuild-config": "6.2.6",
+ "@expo/package-manager": "^1.1.1",
+ "@expo/plist": "^0.1.0",
+ "@expo/prebuild-config": "6.7.2",
"@expo/rudder-sdk-node": "1.1.1",
+ "@expo/server": "^0.3.0",
"@expo/spawn-async": "1.5.0",
- "@expo/xcpretty": "^4.2.1",
+ "@expo/xcpretty": "^4.3.0",
+ "@react-native/dev-middleware": "^0.73.6",
"@urql/core": "2.3.6",
"@urql/exchange-retry": "0.3.0",
"accepts": "^1.3.8",
- "arg": "4.1.0",
+ "arg": "5.0.2",
"better-opn": "~3.0.2",
"bplist-parser": "^0.3.1",
"cacache": "^15.3.0",
"chalk": "^4.0.0",
"ci-info": "^3.3.0",
+ "connect": "^3.7.0",
"debug": "^4.3.4",
"env-editor": "^0.4.1",
+ "find-yarn-workspace-root": "~2.0.0",
"form-data": "^3.0.1",
"freeport-async": "2.0.0",
"fs-extra": "~8.1.0",
"getenv": "^1.0.0",
+ "glob": "^7.1.7",
"graphql": "15.8.0",
"graphql-tag": "^2.10.1",
"https-proxy-agent": "^5.0.1",
"internal-ip": "4.3.0",
+ "is-docker": "^2.0.0",
+ "is-wsl": "^2.1.1",
"js-yaml": "^3.13.1",
"json-schema-deref-sync": "^0.13.0",
- "md5-file": "^3.2.3",
+ "lodash.debounce": "^4.0.8",
"md5hex": "^1.0.0",
- "minipass": "3.1.6",
+ "minimatch": "^3.0.4",
+ "minipass": "3.3.6",
"node-fetch": "^2.6.7",
"node-forge": "^1.3.1",
"npm-package-arg": "^7.0.0",
+ "open": "^8.3.0",
"ora": "3.4.0",
"pretty-bytes": "5.6.0",
"progress": "2.0.3",
@@ -58483,12 +58061,15 @@
"qrcode-terminal": "0.11.0",
"require-from-string": "^2.0.2",
"requireg": "^0.2.2",
+ "resolve": "^1.22.2",
"resolve-from": "^5.0.0",
+ "resolve.exports": "^2.0.2",
"semver": "^7.5.3",
"send": "^0.18.0",
"slugify": "^1.3.4",
"structured-headers": "^0.4.1",
"tar": "^6.0.5",
+ "temp-dir": "^2.0.0",
"tempy": "^0.7.1",
"terminal-link": "^2.1.1",
"text-table": "^0.2.0",
@@ -58506,13 +58087,14 @@
}
},
"@expo/config-plugins": {
- "version": "7.2.5",
- "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.2.5.tgz",
- "integrity": "sha512-w+5ccu1IxBHgyQk9CPFKLZOk8yZQEyTjbJwOzESK1eR7QwosbcsLkN1c1WWUZYiCXwORu3UTwJYll4+X2xxJhQ==",
- "requires": {
- "@expo/config-types": "^49.0.0-alpha.1",
- "@expo/json-file": "~8.2.37",
- "@expo/plist": "^0.0.20",
+ "version": "7.8.2",
+ "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.8.2.tgz",
+ "integrity": "sha512-XM2eXA5EvcpmXFCui48+bVy8GTskYSjPf2yC+LliYv8PDcedu7+pdgmbnvH4eZCyHfTMO8/UiF+w8e5WgOEj5A==",
+ "requires": {
+ "@expo/config-types": "^50.0.0-alpha.1",
+ "@expo/fingerprint": "^0.6.0",
+ "@expo/json-file": "~8.3.0",
+ "@expo/plist": "^0.1.0",
"@expo/sdk-runtime-versions": "^1.0.0",
"@react-native/normalize-color": "^2.0.0",
"chalk": "^4.1.2",
@@ -58523,19 +58105,35 @@
"resolve-from": "^5.0.0",
"semver": "^7.5.3",
"slash": "^3.0.0",
+ "slugify": "^1.6.6",
"xcode": "^3.0.1",
"xml2js": "0.6.0"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
}
},
"@expo/config-types": {
- "version": "49.0.0",
- "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-49.0.0.tgz",
- "integrity": "sha512-8eyREVi+K2acnMBe/rTIu1dOfyR2+AMnTLHlut+YpMV9OZPdeKV0Bs9BxAewGqBA2slslbQ9N39IS2CuTKpXkA=="
+ "version": "50.0.0",
+ "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-50.0.0.tgz",
+ "integrity": "sha512-0kkhIwXRT6EdFDwn+zTg9R2MZIAEYGn1MVkyRohAd+C9cXOb5RA8WLQi7vuxKF9m1SMtNAUrf0pO+ENK0+/KSw=="
},
"@expo/json-file": {
- "version": "8.2.37",
- "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz",
- "integrity": "sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==",
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.0.tgz",
+ "integrity": "sha512-yROUeXJXR5goagB8c3muFLCzLmdGOvoPpR5yDNaXrnTp4euNykr9yW0wWhJx4YVRTNOPtGBnEbbJBW+a9q+S6g==",
"requires": {
"@babel/code-frame": "~7.10.4",
"json5": "^2.2.2",
@@ -58543,9 +58141,9 @@
}
},
"@expo/plist": {
- "version": "0.0.20",
- "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.20.tgz",
- "integrity": "sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA==",
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.1.0.tgz",
+ "integrity": "sha512-xWD+8vIFif0wKyuqe3fmnmnSouXYucciZXFzS0ZD5OV9eSAS1RGQI5FaGGJ6zxJ4mpdy/4QzbLdBjnYE5vxA0g==",
"requires": {
"@xmldom/xmldom": "~0.7.7",
"base64-js": "^1.2.3",
@@ -58561,9 +58159,9 @@
}
},
"arg": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz",
- "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg=="
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="
},
"better-opn": {
"version": "3.0.2",
@@ -58626,6 +58224,19 @@
"universalify": "^0.1.0"
}
},
+ "glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -58698,14 +58309,6 @@
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
"integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
},
- "minipass": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz",
- "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
"onetime": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
@@ -58831,13 +58434,13 @@
}
},
"@expo/config": {
- "version": "8.1.2",
- "resolved": "https://registry.npmjs.org/@expo/config/-/config-8.1.2.tgz",
- "integrity": "sha512-4e7hzPj50mQIlsrzOH6XZ36O094mPfPTIDIH4yv49bWNMc7GFLTofB/lcT+QyxiLaJuC0Wlk9yOLB8DIqmtwug==",
+ "version": "8.5.2",
+ "resolved": "https://registry.npmjs.org/@expo/config/-/config-8.5.2.tgz",
+ "integrity": "sha512-UYy9kWxjQAEDwlX7gwLk0+8IxGPcHJMLnYRYtR5C5xGIV+ML7tCA+qFz1p4gHZRPkJD+k7iZyqBtyqt8xm+zXw==",
"requires": {
"@babel/code-frame": "~7.10.4",
- "@expo/config-plugins": "~7.2.0",
- "@expo/config-types": "^49.0.0-alpha.1",
+ "@expo/config-plugins": "~7.8.2",
+ "@expo/config-types": "^50.0.0",
"@expo/json-file": "^8.2.37",
"getenv": "^1.0.0",
"glob": "7.1.6",
@@ -58857,13 +58460,14 @@
}
},
"@expo/config-plugins": {
- "version": "7.2.5",
- "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.2.5.tgz",
- "integrity": "sha512-w+5ccu1IxBHgyQk9CPFKLZOk8yZQEyTjbJwOzESK1eR7QwosbcsLkN1c1WWUZYiCXwORu3UTwJYll4+X2xxJhQ==",
- "requires": {
- "@expo/config-types": "^49.0.0-alpha.1",
- "@expo/json-file": "~8.2.37",
- "@expo/plist": "^0.0.20",
+ "version": "7.8.2",
+ "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.8.2.tgz",
+ "integrity": "sha512-XM2eXA5EvcpmXFCui48+bVy8GTskYSjPf2yC+LliYv8PDcedu7+pdgmbnvH4eZCyHfTMO8/UiF+w8e5WgOEj5A==",
+ "requires": {
+ "@expo/config-types": "^50.0.0-alpha.1",
+ "@expo/fingerprint": "^0.6.0",
+ "@expo/json-file": "~8.3.0",
+ "@expo/plist": "^0.1.0",
"@expo/sdk-runtime-versions": "^1.0.0",
"@react-native/normalize-color": "^2.0.0",
"chalk": "^4.1.2",
@@ -58874,19 +58478,20 @@
"resolve-from": "^5.0.0",
"semver": "^7.5.3",
"slash": "^3.0.0",
+ "slugify": "^1.6.6",
"xcode": "^3.0.1",
"xml2js": "0.6.0"
}
},
"@expo/config-types": {
- "version": "49.0.0",
- "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-49.0.0.tgz",
- "integrity": "sha512-8eyREVi+K2acnMBe/rTIu1dOfyR2+AMnTLHlut+YpMV9OZPdeKV0Bs9BxAewGqBA2slslbQ9N39IS2CuTKpXkA=="
+ "version": "50.0.0",
+ "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-50.0.0.tgz",
+ "integrity": "sha512-0kkhIwXRT6EdFDwn+zTg9R2MZIAEYGn1MVkyRohAd+C9cXOb5RA8WLQi7vuxKF9m1SMtNAUrf0pO+ENK0+/KSw=="
},
"@expo/json-file": {
- "version": "8.2.37",
- "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz",
- "integrity": "sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==",
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.0.tgz",
+ "integrity": "sha512-yROUeXJXR5goagB8c3muFLCzLmdGOvoPpR5yDNaXrnTp4euNykr9yW0wWhJx4YVRTNOPtGBnEbbJBW+a9q+S6g==",
"requires": {
"@babel/code-frame": "~7.10.4",
"json5": "^2.2.2",
@@ -58894,9 +58499,9 @@
}
},
"@expo/plist": {
- "version": "0.0.20",
- "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.20.tgz",
- "integrity": "sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA==",
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.1.0.tgz",
+ "integrity": "sha512-xWD+8vIFif0wKyuqe3fmnmnSouXYucciZXFzS0ZD5OV9eSAS1RGQI5FaGGJ6zxJ4mpdy/4QzbLdBjnYE5vxA0g==",
"requires": {
"@xmldom/xmldom": "~0.7.7",
"base64-js": "^1.2.3",
@@ -59044,166 +58649,6 @@
"resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-45.0.0.tgz",
"integrity": "sha512-/QGhhLWyaGautgEyU50UJr5YqKJix5t77ePTwreOVAhmZH+ff3nrrtYTTnccx+qF08ZNQmfAyYMCD3rQfzpiJA=="
},
- "@expo/dev-server": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/@expo/dev-server/-/dev-server-0.5.5.tgz",
- "integrity": "sha512-t0fT8xH1exwYsH5hh7bAt85VF+gXxg24qrbny2rR/iKoPTWFCd2JNQV8pvfLg51hvrywQ3YCBuT3lU1w7aZxFA==",
- "requires": {
- "@expo/bunyan": "4.0.0",
- "@expo/metro-config": "~0.10.0",
- "@expo/osascript": "2.0.33",
- "@expo/spawn-async": "^1.5.0",
- "body-parser": "^1.20.1",
- "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",
- "serialize-error": "6.0.0",
- "temp-dir": "^2.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==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "body-parser": {
- "version": "1.20.2",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
- "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
- "requires": {
- "bytes": "3.1.2",
- "content-type": "~1.0.5",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "on-finished": "2.4.1",
- "qs": "6.11.0",
- "raw-body": "2.5.2",
- "type-is": "~1.6.18",
- "unpipe": "1.0.0"
- }
- },
- "bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
- },
- "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=="
- },
- "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"
- }
- },
- "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=="
- },
- "iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "qs": {
- "version": "6.11.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
- "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
- "requires": {
- "side-channel": "^1.0.4"
- }
- },
- "raw-body": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
- "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
- "requires": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- }
- },
- "serialize-error": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-6.0.0.tgz",
- "integrity": "sha512-3vmBkMZLQO+BR4RPHcyRGdE09XCF6cvxzk2N2qn8Er3F91cy8Qt7VvEbZBOpaL53qsBbe2cFOefU6tRY6WDelA==",
- "requires": {
- "type-fest": "^0.12.0"
- }
- },
- "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"
- }
- },
- "type-fest": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.12.0.tgz",
- "integrity": "sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg=="
- },
- "universalify": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
- "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug=="
- }
- }
- },
"@expo/devcert": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.1.0.tgz",
@@ -59264,9 +58709,9 @@
}
},
"@expo/env": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/@expo/env/-/env-0.0.5.tgz",
- "integrity": "sha512-UXuKAqyXfhMQC3gP0OyjXmFX08Z1fkVWiGBN7bYzfoX8LHatjeHrDtI6w5nDvd8XPxPvmqaZoEDw1lW3+dz3oQ==",
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@expo/env/-/env-0.2.1.tgz",
+ "integrity": "sha512-deZmRS7Dvp18VM8s559dq/ZjPlV1D9vtLoLXwHmCK/JYOvtNptdKsfxcWjI7ewmo6ln2PqgNI9HRI74q6Wk2eA==",
"requires": {
"chalk": "^4.0.0",
"debug": "^4.3.4",
@@ -59330,17 +58775,75 @@
}
}
},
+ "@expo/fingerprint": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.6.0.tgz",
+ "integrity": "sha512-KfpoVRTMwMNJ/Cf5o+Ou8M/Y0EGSTqK+rbi70M2Y0K2qgWNfMJ1gm6sYO9uc8lcTr7YSYM1Rme3dk7QXhpScNA==",
+ "requires": {
+ "@expo/spawn-async": "^1.5.0",
+ "chalk": "^4.1.2",
+ "debug": "^4.3.4",
+ "find-up": "^5.0.0",
+ "minimatch": "^3.0.4",
+ "p-limit": "^3.1.0",
+ "resolve-from": "^5.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==",
+ "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"
+ }
+ }
+ }
+ },
"@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==",
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.4.1.tgz",
+ "integrity": "sha512-EZb+VHSmw+a5s2hS9qksTcWylY0FDaIAVufcxoaRS9tHIXLjW5zcKW7Rhj9dSEbZbRVy9yXXdHKa3GQdUQIOFw==",
"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",
@@ -59476,17 +58979,25 @@
}
},
"@expo/metro-config": {
- "version": "0.10.7",
- "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.10.7.tgz",
- "integrity": "sha512-uACymEiyX0447hI4unt+2cemLQkTZXKvTev936NhtsgVnql45EP0V0pzmo/0H0WlHaAGXgvOBZJl8wFqcJ3CbQ==",
+ "version": "0.17.1",
+ "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.17.1.tgz",
+ "integrity": "sha512-ZOE0Jx0YTZyPpsGiiE09orGEFgZ5sMrOOFSgOe8zrns925g/uCuEbowyNq38IfQt//3xSl5mW3z0l4rxgi7hHQ==",
"requires": {
- "@expo/config": "~8.1.0",
- "@expo/env": "0.0.5",
- "@expo/json-file": "~8.2.37",
+ "@babel/core": "^7.20.0",
+ "@babel/generator": "^7.20.5",
+ "@babel/parser": "^7.20.0",
+ "@babel/types": "^7.20.0",
+ "@expo/config": "~8.5.0",
+ "@expo/env": "~0.2.0",
+ "@expo/json-file": "~8.3.0",
+ "@expo/spawn-async": "^1.7.2",
+ "babel-preset-fbjs": "^3.4.0",
"chalk": "^4.1.0",
"debug": "^4.3.2",
"find-yarn-workspace-root": "~2.0.0",
+ "fs-extra": "^9.1.0",
"getenv": "^1.0.0",
+ "glob": "^7.2.3",
"jsc-safe-url": "^0.2.4",
"lightningcss": "~1.19.0",
"postcss": "~8.4.21",
@@ -59503,15 +59014,23 @@
}
},
"@expo/json-file": {
- "version": "8.2.37",
- "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz",
- "integrity": "sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==",
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.0.tgz",
+ "integrity": "sha512-yROUeXJXR5goagB8c3muFLCzLmdGOvoPpR5yDNaXrnTp4euNykr9yW0wWhJx4YVRTNOPtGBnEbbJBW+a9q+S6g==",
"requires": {
"@babel/code-frame": "~7.10.4",
"json5": "^2.2.2",
"write-file-atomic": "^2.3.0"
}
},
+ "@expo/spawn-async": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.7.2.tgz",
+ "integrity": "sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==",
+ "requires": {
+ "cross-spawn": "^7.0.3"
+ }
+ },
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -59542,6 +59061,19 @@
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
+ "glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -59553,11 +59085,11 @@
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
},
"postcss": {
- "version": "8.4.30",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.30.tgz",
- "integrity": "sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==",
+ "version": "8.4.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz",
+ "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==",
"requires": {
- "nanoid": "^3.3.6",
+ "nanoid": "^3.3.7",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.2"
}
@@ -59683,14 +59215,14 @@
}
},
"@expo/prebuild-config": {
- "version": "6.2.6",
- "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-6.2.6.tgz",
- "integrity": "sha512-uFVvDAm9dPg9p1qpnr4CVnpo2hmkZIL5FQz+VlIdXXJpe7ySh/qTGHtKWY/lWUshQkAJ0nwbKGPztGWdABns/Q==",
- "requires": {
- "@expo/config": "~8.1.0",
- "@expo/config-plugins": "~7.2.0",
- "@expo/config-types": "^49.0.0-alpha.1",
- "@expo/image-utils": "0.3.22",
+ "version": "6.7.2",
+ "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-6.7.2.tgz",
+ "integrity": "sha512-Z1GyWfl923wU29YQg6Xik4URls4qcIddWA4vLhW6mUgiRhC3HCf1keHEzK5AtWsrga4bH/H+usAY0OltgABW1w==",
+ "requires": {
+ "@expo/config": "~8.5.0",
+ "@expo/config-plugins": "~7.8.0",
+ "@expo/config-types": "^50.0.0-alpha.1",
+ "@expo/image-utils": "^0.4.0",
"@expo/json-file": "^8.2.37",
"debug": "^4.3.1",
"fs-extra": "^9.0.0",
@@ -59708,13 +59240,14 @@
}
},
"@expo/config-plugins": {
- "version": "7.2.5",
- "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.2.5.tgz",
- "integrity": "sha512-w+5ccu1IxBHgyQk9CPFKLZOk8yZQEyTjbJwOzESK1eR7QwosbcsLkN1c1WWUZYiCXwORu3UTwJYll4+X2xxJhQ==",
- "requires": {
- "@expo/config-types": "^49.0.0-alpha.1",
- "@expo/json-file": "~8.2.37",
- "@expo/plist": "^0.0.20",
+ "version": "7.8.2",
+ "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.8.2.tgz",
+ "integrity": "sha512-XM2eXA5EvcpmXFCui48+bVy8GTskYSjPf2yC+LliYv8PDcedu7+pdgmbnvH4eZCyHfTMO8/UiF+w8e5WgOEj5A==",
+ "requires": {
+ "@expo/config-types": "^50.0.0-alpha.1",
+ "@expo/fingerprint": "^0.6.0",
+ "@expo/json-file": "~8.3.0",
+ "@expo/plist": "^0.1.0",
"@expo/sdk-runtime-versions": "^1.0.0",
"@react-native/normalize-color": "^2.0.0",
"chalk": "^4.1.2",
@@ -59725,19 +59258,20 @@
"resolve-from": "^5.0.0",
"semver": "^7.5.3",
"slash": "^3.0.0",
+ "slugify": "^1.6.6",
"xcode": "^3.0.1",
"xml2js": "0.6.0"
}
},
"@expo/config-types": {
- "version": "49.0.0",
- "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-49.0.0.tgz",
- "integrity": "sha512-8eyREVi+K2acnMBe/rTIu1dOfyR2+AMnTLHlut+YpMV9OZPdeKV0Bs9BxAewGqBA2slslbQ9N39IS2CuTKpXkA=="
+ "version": "50.0.0",
+ "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-50.0.0.tgz",
+ "integrity": "sha512-0kkhIwXRT6EdFDwn+zTg9R2MZIAEYGn1MVkyRohAd+C9cXOb5RA8WLQi7vuxKF9m1SMtNAUrf0pO+ENK0+/KSw=="
},
"@expo/json-file": {
- "version": "8.2.37",
- "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz",
- "integrity": "sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==",
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.0.tgz",
+ "integrity": "sha512-yROUeXJXR5goagB8c3muFLCzLmdGOvoPpR5yDNaXrnTp4euNykr9yW0wWhJx4YVRTNOPtGBnEbbJBW+a9q+S6g==",
"requires": {
"@babel/code-frame": "~7.10.4",
"json5": "^2.2.2",
@@ -59745,9 +59279,9 @@
}
},
"@expo/plist": {
- "version": "0.0.20",
- "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.20.tgz",
- "integrity": "sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA==",
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.1.0.tgz",
+ "integrity": "sha512-xWD+8vIFif0wKyuqe3fmnmnSouXYucciZXFzS0ZD5OV9eSAS1RGQI5FaGGJ6zxJ4mpdy/4QzbLdBjnYE5vxA0g==",
"requires": {
"@xmldom/xmldom": "~0.7.7",
"base64-js": "^1.2.3",
@@ -59849,6 +59383,17 @@
"resolved": "https://registry.npmjs.org/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz",
"integrity": "sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ=="
},
+ "@expo/server": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@expo/server/-/server-0.3.0.tgz",
+ "integrity": "sha512-5oIqedpLVMnf1LGI9Xd5OOGmK3DjgH9VpuqVN4e/6DwLT05RZJMyI7ylfG6QSy1e44yOgjv242tLyg0e/zdZ+A==",
+ "requires": {
+ "@remix-run/node": "^1.19.3",
+ "abort-controller": "^3.0.0",
+ "debug": "^4.3.4",
+ "source-map-support": "~0.5.21"
+ }
+ },
"@expo/spawn-async": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.5.0.tgz",
@@ -59908,9 +59453,9 @@
"integrity": "sha512-TI+l71+5aSKnShYclFa14Kum+hQMZ86b95SH6tQUG3qZEmLTarvWpKwqtTwQKqvlJSJrpFiSFu3eCuZokY6zWA=="
},
"@expo/xcpretty": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.2.2.tgz",
- "integrity": "sha512-Lke/geldJqUV0Dfxg5/QIOugOzdqZ/rQ9yHKSgGbjZtG1uiSqWyFwWvXmrdd3/sIdX33eykGvIcf+OrvvcXVUw==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.3.0.tgz",
+ "integrity": "sha512-whBbvHZ2Q10T5TNmN0z5NbO6C9ZDw+XUTu8h6vVMnMzQrbGexc9oaCCZfz+L3Q7TEL5vfr+9L86nY62c3Bsm+g==",
"requires": {
"@babel/code-frame": "7.10.4",
"chalk": "^4.1.0",
@@ -60166,7 +59711,6 @@
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
"integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
- "dev": true,
"requires": {
"string-width": "^5.1.2",
"string-width-cjs": "npm:string-width@^4.2.0",
@@ -60179,26 +59723,22 @@
"ansi-regex": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
- "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
- "dev": true
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA=="
},
"ansi-styles": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
- "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
- "dev": true
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="
},
"emoji-regex": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
- "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
- "dev": true
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
},
"string-width": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
"integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
- "dev": true,
"requires": {
"eastasianwidth": "^0.2.0",
"emoji-regex": "^9.2.2",
@@ -60209,7 +59749,6 @@
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
"integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
- "dev": true,
"requires": {
"ansi-regex": "^6.0.1"
}
@@ -60218,7 +59757,6 @@
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
"integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
- "dev": true,
"requires": {
"ansi-styles": "^6.1.0",
"string-width": "^5.0.1",
@@ -60227,6 +59765,11 @@
}
}
},
+ "@isaacs/ttlcache": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz",
+ "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA=="
+ },
"@istanbuljs/load-nyc-config": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
@@ -60466,19 +60009,19 @@
}
},
"@jest/create-cache-key-function": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.5.0.tgz",
- "integrity": "sha512-LIDZyZgnZss7uikvBKBB/USWwG+GO8+GnwRWT+YkCGDGsqLQlhm9BC3z6+7+eMs1kUlvXQIWEzBR8Q2Pnvx6lg==",
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz",
+ "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==",
"requires": {
- "@jest/types": "^29.5.0"
+ "@jest/types": "^29.6.3"
},
"dependencies": {
"@jest/types": {
- "version": "29.5.0",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz",
- "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
+ "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
"requires": {
- "@jest/schemas": "^29.4.3",
+ "@jest/schemas": "^29.6.3",
"@types/istanbul-lib-coverage": "^2.0.0",
"@types/istanbul-reports": "^3.0.0",
"@types/node": "*",
@@ -60487,9 +60030,9 @@
}
},
"@types/yargs": {
- "version": "17.0.24",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz",
- "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==",
+ "version": "17.0.31",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.31.tgz",
+ "integrity": "sha512-bocYSx4DI8TmdlvxqGpVNXOgCNR1Jj0gNPhhAY+iz1rgKDAaYrAYdFYnhDV1IFuiuVc9HkOwyDcFxaTElF3/wg==",
"requires": {
"@types/yargs-parser": "*"
}
@@ -60540,14 +60083,14 @@
}
},
"@jest/environment": {
- "version": "29.6.2",
- "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.2.tgz",
- "integrity": "sha512-AEcW43C7huGd/vogTddNNTDRpO6vQ2zaQNrttvWV18ArBx9Z56h7BIsXkNFJVOO4/kblWEQz30ckw0+L3izc+Q==",
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz",
+ "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==",
"requires": {
- "@jest/fake-timers": "^29.6.2",
- "@jest/types": "^29.6.1",
+ "@jest/fake-timers": "^29.7.0",
+ "@jest/types": "^29.6.3",
"@types/node": "*",
- "jest-mock": "^29.6.2"
+ "jest-mock": "^29.7.0"
},
"dependencies": {
"@jest/types": {
@@ -60634,16 +60177,16 @@
}
},
"@jest/fake-timers": {
- "version": "29.6.2",
- "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.2.tgz",
- "integrity": "sha512-euZDmIlWjm1Z0lJ1D0f7a0/y5Kh/koLFMUBE5SUYWrmy8oNhJpbTBDAP6CxKnadcMLDoDf4waRYCe35cH6G6PA==",
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz",
+ "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==",
"requires": {
- "@jest/types": "^29.6.1",
+ "@jest/types": "^29.6.3",
"@sinonjs/fake-timers": "^10.0.2",
"@types/node": "*",
- "jest-message-util": "^29.6.2",
- "jest-mock": "^29.6.2",
- "jest-util": "^29.6.2"
+ "jest-message-util": "^29.7.0",
+ "jest-mock": "^29.7.0",
+ "jest-util": "^29.7.0"
},
"dependencies": {
"@jest/types": {
@@ -61973,7 +61516,6 @@
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
"integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
- "dev": true,
"optional": true
},
"@pmmmwh/react-refresh-webpack-plugin": {
@@ -62286,9 +61828,9 @@
}
},
"@react-native-async-storage/async-storage": {
- "version": "1.19.3",
- "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.19.3.tgz",
- "integrity": "sha512-CwGfoHCWdPOTPS+2fW6YRE1fFBpT9++ahLEroX5hkgwyoQ+TkmjOaUxixdEIoVua9Pz5EF2pGOIJzqOTMWfBlA==",
+ "version": "1.21.0",
+ "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.21.0.tgz",
+ "integrity": "sha512-JL0w36KuFHFCvnbOXRekqVAUplmOyT/OuCQkogo6X98MtpSaJOKEAeZnYO8JB0U/RIEixZaGI5px73YbRm/oag==",
"requires": {
"merge-options": "^3.0.4"
}
@@ -62306,26 +61848,27 @@
"requires": {}
},
"@react-native-community/cli": {
- "version": "11.3.6",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-11.3.6.tgz",
- "integrity": "sha512-bdwOIYTBVQ9VK34dsf6t3u6vOUU5lfdhKaAxiAVArjsr7Je88Bgs4sAbsOYsNK3tkE8G77U6wLpekknXcanlww==",
- "requires": {
- "@react-native-community/cli-clean": "11.3.6",
- "@react-native-community/cli-config": "11.3.6",
- "@react-native-community/cli-debugger-ui": "11.3.6",
- "@react-native-community/cli-doctor": "11.3.6",
- "@react-native-community/cli-hermes": "11.3.6",
- "@react-native-community/cli-plugin-metro": "11.3.6",
- "@react-native-community/cli-server-api": "11.3.6",
- "@react-native-community/cli-tools": "11.3.6",
- "@react-native-community/cli-types": "11.3.6",
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-12.3.0.tgz",
+ "integrity": "sha512-XeQohi2E+S2+MMSz97QcEZ/bWpi8sfKiQg35XuYeJkc32Til2g0b97jRpn0/+fV0BInHoG1CQYWwHA7opMsrHg==",
+ "requires": {
+ "@react-native-community/cli-clean": "12.3.0",
+ "@react-native-community/cli-config": "12.3.0",
+ "@react-native-community/cli-debugger-ui": "12.3.0",
+ "@react-native-community/cli-doctor": "12.3.0",
+ "@react-native-community/cli-hermes": "12.3.0",
+ "@react-native-community/cli-plugin-metro": "12.3.0",
+ "@react-native-community/cli-server-api": "12.3.0",
+ "@react-native-community/cli-tools": "12.3.0",
+ "@react-native-community/cli-types": "12.3.0",
"chalk": "^4.1.2",
"commander": "^9.4.1",
+ "deepmerge": "^4.3.0",
"execa": "^5.0.0",
"find-up": "^4.1.0",
"fs-extra": "^8.1.0",
"graceful-fs": "^4.1.3",
- "prompts": "^2.4.0",
+ "prompts": "^2.4.2",
"semver": "^7.5.2"
},
"dependencies": {
@@ -62441,14 +61984,13 @@
}
},
"@react-native-community/cli-clean": {
- "version": "11.3.6",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-11.3.6.tgz",
- "integrity": "sha512-jOOaeG5ebSXTHweq1NznVJVAFKtTFWL4lWgUXl845bCGX7t1lL8xQNWHKwT8Oh1pGR2CI3cKmRjY4hBg+pEI9g==",
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-12.3.0.tgz",
+ "integrity": "sha512-iAgLCOWYRGh9ukr+eVQnhkV/OqN3V2EGd/in33Ggn/Mj4uO6+oUncXFwB+yjlyaUNz6FfjudhIz09yYGSF+9sg==",
"requires": {
- "@react-native-community/cli-tools": "11.3.6",
+ "@react-native-community/cli-tools": "12.3.0",
"chalk": "^4.1.2",
- "execa": "^5.0.0",
- "prompts": "^2.4.0"
+ "execa": "^5.0.0"
},
"dependencies": {
"ansi-styles": {
@@ -62497,11 +62039,11 @@
}
},
"@react-native-community/cli-config": {
- "version": "11.3.6",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-11.3.6.tgz",
- "integrity": "sha512-edy7fwllSFLan/6BG6/rznOBCLPrjmJAE10FzkEqNLHowi0bckiAPg1+1jlgQ2qqAxV5kuk+c9eajVfQvPLYDA==",
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-12.3.0.tgz",
+ "integrity": "sha512-BrTn5ndFD9uOxO8kxBQ32EpbtOvAsQExGPI7SokdI4Zlve70FziLtTq91LTlTUgMq1InVZn/jJb3VIDk6BTInQ==",
"requires": {
- "@react-native-community/cli-tools": "11.3.6",
+ "@react-native-community/cli-tools": "12.3.0",
"chalk": "^4.1.2",
"cosmiconfig": "^5.1.0",
"deepmerge": "^4.3.0",
@@ -62589,34 +62131,33 @@
}
},
"@react-native-community/cli-debugger-ui": {
- "version": "11.3.6",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-11.3.6.tgz",
- "integrity": "sha512-jhMOSN/iOlid9jn/A2/uf7HbC3u7+lGktpeGSLnHNw21iahFBzcpuO71ekEdlmTZ4zC/WyxBXw9j2ka33T358w==",
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-12.3.0.tgz",
+ "integrity": "sha512-w3b0iwjQlk47GhZWHaeTG8kKH09NCMUJO729xSdMBXE8rlbm4kHpKbxQY9qKb6NlfWSJN4noGY+FkNZS2rRwnQ==",
"requires": {
"serve-static": "^1.13.1"
}
},
"@react-native-community/cli-doctor": {
- "version": "11.3.6",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-11.3.6.tgz",
- "integrity": "sha512-UT/Tt6omVPi1j6JEX+CObc85eVFghSZwy4GR9JFMsO7gNg2Tvcu1RGWlUkrbmWMAMHw127LUu6TGK66Ugu1NLA==",
- "requires": {
- "@react-native-community/cli-config": "11.3.6",
- "@react-native-community/cli-platform-android": "11.3.6",
- "@react-native-community/cli-platform-ios": "11.3.6",
- "@react-native-community/cli-tools": "11.3.6",
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-12.3.0.tgz",
+ "integrity": "sha512-BPCwNNesoQMkKsxB08Ayy6URgGQ8Kndv6mMhIvJSNdST3J1+x3ehBHXzG9B9Vfi+DrTKRb8lmEl/b/7VkDlPkA==",
+ "requires": {
+ "@react-native-community/cli-config": "12.3.0",
+ "@react-native-community/cli-platform-android": "12.3.0",
+ "@react-native-community/cli-platform-ios": "12.3.0",
+ "@react-native-community/cli-tools": "12.3.0",
"chalk": "^4.1.2",
"command-exists": "^1.2.8",
- "envinfo": "^7.7.2",
+ "deepmerge": "^4.3.0",
+ "envinfo": "^7.10.0",
"execa": "^5.0.0",
"hermes-profile-transformer": "^0.0.6",
"ip": "^1.1.5",
"node-stream-zip": "^1.9.1",
"ora": "^5.4.1",
- "prompts": "^2.4.0",
"semver": "^7.5.2",
"strip-ansi": "^5.2.0",
- "sudo-prompt": "^9.0.0",
"wcwidth": "^1.0.1",
"yaml": "^2.2.1"
},
@@ -62680,12 +62221,12 @@
}
},
"@react-native-community/cli-hermes": {
- "version": "11.3.6",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-11.3.6.tgz",
- "integrity": "sha512-O55YAYGZ3XynpUdePPVvNuUPGPY0IJdctLAOHme73OvS80gNwfntHDXfmY70TGHWIfkK2zBhA0B+2v8s5aTyTA==",
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-12.3.0.tgz",
+ "integrity": "sha512-G6FxpeZBO4AimKZwtWR3dpXRqTvsmEqlIkkxgwthdzn3LbVjDVIXKpVYU9PkR5cnT+KuAUxO0WwthrJ6Nmrrlg==",
"requires": {
- "@react-native-community/cli-platform-android": "11.3.6",
- "@react-native-community/cli-tools": "11.3.6",
+ "@react-native-community/cli-platform-android": "12.3.0",
+ "@react-native-community/cli-tools": "12.3.0",
"chalk": "^4.1.2",
"hermes-profile-transformer": "^0.0.6",
"ip": "^1.1.5"
@@ -62742,13 +62283,14 @@
}
},
"@react-native-community/cli-platform-android": {
- "version": "11.3.6",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-11.3.6.tgz",
- "integrity": "sha512-ZARrpLv5tn3rmhZc//IuDM1LSAdYnjUmjrp58RynlvjLDI4ZEjBAGCQmgysRgXAsK7ekMrfkZgemUczfn9td2A==",
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-12.3.0.tgz",
+ "integrity": "sha512-VU1NZw63+GLU2TnyQ919bEMThpHQ/oMFju9MCfrd3pyPJz4Sn+vc3NfnTDUVA5Z5yfLijFOkHIHr4vo/C9bjnw==",
"requires": {
- "@react-native-community/cli-tools": "11.3.6",
+ "@react-native-community/cli-tools": "12.3.0",
"chalk": "^4.1.2",
"execa": "^5.0.0",
+ "fast-xml-parser": "^4.2.4",
"glob": "^7.1.3",
"logkitty": "^0.7.1"
},
@@ -62799,11 +62341,11 @@
}
},
"@react-native-community/cli-platform-ios": {
- "version": "11.3.6",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-11.3.6.tgz",
- "integrity": "sha512-tZ9VbXWiRW+F+fbZzpLMZlj93g3Q96HpuMsS6DRhrTiG+vMQ3o6oPWSEEmMGOvJSYU7+y68Dc9ms2liC7VD6cw==",
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-12.3.0.tgz",
+ "integrity": "sha512-H95Sgt3wT7L8V75V0syFJDtv4YgqK5zbu69ko4yrXGv8dv2EBi6qZP0VMmkqXDamoPm9/U7tDTdbcf26ctnLfg==",
"requires": {
- "@react-native-community/cli-tools": "11.3.6",
+ "@react-native-community/cli-tools": "12.3.0",
"chalk": "^4.1.2",
"execa": "^5.0.0",
"fast-xml-parser": "^4.0.12",
@@ -62857,533 +62399,17 @@
}
},
"@react-native-community/cli-plugin-metro": {
- "version": "11.3.6",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-11.3.6.tgz",
- "integrity": "sha512-D97racrPX3069ibyabJNKw9aJpVcaZrkYiEzsEnx50uauQtPDoQ1ELb/5c6CtMhAEGKoZ0B5MS23BbsSZcLs2g==",
- "requires": {
- "@react-native-community/cli-server-api": "11.3.6",
- "@react-native-community/cli-tools": "11.3.6",
- "chalk": "^4.1.2",
- "execa": "^5.0.0",
- "metro": "0.76.7",
- "metro-config": "0.76.7",
- "metro-core": "0.76.7",
- "metro-react-native-babel-transformer": "0.76.7",
- "metro-resolver": "0.76.7",
- "metro-runtime": "0.76.7",
- "readline": "^1.3.0"
- },
- "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.6",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.6.tgz",
- "integrity": "sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A==",
- "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"
- }
- },
- "ci-info": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
- "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="
- },
- "cliui": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.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=="
- },
- "cosmiconfig": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
- "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
- "requires": {
- "import-fresh": "^2.0.0",
- "is-directory": "^0.3.1",
- "js-yaml": "^3.13.1",
- "parse-json": "^4.0.0"
- }
- },
- "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"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "import-fresh": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
- "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==",
- "requires": {
- "caller-path": "^2.0.0",
- "resolve-from": "^3.0.0"
- }
- },
- "jest-regex-util": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz",
- "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg=="
- },
- "jest-util": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
- "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
- "requires": {
- "@jest/types": "^27.5.1",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "graceful-fs": "^4.2.9",
- "picomatch": "^2.2.3"
- },
- "dependencies": {
- "ci-info": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz",
- "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw=="
- }
- }
- },
- "jest-worker": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
- "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
- "requires": {
- "@types/node": "*",
- "merge-stream": "^2.0.0",
- "supports-color": "^8.0.0"
- },
- "dependencies": {
- "supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "metro": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro/-/metro-0.76.7.tgz",
- "integrity": "sha512-67ZGwDeumEPnrHI+pEDSKH2cx+C81Gx8Mn5qOtmGUPm/Up9Y4I1H2dJZ5n17MWzejNo0XAvPh0QL0CrlJEODVQ==",
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "@babel/core": "^7.20.0",
- "@babel/generator": "^7.20.0",
- "@babel/parser": "^7.20.0",
- "@babel/template": "^7.0.0",
- "@babel/traverse": "^7.20.0",
- "@babel/types": "^7.20.0",
- "accepts": "^1.3.7",
- "async": "^3.2.2",
- "chalk": "^4.0.0",
- "ci-info": "^2.0.0",
- "connect": "^3.6.5",
- "debug": "^2.2.0",
- "denodeify": "^1.2.1",
- "error-stack-parser": "^2.0.6",
- "graceful-fs": "^4.2.4",
- "hermes-parser": "0.12.0",
- "image-size": "^1.0.2",
- "invariant": "^2.2.4",
- "jest-worker": "^27.2.0",
- "jsc-safe-url": "^0.2.2",
- "lodash.throttle": "^4.1.1",
- "metro-babel-transformer": "0.76.7",
- "metro-cache": "0.76.7",
- "metro-cache-key": "0.76.7",
- "metro-config": "0.76.7",
- "metro-core": "0.76.7",
- "metro-file-map": "0.76.7",
- "metro-inspector-proxy": "0.76.7",
- "metro-minify-terser": "0.76.7",
- "metro-minify-uglify": "0.76.7",
- "metro-react-native-babel-preset": "0.76.7",
- "metro-resolver": "0.76.7",
- "metro-runtime": "0.76.7",
- "metro-source-map": "0.76.7",
- "metro-symbolicate": "0.76.7",
- "metro-transform-plugins": "0.76.7",
- "metro-transform-worker": "0.76.7",
- "mime-types": "^2.1.27",
- "node-fetch": "^2.2.0",
- "nullthrows": "^1.1.1",
- "rimraf": "^3.0.2",
- "serialize-error": "^2.1.0",
- "source-map": "^0.5.6",
- "strip-ansi": "^6.0.0",
- "throat": "^5.0.0",
- "ws": "^7.5.1",
- "yargs": "^17.6.2"
- }
- },
- "metro-babel-transformer": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.76.7.tgz",
- "integrity": "sha512-bgr2OFn0J4r0qoZcHrwEvccF7g9k3wdgTOgk6gmGHrtlZ1Jn3oCpklW/DfZ9PzHfjY2mQammKTc19g/EFGyOJw==",
- "requires": {
- "@babel/core": "^7.20.0",
- "hermes-parser": "0.12.0",
- "nullthrows": "^1.1.1"
- }
- },
- "metro-cache": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.76.7.tgz",
- "integrity": "sha512-nWBMztrs5RuSxZRI7hgFgob5PhYDmxICh9FF8anm9/ito0u0vpPvRxt7sRu8fyeD2AHdXqE7kX32rWY0LiXgeg==",
- "requires": {
- "metro-core": "0.76.7",
- "rimraf": "^3.0.2"
- }
- },
- "metro-cache-key": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.76.7.tgz",
- "integrity": "sha512-0pecoIzwsD/Whn/Qfa+SDMX2YyasV0ndbcgUFx7w1Ct2sLHClujdhQ4ik6mvQmsaOcnGkIyN0zcceMDjC2+BFQ=="
- },
- "metro-config": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.76.7.tgz",
- "integrity": "sha512-CFDyNb9bqxZemiChC/gNdXZ7OQkIwmXzkrEXivcXGbgzlt/b2juCv555GWJHyZSlorwnwJfY3uzAFu4A9iRVfg==",
- "requires": {
- "connect": "^3.6.5",
- "cosmiconfig": "^5.0.5",
- "jest-validate": "^29.2.1",
- "metro": "0.76.7",
- "metro-cache": "0.76.7",
- "metro-core": "0.76.7",
- "metro-runtime": "0.76.7"
- }
- },
- "metro-core": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.76.7.tgz",
- "integrity": "sha512-0b8KfrwPmwCMW+1V7ZQPkTy2tsEKZjYG9Pu1PTsu463Z9fxX7WaR0fcHFshv+J1CnQSUTwIGGjbNvj1teKe+pw==",
- "requires": {
- "lodash.throttle": "^4.1.1",
- "metro-resolver": "0.76.7"
- }
- },
- "metro-file-map": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.76.7.tgz",
- "integrity": "sha512-s+zEkTcJ4mOJTgEE2ht4jIo1DZfeWreQR3tpT3gDV/Y/0UQ8aJBTv62dE775z0GLsWZApiblAYZsj7ZE8P06nw==",
- "requires": {
- "anymatch": "^3.0.3",
- "debug": "^2.2.0",
- "fb-watchman": "^2.0.0",
- "fsevents": "^2.3.2",
- "graceful-fs": "^4.2.4",
- "invariant": "^2.2.4",
- "jest-regex-util": "^27.0.6",
- "jest-util": "^27.2.0",
- "jest-worker": "^27.2.0",
- "micromatch": "^4.0.4",
- "node-abort-controller": "^3.1.1",
- "nullthrows": "^1.1.1",
- "walker": "^1.0.7"
- }
- },
- "metro-inspector-proxy": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.76.7.tgz",
- "integrity": "sha512-rNZ/6edTl/1qUekAhAbaFjczMphM50/UjtxiKulo6vqvgn/Mjd9hVqDvVYfAMZXqPvlusD88n38UjVYPkruLSg==",
- "requires": {
- "connect": "^3.6.5",
- "debug": "^2.2.0",
- "node-fetch": "^2.2.0",
- "ws": "^7.5.1",
- "yargs": "^17.6.2"
- }
- },
- "metro-minify-terser": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.76.7.tgz",
- "integrity": "sha512-FQiZGhIxCzhDwK4LxyPMLlq0Tsmla10X7BfNGlYFK0A5IsaVKNJbETyTzhpIwc+YFRT4GkFFwgo0V2N5vxO5HA==",
- "requires": {
- "terser": "^5.15.0"
- }
- },
- "metro-minify-uglify": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.76.7.tgz",
- "integrity": "sha512-FuXIU3j2uNcSvQtPrAJjYWHruPiQ+EpE++J9Z+VznQKEHcIxMMoQZAfIF2IpZSrZYfLOjVFyGMvj41jQMxV1Vw==",
- "requires": {
- "uglify-es": "^3.1.9"
- }
- },
- "metro-react-native-babel-preset": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.76.7.tgz",
- "integrity": "sha512-R25wq+VOSorAK3hc07NW0SmN8z9S/IR0Us0oGAsBcMZnsgkbOxu77Mduqf+f4is/wnWHc5+9bfiqdLnaMngiVw==",
- "requires": {
- "@babel/core": "^7.20.0",
- "@babel/plugin-proposal-async-generator-functions": "^7.0.0",
- "@babel/plugin-proposal-class-properties": "^7.18.0",
- "@babel/plugin-proposal-export-default-from": "^7.0.0",
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0",
- "@babel/plugin-proposal-numeric-separator": "^7.0.0",
- "@babel/plugin-proposal-object-rest-spread": "^7.20.0",
- "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
- "@babel/plugin-proposal-optional-chaining": "^7.20.0",
- "@babel/plugin-syntax-dynamic-import": "^7.8.0",
- "@babel/plugin-syntax-export-default-from": "^7.0.0",
- "@babel/plugin-syntax-flow": "^7.18.0",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0",
- "@babel/plugin-syntax-optional-chaining": "^7.0.0",
- "@babel/plugin-transform-arrow-functions": "^7.0.0",
- "@babel/plugin-transform-async-to-generator": "^7.20.0",
- "@babel/plugin-transform-block-scoping": "^7.0.0",
- "@babel/plugin-transform-classes": "^7.0.0",
- "@babel/plugin-transform-computed-properties": "^7.0.0",
- "@babel/plugin-transform-destructuring": "^7.20.0",
- "@babel/plugin-transform-flow-strip-types": "^7.20.0",
- "@babel/plugin-transform-function-name": "^7.0.0",
- "@babel/plugin-transform-literals": "^7.0.0",
- "@babel/plugin-transform-modules-commonjs": "^7.0.0",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0",
- "@babel/plugin-transform-parameters": "^7.0.0",
- "@babel/plugin-transform-react-display-name": "^7.0.0",
- "@babel/plugin-transform-react-jsx": "^7.0.0",
- "@babel/plugin-transform-react-jsx-self": "^7.0.0",
- "@babel/plugin-transform-react-jsx-source": "^7.0.0",
- "@babel/plugin-transform-runtime": "^7.0.0",
- "@babel/plugin-transform-shorthand-properties": "^7.0.0",
- "@babel/plugin-transform-spread": "^7.0.0",
- "@babel/plugin-transform-sticky-regex": "^7.0.0",
- "@babel/plugin-transform-typescript": "^7.5.0",
- "@babel/plugin-transform-unicode-regex": "^7.0.0",
- "@babel/template": "^7.0.0",
- "babel-plugin-transform-flow-enums": "^0.0.2",
- "react-refresh": "^0.4.0"
- }
- },
- "metro-react-native-babel-transformer": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.76.7.tgz",
- "integrity": "sha512-W6lW3J7y/05ph3c2p3KKJNhH0IdyxdOCbQ5it7aM2MAl0SM4wgKjaV6EYv9b3rHklpV6K3qMH37UKVcjMooWiA==",
- "requires": {
- "@babel/core": "^7.20.0",
- "babel-preset-fbjs": "^3.4.0",
- "hermes-parser": "0.12.0",
- "metro-react-native-babel-preset": "0.76.7",
- "nullthrows": "^1.1.1"
- }
- },
- "metro-resolver": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.76.7.tgz",
- "integrity": "sha512-pC0Wgq29HHIHrwz23xxiNgylhI8Rq1V01kQaJ9Kz11zWrIdlrH0ZdnJ7GC6qA0ErROG+cXmJ0rJb8/SW1Zp2IA=="
- },
- "metro-runtime": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.76.7.tgz",
- "integrity": "sha512-MuWHubQHymUWBpZLwuKZQgA/qbb35WnDAKPo83rk7JRLIFPvzXSvFaC18voPuzJBt1V98lKQIonh6MiC9gd8Ug==",
- "requires": {
- "@babel/runtime": "^7.0.0",
- "react-refresh": "^0.4.0"
- }
- },
- "metro-source-map": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.76.7.tgz",
- "integrity": "sha512-Prhx7PeRV1LuogT0Kn5VjCuFu9fVD68eefntdWabrksmNY6mXK8pRqzvNJOhTojh6nek+RxBzZeD6MIOOyXS6w==",
- "requires": {
- "@babel/traverse": "^7.20.0",
- "@babel/types": "^7.20.0",
- "invariant": "^2.2.4",
- "metro-symbolicate": "0.76.7",
- "nullthrows": "^1.1.1",
- "ob1": "0.76.7",
- "source-map": "^0.5.6",
- "vlq": "^1.0.0"
- }
- },
- "metro-symbolicate": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.76.7.tgz",
- "integrity": "sha512-p0zWEME5qLSL1bJb93iq+zt5fz3sfVn9xFYzca1TJIpY5MommEaS64Va87lp56O0sfEIvh4307Oaf/ZzRjuLiQ==",
- "requires": {
- "invariant": "^2.2.4",
- "metro-source-map": "0.76.7",
- "nullthrows": "^1.1.1",
- "source-map": "^0.5.6",
- "through2": "^2.0.1",
- "vlq": "^1.0.0"
- }
- },
- "metro-transform-plugins": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.76.7.tgz",
- "integrity": "sha512-iSmnjVApbdivjuzb88Orb0JHvcEt5veVyFAzxiS5h0QB+zV79w6JCSqZlHCrbNOkOKBED//LqtKbFVakxllnNg==",
- "requires": {
- "@babel/core": "^7.20.0",
- "@babel/generator": "^7.20.0",
- "@babel/template": "^7.0.0",
- "@babel/traverse": "^7.20.0",
- "nullthrows": "^1.1.1"
- }
- },
- "metro-transform-worker": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.76.7.tgz",
- "integrity": "sha512-cGvELqFMVk9XTC15CMVzrCzcO6sO1lURfcbgjuuPdzaWuD11eEyocvkTX0DPiRjsvgAmicz4XYxVzgYl3MykDw==",
- "requires": {
- "@babel/core": "^7.20.0",
- "@babel/generator": "^7.20.0",
- "@babel/parser": "^7.20.0",
- "@babel/types": "^7.20.0",
- "babel-preset-fbjs": "^3.4.0",
- "metro": "0.76.7",
- "metro-babel-transformer": "0.76.7",
- "metro-cache": "0.76.7",
- "metro-cache-key": "0.76.7",
- "metro-source-map": "0.76.7",
- "metro-transform-plugins": "0.76.7",
- "nullthrows": "^1.1.1"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "ob1": {
- "version": "0.76.7",
- "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.76.7.tgz",
- "integrity": "sha512-BQdRtxxoUNfSoZxqeBGOyuT9nEYSn18xZHwGMb0mMVpn2NBcYbnyKY4BK2LIHRgw33CBGlUmE+KMaNvyTpLLtQ=="
- },
- "parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
- "requires": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- }
- },
- "react-refresh": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz",
- "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA=="
- },
- "resolve-from": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
- "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw=="
- },
- "serialize-error": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz",
- "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw=="
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ=="
- },
- "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"
- }
- },
- "ws": {
- "version": "7.5.9",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
- "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
- "requires": {}
- },
- "y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="
- },
- "yargs": {
- "version": "17.7.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
- "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
- "requires": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
- }
- },
- "yargs-parser": {
- "version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="
- }
- }
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-12.3.0.tgz",
+ "integrity": "sha512-tYNHIYnNmxrBcsqbE2dAnLMzlKI3Cp1p1xUgTrNaOMsGPDN1epzNfa34n6Nps3iwKElSL7Js91CzYNqgTalucA=="
},
"@react-native-community/cli-server-api": {
- "version": "11.3.6",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-11.3.6.tgz",
- "integrity": "sha512-8GUKodPnURGtJ9JKg8yOHIRtWepPciI3ssXVw5jik7+dZ43yN8P5BqCoDaq8e1H1yRer27iiOfT7XVnwk8Dueg==",
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-12.3.0.tgz",
+ "integrity": "sha512-Rode8NrdyByC+lBKHHn+/W8Zu0c+DajJvLmOWbe2WY/ECvnwcd9MHHbu92hlT2EQaJ9LbLhGrSbQE3cQy9EOCw==",
"requires": {
- "@react-native-community/cli-debugger-ui": "11.3.6",
- "@react-native-community/cli-tools": "11.3.6",
+ "@react-native-community/cli-debugger-ui": "12.3.0",
+ "@react-native-community/cli-tools": "12.3.0",
"compression": "^1.7.1",
"connect": "^3.6.5",
"errorhandler": "^1.5.1",
@@ -63444,9 +62470,9 @@
}
},
"@react-native-community/cli-tools": {
- "version": "11.3.6",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-11.3.6.tgz",
- "integrity": "sha512-JpmUTcDwAGiTzLsfMlIAYpCMSJ9w2Qlf7PU7mZIRyEu61UzEawyw83DkqfbzDPBuRwRnaeN44JX2CP/yTO3ThQ==",
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-12.3.0.tgz",
+ "integrity": "sha512-2GafnCr8D88VdClwnm9KZfkEb+lzVoFdr/7ybqhdeYM0Vnt/tr2N+fM1EQzwI1DpzXiBzTYemw8GjRq+Utcz2Q==",
"requires": {
"appdirsjs": "^1.2.4",
"chalk": "^4.1.2",
@@ -63456,7 +62482,8 @@
"open": "^6.2.0",
"ora": "^5.4.1",
"semver": "^7.5.2",
- "shell-quote": "^1.7.3"
+ "shell-quote": "^1.7.3",
+ "sudo-prompt": "^9.0.0"
},
"dependencies": {
"ansi-styles": {
@@ -63518,9 +62545,9 @@
}
},
"@react-native-community/cli-types": {
- "version": "11.3.6",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-11.3.6.tgz",
- "integrity": "sha512-6DxjrMKx5x68N/tCJYVYRKAtlRHbtUVBZrnAvkxbRWFD9v4vhNgsPM0RQm8i2vRugeksnao5mbnRGpS6c0awCw==",
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-12.3.0.tgz",
+ "integrity": "sha512-MgOkmrXH4zsGxhte4YqKL7d+N8ZNEd3w1wo56MZlhu5WabwCJh87wYpU5T8vyfujFLYOFuFK5jjlcbs8F4/WDw==",
"requires": {
"joi": "^17.2.1"
}
@@ -63603,7 +62630,9 @@
"requires": {}
},
"@react-native-community/netinfo": {
- "version": "9.3.10",
+ "version": "11.2.1",
+ "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-11.2.1.tgz",
+ "integrity": "sha512-n9kgmH7vLaU7Cdo8vGfJGGwhrlgppaOSq5zKj9I7H4k5iRM3aNtwURw83mgrc22Ip7nSye2afZV2xDiIyvHttQ==",
"requires": {}
},
"@react-native-firebase/analytics": {
@@ -63646,45 +62675,244 @@
"requires": {}
},
"@react-native-picker/picker": {
- "version": "2.4.4",
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@react-native-picker/picker/-/picker-2.5.1.tgz",
+ "integrity": "sha512-/sADUfQsosMRYtrqqL3ZYZSECRygj0fXtpRLqxJfwuMEoqfvfn40756R6B1alzusVvDRZFI0ari0iQid56hA/Q==",
"requires": {}
},
"@react-native/assets-registry": {
- "version": "0.72.0",
- "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.72.0.tgz",
- "integrity": "sha512-Im93xRJuHHxb1wniGhBMsxLwcfzdYreSZVQGDoMJgkd6+Iky61LInGEHnQCTN0fKNYF1Dvcofb4uMmE1RQHXHQ=="
+ "version": "0.73.1",
+ "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.73.1.tgz",
+ "integrity": "sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg=="
+ },
+ "@react-native/babel-plugin-codegen": {
+ "version": "0.73.2",
+ "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.73.2.tgz",
+ "integrity": "sha512-PadyFZWVaWXIBP7Q5dgEL7eAd7tnsgsLjoHJB1hIRZZuVUg1Zqe3nULwC7RFAqOtr5Qx7KXChkFFcKQ3WnZzGw==",
+ "requires": {
+ "@react-native/codegen": "0.73.2"
+ }
+ },
+ "@react-native/babel-preset": {
+ "version": "0.73.19",
+ "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.73.19.tgz",
+ "integrity": "sha512-ujon01uMOREZecIltQxPDmJ6xlVqAUFGI/JCSpeVYdxyXBoBH5dBb0ihj7h6LKH1q1jsnO9z4MxfddtypKkIbg==",
+ "requires": {
+ "@babel/core": "^7.20.0",
+ "@babel/plugin-proposal-async-generator-functions": "^7.0.0",
+ "@babel/plugin-proposal-class-properties": "^7.18.0",
+ "@babel/plugin-proposal-export-default-from": "^7.0.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0",
+ "@babel/plugin-proposal-numeric-separator": "^7.0.0",
+ "@babel/plugin-proposal-object-rest-spread": "^7.20.0",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.20.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.0",
+ "@babel/plugin-syntax-export-default-from": "^7.0.0",
+ "@babel/plugin-syntax-flow": "^7.18.0",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-syntax-optional-chaining": "^7.0.0",
+ "@babel/plugin-transform-arrow-functions": "^7.0.0",
+ "@babel/plugin-transform-async-to-generator": "^7.20.0",
+ "@babel/plugin-transform-block-scoping": "^7.0.0",
+ "@babel/plugin-transform-classes": "^7.0.0",
+ "@babel/plugin-transform-computed-properties": "^7.0.0",
+ "@babel/plugin-transform-destructuring": "^7.20.0",
+ "@babel/plugin-transform-flow-strip-types": "^7.20.0",
+ "@babel/plugin-transform-function-name": "^7.0.0",
+ "@babel/plugin-transform-literals": "^7.0.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.0.0",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0",
+ "@babel/plugin-transform-parameters": "^7.0.0",
+ "@babel/plugin-transform-private-methods": "^7.22.5",
+ "@babel/plugin-transform-private-property-in-object": "^7.22.11",
+ "@babel/plugin-transform-react-display-name": "^7.0.0",
+ "@babel/plugin-transform-react-jsx": "^7.0.0",
+ "@babel/plugin-transform-react-jsx-self": "^7.0.0",
+ "@babel/plugin-transform-react-jsx-source": "^7.0.0",
+ "@babel/plugin-transform-runtime": "^7.0.0",
+ "@babel/plugin-transform-shorthand-properties": "^7.0.0",
+ "@babel/plugin-transform-spread": "^7.0.0",
+ "@babel/plugin-transform-sticky-regex": "^7.0.0",
+ "@babel/plugin-transform-typescript": "^7.5.0",
+ "@babel/plugin-transform-unicode-regex": "^7.0.0",
+ "@babel/template": "^7.0.0",
+ "@react-native/babel-plugin-codegen": "0.73.2",
+ "babel-plugin-transform-flow-enums": "^0.0.2",
+ "react-refresh": "^0.14.0"
+ },
+ "dependencies": {
+ "react-refresh": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz",
+ "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ=="
+ }
+ }
},
"@react-native/codegen": {
- "version": "0.72.6",
- "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.72.6.tgz",
- "integrity": "sha512-idTVI1es/oopN0jJT/0jB6nKdvTUKE3757zA5+NPXZTeB46CIRbmmos4XBiAec8ufu9/DigLPbHTYAaMNZJ6Ig==",
+ "version": "0.73.2",
+ "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.73.2.tgz",
+ "integrity": "sha512-lfy8S7umhE3QLQG5ViC4wg5N1Z+E6RnaeIw8w1voroQsXXGPB72IBozh8dAHR3+ceTxIU0KX3A8OpJI8e1+HpQ==",
"requires": {
"@babel/parser": "^7.20.0",
"flow-parser": "^0.206.0",
+ "glob": "^7.1.1",
+ "invariant": "^2.2.4",
"jscodeshift": "^0.14.0",
+ "mkdirp": "^0.5.1",
"nullthrows": "^1.1.1"
+ },
+ "dependencies": {
+ "mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "requires": {
+ "minimist": "^1.2.6"
+ }
+ }
+ }
+ },
+ "@react-native/community-cli-plugin": {
+ "version": "0.73.12",
+ "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.73.12.tgz",
+ "integrity": "sha512-xWU06OkC1cX++Duh/cD/Wv+oZ0oSY3yqbtxAqQA2H3Q+MQltNNJM6MqIHt1VOZSabRf/LVlR1JL6U9TXJirkaw==",
+ "requires": {
+ "@react-native-community/cli-server-api": "12.3.0",
+ "@react-native-community/cli-tools": "12.3.0",
+ "@react-native/dev-middleware": "0.73.7",
+ "@react-native/metro-babel-transformer": "0.73.13",
+ "chalk": "^4.0.0",
+ "execa": "^5.1.1",
+ "metro": "^0.80.3",
+ "metro-config": "^0.80.3",
+ "metro-core": "^0.80.3",
+ "node-fetch": "^2.2.0",
+ "readline": "^1.3.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==",
+ "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"
+ }
+ }
+ }
+ },
+ "@react-native/debugger-frontend": {
+ "version": "0.73.3",
+ "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.73.3.tgz",
+ "integrity": "sha512-RgEKnWuoo54dh7gQhV7kvzKhXZEhpF9LlMdZolyhGxHsBqZ2gXdibfDlfcARFFifPIiaZ3lXuOVVa4ei+uPgTw=="
+ },
+ "@react-native/dev-middleware": {
+ "version": "0.73.7",
+ "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.73.7.tgz",
+ "integrity": "sha512-BZXpn+qKp/dNdr4+TkZxXDttfx8YobDh8MFHsMk9usouLm22pKgFIPkGBV0X8Do4LBkFNPGtrnsKkWk/yuUXKg==",
+ "requires": {
+ "@isaacs/ttlcache": "^1.4.1",
+ "@react-native/debugger-frontend": "0.73.3",
+ "chrome-launcher": "^0.15.2",
+ "chromium-edge-launcher": "^1.0.0",
+ "connect": "^3.6.5",
+ "debug": "^2.2.0",
+ "node-fetch": "^2.2.0",
+ "open": "^7.0.3",
+ "serve-static": "^1.13.1",
+ "temp-dir": "^2.0.0"
+ },
+ "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=="
+ },
+ "open": {
+ "version": "7.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
+ "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
+ "requires": {
+ "is-docker": "^2.0.0",
+ "is-wsl": "^2.1.1"
+ }
+ }
}
},
"@react-native/gradle-plugin": {
- "version": "0.72.11",
- "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.72.11.tgz",
- "integrity": "sha512-P9iRnxiR2w7EHcZ0mJ+fmbPzMby77ZzV6y9sJI3lVLJzF7TLSdbwcQyD3lwMsiL+q5lKUHoZJS4sYmih+P2HXw=="
+ "version": "0.73.4",
+ "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.73.4.tgz",
+ "integrity": "sha512-PMDnbsZa+tD55Ug+W8CfqXiGoGneSSyrBZCMb5JfiB3AFST3Uj5e6lw8SgI/B6SKZF7lG0BhZ6YHZsRZ5MlXmg=="
},
"@react-native/js-polyfills": {
- "version": "0.72.1",
- "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.72.1.tgz",
- "integrity": "sha512-cRPZh2rBswFnGt5X5EUEPs0r+pAsXxYsifv/fgy9ZLQokuT52bPH+9xjDR+7TafRua5CttGW83wP4TntRcWNDA=="
+ "version": "0.73.1",
+ "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.73.1.tgz",
+ "integrity": "sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g=="
+ },
+ "@react-native/metro-babel-transformer": {
+ "version": "0.73.13",
+ "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.73.13.tgz",
+ "integrity": "sha512-k9AQifogQfgUXPlqQSoMtX2KUhniw4XvJl+nZ4hphCH7qiMDAwuP8OmkJbz5E/N+Ro9OFuLE7ax4GlwxaTsAWg==",
+ "requires": {
+ "@babel/core": "^7.20.0",
+ "@react-native/babel-preset": "0.73.19",
+ "hermes-parser": "0.15.0",
+ "nullthrows": "^1.1.1"
+ }
},
"@react-native/metro-config": {
- "version": "0.72.11",
- "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.72.11.tgz",
- "integrity": "sha512-661EyQnDdVelyc0qP/ew7kKkGAh6N6KlkuPLC2SQ8sxaXskVU6fSuNlpLW4bUTBUDFKG8gEOU2hp6rzk4wQnGQ==",
+ "version": "0.73.3",
+ "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.73.3.tgz",
+ "integrity": "sha512-aIVh+lM52n7/RFDXLDiIp1vI21jc9thm2VxdkP7KwxMut7VvW+2tO38zKt74/2ker2ca0205tbf3pyCYBvV6Ww==",
"dev": true,
"requires": {
- "@react-native/js-polyfills": "^0.72.1",
- "metro-config": "0.76.8",
- "metro-react-native-babel-transformer": "0.76.8",
- "metro-runtime": "0.76.8"
+ "@react-native/js-polyfills": "0.73.1",
+ "@react-native/metro-babel-transformer": "0.73.13",
+ "metro-config": "^0.80.3",
+ "metro-runtime": "^0.80.3"
}
},
"@react-native/normalize-color": {
@@ -63693,14 +62921,14 @@
"integrity": "sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA=="
},
"@react-native/normalize-colors": {
- "version": "0.72.0",
- "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.72.0.tgz",
- "integrity": "sha512-285lfdqSXaqKuBbbtP9qL2tDrfxdOFtIMvkKadtleRQkdOxx+uzGvFr82KHmc/sSiMtfXGp7JnFYWVh4sFl7Yw=="
+ "version": "0.73.2",
+ "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.73.2.tgz",
+ "integrity": "sha512-bRBcb2T+I88aG74LMVHaKms2p/T8aQd8+BZ7LuuzXlRfog1bMWWn/C5i0HVuvW4RPtXQYgIlGiXVDy9Ir1So/w=="
},
"@react-native/virtualized-lists": {
- "version": "0.72.8",
- "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.72.8.tgz",
- "integrity": "sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw==",
+ "version": "0.73.4",
+ "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.73.4.tgz",
+ "integrity": "sha512-HpmLg1FrEiDtrtAbXiwCgXFYyloK/dOIPIuWW3fsqukwJEWAiTzm1nXGJ7xPU5XTHiWZ4sKup5Ebaj8z7iyWog==",
"requires": {
"invariant": "^2.2.4",
"nullthrows": "^1.1.1"
@@ -63805,6 +63033,107 @@
}
}
},
+ "@remix-run/node": {
+ "version": "1.19.3",
+ "resolved": "https://registry.npmjs.org/@remix-run/node/-/node-1.19.3.tgz",
+ "integrity": "sha512-z5qrVL65xLXIUpU4mkR4MKlMeKARLepgHAk4W5YY3IBXOreRqOGUC70POViYmY7x38c2Ia1NwqL80H+0h7jbMw==",
+ "requires": {
+ "@remix-run/server-runtime": "1.19.3",
+ "@remix-run/web-fetch": "^4.3.6",
+ "@remix-run/web-file": "^3.0.3",
+ "@remix-run/web-stream": "^1.0.4",
+ "@web3-storage/multipart-parser": "^1.0.0",
+ "abort-controller": "^3.0.0",
+ "cookie-signature": "^1.1.0",
+ "source-map-support": "^0.5.21",
+ "stream-slice": "^0.1.2"
+ },
+ "dependencies": {
+ "cookie-signature": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.1.tgz",
+ "integrity": "sha512-78KWk9T26NhzXtuL26cIJ8/qNHANyJ/ZYrmEXFzUmhZdjpBv+DlWlOANRTGBt48YcyslsLrj0bMLFTmXvLRCOw=="
+ }
+ }
+ },
+ "@remix-run/router": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.7.2.tgz",
+ "integrity": "sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A=="
+ },
+ "@remix-run/server-runtime": {
+ "version": "1.19.3",
+ "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-1.19.3.tgz",
+ "integrity": "sha512-KzQ+htUsKqpBgKE2tWo7kIIGy3MyHP58Io/itUPvV+weDjApwr9tQr9PZDPA3yAY6rAzLax7BU0NMSYCXWFY5A==",
+ "requires": {
+ "@remix-run/router": "1.7.2",
+ "@types/cookie": "^0.4.1",
+ "@web3-storage/multipart-parser": "^1.0.0",
+ "cookie": "^0.4.1",
+ "set-cookie-parser": "^2.4.8",
+ "source-map": "^0.7.3"
+ },
+ "dependencies": {
+ "cookie": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
+ "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA=="
+ },
+ "source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA=="
+ }
+ }
+ },
+ "@remix-run/web-blob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@remix-run/web-blob/-/web-blob-3.1.0.tgz",
+ "integrity": "sha512-owGzFLbqPH9PlKb8KvpNJ0NO74HWE2euAn61eEiyCXX/oteoVzTVSN8mpLgDjaxBf2btj5/nUllSUgpyd6IH6g==",
+ "requires": {
+ "@remix-run/web-stream": "^1.1.0",
+ "web-encoding": "1.1.5"
+ }
+ },
+ "@remix-run/web-fetch": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/@remix-run/web-fetch/-/web-fetch-4.4.2.tgz",
+ "integrity": "sha512-jgKfzA713/4kAW/oZ4bC3MoLWyjModOVDjFPNseVqcJKSafgIscrYL9G50SurEYLswPuoU3HzSbO0jQCMYWHhA==",
+ "requires": {
+ "@remix-run/web-blob": "^3.1.0",
+ "@remix-run/web-file": "^3.1.0",
+ "@remix-run/web-form-data": "^3.1.0",
+ "@remix-run/web-stream": "^1.1.0",
+ "@web3-storage/multipart-parser": "^1.0.0",
+ "abort-controller": "^3.0.0",
+ "data-uri-to-buffer": "^3.0.1",
+ "mrmime": "^1.0.0"
+ }
+ },
+ "@remix-run/web-file": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@remix-run/web-file/-/web-file-3.1.0.tgz",
+ "integrity": "sha512-dW2MNGwoiEYhlspOAXFBasmLeYshyAyhIdrlXBi06Duex5tDr3ut2LFKVj7tyHLmn8nnNwFf1BjNbkQpygC2aQ==",
+ "requires": {
+ "@remix-run/web-blob": "^3.1.0"
+ }
+ },
+ "@remix-run/web-form-data": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@remix-run/web-form-data/-/web-form-data-3.1.0.tgz",
+ "integrity": "sha512-NdeohLMdrb+pHxMQ/Geuzdp0eqPbea+Ieo8M8Jx2lGC6TBHsgHzYcBvr0LyPdPVycNRDEpWpiDdCOdCryo3f9A==",
+ "requires": {
+ "web-encoding": "1.1.5"
+ }
+ },
+ "@remix-run/web-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@remix-run/web-stream/-/web-stream-1.1.0.tgz",
+ "integrity": "sha512-KRJtwrjRV5Bb+pM7zxcTJkhIqWWSy+MYsIxHK+0m5atcznsf15YwUBWHWulZerV2+vvHH1Lp1DD7pw6qKW8SgA==",
+ "requires": {
+ "web-streams-polyfill": "^3.1.1"
+ }
+ },
"@rnmapbox/maps": {
"version": "10.0.11",
"resolved": "https://registry.npmjs.org/@rnmapbox/maps/-/maps-10.0.11.tgz",
@@ -63885,9 +63214,9 @@
}
},
"@shopify/flash-list": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/@shopify/flash-list/-/flash-list-1.6.1.tgz",
- "integrity": "sha512-SlBlpP7+zol6D1SKaf402aS30Qgwdjwb8/Qn2CupYwXnTcu2l8TiXB766vcsIvKTqUO7ELfQnCwCq8NXx55FsQ==",
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/@shopify/flash-list/-/flash-list-1.6.3.tgz",
+ "integrity": "sha512-XM2iu4CeD9SOEUxaGG3UkxfUxGPWG9yacga1yQSgskAjUsRDFTsD3y4Dyon9n8MfDwgrRpEwuijd+7NeQQoWaQ==",
"requires": {
"recyclerlistview": "4.2.0",
"tslib": "2.4.0"
@@ -71243,6 +70572,11 @@
"@types/node": "*"
}
},
+ "@types/cookie": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
+ "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q=="
+ },
"@types/debug": {
"version": "4.1.8",
"resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz",
@@ -71630,9 +70964,9 @@
"dev": true
},
"@types/react": {
- "version": "18.2.12",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.12.tgz",
- "integrity": "sha512-ndmBMLCgn38v3SntMeoJaIrO6tGHYKMEBohCUmw8HoLLQdRMOIGXfeYaBTLe2lsFaSB3MOK1VXscYFnmLtTSmw==",
+ "version": "18.2.45",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.45.tgz",
+ "integrity": "sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==",
"requires": {
"@types/prop-types": "*",
"@types/scheduler": "*",
@@ -72264,6 +71598,11 @@
"integrity": "sha512-RoorRB50WehYbsiWu497q8egZBYlrvOo9KBUG41uth4O023Cbs+7POLm9uw2CAiViBAIhvpw1Y4w4i+MZxOfXw==",
"requires": {}
},
+ "@web3-storage/multipart-parser": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@web3-storage/multipart-parser/-/multipart-parser-1.0.0.tgz",
+ "integrity": "sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw=="
+ },
"@webassemblyjs/ast": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz",
@@ -72604,6 +71943,12 @@
"resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz",
"integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ=="
},
+ "@zxing/text-encoding": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz",
+ "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==",
+ "optional": true
+ },
"7zip-bin": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz",
@@ -73795,6 +73140,7 @@
},
"babel-plugin-module-resolver": {
"version": "5.0.0",
+ "dev": true,
"requires": {
"find-babel-config": "^2.0.0",
"glob": "^8.0.3",
@@ -73805,6 +73151,7 @@
"dependencies": {
"brace-expansion": {
"version": "2.0.1",
+ "dev": true,
"requires": {
"balanced-match": "^1.0.0"
}
@@ -73813,6 +73160,7 @@
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
"integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+ "dev": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -73825,6 +73173,7 @@
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "dev": true,
"requires": {
"brace-expansion": "^2.0.1"
}
@@ -73960,18 +73309,26 @@
}
},
"babel-preset-expo": {
- "version": "9.5.2",
- "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-9.5.2.tgz",
- "integrity": "sha512-hU1G1TDiikuXV6UDZjPnX+WdbjbtidDiYhftMEVrZQSst45pDPVBWbM41TUKrpJMwv4FypsLzK+378gnMPRVWQ==",
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-10.0.1.tgz",
+ "integrity": "sha512-uWIGmLfbP3dS5+8nesxaW6mQs41d4iP7X82ZwRdisB/wAhKQmuJM9Y1jQe4006uNYkw6Phf2TT03ykLVro7KuQ==",
"requires": {
"@babel/plugin-proposal-decorators": "^7.12.9",
- "@babel/plugin-proposal-export-namespace-from": "^7.18.9",
- "@babel/plugin-proposal-object-rest-spread": "^7.12.13",
- "@babel/plugin-transform-react-jsx": "^7.12.17",
+ "@babel/plugin-transform-export-namespace-from": "^7.22.11",
+ "@babel/plugin-transform-object-rest-spread": "^7.12.13",
+ "@babel/plugin-transform-parameters": "^7.22.15",
"@babel/preset-env": "^7.20.0",
- "babel-plugin-module-resolver": "^5.0.0",
+ "@babel/preset-react": "^7.22.15",
+ "@react-native/babel-preset": "^0.73.18",
"babel-plugin-react-native-web": "~0.18.10",
- "metro-react-native-babel-preset": "0.76.8"
+ "react-refresh": "0.14.0"
+ },
+ "dependencies": {
+ "react-refresh": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz",
+ "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ=="
+ }
}
},
"babel-preset-fbjs": {
@@ -74157,6 +73514,11 @@
"resolved": "https://registry.npmjs.org/base-64/-/base-64-0.1.0.tgz",
"integrity": "sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA=="
},
+ "base64-arraybuffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
+ "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ=="
+ },
"base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
@@ -75133,11 +74495,35 @@
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
"integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="
},
+ "chrome-launcher": {
+ "version": "0.15.2",
+ "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz",
+ "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==",
+ "requires": {
+ "@types/node": "*",
+ "escape-string-regexp": "^4.0.0",
+ "is-wsl": "^2.2.0",
+ "lighthouse-logger": "^1.0.0"
+ }
+ },
"chrome-trace-event": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
"integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg=="
},
+ "chromium-edge-launcher": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz",
+ "integrity": "sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA==",
+ "requires": {
+ "@types/node": "*",
+ "escape-string-regexp": "^4.0.0",
+ "is-wsl": "^2.2.0",
+ "lighthouse-logger": "^1.0.0",
+ "mkdirp": "^1.0.4",
+ "rimraf": "^3.0.2"
+ }
+ },
"chromium-pickle-js": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz",
@@ -75288,9 +74674,9 @@
}
},
"cli-spinners": {
- "version": "2.9.1",
- "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz",
- "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ=="
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz",
+ "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg=="
},
"cli-table3": {
"version": "0.6.3",
@@ -75320,9 +74706,9 @@
"dev": true
},
"clipboard": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.4.tgz",
- "integrity": "sha512-Vw26VSLRpJfBofiVaFb/I8PVfdI1OxKcYShe6fm0sP/DtmiWQNCjhM/okTvdCo0G+lMMm1rMYbk4IK4x1X+kgQ==",
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz",
+ "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==",
"requires": {
"good-listener": "^1.2.2",
"select": "^1.1.2",
@@ -75561,11 +74947,6 @@
"integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==",
"dev": true
},
- "compare-versions": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz",
- "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA=="
- },
"complex.js": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.1.1.tgz",
@@ -75579,9 +74960,9 @@
"devOptional": true
},
"component-type": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/component-type/-/component-type-1.2.1.tgz",
- "integrity": "sha512-Kgy+2+Uwr75vAi6ChWXgHuLvd+QLD7ssgpaRq2zCvt80ptvAfMc/hijcJxXkBa2wMlEZcJvC2H8Ubo+A9ATHIg=="
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/component-type/-/component-type-1.2.2.tgz",
+ "integrity": "sha512-99VUHREHiN5cLeHm3YLq312p6v+HUEcwtLCAtelvUDI6+SH5g5Cr85oNR2S1o6ywzL0ykMbuwLzM2ANocjEOIA=="
},
"compressible": {
"version": "2.0.18",
@@ -76379,6 +75760,14 @@
"isobject": "^3.0.1"
}
},
+ "css-line-break": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz",
+ "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
+ "requires": {
+ "utrie": "^1.0.2"
+ }
+ },
"css-loader": {
"version": "6.8.1",
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz",
@@ -76594,6 +75983,11 @@
"integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
"dev": true
},
+ "data-uri-to-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz",
+ "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og=="
+ },
"data-urls": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz",
@@ -77249,8 +76643,7 @@
"eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
- "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
- "dev": true
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
},
"ee-first": {
"version": "1.1.1",
@@ -77625,7 +77018,9 @@
"dev": true
},
"envinfo": {
- "version": "7.8.1"
+ "version": "7.11.0",
+ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz",
+ "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg=="
},
"eol": {
"version": "0.9.1",
@@ -79272,36 +78667,26 @@
}
},
"expensify-common": {
- "version": "git+ssh://git@github.com/Expensify/expensify-common.git#398bf7c6a6d37f229a41d92bd7a4324c0fd32849",
- "integrity": "sha512-H7UrLgWIr8mCoPc1oxbeYW2RwLzUWI6jdjbV6cRnrlp8cDW3IyZISF+BQSPFDj7bMhNAbczQPtEOE1gld21Cvg==",
- "from": "expensify-common@git+ssh://git@github.com/Expensify/expensify-common.git#398bf7c6a6d37f229a41d92bd7a4324c0fd32849",
+ "version": "git+ssh://git@github.com/Expensify/expensify-common.git#c6bb3cfa56d12af9fa02e2bfc729646f5b64ef44",
+ "integrity": "sha512-a/UBkrerB57nB9xbBrFIeJG3IN0lVZV+/JWNbGMfT0FHxtg8/4sGWdC+AHqR3Bm01gwt67dd2csFferlZmTIsg==",
+ "from": "expensify-common@git+ssh://git@github.com/Expensify/expensify-common.git#c6bb3cfa56d12af9fa02e2bfc729646f5b64ef44",
"requires": {
"classnames": "2.3.1",
- "clipboard": "2.0.4",
- "html-entities": "^2.3.3",
+ "clipboard": "2.0.11",
+ "html-entities": "^2.4.0",
"jquery": "3.6.0",
"localforage": "^1.10.0",
"lodash": "4.17.21",
- "prop-types": "15.7.2",
+ "prop-types": "15.8.1",
"react": "16.12.0",
"react-dom": "16.12.0",
- "semver": "^7.3.5",
+ "semver": "^7.5.2",
"simply-deferred": "git+https://github.com/Expensify/simply-deferred.git#77a08a95754660c7bd6e0b6979fdf84e8e831bf5",
- "string.prototype.replaceall": "^1.0.6",
+ "string.prototype.replaceall": "^1.0.8",
"ua-parser-js": "^1.0.35",
"underscore": "1.13.6"
},
"dependencies": {
- "prop-types": {
- "version": "15.7.2",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
- "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
- "requires": {
- "loose-envify": "^1.4.0",
- "object-assign": "^4.1.1",
- "react-is": "^16.8.1"
- }
- },
"react": {
"version": "16.12.0",
"resolved": "https://registry.npmjs.org/react/-/react-16.12.0.tgz",
@@ -79340,30 +78725,25 @@
}
},
"expo": {
- "version": "49.0.21",
- "resolved": "https://registry.npmjs.org/expo/-/expo-49.0.21.tgz",
- "integrity": "sha512-JpHL6V0yt8/fzsmkAdPdtsah+lU6Si4ac7MDklLYvzEil7HAFEsN/pf06wQ21ax4C+BL27hI6JJoD34tzXUCJA==",
+ "version": "50.0.0-preview.7",
+ "resolved": "https://registry.npmjs.org/expo/-/expo-50.0.0-preview.7.tgz",
+ "integrity": "sha512-FyoEJVf42Tr1On0IFa0dL7Qs9gnl252ah3e0B8FsU96G7Hi93cDz5Rcn81ezRiO6YIF4nFV3+bh6BHsm/nsA0A==",
"requires": {
"@babel/runtime": "^7.20.0",
- "@expo/cli": "0.10.16",
- "@expo/config": "8.1.2",
- "@expo/config-plugins": "7.2.5",
+ "@expo/cli": "0.16.5",
+ "@expo/config": "8.5.2",
+ "@expo/config-plugins": "7.8.2",
+ "@expo/metro-config": "0.17.1",
"@expo/vector-icons": "^13.0.0",
- "babel-preset-expo": "~9.5.2",
- "expo-application": "~5.3.0",
- "expo-asset": "~8.10.1",
- "expo-constants": "~14.4.2",
- "expo-file-system": "~15.4.5",
- "expo-font": "~11.4.0",
- "expo-keep-awake": "~12.3.0",
- "expo-modules-autolinking": "1.5.1",
- "expo-modules-core": "1.5.12",
+ "babel-preset-expo": "~10.0.1",
+ "expo-asset": "~9.0.1",
+ "expo-file-system": "~16.0.2",
+ "expo-font": "~11.10.0",
+ "expo-keep-awake": "~12.8.0",
+ "expo-modules-autolinking": "1.9.0",
+ "expo-modules-core": "1.11.4",
"fbemitter": "^3.0.0",
- "invariant": "^2.2.4",
- "md5-file": "^3.2.3",
- "node-fetch": "^2.6.7",
- "pretty-format": "^26.5.2",
- "uuid": "^3.4.0"
+ "whatwg-url-without-unicode": "8.0.0-3"
},
"dependencies": {
"@babel/code-frame": {
@@ -79375,13 +78755,14 @@
}
},
"@expo/config-plugins": {
- "version": "7.2.5",
- "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.2.5.tgz",
- "integrity": "sha512-w+5ccu1IxBHgyQk9CPFKLZOk8yZQEyTjbJwOzESK1eR7QwosbcsLkN1c1WWUZYiCXwORu3UTwJYll4+X2xxJhQ==",
- "requires": {
- "@expo/config-types": "^49.0.0-alpha.1",
- "@expo/json-file": "~8.2.37",
- "@expo/plist": "^0.0.20",
+ "version": "7.8.2",
+ "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.8.2.tgz",
+ "integrity": "sha512-XM2eXA5EvcpmXFCui48+bVy8GTskYSjPf2yC+LliYv8PDcedu7+pdgmbnvH4eZCyHfTMO8/UiF+w8e5WgOEj5A==",
+ "requires": {
+ "@expo/config-types": "^50.0.0-alpha.1",
+ "@expo/fingerprint": "^0.6.0",
+ "@expo/json-file": "~8.3.0",
+ "@expo/plist": "^0.1.0",
"@expo/sdk-runtime-versions": "^1.0.0",
"@react-native/normalize-color": "^2.0.0",
"chalk": "^4.1.2",
@@ -79392,19 +78773,20 @@
"resolve-from": "^5.0.0",
"semver": "^7.5.3",
"slash": "^3.0.0",
+ "slugify": "^1.6.6",
"xcode": "^3.0.1",
"xml2js": "0.6.0"
}
},
"@expo/config-types": {
- "version": "49.0.0",
- "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-49.0.0.tgz",
- "integrity": "sha512-8eyREVi+K2acnMBe/rTIu1dOfyR2+AMnTLHlut+YpMV9OZPdeKV0Bs9BxAewGqBA2slslbQ9N39IS2CuTKpXkA=="
+ "version": "50.0.0",
+ "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-50.0.0.tgz",
+ "integrity": "sha512-0kkhIwXRT6EdFDwn+zTg9R2MZIAEYGn1MVkyRohAd+C9cXOb5RA8WLQi7vuxKF9m1SMtNAUrf0pO+ENK0+/KSw=="
},
"@expo/json-file": {
- "version": "8.2.37",
- "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz",
- "integrity": "sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==",
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.0.tgz",
+ "integrity": "sha512-yROUeXJXR5goagB8c3muFLCzLmdGOvoPpR5yDNaXrnTp4euNykr9yW0wWhJx4YVRTNOPtGBnEbbJBW+a9q+S6g==",
"requires": {
"@babel/code-frame": "~7.10.4",
"json5": "^2.2.2",
@@ -79412,20 +78794,15 @@
}
},
"@expo/plist": {
- "version": "0.0.20",
- "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.20.tgz",
- "integrity": "sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA==",
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.1.0.tgz",
+ "integrity": "sha512-xWD+8vIFif0wKyuqe3fmnmnSouXYucciZXFzS0ZD5OV9eSAS1RGQI5FaGGJ6zxJ4mpdy/4QzbLdBjnYE5vxA0g==",
"requires": {
"@xmldom/xmldom": "~0.7.7",
"base64-js": "^1.2.3",
"xmlbuilder": "^14.0.0"
}
},
- "ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
- },
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -79461,22 +78838,6 @@
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
},
- "pretty-format": {
- "version": "26.6.2",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz",
- "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==",
- "requires": {
- "@jest/types": "^26.6.2",
- "ansi-regex": "^5.0.0",
- "ansi-styles": "^4.0.0",
- "react-is": "^17.0.1"
- }
- },
- "react-is": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
- "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
- },
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -79485,11 +78846,6 @@
"has-flag": "^4.0.0"
}
},
- "uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
- },
"xml2js": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz",
@@ -79508,90 +78864,61 @@
}
}
},
- "expo-application": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-5.3.1.tgz",
- "integrity": "sha512-HR2+K+Hm33vLw/TfbFaHrvUbRRNRco8R+3QaCKy7eJC2LFfT05kZ15ynGaKfB5DJ/oqPV3mxXVR/EfwmE++hoA==",
- "requires": {}
- },
"expo-asset": {
- "version": "8.10.1",
- "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-8.10.1.tgz",
- "integrity": "sha512-5VMTESxgY9GBsspO/esY25SKEa7RyascVkLe/OcL1WgblNFm7xCCEEUIW8VWS1nHJQGYxpMZPr3bEfjMpdWdyA==",
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-9.0.1.tgz",
+ "integrity": "sha512-hoCzQ8ga6ZOmkwABQeAIStXmshpK+1oNpGNNeJCJ1QdoU6hlCu6DKnikreLZYr6FQzaQTS3yel86zuRQtwNpaQ==",
"requires": {
+ "@react-native/assets-registry": "~0.73.1",
"blueimp-md5": "^2.10.0",
- "expo-constants": "~14.4.2",
- "expo-file-system": "~15.4.0",
+ "expo-constants": "~15.4.0",
+ "expo-file-system": "~16.0.0",
"invariant": "^2.2.4",
- "md5-file": "^3.2.3",
- "path-browserify": "^1.0.0",
- "url-parse": "^1.5.9"
- },
- "dependencies": {
- "path-browserify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
- "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
- }
+ "md5-file": "^3.2.3"
}
},
"expo-constants": {
- "version": "14.4.2",
- "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-14.4.2.tgz",
- "integrity": "sha512-nOB122DOAjk+KrJT69lFQAoYVQGQjFHSigCPVBzVdko9S1xGsfiOH9+X5dygTsZTIlVLpQJDdmZ7ONiv3i+26w==",
+ "version": "15.4.2",
+ "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-15.4.2.tgz",
+ "integrity": "sha512-goJ44MsjRkJQbi/w49n7HIsBnp7Caa4mPMDUgTwk07BCUM5yKPb3Ny2/0QsaUcqBNgke2IXxr4OhqDYLd1jWOQ==",
"requires": {
- "@expo/config": "~8.1.0",
- "uuid": "^3.3.2"
- },
- "dependencies": {
- "uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
- }
+ "@expo/config": "~8.5.0"
}
},
"expo-file-system": {
- "version": "15.4.5",
- "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-15.4.5.tgz",
- "integrity": "sha512-xy61KaTaDgXhT/dllwYDHm3ch026EyO8j4eC6wSVr/yE12MMMxAC09yGwy4f7kkOs6ztGVQF5j7ldRzNLN4l0Q==",
- "requires": {
- "uuid": "^3.4.0"
- },
- "dependencies": {
- "uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
- }
- }
+ "version": "16.0.2",
+ "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-16.0.2.tgz",
+ "integrity": "sha512-oqiM3aq4mGugdv6DRH0wjrULWdZFm4EMLgKmR24on/f9ZCDG9VB3waSy+9J3XaDTAXBaB9ta82ACnNzk8KPdMw==",
+ "requires": {}
},
"expo-font": {
- "version": "11.4.0",
- "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-11.4.0.tgz",
- "integrity": "sha512-nkmezCFD7gR/I6R+e3/ry18uEfF8uYrr6h+PdBJu+3dawoLOpo+wFb/RG9bHUekU1/cPanR58LR7G5MEMKHR2w==",
+ "version": "11.10.0",
+ "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-11.10.0.tgz",
+ "integrity": "sha512-yqlsoOKWiYv8aBMFqheHSUKKEY/lrB7zHjzDc60OF1xGa1q8kh7mKQVwSaRMS0G77GEUvvk8Vb/uKw51KY1kGA==",
"requires": {
"fontfaceobserver": "^2.1.0"
}
},
"expo-image": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-1.8.1.tgz",
- "integrity": "sha512-YHoP3F6zRcI9ULjB84jPt62ggSrdGLtpSxZTUxwmfI+WfuucNd/zqqXx0edsCyREIA6VvoyWBT48BBgvi+H1TA==",
- "requires": {}
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-1.10.1.tgz",
+ "integrity": "sha512-NwJt2FS6sZXeP92RpsZxBKSnCPWMdcJ2Q2bXHc8WgOkLLInvRd0yBKAzEusXTZ6+N+RqAcWVojlh3EBbSQhkiA==",
+ "requires": {
+ "@react-native/assets-registry": "~0.73.1"
+ }
},
"expo-keep-awake": {
- "version": "12.3.0",
- "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-12.3.0.tgz",
- "integrity": "sha512-ujiJg1p9EdCOYS05jh5PtUrfiZnK0yyLy+UewzqrjUqIT8eAGMQbkfOn3C3fHE7AKd5AefSMzJnS3lYZcZYHDw==",
+ "version": "12.8.0",
+ "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-12.8.0.tgz",
+ "integrity": "sha512-KMk9nnOEEI2w4aYr/PMnLT6ryXwmHfsb/baeHX/RSLNBZ4a5JVkNXP+mT66UNnYfXxy3pABruusd7KjeKW+F0A==",
"requires": {}
},
"expo-modules-autolinking": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.5.1.tgz",
- "integrity": "sha512-yt5a1VCp2BF9CrsO689PCD5oXKP14MMhnOanQMvDn4BDpURYfzAlDVGC5fZrNQKtwn/eq3bcrxIwZ7D9QjVVRg==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.9.0.tgz",
+ "integrity": "sha512-FVRuclmR7w6FZRXZmTwPdIr9PNCP7FUWMhpzaxbKU/xm7DbNw5ORAv2gaM8t9OaMxYjIAMSNYi0NnmLIinzBKA==",
"requires": {
- "@expo/config": "~8.1.0",
+ "@expo/config": "~8.5.0",
"chalk": "^4.1.0",
"commander": "^7.2.0",
"fast-glob": "^3.2.5",
@@ -79650,11 +78977,10 @@
}
},
"expo-modules-core": {
- "version": "1.5.12",
- "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.5.12.tgz",
- "integrity": "sha512-mY4wTDU458dhwk7IVxLNkePlYXjs9BTgk4NQHBUXf0LapXsvr+i711qPZaFNO4egf5qq6fQV+Yfd/KUguHstnQ==",
+ "version": "1.11.4",
+ "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.11.4.tgz",
+ "integrity": "sha512-MeDvWvdI3cHJO2VsASXsNYVoou1sdEO/SGBdLh2lxRhNpCLB0IIEZ3uPZwQQ8WBfFyPk4QT7M3XhCdPCKaT21A==",
"requires": {
- "compare-versions": "^3.4.0",
"invariant": "^2.2.4"
}
},
@@ -79894,9 +79220,9 @@
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="
},
"fast-xml-parser": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.1.tgz",
- "integrity": "sha512-viVv3xb8D+SiS1W4cv4tva3bni08kAkx0gQnWrykMM8nXPc1FxqZPU00dCEVjkiCg4HoXd2jC4x29Nzg/l2DAA==",
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.2.tgz",
+ "integrity": "sha512-rmrXUXwbJedoXkStenj1kkljNF7ugn5ZjR9FJcwmCfcCbtOMDghPajbc+Tck6vE6F5XsDmx+Pr2le9fw8+pXBg==",
"requires": {
"strnum": "^1.0.5"
}
@@ -80122,13 +79448,15 @@
},
"find-babel-config": {
"version": "2.0.0",
+ "dev": true,
"requires": {
"json5": "^2.1.1",
"path-exists": "^4.0.0"
},
"dependencies": {
"path-exists": {
- "version": "4.0.0"
+ "version": "4.0.0",
+ "dev": true
}
}
},
@@ -80226,9 +79554,9 @@
"dev": true
},
"flow-enums-runtime": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.5.tgz",
- "integrity": "sha512-PSZF9ZuaZD03sT9YaIs0FrGJ7lSUw7rHZIex+73UYVXg46eL/wxN5PaVcPJFudE2cJu5f0fezitV5aBkLHPUOQ=="
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz",
+ "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw=="
},
"flow-parser": {
"version": "0.206.0",
@@ -81196,16 +80524,16 @@
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
},
"hermes-estree": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.12.0.tgz",
- "integrity": "sha512-+e8xR6SCen0wyAKrMT3UD0ZCCLymKhRgjEB5sS28rKiFir/fXgLoeRilRUssFCILmGHb+OvHDUlhxs0+IEyvQw=="
+ "version": "0.15.0",
+ "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.15.0.tgz",
+ "integrity": "sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ=="
},
"hermes-parser": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.12.0.tgz",
- "integrity": "sha512-d4PHnwq6SnDLhYl3LHNHvOg7nQ6rcI7QVil418REYksv0Mh3cEkHDcuhGxNQ3vgnLSLl4QSvDrFCwQNYdpWlzw==",
+ "version": "0.15.0",
+ "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.15.0.tgz",
+ "integrity": "sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q==",
"requires": {
- "hermes-estree": "0.12.0"
+ "hermes-estree": "0.15.0"
}
},
"hermes-profile-transformer": {
@@ -81283,9 +80611,9 @@
}
},
"html-entities": {
- "version": "2.3.5",
- "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.5.tgz",
- "integrity": "sha512-72TJlcMkYsEJASa/3HnX7VT59htM7iSHbH59NSZbtc+22Ap0Txnlx91sfeB+/A7wNZg7UxtZdhAW4y+/jimrdg=="
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz",
+ "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ=="
},
"html-escaper": {
"version": "2.0.2",
@@ -81342,6 +80670,15 @@
}
}
},
+ "html2canvas": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz",
+ "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
+ "requires": {
+ "css-line-break": "^2.1.0",
+ "text-segmentation": "^1.0.3"
+ }
+ },
"htmlparser2": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz",
@@ -81731,9 +81068,9 @@
"integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ=="
},
"image-size": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz",
- "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz",
+ "integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==",
"requires": {
"queue": "6.0.2"
}
@@ -82110,7 +81447,6 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
"integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
- "dev": true,
"requires": {
"call-bind": "^1.0.2",
"has-tostringtag": "^1.0.0"
@@ -82306,7 +81642,6 @@
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
"integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
- "dev": true,
"requires": {
"has-tostringtag": "^1.0.0"
}
@@ -82691,10 +82026,9 @@
}
},
"jackspeak": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz",
- "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==",
- "dev": true,
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
+ "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
"requires": {
"@isaacs/cliui": "^8.0.2",
"@pkgjs/parseargs": "^0.11.0"
@@ -83375,20 +82709,24 @@
}
},
"jest-environment-node": {
- "version": "29.4.1",
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz",
+ "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==",
"requires": {
- "@jest/environment": "^29.4.1",
- "@jest/fake-timers": "^29.4.1",
- "@jest/types": "^29.4.1",
+ "@jest/environment": "^29.7.0",
+ "@jest/fake-timers": "^29.7.0",
+ "@jest/types": "^29.6.3",
"@types/node": "*",
- "jest-mock": "^29.4.1",
- "jest-util": "^29.4.1"
+ "jest-mock": "^29.7.0",
+ "jest-util": "^29.7.0"
},
"dependencies": {
"@jest/types": {
- "version": "29.4.1",
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
+ "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
"requires": {
- "@jest/schemas": "^29.4.0",
+ "@jest/schemas": "^29.6.3",
"@types/istanbul-lib-coverage": "^2.0.0",
"@types/istanbul-reports": "^3.0.0",
"@types/node": "*",
@@ -83397,9 +82735,9 @@
}
},
"@types/yargs": {
- "version": "17.0.24",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz",
- "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==",
+ "version": "17.0.31",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.31.tgz",
+ "integrity": "sha512-bocYSx4DI8TmdlvxqGpVNXOgCNR1Jj0gNPhhAY+iz1rgKDAaYrAYdFYnhDV1IFuiuVc9HkOwyDcFxaTElF3/wg==",
"requires": {
"@types/yargs-parser": "*"
}
@@ -83450,11 +82788,12 @@
}
},
"jest-expo": {
- "version": "49.0.0",
- "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-49.0.0.tgz",
- "integrity": "sha512-nglYg6QPYSqCsrsOFiGosQi+m1rrqmYluPbFXNnXNEOrB2MvxMOgQJeWfMHDExHMX1ymLWX+7y8mYo6XVJpBJQ==",
+ "version": "50.0.1",
+ "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-50.0.1.tgz",
+ "integrity": "sha512-osvA63UDLJ/v7MG9UHjU7WJ0oZ0Krq9UhXxm2s6rdOlnt85ARocyMU57RC0T0yzPN47C9Ref45sEeOIxoV4Mzg==",
"requires": {
- "@expo/config": "~8.1.0",
+ "@expo/config": "~8.5.0",
+ "@expo/json-file": "^8.2.37",
"@jest/create-cache-key-function": "^29.2.1",
"babel-jest": "^29.2.1",
"find-up": "^5.0.0",
@@ -83463,7 +82802,28 @@
"jest-watch-typeahead": "2.2.1",
"json5": "^2.2.3",
"lodash": "^4.17.19",
- "react-test-renderer": "18.2.0"
+ "react-test-renderer": "18.2.0",
+ "stacktrace-js": "^2.0.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/json-file": {
+ "version": "8.2.37",
+ "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz",
+ "integrity": "sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==",
+ "requires": {
+ "@babel/code-frame": "~7.10.4",
+ "json5": "^2.2.2",
+ "write-file-atomic": "^2.3.0"
+ }
+ }
}
},
"jest-get-type": {
@@ -83641,17 +83001,17 @@
}
},
"jest-message-util": {
- "version": "29.6.2",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.2.tgz",
- "integrity": "sha512-vnIGYEjoPSuRqV8W9t+Wow95SDp6KPX2Uf7EoeG9G99J2OVh7OSwpS4B6J0NfpEIpfkBNHlBZpA2rblEuEFhZQ==",
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz",
+ "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==",
"requires": {
"@babel/code-frame": "^7.12.13",
- "@jest/types": "^29.6.1",
+ "@jest/types": "^29.6.3",
"@types/stack-utils": "^2.0.0",
"chalk": "^4.0.0",
"graceful-fs": "^4.2.9",
"micromatch": "^4.0.4",
- "pretty-format": "^29.6.2",
+ "pretty-format": "^29.7.0",
"slash": "^3.0.0",
"stack-utils": "^2.0.3"
},
@@ -83723,13 +83083,13 @@
}
},
"jest-mock": {
- "version": "29.6.2",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.2.tgz",
- "integrity": "sha512-hoSv3lb3byzdKfwqCuT6uTscan471GUECqgNYykg6ob0yiAw3zYc7OrPnI9Qv8Wwoa4lC7AZ9hyS4AiIx5U2zg==",
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz",
+ "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==",
"requires": {
- "@jest/types": "^29.6.1",
+ "@jest/types": "^29.6.3",
"@types/node": "*",
- "jest-util": "^29.6.2"
+ "jest-util": "^29.7.0"
},
"dependencies": {
"@jest/types": {
@@ -84192,9 +83552,9 @@
"requires": {}
},
"jest-util": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.3.tgz",
- "integrity": "sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==",
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz",
+ "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==",
"requires": {
"@jest/types": "^29.6.3",
"@types/node": "*",
@@ -84628,9 +83988,9 @@
"dev": true
},
"joi": {
- "version": "17.10.2",
- "resolved": "https://registry.npmjs.org/joi/-/joi-17.10.2.tgz",
- "integrity": "sha512-hcVhjBxRNW/is3nNLdGLIjkgXetkeGc2wyhydhz8KumG23Aerk4HPjU5zaPAMRqXQFc0xNqXTC7+zQjxr0GlKA==",
+ "version": "17.11.0",
+ "resolved": "https://registry.npmjs.org/joi/-/joi-17.11.0.tgz",
+ "integrity": "sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==",
"requires": {
"@hapi/hoek": "^9.0.0",
"@hapi/topo": "^5.0.0",
@@ -84743,14 +84103,6 @@
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
},
- "rimraf": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
- "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
- "requires": {
- "glob": "^7.1.3"
- }
- },
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -84758,14 +84110,6 @@
"requires": {
"has-flag": "^4.0.0"
}
- },
- "temp": {
- "version": "0.8.4",
- "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz",
- "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==",
- "requires": {
- "rimraf": "~2.6.2"
- }
}
}
},
@@ -85114,6 +84458,30 @@
"immediate": "~3.0.5"
}
},
+ "lighthouse-logger": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz",
+ "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==",
+ "requires": {
+ "debug": "^2.6.9",
+ "marky": "^1.2.2"
+ },
+ "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=="
+ }
+ }
+ },
"lightningcss": {
"version": "1.19.0",
"resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.19.0.tgz",
@@ -85511,9 +84879,9 @@
}
},
"lottie-react-native": {
- "version": "6.4.0",
- "resolved": "https://registry.npmjs.org/lottie-react-native/-/lottie-react-native-6.4.0.tgz",
- "integrity": "sha512-wFO/gLPN1KliyznBa8OtYWkc9Vn9OEmIg1/b1536KANFtGaFAeoAGhijVxYKF3UPKJgjJYFmqg0W//FVrSXj+g==",
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/lottie-react-native/-/lottie-react-native-6.4.1.tgz",
+ "integrity": "sha512-DPsUPSxLc3ZffeRQ/AtKtcUl4PzmJEEPt965tNpWSE4vhDkoGFxRe0TPZ45xX8/3HbGsUl48aMdLlAu28MEDsQ==",
"requires": {}
},
"lottie-web": {
@@ -85696,6 +85064,11 @@
"dev": true,
"requires": {}
},
+ "marky": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz",
+ "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q=="
+ },
"matcher": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz",
@@ -86436,10 +85809,9 @@
"integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="
},
"metro": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro/-/metro-0.76.8.tgz",
- "integrity": "sha512-oQA3gLzrrYv3qKtuWArMgHPbHu8odZOD9AoavrqSFllkPgOtmkBvNNDLCELqv5SjBfqjISNffypg+5UGG3y0pg==",
- "dev": true,
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro/-/metro-0.80.3.tgz",
+ "integrity": "sha512-7u6HjWVQR7wA/HbxzB0n6iQ0GI9s/fr49N++dZQ41BcrcFxrguIGaRe4W8VI5DtYifCVCjXDIFw6e9+MAccx/Q==",
"requires": {
"@babel/code-frame": "^7.0.0",
"@babel/core": "^7.20.0",
@@ -86449,7 +85821,6 @@
"@babel/traverse": "^7.20.0",
"@babel/types": "^7.20.0",
"accepts": "^1.3.7",
- "async": "^3.2.2",
"chalk": "^4.0.0",
"ci-info": "^2.0.0",
"connect": "^3.6.5",
@@ -86457,28 +85828,25 @@
"denodeify": "^1.2.1",
"error-stack-parser": "^2.0.6",
"graceful-fs": "^4.2.4",
- "hermes-parser": "0.12.0",
+ "hermes-parser": "0.18.2",
"image-size": "^1.0.2",
"invariant": "^2.2.4",
- "jest-worker": "^27.2.0",
+ "jest-worker": "^29.6.3",
"jsc-safe-url": "^0.2.2",
"lodash.throttle": "^4.1.1",
- "metro-babel-transformer": "0.76.8",
- "metro-cache": "0.76.8",
- "metro-cache-key": "0.76.8",
- "metro-config": "0.76.8",
- "metro-core": "0.76.8",
- "metro-file-map": "0.76.8",
- "metro-inspector-proxy": "0.76.8",
- "metro-minify-terser": "0.76.8",
- "metro-minify-uglify": "0.76.8",
- "metro-react-native-babel-preset": "0.76.8",
- "metro-resolver": "0.76.8",
- "metro-runtime": "0.76.8",
- "metro-source-map": "0.76.8",
- "metro-symbolicate": "0.76.8",
- "metro-transform-plugins": "0.76.8",
- "metro-transform-worker": "0.76.8",
+ "metro-babel-transformer": "0.80.3",
+ "metro-cache": "0.80.3",
+ "metro-cache-key": "0.80.3",
+ "metro-config": "0.80.3",
+ "metro-core": "0.80.3",
+ "metro-file-map": "0.80.3",
+ "metro-minify-terser": "0.80.3",
+ "metro-resolver": "0.80.3",
+ "metro-runtime": "0.80.3",
+ "metro-source-map": "0.80.3",
+ "metro-symbolicate": "0.80.3",
+ "metro-transform-plugins": "0.80.3",
+ "metro-transform-worker": "0.80.3",
"mime-types": "^2.1.27",
"node-fetch": "^2.2.0",
"nullthrows": "^1.1.1",
@@ -86495,7 +85863,6 @@
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
"requires": {
"color-convert": "^2.0.1"
}
@@ -86504,7 +85871,6 @@
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -86513,14 +85879,12 @@
"ci-info": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
- "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
- "dev": true
+ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="
},
"cliui": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
"integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
- "dev": true,
"requires": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.1",
@@ -86531,7 +85895,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
"requires": {
"color-name": "~1.1.4"
}
@@ -86539,14 +85902,12 @@
"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==",
- "dev": true
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
"requires": {
"ms": "2.0.0"
}
@@ -86554,16 +85915,28 @@
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
+ },
+ "hermes-estree": {
+ "version": "0.18.2",
+ "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.18.2.tgz",
+ "integrity": "sha512-KoLsoWXJ5o81nit1wSyEZnWUGy9cBna9iYMZBR7skKh7okYAYKqQ9/OczwpMHn/cH0hKDyblulGsJ7FknlfVxQ=="
+ },
+ "hermes-parser": {
+ "version": "0.18.2",
+ "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.18.2.tgz",
+ "integrity": "sha512-1eQfvib+VPpgBZ2zYKQhpuOjw1tH+Emuib6QmjkJWJMhyjM8xnXMvA+76o9LhF0zOAJDZgPfQhg43cyXEyl5Ew==",
+ "requires": {
+ "hermes-estree": "0.18.2"
+ }
},
"jest-worker": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
- "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
- "dev": true,
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
+ "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
"requires": {
"@types/node": "*",
+ "jest-util": "^29.7.0",
"merge-stream": "^2.0.0",
"supports-color": "^8.0.0"
},
@@ -86572,7 +85945,6 @@
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dev": true,
"requires": {
"has-flag": "^4.0.0"
}
@@ -86582,26 +85954,22 @@
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"serialize-error": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz",
- "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==",
- "dev": true
+ "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw=="
},
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
- "dev": true
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ=="
},
"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==",
- "dev": true,
"requires": {
"has-flag": "^4.0.0"
}
@@ -86610,20 +85978,17 @@
"version": "7.5.9",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
"integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
- "dev": true,
"requires": {}
},
"y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "dev": true
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="
},
"yargs": {
"version": "17.7.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
"integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
- "dev": true,
"requires": {
"cliui": "^8.0.1",
"escalade": "^3.1.1",
@@ -86637,58 +86002,67 @@
"yargs-parser": {
"version": "21.1.1",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
- "dev": true
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="
}
}
},
"metro-babel-transformer": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.76.8.tgz",
- "integrity": "sha512-Hh6PW34Ug/nShlBGxkwQJSgPGAzSJ9FwQXhUImkzdsDgVu6zj5bx258J8cJVSandjNoQ8nbaHK6CaHlnbZKbyA==",
- "dev": true,
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.80.3.tgz",
+ "integrity": "sha512-Si1GO9fhiLi3DfHseFDaZcU+Y6iYHx54rszILnBIx80aas3pRZpL3z/UsEZ7coTQZTFsblt2QDIE+Izxlq4mwQ==",
"requires": {
"@babel/core": "^7.20.0",
- "hermes-parser": "0.12.0",
+ "hermes-parser": "0.18.2",
"nullthrows": "^1.1.1"
+ },
+ "dependencies": {
+ "hermes-estree": {
+ "version": "0.18.2",
+ "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.18.2.tgz",
+ "integrity": "sha512-KoLsoWXJ5o81nit1wSyEZnWUGy9cBna9iYMZBR7skKh7okYAYKqQ9/OczwpMHn/cH0hKDyblulGsJ7FknlfVxQ=="
+ },
+ "hermes-parser": {
+ "version": "0.18.2",
+ "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.18.2.tgz",
+ "integrity": "sha512-1eQfvib+VPpgBZ2zYKQhpuOjw1tH+Emuib6QmjkJWJMhyjM8xnXMvA+76o9LhF0zOAJDZgPfQhg43cyXEyl5Ew==",
+ "requires": {
+ "hermes-estree": "0.18.2"
+ }
+ }
}
},
"metro-cache": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.76.8.tgz",
- "integrity": "sha512-QBJSJIVNH7Hc/Yo6br/U/qQDUpiUdRgZ2ZBJmvAbmAKp2XDzsapnMwK/3BGj8JNWJF7OLrqrYHsRsukSbUBpvQ==",
- "dev": true,
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.80.3.tgz",
+ "integrity": "sha512-7gHcOIXdAHCBzsovF4b+VgcfIZtCpCIFiT2zx9amU58xrmkx+PRIl1KZDIUfRBbGrO9HJtZxH7lr7/hoiLIUWA==",
"requires": {
- "metro-core": "0.76.8",
+ "metro-core": "0.80.3",
"rimraf": "^3.0.2"
}
},
"metro-cache-key": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.76.8.tgz",
- "integrity": "sha512-buKQ5xentPig9G6T37Ww/R/bC+/V1MA5xU/D8zjnhlelsrPG6w6LtHUS61ID3zZcMZqYaELWk5UIadIdDsaaLw==",
- "dev": true
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.80.3.tgz",
+ "integrity": "sha512-WNrtDpbhtW2Yqjp1t0WxJhKNR/Zbo1LZ4WvHsdv/PraAs2mr+SaM5bbiptBSKOOGJkV/FIQveW5riZi53JnCbw=="
},
"metro-config": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.76.8.tgz",
- "integrity": "sha512-SL1lfKB0qGHALcAk2zBqVgQZpazDYvYFGwCK1ikz0S6Y/CM2i2/HwuZN31kpX6z3mqjv/6KvlzaKoTb1otuSAA==",
- "dev": true,
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.80.3.tgz",
+ "integrity": "sha512-cE7KPT1Usdrd2nLEVpzukKWmeBU1PufHPkuD9BjjtoABbzdj35gMLDnK+mhjSq9km2vF2QEPtE0M+WKvq9pXfQ==",
"requires": {
"connect": "^3.6.5",
"cosmiconfig": "^5.0.5",
- "jest-validate": "^29.2.1",
- "metro": "0.76.8",
- "metro-cache": "0.76.8",
- "metro-core": "0.76.8",
- "metro-runtime": "0.76.8"
+ "jest-validate": "^29.6.3",
+ "metro": "0.80.3",
+ "metro-cache": "0.80.3",
+ "metro-core": "0.80.3",
+ "metro-runtime": "0.80.3"
},
"dependencies": {
"cosmiconfig": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
"integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
- "dev": true,
"requires": {
"import-fresh": "^2.0.0",
"is-directory": "^0.3.1",
@@ -86700,7 +86074,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
"integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==",
- "dev": true,
"requires": {
"caller-path": "^2.0.0",
"resolve-from": "^3.0.0"
@@ -86710,7 +86083,6 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
"integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
- "dev": true,
"requires": {
"error-ex": "^1.3.1",
"json-parse-better-errors": "^1.0.1"
@@ -86719,26 +86091,23 @@
"resolve-from": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
- "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
- "dev": true
+ "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw=="
}
}
},
"metro-core": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.76.8.tgz",
- "integrity": "sha512-sl2QLFI3d1b1XUUGxwzw/KbaXXU/bvFYrSKz6Sg19AdYGWFyzsgZ1VISRIDf+HWm4R/TJXluhWMEkEtZuqi3qA==",
- "dev": true,
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.80.3.tgz",
+ "integrity": "sha512-X2ZfAvR55TdD/Rv9i4gYVI68JpRPHcpKpkr6IVtidFPoNjf4Fodh1qH7gEAJUnO5FL3a1JyPffbW6eFaXPxkFw==",
"requires": {
"lodash.throttle": "^4.1.1",
- "metro-resolver": "0.76.8"
+ "metro-resolver": "0.80.3"
}
},
"metro-file-map": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.76.8.tgz",
- "integrity": "sha512-A/xP1YNEVwO1SUV9/YYo6/Y1MmzhL4ZnVgcJC3VmHp/BYVOXVStzgVbWv2wILe56IIMkfXU+jpXrGKKYhFyHVw==",
- "dev": true,
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.80.3.tgz",
+ "integrity": "sha512-4qu1ABPZRvboGGB8Q2RlQ26kZRWRCMDiktgCCrX/57V6cnWgdbdTrpnsgmU3i0Q7iiw+FevOGlfD4HqdauQ59g==",
"requires": {
"anymatch": "^3.0.3",
"debug": "^2.2.0",
@@ -86746,76 +86115,17 @@
"fsevents": "^2.3.2",
"graceful-fs": "^4.2.4",
"invariant": "^2.2.4",
- "jest-regex-util": "^27.0.6",
- "jest-util": "^27.2.0",
- "jest-worker": "^27.2.0",
+ "jest-worker": "^29.6.3",
"micromatch": "^4.0.4",
"node-abort-controller": "^3.1.1",
"nullthrows": "^1.1.1",
"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==",
- "dev": true,
- "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.6",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.6.tgz",
- "integrity": "sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A==",
- "dev": true,
- "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==",
- "dev": true,
- "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==",
- "dev": true,
- "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==",
- "dev": true,
- "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==",
- "dev": true
- },
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
"requires": {
"ms": "2.0.0"
}
@@ -86823,165 +86133,48 @@
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "jest-regex-util": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz",
- "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==",
- "dev": true
- },
- "jest-util": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
- "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
- "dev": true,
- "requires": {
- "@jest/types": "^27.5.1",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "graceful-fs": "^4.2.9",
- "picomatch": "^2.2.3"
- }
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
},
"jest-worker": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
- "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
- "dev": true,
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
+ "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
"requires": {
"@types/node": "*",
+ "jest-util": "^29.7.0",
"merge-stream": "^2.0.0",
"supports-color": "^8.0.0"
- },
- "dependencies": {
- "supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"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==",
- "dev": true,
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"requires": {
"has-flag": "^4.0.0"
}
}
}
},
- "metro-inspector-proxy": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.76.8.tgz",
- "integrity": "sha512-Us5o5UEd4Smgn1+TfHX4LvVPoWVo9VsVMn4Ldbk0g5CQx3Gu0ygc/ei2AKPGTwsOZmKxJeACj7yMH2kgxQP/iw==",
- "dev": true,
- "requires": {
- "connect": "^3.6.5",
- "debug": "^2.2.0",
- "node-fetch": "^2.2.0",
- "ws": "^7.5.1",
- "yargs": "^17.6.2"
- },
- "dependencies": {
- "cliui": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
- "dev": true,
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- }
- },
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "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==",
- "dev": true
- },
- "ws": {
- "version": "7.5.9",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
- "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
- "dev": true,
- "requires": {}
- },
- "y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "dev": true
- },
- "yargs": {
- "version": "17.7.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
- "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
- "dev": true,
- "requires": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
- }
- },
- "yargs-parser": {
- "version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
- "dev": true
- }
- }
- },
"metro-minify-terser": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.76.8.tgz",
- "integrity": "sha512-Orbvg18qXHCrSj1KbaeSDVYRy/gkro2PC7Fy2tDSH1c9RB4aH8tuMOIXnKJE+1SXxBtjWmQ5Yirwkth2DyyEZA==",
- "dev": true,
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.80.3.tgz",
+ "integrity": "sha512-gVFwoL86emFoYbI2DZKk1Ved2CklYv//huWriF0UpLJHmVEO9ii2ajTx3aIxgSeuxFLPJhdp8RgUB2EDCooaJw==",
"requires": {
"terser": "^5.15.0"
}
},
- "metro-minify-uglify": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.76.8.tgz",
- "integrity": "sha512-6l8/bEvtVaTSuhG1FqS0+Mc8lZ3Bl4RI8SeRIifVLC21eeSDp4CEBUWSGjpFyUDfi6R5dXzYaFnSgMNyfxADiQ==",
- "dev": true,
- "requires": {
- "uglify-es": "^3.1.9"
- }
- },
"metro-react-native-babel-preset": {
"version": "0.76.8",
"resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.76.8.tgz",
"integrity": "sha512-Ptza08GgqzxEdK8apYsjTx2S8WDUlS2ilBlu9DR1CUcHmg4g3kOkFylZroogVAUKtpYQNYwAvdsjmrSdDNtiAg==",
+ "dev": true,
+ "peer": true,
"requires": {
"@babel/core": "^7.20.0",
"@babel/plugin-proposal-async-generator-functions": "^7.0.0",
@@ -87025,56 +86218,36 @@
},
"dependencies": {
"react-refresh": {
- "version": "0.4.3"
+ "version": "0.4.3",
+ "dev": true,
+ "peer": true
}
}
},
- "metro-react-native-babel-transformer": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.76.8.tgz",
- "integrity": "sha512-3h+LfS1WG1PAzhq8QF0kfXjxuXetbY/lgz8vYMQhgrMMp17WM1DNJD0gjx8tOGYbpbBC1qesJ45KMS4o5TA73A==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.20.0",
- "babel-preset-fbjs": "^3.4.0",
- "hermes-parser": "0.12.0",
- "metro-react-native-babel-preset": "0.76.8",
- "nullthrows": "^1.1.1"
- }
- },
"metro-resolver": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.76.8.tgz",
- "integrity": "sha512-KccOqc10vrzS7ZhG2NSnL2dh3uVydarB7nOhjreQ7C4zyWuiW9XpLC4h47KtGQv3Rnv/NDLJYeDqaJ4/+140HQ==",
- "dev": true
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.80.3.tgz",
+ "integrity": "sha512-zwa0i32rj/TI3NivcvMXHJwTG2gUgo2dXdcnAJlhEKKQvyN+7AfhNdQSlDdDqMQmU7FaLRdeWORnQJbYCrprQQ=="
},
"metro-runtime": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.76.8.tgz",
- "integrity": "sha512-XKahvB+iuYJSCr3QqCpROli4B4zASAYpkK+j3a0CJmokxCDNbgyI4Fp88uIL6rNaZfN0Mv35S0b99SdFXIfHjg==",
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.80.3.tgz",
+ "integrity": "sha512-16RKcwpxriNnPdE5eKWJu7/KLgxE+AaDAdYthoS6zbzjaOu7RiY2zPM1Elz175Rw//74kOwtKXgxTW8ADHB8SQ==",
"requires": {
- "@babel/runtime": "^7.0.0",
- "react-refresh": "^0.4.0"
- },
- "dependencies": {
- "react-refresh": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz",
- "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA=="
- }
+ "@babel/runtime": "^7.0.0"
}
},
"metro-source-map": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.76.8.tgz",
- "integrity": "sha512-Hh0ncPsHPVf6wXQSqJqB3K9Zbudht4aUtNpNXYXSxH+pteWqGAXnjtPsRAnCsCWl38wL0jYF0rJDdMajUI3BDw==",
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.80.3.tgz",
+ "integrity": "sha512-5DYcOLPjDLx84ZCZ1i0DuWSPU7AY5G/7tR+u/WN6CZNxLyYEe3TwUBdIUgQj4HgZJl/zZ/7bGYJQOHd7ubuO0w==",
"requires": {
"@babel/traverse": "^7.20.0",
"@babel/types": "^7.20.0",
"invariant": "^2.2.4",
- "metro-symbolicate": "0.76.8",
+ "metro-symbolicate": "0.80.3",
"nullthrows": "^1.1.1",
- "ob1": "0.76.8",
+ "ob1": "0.80.3",
"source-map": "^0.5.6",
"vlq": "^1.0.0"
},
@@ -87087,12 +86260,12 @@
}
},
"metro-symbolicate": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.76.8.tgz",
- "integrity": "sha512-LrRL3uy2VkzrIXVlxoPtqb40J6Bf1mlPNmUQewipc3qfKKFgtPHBackqDy1YL0njDsWopCKcfGtFYLn0PTUn3w==",
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.80.3.tgz",
+ "integrity": "sha512-baIt8Ss2vTGbxolRTa5yg+tKVAIAB1OpwMzJ0FSUjLs+HDAzaOtSpGbNd3DPc+pzX8Gj/rdbDOA0wPuOhVsHKQ==",
"requires": {
"invariant": "^2.2.4",
- "metro-source-map": "0.76.8",
+ "metro-source-map": "0.80.3",
"nullthrows": "^1.1.1",
"source-map": "^0.5.6",
"through2": "^2.0.1",
@@ -87107,10 +86280,9 @@
}
},
"metro-transform-plugins": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.76.8.tgz",
- "integrity": "sha512-PlkGTQNqS51Bx4vuufSQCdSn2R2rt7korzngo+b5GCkeX5pjinPjnO2kNhQ8l+5bO0iUD/WZ9nsM2PGGKIkWFA==",
- "dev": true,
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.80.3.tgz",
+ "integrity": "sha512-/2hGGRdJPrNfB9lz8unukaqQpGpDhYwNM0Odfh37OVFjygMB30Ffd8neQ4FNqnHnFxhl5j8VTcopUg6QhygMGQ==",
"requires": {
"@babel/core": "^7.20.0",
"@babel/generator": "^7.20.0",
@@ -87120,22 +86292,20 @@
}
},
"metro-transform-worker": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.76.8.tgz",
- "integrity": "sha512-mE1fxVAnJKmwwJyDtThildxxos9+DGs9+vTrx2ktSFMEVTtXS/bIv2W6hux1pqivqAfyJpTeACXHk5u2DgGvIQ==",
- "dev": true,
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.80.3.tgz",
+ "integrity": "sha512-10ZwMDuSWyHwqNnZ50baNtHNuHhOnqThbTOgv03PsrmPHWmSv4/rrmm7711tEyLUxptY3A1hEgJ+LKYyOIQiUA==",
"requires": {
"@babel/core": "^7.20.0",
"@babel/generator": "^7.20.0",
"@babel/parser": "^7.20.0",
"@babel/types": "^7.20.0",
- "babel-preset-fbjs": "^3.4.0",
- "metro": "0.76.8",
- "metro-babel-transformer": "0.76.8",
- "metro-cache": "0.76.8",
- "metro-cache-key": "0.76.8",
- "metro-source-map": "0.76.8",
- "metro-transform-plugins": "0.76.8",
+ "metro": "0.80.3",
+ "metro-babel-transformer": "0.80.3",
+ "metro-cache": "0.80.3",
+ "metro-cache-key": "0.80.3",
+ "metro-source-map": "0.80.3",
+ "metro-transform-plugins": "0.80.3",
"nullthrows": "^1.1.1"
}
},
@@ -87938,8 +87108,7 @@
"mrmime": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz",
- "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==",
- "dev": true
+ "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw=="
},
"ms": {
"version": "2.1.2",
@@ -88028,9 +87197,9 @@
"optional": true
},
"nanoid": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
- "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA=="
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g=="
},
"nanomatch": {
"version": "1.2.13",
@@ -88342,9 +87511,9 @@
"version": "2.2.2"
},
"ob1": {
- "version": "0.76.8",
- "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.76.8.tgz",
- "integrity": "sha512-dlBkJJV5M/msj9KYA9upc+nUWVwuOFFTbu28X6kZeGwcuW+JxaHSBZ70SYQnk5M+j5JbNLR6yKHmgW4M5E7X5g=="
+ "version": "0.80.3",
+ "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.80.3.tgz",
+ "integrity": "sha512-lKJ/Wp6eSyYKYKYds1lgiDRtD2j9nNhrhx4hwegxYXTBkWz4dqermZV+Bq0iw0SszUIb+fC+btNSXwc4AG1lBQ=="
},
"object-assign": {
"version": "4.1.1",
@@ -89142,7 +88311,6 @@
"version": "1.10.1",
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
"integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==",
- "dev": true,
"requires": {
"lru-cache": "^9.1.1 || ^10.0.0",
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
@@ -89151,14 +88319,12 @@
"lru-cache": {
"version": "10.0.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz",
- "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==",
- "dev": true
+ "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g=="
},
"minipass": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz",
- "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==",
- "dev": true
+ "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg=="
}
}
},
@@ -89283,18 +88449,21 @@
},
"pkg-up": {
"version": "3.1.0",
+ "dev": true,
"requires": {
"find-up": "^3.0.0"
},
"dependencies": {
"find-up": {
"version": "3.0.0",
+ "dev": true,
"requires": {
"locate-path": "^3.0.0"
}
},
"locate-path": {
"version": "3.0.0",
+ "dev": true,
"requires": {
"p-locate": "^3.0.0",
"path-exists": "^3.0.0"
@@ -89302,12 +88471,14 @@
},
"p-limit": {
"version": "2.3.0",
+ "dev": true,
"requires": {
"p-try": "^2.0.0"
}
},
"p-locate": {
"version": "3.0.0",
+ "dev": true,
"requires": {
"p-limit": "^2.0.0"
}
@@ -89538,9 +88709,9 @@
}
},
"pretty-format": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz",
- "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==",
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
+ "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
"requires": {
"@jest/schemas": "^29.6.3",
"ansi-styles": "^5.0.0",
@@ -90178,43 +89349,44 @@
}
},
"react-native": {
- "version": "0.72.4",
- "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.72.4.tgz",
- "integrity": "sha512-+vrObi0wZR+NeqL09KihAAdVlQ9IdplwznJWtYrjnQ4UbCW6rkzZJebRsugwUneSOKNFaHFEo1uKU89HsgtYBg==",
- "requires": {
- "@jest/create-cache-key-function": "^29.2.1",
- "@react-native-community/cli": "11.3.6",
- "@react-native-community/cli-platform-android": "11.3.6",
- "@react-native-community/cli-platform-ios": "11.3.6",
- "@react-native/assets-registry": "^0.72.0",
- "@react-native/codegen": "^0.72.6",
- "@react-native/gradle-plugin": "^0.72.11",
- "@react-native/js-polyfills": "^0.72.1",
- "@react-native/normalize-colors": "^0.72.0",
- "@react-native/virtualized-lists": "^0.72.8",
+ "version": "0.73.2",
+ "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.73.2.tgz",
+ "integrity": "sha512-7zj9tcUYpJUBdOdXY6cM8RcXYWkyql4kMyGZflW99E5EuFPoC7Ti+ZQSl7LP9ZPzGD0vMfslwyDW0I4tPWUCFw==",
+ "requires": {
+ "@jest/create-cache-key-function": "^29.6.3",
+ "@react-native-community/cli": "12.3.0",
+ "@react-native-community/cli-platform-android": "12.3.0",
+ "@react-native-community/cli-platform-ios": "12.3.0",
+ "@react-native/assets-registry": "0.73.1",
+ "@react-native/codegen": "0.73.2",
+ "@react-native/community-cli-plugin": "0.73.12",
+ "@react-native/gradle-plugin": "0.73.4",
+ "@react-native/js-polyfills": "0.73.1",
+ "@react-native/normalize-colors": "0.73.2",
+ "@react-native/virtualized-lists": "0.73.4",
"abort-controller": "^3.0.0",
"anser": "^1.4.9",
- "base64-js": "^1.1.2",
- "deprecated-react-native-prop-types": "4.1.0",
+ "ansi-regex": "^5.0.0",
+ "base64-js": "^1.5.1",
+ "deprecated-react-native-prop-types": "^5.0.0",
"event-target-shim": "^5.0.1",
- "flow-enums-runtime": "^0.0.5",
+ "flow-enums-runtime": "^0.0.6",
"invariant": "^2.2.4",
- "jest-environment-node": "^29.2.1",
+ "jest-environment-node": "^29.6.3",
"jsc-android": "^250231.0.0",
"memoize-one": "^5.0.0",
- "metro-runtime": "0.76.8",
- "metro-source-map": "0.76.8",
+ "metro-runtime": "^0.80.3",
+ "metro-source-map": "^0.80.3",
"mkdirp": "^0.5.1",
"nullthrows": "^1.1.1",
"pretty-format": "^26.5.2",
"promise": "^8.3.0",
- "react-devtools-core": "^4.27.2",
- "react-refresh": "^0.4.0",
+ "react-devtools-core": "^4.27.7",
+ "react-refresh": "^0.14.0",
"react-shallow-renderer": "^16.15.0",
"regenerator-runtime": "^0.13.2",
"scheduler": "0.24.0-canary-efb381bbf-20230505",
"stacktrace-parser": "^0.1.10",
- "use-sync-external-store": "^1.0.0",
"whatwg-fetch": "^3.0.0",
"ws": "^6.2.2",
"yargs": "^17.6.2"
@@ -90257,13 +89429,13 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"deprecated-react-native-prop-types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-4.1.0.tgz",
- "integrity": "sha512-WfepZHmRbbdTvhcolb8aOKEvQdcmTMn5tKLbqbXmkBvjFjRVWAYqsXk/DBsV8TZxws8SdGHLuHaJrHSQUPRdfw==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-5.0.0.tgz",
+ "integrity": "sha512-cIK8KYiiGVOFsKdPMmm1L3tA/Gl+JopXL6F5+C7x39MyPsQYnP57Im/D6bNUzcborD7fcMwiwZqcBdBXXZucYQ==",
"requires": {
- "@react-native/normalize-colors": "*",
- "invariant": "*",
- "prop-types": "*"
+ "@react-native/normalize-colors": "^0.73.0",
+ "invariant": "^2.2.4",
+ "prop-types": "^15.8.1"
}
},
"mkdirp": {
@@ -90299,9 +89471,9 @@
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
},
"react-refresh": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz",
- "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA=="
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz",
+ "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ=="
},
"scheduler": {
"version": "0.24.0-canary-efb381bbf-20230505",
@@ -90426,9 +89598,11 @@
}
},
"react-native-flipper": {
- "version": "https://gitpkg.now.sh/facebook/flipper/react-native/react-native-flipper?9cacc9b59402550eae866e0e81e5f0c2f8203e6b",
+ "version": "0.159.0",
+ "resolved": "https://gitpkg.now.sh/facebook/flipper/react-native/react-native-flipper?9cacc9b59402550eae866e0e81e5f0c2f8203e6b",
"integrity": "sha512-M784S/qPuN/HqjdvXg98HIDmfm0sF8mACc56YNg87nzEF90zKSKp0XyOE83SEW+UJX2Gq/rf9BvM2GZeXlrhnQ==",
"dev": true,
+ "peer": true,
"requires": {}
},
"react-native-fs": {
@@ -90441,9 +89615,9 @@
}
},
"react-native-gesture-handler": {
- "version": "2.12.0",
- "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.12.0.tgz",
- "integrity": "sha512-rr+XwVzXAVpY8co25ukvyI38fKCxTQjz7WajeZktl8qUPdh1twnSExgpT47DqDi4n+m+OiJPAnHfZOkqqAQMOg==",
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.14.0.tgz",
+ "integrity": "sha512-cOmdaqbpzjWrOLUpX3hdSjsMby5wq3PIEdMq7okJeg9DmCzanysHSrktw1cXWNc/B5MAgxAn9J7Km0/4UIqKAQ==",
"requires": {
"@egjs/hammerjs": "^2.0.17",
"hoist-non-react-statics": "^3.3.0",
@@ -90528,9 +89702,9 @@
}
},
"react-native-onyx": {
- "version": "1.0.118",
- "resolved": "https://registry.npmjs.org/react-native-onyx/-/react-native-onyx-1.0.118.tgz",
- "integrity": "sha512-w54jO+Bpu1ElHsrxZXIIpcBqNkrUvuVCQmwWdfOW5LvO4UwsPSwmMxzExbUZ4ip+7CROmm10IgXFaAoyfeYSVQ==",
+ "version": "1.0.126",
+ "resolved": "https://registry.npmjs.org/react-native-onyx/-/react-native-onyx-1.0.126.tgz",
+ "integrity": "sha512-tUJI1mQaWXLfyBFYQQWM6mm9GiCqIXGvjbqJkH1fLY3OqbGW6DyH4CxC+qJrqfi4bKZgZHp5xlBHhkPV4pKK2A==",
"requires": {
"ascii-table": "0.0.9",
"fast-equals": "^4.0.3",
@@ -90538,9 +89712,9 @@
}
},
"react-native-pager-view": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/react-native-pager-view/-/react-native-pager-view-6.2.0.tgz",
- "integrity": "sha512-pf9OnL/Tkr+5s4Gjmsn7xh91PtJLDa6qxYa/bmtUhd/+s4cQdWQ8DIFoOFghwZIHHHwVdWtoXkp6HtpjN+r20g==",
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/react-native-pager-view/-/react-native-pager-view-6.2.2.tgz",
+ "integrity": "sha512-MLkJB7iP6v0Hd4/B4/R/gLCSE+YBtjxG/vHZYBDU+fI3U7HBYgKAg4o6ad8HxbKVcWWyRDNeeVRGISw1MUjlHw==",
"requires": {}
},
"react-native-pdf": {
@@ -90657,24 +89831,24 @@
}
},
"react-native-safe-area-context": {
- "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==",
+ "version": "4.7.4",
+ "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.7.4.tgz",
+ "integrity": "sha512-3LR3DCq9pdzlbq6vsHGWBFehXAKDh2Ljug6jWhLWs1QFuJHM6AS2+mH2JfKlB2LqiSFZOBcZfHQFz0sGaA3uqg==",
"requires": {}
},
"react-native-screens": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-3.21.0.tgz",
- "integrity": "sha512-SybzBhceTN2LUfzvEQxpZ9SchlFgEdsR/+YOKcpIhKg2BdRObdIyQsRoJBvduZ55lKbO9Gpyl3Ke8tngz3873g==",
+ "version": "3.29.0",
+ "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-3.29.0.tgz",
+ "integrity": "sha512-yB1GoAMamFAcYf4ku94uBPn0/ani9QG7NdI98beJ5cet2YFESYYzuEIuU+kt+CNRcO8qqKeugxlfgAa3HyTqlg==",
"requires": {
"react-freeze": "^1.0.0",
"warn-once": "^0.1.0"
}
},
"react-native-svg": {
- "version": "13.14.0",
- "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-13.14.0.tgz",
- "integrity": "sha512-27ZnxUkHgWICimhuj6MuqBkISN53lVvgWJB7pIypjXysAyM+nqgQBPh4vXg+7MbqLBoYvR4PiBgKfwwGAqVxHg==",
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-14.0.0.tgz",
+ "integrity": "sha512-17W/gWXRUMS7p7PSHu/WyGkZUc1NzRTGxxXc0VqBLjzKSchyb0EmgsiWf9aKmfC6gmY0wcsmKZcGV41bCcNfBA==",
"requires": {
"css-select": "^5.1.0",
"css-tree": "^1.1.3"
@@ -90697,8 +89871,12 @@
}
},
"react-native-view-shot": {
- "version": "3.6.0",
- "requires": {}
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/react-native-view-shot/-/react-native-view-shot-3.8.0.tgz",
+ "integrity": "sha512-4cU8SOhMn3YQIrskh+5Q8VvVRxQOu8/s1M9NAL4z5BY1Rm0HXMWkQJ4N0XsZ42+Yca+y86ISF3LC5qdLPvPuiA==",
+ "requires": {
+ "html2canvas": "^1.4.1"
+ }
},
"react-native-vision-camera": {
"version": "2.16.2",
@@ -90735,7 +89913,9 @@
"requires": {}
},
"react-native-webview": {
- "version": "11.23.0",
+ "version": "13.6.3",
+ "resolved": "https://registry.npmjs.org/react-native-webview/-/react-native-webview-13.6.3.tgz",
+ "integrity": "sha512-IApO0JSj0uAWsBGKWagyfgDYoX29piiMYLmkHtRjKeL1rIVjLoR/bMe7KJ/0X47y86b//a6u3cYQtphyay+F2A==",
"requires": {
"escape-string-regexp": "2.0.0",
"invariant": "2.2.4"
@@ -92041,7 +91221,8 @@
"version": "1.0.0"
},
"reselect": {
- "version": "4.1.7"
+ "version": "4.1.7",
+ "dev": true
},
"resolve": {
"version": "1.22.4",
@@ -92092,7 +91273,9 @@
"devOptional": true
},
"resolve.exports": {
- "version": "2.0.0"
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz",
+ "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg=="
},
"responselike": {
"version": "2.0.1",
@@ -92570,6 +91753,11 @@
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
},
+ "set-cookie-parser": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz",
+ "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ=="
+ },
"set-value": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
@@ -93468,6 +92656,11 @@
"integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
"dev": true
},
+ "stream-slice": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/stream-slice/-/stream-slice-0.1.2.tgz",
+ "integrity": "sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA=="
+ },
"strict-uri-encode": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz",
@@ -93504,7 +92697,6 @@
"version": "npm:string-width@4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
"requires": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@@ -93546,13 +92738,15 @@
}
},
"string.prototype.replaceall": {
- "version": "1.0.6",
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.replaceall/-/string.prototype.replaceall-1.0.8.tgz",
+ "integrity": "sha512-MmCXb9980obcnmbEd3guqVl6lXTxpP28zASfgAlAhlBMw5XehQeSKsdIWlAYtLxp/1GtALwex+2HyoIQtaLQwQ==",
"requires": {
"call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.19.1",
- "get-intrinsic": "^1.1.1",
- "has-symbols": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "has-symbols": "^1.0.3",
"is-regex": "^1.1.4"
}
},
@@ -93615,7 +92809,6 @@
"version": "npm:strip-ansi@6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
"requires": {
"ansi-regex": "^5.0.1"
},
@@ -93623,8 +92816,7 @@
"ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
}
}
},
@@ -93692,13 +92884,13 @@
"integrity": "sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA=="
},
"sucrase": {
- "version": "3.34.0",
- "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz",
- "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==",
+ "version": "3.35.0",
+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
+ "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
"requires": {
"@jridgewell/gen-mapping": "^0.3.2",
"commander": "^4.0.0",
- "glob": "7.1.6",
+ "glob": "^10.3.10",
"lines-and-columns": "^1.1.6",
"mz": "^2.7.0",
"pirates": "^4.0.1",
@@ -93715,10 +92907,57 @@
"@jridgewell/trace-mapping": "^0.3.9"
}
},
+ "brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "requires": {
+ "balanced-match": "^1.0.0"
+ }
+ },
"commander": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
"integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="
+ },
+ "foreground-child": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
+ "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
+ "requires": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ }
+ },
+ "glob": {
+ "version": "10.3.10",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
+ "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
+ "requires": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.3.5",
+ "minimatch": "^9.0.1",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
+ "path-scurry": "^1.10.1"
+ }
+ },
+ "minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "requires": {
+ "brace-expansion": "^2.0.1"
+ }
+ },
+ "minipass": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
+ "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ=="
+ },
+ "signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="
}
}
},
@@ -94015,6 +93254,24 @@
}
}
},
+ "temp": {
+ "version": "0.8.4",
+ "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz",
+ "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==",
+ "requires": {
+ "rimraf": "~2.6.2"
+ },
+ "dependencies": {
+ "rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ }
+ }
+ },
"temp-dir": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz",
@@ -94223,6 +93480,14 @@
"minimatch": "^3.0.4"
}
},
+ "text-segmentation": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz",
+ "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
+ "requires": {
+ "utrie": "^1.0.2"
+ }
+ },
"text-table": {
"version": "0.2.0"
},
@@ -94500,9 +93765,9 @@
}
},
"traverse": {
- "version": "0.6.7",
- "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz",
- "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg=="
+ "version": "0.6.8",
+ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz",
+ "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA=="
},
"tree-kill": {
"version": "1.2.2",
@@ -94760,22 +94025,6 @@
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.35.tgz",
"integrity": "sha512-veRf7dawaj9xaWEu9HoTVn5Pggtc/qj+kqTOFvNiN1l0YdxwC1kvel57UCjThjGa3BHBihE8/UJAHI+uQHmd/g=="
},
- "uglify-es": {
- "version": "3.3.9",
- "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz",
- "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==",
- "requires": {
- "commander": "~2.13.0",
- "source-map": "~0.6.1"
- },
- "dependencies": {
- "commander": {
- "version": "2.13.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz",
- "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA=="
- }
- }
- },
"uglify-js": {
"version": "3.17.4",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz",
@@ -95206,12 +94455,6 @@
"tslib": "^2.0.0"
}
},
- "use-sync-external-store": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
- "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==",
- "requires": {}
- },
"utf8": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz",
@@ -95263,6 +94506,14 @@
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
"integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="
},
+ "utrie": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz",
+ "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
+ "requires": {
+ "base64-arraybuffer": "^1.0.2"
+ }
+ },
"uuid": {
"version": "8.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
@@ -95702,6 +94953,29 @@
"defaults": "^1.0.3"
}
},
+ "web-encoding": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz",
+ "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==",
+ "requires": {
+ "@zxing/text-encoding": "0.9.0",
+ "util": "^0.12.3"
+ },
+ "dependencies": {
+ "util": {
+ "version": "0.12.5",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
+ "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
+ "requires": {
+ "inherits": "^2.0.3",
+ "is-arguments": "^1.0.4",
+ "is-generator-function": "^1.0.7",
+ "is-typed-array": "^1.1.3",
+ "which-typed-array": "^1.1.2"
+ }
+ }
+ }
+ },
"web-namespaces": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz",
@@ -96376,7 +95650,6 @@
"version": "npm:wrap-ansi@7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
"requires": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@@ -96387,7 +95660,6 @@
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
"requires": {
"color-convert": "^2.0.1"
}
@@ -96396,7 +95668,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
"requires": {
"color-name": "~1.1.4"
}
@@ -96404,8 +95675,7 @@
"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==",
- "dev": true
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
}
}
},
diff --git a/package.json b/package.json
index 7753368b6632..e5def6f1918a 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "new.expensify",
- "version": "1.4.24-4",
+ "version": "1.4.25-4",
"author": "Expensify, Inc.",
"homepage": "https://new.expensify.com",
"description": "New Expensify is the next generation of Expensify: a reimagination of payments based atop a foundation of chat.",
@@ -13,10 +13,10 @@
"postinstall": "scripts/postInstall.sh",
"clean": "npx react-native clean-project-auto",
"android": "scripts/set-pusher-suffix.sh && npx react-native run-android --mode=developmentDebug --appId=com.expensify.chat.dev",
- "ios": "scripts/set-pusher-suffix.sh && npx react-native run-ios --list-devices --configuration=\"DebugDevelopment\" --scheme=\"New Expensify Dev\"",
+ "ios": "scripts/set-pusher-suffix.sh && npx react-native run-ios --list-devices --mode=\"DebugDevelopment\" --scheme=\"New Expensify Dev\"",
"pod-install": "cd ios && bundle exec pod install",
- "ipad": "concurrently \"npx react-native run-ios --simulator=\\\"iPad Pro (12.9-inch) (6th generation)\\\" --configuration=\\\"DebugDevelopment\\\" --scheme=\\\"New Expensify Dev\\\"\"",
- "ipad-sm": "concurrently \"npx react-native run-ios --simulator=\\\"iPad Pro (11-inch) (4th generation)\\\" --configuration=\\\"DebugDevelopment\\\" --scheme=\\\"New Expensify Dev\\\"\"",
+ "ipad": "concurrently \"npx react-native run-ios --simulator=\\\"iPad Pro (12.9-inch) (6th generation)\\\" --mode=\\\"DebugDevelopment\\\" --scheme=\\\"New Expensify Dev\\\"\"",
+ "ipad-sm": "concurrently \"npx react-native run-ios --simulator=\\\"iPad Pro (11-inch) (4th generation)\\\" --mode=\\\"DebugDevelopment\\\" --scheme=\\\"New Expensify Dev\\\"\"",
"start": "npx react-native start",
"web": "scripts/set-pusher-suffix.sh && concurrently npm:web-proxy npm:web-server",
"web-proxy": "node web/proxy.js",
@@ -71,23 +71,23 @@
"@kie/mock-github": "^1.0.0",
"@oguzhnatly/react-native-image-manipulator": "github:Expensify/react-native-image-manipulator#5cdae3d4455b03a04c57f50be3863e2fe6c92c52",
"@onfido/react-native-sdk": "8.3.0",
- "@react-native-async-storage/async-storage": "^1.17.10",
+ "@react-native-async-storage/async-storage": "^1.19.5",
"@react-native-camera-roll/camera-roll": "5.4.0",
"@react-native-clipboard/clipboard": "^1.12.1",
"@react-native-community/geolocation": "^3.0.6",
- "@react-native-community/netinfo": "^9.3.10",
+ "@react-native-community/netinfo": "11.2.1",
"@react-native-firebase/analytics": "^12.3.0",
"@react-native-firebase/app": "^12.3.0",
"@react-native-firebase/crashlytics": "^12.3.0",
"@react-native-firebase/perf": "^12.3.0",
"@react-native-google-signin/google-signin": "^10.0.1",
- "@react-native-picker/picker": "^2.4.3",
+ "@react-native-picker/picker": "2.5.1",
"@react-navigation/material-top-tabs": "^6.6.3",
"@react-navigation/native": "6.1.8",
"@react-navigation/stack": "6.3.16",
"@react-ng/bounds-observer": "^0.2.1",
"@rnmapbox/maps": "^10.0.11",
- "@shopify/flash-list": "^1.6.1",
+ "@shopify/flash-list": "^1.6.3",
"@types/node": "^18.14.0",
"@ua/react-native-airship": "^15.3.1",
"@vue/preload-webpack-plugin": "^2.0.0",
@@ -99,16 +99,16 @@
"date-fns-tz": "^2.0.0",
"dom-serializer": "^0.2.2",
"domhandler": "^4.3.0",
- "expensify-common": "git+ssh://git@github.com/Expensify/expensify-common.git#398bf7c6a6d37f229a41d92bd7a4324c0fd32849",
- "expo": "^49.0.0",
- "expo-image": "1.8.1",
+ "expensify-common": "git+ssh://git@github.com/Expensify/expensify-common.git#c6bb3cfa56d12af9fa02e2bfc729646f5b64ef44",
+ "expo": "^50.0.0-preview.7",
+ "expo-image": "1.10.1",
"fbjs": "^3.0.2",
"htmlparser2": "^7.2.0",
"idb-keyval": "^6.2.1",
- "jest-expo": "^49.0.0",
+ "jest-expo": "50.0.1",
"jest-when": "^3.5.2",
"lodash": "4.17.21",
- "lottie-react-native": "^6.4.0",
+ "lottie-react-native": "6.4.1",
"mapbox-gl": "^2.15.0",
"onfido-sdk-ui": "13.1.0",
"patch-package": "^8.0.0",
@@ -122,7 +122,7 @@
"react-dom": "18.1.0",
"react-error-boundary": "^4.0.11",
"react-map-gl": "^7.1.3",
- "react-native": "0.72.4",
+ "react-native": "0.73.2",
"react-native-android-location-enabler": "^1.2.2",
"react-native-blob-util": "^0.17.3",
"react-native-collapsible": "^1.6.1",
@@ -132,7 +132,7 @@
"react-native-document-picker": "^8.2.1",
"react-native-draggable-flatlist": "^4.0.1",
"react-native-fs": "^2.20.0",
- "react-native-gesture-handler": "2.12.0",
+ "react-native-gesture-handler": "2.14.0",
"react-native-google-places-autocomplete": "2.5.6",
"react-native-haptic-feedback": "^1.13.0",
"react-native-image-pan-zoom": "^2.1.12",
@@ -142,9 +142,9 @@
"react-native-linear-gradient": "^2.8.1",
"react-native-localize": "^2.2.6",
"react-native-modal": "^13.0.0",
- "react-native-onyx": "1.0.118",
- "react-native-pager-view": "^6.2.0",
- "react-native-pdf": "^6.7.3",
+ "react-native-onyx": "1.0.126",
+ "react-native-pager-view": "6.2.2",
+ "react-native-pdf": "6.7.3",
"react-native-performance": "^5.1.0",
"react-native-permissions": "^3.9.3",
"react-native-picker-select": "git+https://github.com/Expensify/react-native-picker-select.git#7a407cd4174d9838a944c1c2e1cb4a9737ac69c5",
@@ -153,16 +153,16 @@
"react-native-quick-sqlite": "^8.0.0-beta.2",
"react-native-reanimated": "^3.6.1",
"react-native-render-html": "6.3.1",
- "react-native-safe-area-context": "4.4.1",
- "react-native-screens": "3.21.0",
- "react-native-svg": "^13.13.0",
+ "react-native-safe-area-context": "4.7.4",
+ "react-native-screens": "3.29.0",
+ "react-native-svg": "14.0.0",
"react-native-tab-view": "^3.5.2",
"react-native-url-polyfill": "^2.0.0",
- "react-native-view-shot": "^3.6.0",
+ "react-native-view-shot": "3.8.0",
"react-native-vision-camera": "^2.16.2",
"react-native-web": "^0.19.9",
"react-native-web-linear-gradient": "^1.1.2",
- "react-native-webview": "^11.17.2",
+ "react-native-webview": "13.6.3",
"react-pdf": "^6.2.2",
"react-plaid-link": "3.3.2",
"react-web-config": "^1.0.0",
@@ -195,7 +195,8 @@
"@octokit/plugin-paginate-rest": "3.1.0",
"@octokit/plugin-throttling": "4.1.0",
"@react-native-community/eslint-config": "3.0.0",
- "@react-native/metro-config": "^0.72.11",
+ "@react-native/babel-preset": "^0.73.19",
+ "@react-native/metro-config": "^0.73.3",
"@react-navigation/devtools": "^6.0.10",
"@storybook/addon-a11y": "^6.5.9",
"@storybook/addon-essentials": "^7.0.0",
@@ -217,7 +218,7 @@
"@types/lodash": "^4.14.195",
"@types/mapbox-gl": "^2.7.13",
"@types/pusher-js": "^5.1.0",
- "@types/react": "^18.2.12",
+ "@types/react": "18.2.45",
"@types/react-beautiful-dnd": "^13.1.4",
"@types/react-collapse": "^5.0.1",
"@types/react-dom": "^18.2.4",
@@ -265,13 +266,11 @@
"jest-environment-jsdom": "^29.4.1",
"jest-transformer-svg": "^2.0.1",
"memfs": "^4.6.0",
- "metro-react-native-babel-preset": "0.76.8",
"onchange": "^7.1.0",
"portfinder": "^1.0.28",
"prettier": "^2.8.8",
"pusher-js-mock": "^0.3.3",
"react-native-clean-project": "^4.0.0-alpha4.0",
- "react-native-flipper": "https://gitpkg.now.sh/facebook/flipper/react-native/react-native-flipper?9cacc9b59402550eae866e0e81e5f0c2f8203e6b",
"react-native-performance-flipper-reporter": "^2.0.0",
"react-test-renderer": "18.2.0",
"reassure": "^0.10.1",
@@ -290,7 +289,9 @@
"yaml": "^2.2.1"
},
"overrides": {
- "react-native": "$react-native"
+ "react-native": "$react-native",
+ "expo": "$expo",
+ "react-native-svg": "$react-native-svg"
},
"expo": {
"autolinking": {
diff --git a/patches/@onfido+react-native-sdk+8.3.0.patch b/patches/@onfido+react-native-sdk+8.3.0.patch
index 12245cb58355..5d3fd51bf826 100644
--- a/patches/@onfido+react-native-sdk+8.3.0.patch
+++ b/patches/@onfido+react-native-sdk+8.3.0.patch
@@ -1,8 +1,22 @@
diff --git a/node_modules/@onfido/react-native-sdk/android/build.gradle b/node_modules/@onfido/react-native-sdk/android/build.gradle
-index b4c7106..d5083d3 100644
+index b4c7106..c6efb0f 100644
--- a/node_modules/@onfido/react-native-sdk/android/build.gradle
+++ b/node_modules/@onfido/react-native-sdk/android/build.gradle
-@@ -135,9 +135,9 @@ afterEvaluate { project ->
+@@ -84,6 +84,13 @@ android {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
++
++ publishing {
++ singleVariant('release') {
++ withSourcesJar()
++ withJavadocJar()
++ }
++ }
+ }
+
+ repositories {
+@@ -135,9 +142,9 @@ afterEvaluate { project ->
group = "Reporting"
description = "Generate Jacoco coverage reports after running tests."
reports {
diff --git a/patches/@react-native+virtualized-lists+0.72.8.patch b/patches/@react-native+virtualized-lists+0.72.8.patch
deleted file mode 100644
index a3bef95f1618..000000000000
--- a/patches/@react-native+virtualized-lists+0.72.8.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-diff --git a/node_modules/@react-native/virtualized-lists/Lists/VirtualizedList.js b/node_modules/@react-native/virtualized-lists/Lists/VirtualizedList.js
-index ef5a3f0..2590edd 100644
---- a/node_modules/@react-native/virtualized-lists/Lists/VirtualizedList.js
-+++ b/node_modules/@react-native/virtualized-lists/Lists/VirtualizedList.js
-@@ -125,19 +125,6 @@ function windowSizeOrDefault(windowSize: ?number) {
- return windowSize ?? 21;
- }
-
--function findLastWhere(
-- arr: $ReadOnlyArray,
-- predicate: (element: T) => boolean,
--): T | null {
-- for (let i = arr.length - 1; i >= 0; i--) {
-- if (predicate(arr[i])) {
-- return arr[i];
-- }
-- }
--
-- return null;
--}
--
- /**
- * Base implementation for the more convenient [``](https://reactnative.dev/docs/flatlist)
- * and [``](https://reactnative.dev/docs/sectionlist) components, which are also better
-@@ -1019,7 +1006,8 @@ class VirtualizedList extends StateSafePureComponent {
- const spacerKey = this._getSpacerKey(!horizontal);
-
- const renderRegions = this.state.renderMask.enumerateRegions();
-- const lastSpacer = findLastWhere(renderRegions, r => r.isSpacer);
-+ const lastRegion = renderRegions[renderRegions.length - 1];
-+ const lastSpacer = lastRegion?.isSpacer ? lastRegion : null;
-
- for (const section of renderRegions) {
- if (section.isSpacer) {
diff --git a/patches/expo-image+1.10.1+001+applyFill.patch b/patches/expo-image+1.10.1+001+applyFill.patch
new file mode 100644
index 000000000000..5f168040d04d
--- /dev/null
+++ b/patches/expo-image+1.10.1+001+applyFill.patch
@@ -0,0 +1,112 @@
+diff --git a/node_modules/expo-image/android/src/main/java/com/caverock/androidsvg/SVGStyler.kt b/node_modules/expo-image/android/src/main/java/com/caverock/androidsvg/SVGStyler.kt
+index 619daf2..b58a0df 100644
+--- a/node_modules/expo-image/android/src/main/java/com/caverock/androidsvg/SVGStyler.kt
++++ b/node_modules/expo-image/android/src/main/java/com/caverock/androidsvg/SVGStyler.kt
+@@ -1,5 +1,9 @@
+ package com.caverock.androidsvg
+
++import com.caverock.androidsvg.SVG.SPECIFIED_COLOR
++import com.caverock.androidsvg.SVG.SPECIFIED_FILL
++import com.caverock.androidsvg.SVG.SvgElementBase
++
+ internal fun replaceColor(paint: SVG.SvgPaint?, newColor: Int) {
+ if (paint is SVG.Colour && paint !== SVG.Colour.TRANSPARENT) {
+ paint.colour = newColor
+@@ -19,15 +23,83 @@ internal fun replaceStyles(style: SVG.Style?, newColor: Int) {
+ replaceColor(style.viewportFill, newColor)
+ }
+
+-internal fun applyTintColor(element: SVG.SvgObject, newColor: Int) {
+- if (element is SVG.SvgElementBase) {
++internal fun hasStyle(element: SvgElementBase): Boolean {
++ if (element.style == null && element.baseStyle == null) {
++ return false
++ }
++
++ val style = element.style
++ val hasColorInStyle = style != null &&
++ (
++ style.color != null || style.fill != null || style.stroke != null ||
++ style.stroke != null || style.stopColor != null || style.solidColor != null
++ )
++
++ if (hasColorInStyle) {
++ return true
++ }
++
++ val baseStyle = element.baseStyle ?: return false
++ return baseStyle.color != null || baseStyle.fill != null || baseStyle.stroke != null ||
++ baseStyle.viewportFill != null || baseStyle.stopColor != null || baseStyle.solidColor != null
++}
++
++internal fun defineStyles(element: SvgElementBase, newColor: Int, hasStyle: Boolean) {
++ if (hasStyle) {
++ return
++ }
++
++ val style = if (element.style != null) {
++ element.style
++ } else {
++ SVG.Style().also {
++ element.style = it
++ }
++ }
++
++ val color = SVG.Colour(newColor)
++ when (element) {
++ is SVG.Path,
++ is SVG.Circle,
++ is SVG.Ellipse,
++ is SVG.Rect,
++ is SVG.SolidColor,
++ is SVG.Line,
++ is SVG.Polygon,
++ is SVG.PolyLine -> {
++ style.apply {
++ fill = color
++
++ specifiedFlags = SPECIFIED_FILL
++ }
++ }
++
++ is SVG.TextPath -> {
++ style.apply {
++ this.color = color
++
++ specifiedFlags = SPECIFIED_COLOR
++ }
++ }
++ }
++}
++
++internal fun applyTintColor(element: SVG.SvgObject, newColor: Int, parentDefinesStyle: Boolean) {
++ val definesStyle = if (element is SvgElementBase) {
++ val hasStyle = parentDefinesStyle || hasStyle(element)
++
+ replaceStyles(element.baseStyle, newColor)
+ replaceStyles(element.style, newColor)
++ defineStyles(element, newColor, hasStyle)
++
++ hasStyle
++ } else {
++ parentDefinesStyle
+ }
+
+ if (element is SVG.SvgContainer) {
+ for (child in element.children) {
+- applyTintColor(child, newColor)
++ applyTintColor(child, newColor, definesStyle)
+ }
+ }
+ }
+@@ -36,8 +108,9 @@ fun applyTintColor(svg: SVG, newColor: Int) {
+ val root = svg.rootElement
+
+ replaceStyles(root.style, newColor)
++ val hasStyle = hasStyle(root)
+
+ for (child in root.children) {
+- applyTintColor(child, newColor)
++ applyTintColor(child, newColor, hasStyle)
+ }
+ }
diff --git a/patches/expo-image+1.10.1+002+TintFix.patch b/patches/expo-image+1.10.1+002+TintFix.patch
new file mode 100644
index 000000000000..92b56c039b43
--- /dev/null
+++ b/patches/expo-image+1.10.1+002+TintFix.patch
@@ -0,0 +1,38 @@
+diff --git a/node_modules/expo-image/android/src/main/java/com/caverock/androidsvg/SVGStyler.kt b/node_modules/expo-image/android/src/main/java/com/caverock/androidsvg/SVGStyler.kt
+index b58a0df..6b8da3c 100644
+--- a/node_modules/expo-image/android/src/main/java/com/caverock/androidsvg/SVGStyler.kt
++++ b/node_modules/expo-image/android/src/main/java/com/caverock/androidsvg/SVGStyler.kt
+@@ -107,6 +107,7 @@ internal fun applyTintColor(element: SVG.SvgObject, newColor: Int, parentDefines
+ fun applyTintColor(svg: SVG, newColor: Int) {
+ val root = svg.rootElement
+
++ replaceStyles(root.baseStyle, newColor)
+ replaceStyles(root.style, newColor)
+ val hasStyle = hasStyle(root)
+
+diff --git a/node_modules/expo-image/android/src/main/java/expo/modules/image/ExpoImageViewWrapper.kt b/node_modules/expo-image/android/src/main/java/expo/modules/image/ExpoImageViewWrapper.kt
+index 602b570..8becf72 100644
+--- a/node_modules/expo-image/android/src/main/java/expo/modules/image/ExpoImageViewWrapper.kt
++++ b/node_modules/expo-image/android/src/main/java/expo/modules/image/ExpoImageViewWrapper.kt
+@@ -31,6 +31,7 @@ import expo.modules.image.records.ImageLoadEvent
+ import expo.modules.image.records.ImageProgressEvent
+ import expo.modules.image.records.ImageTransition
+ import expo.modules.image.records.SourceMap
++import expo.modules.image.svg.SVGPictureDrawable
+ import expo.modules.kotlin.AppContext
+ import expo.modules.kotlin.tracing.beginAsyncTraceBlock
+ import expo.modules.kotlin.tracing.trace
+@@ -127,7 +128,12 @@ class ExpoImageViewWrapper(context: Context, appContext: AppContext) : ExpoView(
+ internal var tintColor: Int? = null
+ set(value) {
+ field = value
+- activeView.setTintColor(value)
++ // To apply the tint color to the SVG, we need to recreate the drawable.
++ if (activeView.drawable is SVGPictureDrawable) {
++ shouldRerender = true
++ } else {
++ activeView.setTintColor(value)
++ }
+ }
+
+ internal var isFocusableProp: Boolean = false
diff --git a/patches/react-native+0.72.4+001+initial.patch b/patches/react-native+0.72.4+001+initial.patch
deleted file mode 100644
index f81762d83c1a..000000000000
--- a/patches/react-native+0.72.4+001+initial.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-diff --git a/node_modules/react-native/Libraries/Components/Keyboard/KeyboardAvoidingView.js b/node_modules/react-native/Libraries/Components/Keyboard/KeyboardAvoidingView.js
-index 9fb5637..e26d677 100644
---- a/node_modules/react-native/Libraries/Components/Keyboard/KeyboardAvoidingView.js
-+++ b/node_modules/react-native/Libraries/Components/Keyboard/KeyboardAvoidingView.js
-@@ -65,6 +65,7 @@ class KeyboardAvoidingView extends React.Component {
- _subscriptions: Array = [];
- viewRef: {current: React.ElementRef | null, ...};
- _initialFrameHeight: number = 0;
-+ _bottom: number = 0;
-
- constructor(props: Props) {
- super(props);
-@@ -112,14 +113,15 @@ class KeyboardAvoidingView extends React.Component {
- };
-
- _onLayout = async (event: ViewLayoutEvent) => {
-- const wasFrameNull = this._frame == null;
-+ const oldFrame = this._frame;
- this._frame = event.nativeEvent.layout;
- if (!this._initialFrameHeight) {
- // save the initial frame height, before the keyboard is visible
- this._initialFrameHeight = this._frame.height;
- }
-
-- if (wasFrameNull) {
-+ // update bottom height for the first time or when the height is changed
-+ if (!oldFrame || oldFrame.height !== this._frame.height) {
- await this._updateBottomIfNecessary();
- }
-
-@@ -128,20 +130,32 @@ class KeyboardAvoidingView extends React.Component {
- }
- };
-
-+ // Avoid unnecessary renders if the KeyboardAvoidingView is disabled.
-+ _setBottom = (value: number) => {
-+ const enabled = this.props.enabled ?? true;
-+ this._bottom = value;
-+ if (enabled) {
-+ this.setState({bottom: value});
-+ }
-+ };
-+
- _updateBottomIfNecessary = async () => {
- if (this._keyboardEvent == null) {
-- this.setState({bottom: 0});
-+ this._setBottom(0);
- return;
- }
-
- const {duration, easing, endCoordinates} = this._keyboardEvent;
- const height = await this._relativeKeyboardHeight(endCoordinates);
-
-- if (this.state.bottom === height) {
-+ if (this._bottom === height) {
- return;
- }
-
-- if (duration && easing) {
-+ this._setBottom(height);
-+
-+ const enabled = this.props.enabled ?? true;
-+ if (enabled && duration && easing) {
- LayoutAnimation.configureNext({
- // We have to pass the duration equal to minimal accepted duration defined here: RCTLayoutAnimation.m
- duration: duration > 10 ? duration : 10,
-@@ -151,9 +165,15 @@ class KeyboardAvoidingView extends React.Component {
- },
- });
- }
-- this.setState({bottom: height});
- };
-
-+ componentDidUpdate(_: Props, prevState: State): void {
-+ const enabled = this.props.enabled ?? true;
-+ if (enabled && this._bottom !== prevState.bottom) {
-+ this.setState({bottom: this._bottom});
-+ }
-+ }
-+
- componentDidMount(): void {
- if (Platform.OS === 'ios') {
- this._subscriptions = [
diff --git a/patches/react-native+0.72.4+005+fix-boost-dependency.patch b/patches/react-native+0.72.4+005+fix-boost-dependency.patch
deleted file mode 100644
index 477cf97b4a02..000000000000
--- a/patches/react-native+0.72.4+005+fix-boost-dependency.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-diff --git a/node_modules/react-native/ReactAndroid/build.gradle b/node_modules/react-native/ReactAndroid/build.gradle
-index f44b6e4..818833b 100644
---- a/node_modules/react-native/ReactAndroid/build.gradle
-+++ b/node_modules/react-native/ReactAndroid/build.gradle
-@@ -243,7 +243,8 @@ task createNativeDepsDirectories {
- }
-
- task downloadBoost(dependsOn: createNativeDepsDirectories, type: Download) {
-- src("https://boostorg.jfrog.io/artifactory/main/release/${BOOST_VERSION.replace("_", ".")}/source/boost_${BOOST_VERSION}.tar.gz")
-+ def transformedVersion = BOOST_VERSION.replace("_", ".")
-+ src("https://archives.boost.io/release/${transformedVersion}/source/boost_${BOOST_VERSION}.tar.gz")
- onlyIfModified(true)
- overwrite(false)
- retries(5)
-diff --git a/node_modules/react-native/third-party-podspecs/boost.podspec b/node_modules/react-native/third-party-podspecs/boost.podspec
-index 3d9331c..bbbb738 100644
---- a/node_modules/react-native/third-party-podspecs/boost.podspec
-+++ b/node_modules/react-native/third-party-podspecs/boost.podspec
-@@ -10,7 +10,7 @@ Pod::Spec.new do |spec|
- spec.homepage = 'http://www.boost.org'
- spec.summary = 'Boost provides free peer-reviewed portable C++ source libraries.'
- spec.authors = 'Rene Rivera'
-- spec.source = { :http => 'https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.bz2',
-+ spec.source = { :http => 'https://archives.boost.io/release/1.76.0/source/boost_1_76_0.tar.bz2',
- :sha256 => 'f0397ba6e982c4450f27bf32a2a83292aba035b827a5623a14636ea583318c41' }
-
- # Pinning to the same version as React.podspec.
diff --git a/patches/react-native+0.72.4+002+NumberOfLines.patch b/patches/react-native+0.73.2+001+NumberOfLines.patch
similarity index 88%
rename from patches/react-native+0.72.4+002+NumberOfLines.patch
rename to patches/react-native+0.73.2+001+NumberOfLines.patch
index 75422f84708e..c9ce92f8e1ef 100644
--- a/patches/react-native+0.72.4+002+NumberOfLines.patch
+++ b/patches/react-native+0.73.2+001+NumberOfLines.patch
@@ -17,7 +17,7 @@ index 55b770d..4073836 100644
* When `false`, if there is a small amount of space available around a text input
* (e.g. landscape orientation on a phone), the OS may choose to have the user edit
diff --git a/node_modules/react-native/Libraries/Components/TextInput/RCTTextInputViewConfig.js b/node_modules/react-native/Libraries/Components/TextInput/RCTTextInputViewConfig.js
-index 6f69329..d531bee 100644
+index 88d3cc8..664d37d 100644
--- a/node_modules/react-native/Libraries/Components/TextInput/RCTTextInputViewConfig.js
+++ b/node_modules/react-native/Libraries/Components/TextInput/RCTTextInputViewConfig.js
@@ -144,6 +144,8 @@ const RCTTextInputViewConfig = {
@@ -30,23 +30,10 @@ index 6f69329..d531bee 100644
maxLength: true,
autoCapitalize: true,
diff --git a/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts b/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts
-index 8badb2a..b19f197 100644
+index 2c0c099..5cb6bf1 100644
--- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts
+++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts
-@@ -347,12 +347,6 @@ export interface TextInputAndroidProps {
- */
- inlineImagePadding?: number | undefined;
-
-- /**
-- * Sets the number of lines for a TextInput.
-- * Use it with multiline set to true to be able to fill the lines.
-- */
-- numberOfLines?: number | undefined;
--
- /**
- * Sets the return key to the label. Use it instead of `returnKeyType`.
- * @platform android
-@@ -663,11 +657,30 @@ export interface TextInputProps
+@@ -695,11 +695,29 @@ export interface TextInputProps
*/
maxLength?: number | undefined;
@@ -72,16 +59,15 @@ index 8badb2a..b19f197 100644
+ * Use it with multiline set to true to be able to fill the lines.
+ */
+ rows?: number | undefined;
-+
+
/**
* Callback that is called when the text input is blurred
*/
diff --git a/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js b/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js
-index 7ed4579..b1d994e 100644
+index 9adbfe9..dc52051 100644
--- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js
+++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js
-@@ -343,26 +343,12 @@ type AndroidProps = $ReadOnly<{|
+@@ -366,26 +366,12 @@ type AndroidProps = $ReadOnly<{|
*/
inlineImagePadding?: ?number,
@@ -108,9 +94,9 @@ index 7ed4579..b1d994e 100644
/**
* When `false`, it will prevent the soft keyboard from showing when the field is focused.
* Defaults to `true`.
-@@ -632,6 +618,12 @@ export type Props = $ReadOnly<{|
+@@ -680,12 +666,24 @@ export type Props = $ReadOnly<{|
*/
- keyboardType?: ?KeyboardType,
+ maxLength?: ?number,
+ /**
+ * Sets the maximum number of lines for a `TextInput`. Use it with multiline set to
@@ -119,9 +105,8 @@ index 7ed4579..b1d994e 100644
+ maxNumberOfLines?: ?number,
+
/**
- * Specifies largest possible scale a font can reach when `allowFontScaling` is enabled.
- * Possible values:
-@@ -653,6 +645,12 @@ export type Props = $ReadOnly<{|
+ * If `true`, the text input can be multiple lines.
+ * The default value is `false`.
*/
multiline?: ?boolean,
@@ -134,7 +119,7 @@ index 7ed4579..b1d994e 100644
/**
* Callback that is called when the text input is blurred.
*/
-@@ -814,6 +812,12 @@ export type Props = $ReadOnly<{|
+@@ -847,6 +845,13 @@ export type Props = $ReadOnly<{|
*/
returnKeyType?: ?ReturnKeyType,
@@ -143,15 +128,16 @@ index 7ed4579..b1d994e 100644
+ * `true` to be able to fill the lines.
+ */
+ rows?: ?number,
++
+
/**
* If `true`, the text input obscures the text entered so that sensitive text
* like passwords stay secure. The default value is `false`. Does not work with 'multiline={true}'.
diff --git a/node_modules/react-native/Libraries/Components/TextInput/TextInput.js b/node_modules/react-native/Libraries/Components/TextInput/TextInput.js
-index 2127191..542fc06 100644
+index 481938f..3ce7422 100644
--- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.js
+++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.js
-@@ -390,7 +390,6 @@ type AndroidProps = $ReadOnly<{|
+@@ -413,7 +413,6 @@ type AndroidProps = $ReadOnly<{|
/**
* Sets the number of lines for a `TextInput`. Use it with multiline set to
* `true` to be able to fill the lines.
@@ -159,7 +145,7 @@ index 2127191..542fc06 100644
*/
numberOfLines?: ?number,
-@@ -403,10 +402,14 @@ type AndroidProps = $ReadOnly<{|
+@@ -426,10 +425,15 @@ type AndroidProps = $ReadOnly<{|
/**
* Sets the number of rows for a `TextInput`. Use it with multiline set to
* `true` to be able to fill the lines.
@@ -171,11 +157,12 @@ index 2127191..542fc06 100644
+ * Sets the maximum number of lines the TextInput can have.
+ */
+ maxNumberOfLines?: ?number,
++
+
/**
* When `false`, it will prevent the soft keyboard from showing when the field is focused.
* Defaults to `true`.
-@@ -1069,6 +1072,9 @@ function InternalTextInput(props: Props): React.Node {
+@@ -1102,6 +1106,9 @@ function InternalTextInput(props: Props): React.Node {
accessibilityState,
id,
tabIndex,
@@ -185,7 +172,7 @@ index 2127191..542fc06 100644
selection: propsSelection,
...otherProps
} = props;
-@@ -1427,6 +1433,8 @@ function InternalTextInput(props: Props): React.Node {
+@@ -1460,6 +1467,8 @@ function InternalTextInput(props: Props): React.Node {
focusable={tabIndex !== undefined ? !tabIndex : focusable}
mostRecentEventCount={mostRecentEventCount}
nativeID={id ?? props.nativeID}
@@ -194,7 +181,7 @@ index 2127191..542fc06 100644
onBlur={_onBlur}
onKeyPressSync={props.unstable_onKeyPressSync}
onChange={_onChange}
-@@ -1482,6 +1490,7 @@ function InternalTextInput(props: Props): React.Node {
+@@ -1515,6 +1524,7 @@ function InternalTextInput(props: Props): React.Node {
mostRecentEventCount={mostRecentEventCount}
nativeID={id ?? props.nativeID}
numberOfLines={props.rows ?? props.numberOfLines}
@@ -203,11 +190,11 @@ index 2127191..542fc06 100644
onChange={_onChange}
onFocus={_onFocus}
diff --git a/node_modules/react-native/Libraries/Text/Text.js b/node_modules/react-native/Libraries/Text/Text.js
-index df548af..e02f5da 100644
+index d737ccc..beee7ce 100644
--- a/node_modules/react-native/Libraries/Text/Text.js
+++ b/node_modules/react-native/Libraries/Text/Text.js
-@@ -18,7 +18,11 @@ import processColor from '../StyleSheet/processColor';
- import {getAccessibilityRoleFromRole} from '../Utilities/AcessibilityMapping';
+@@ -17,7 +17,11 @@ import flattenStyle from '../StyleSheet/flattenStyle';
+ import processColor from '../StyleSheet/processColor';
import Platform from '../Utilities/Platform';
import TextAncestor from './TextAncestor';
-import {NativeText, NativeVirtualText} from './TextNativeComponent';
@@ -219,15 +206,15 @@ index df548af..e02f5da 100644
import * as React from 'react';
import {useContext, useMemo, useState} from 'react';
-@@ -59,6 +63,7 @@ const Text: React.AbstractComponent<
+@@ -56,6 +60,7 @@ const Text: React.AbstractComponent<
+ onStartShouldSetResponder,
pressRetentionOffset,
- role,
suppressHighlighting,
+ numberOfLines,
...restProps
} = props;
-@@ -192,14 +197,33 @@ const Text: React.AbstractComponent<
+@@ -195,14 +200,34 @@ const Text: React.AbstractComponent<
}
}
@@ -259,11 +246,12 @@ index df548af..e02f5da 100644
+ maximumNumberOfLines: numberOfLinesValue,
+ };
+ }, [numberOfLinesValue]);
++
+
const hasTextAncestor = useContext(TextAncestor);
const _accessible = Platform.select({
-@@ -241,7 +265,6 @@ const Text: React.AbstractComponent<
+@@ -251,7 +276,6 @@ const Text: React.AbstractComponent<
isHighlighted={isHighlighted}
isPressable={isPressable}
nativeID={id ?? nativeID}
@@ -271,15 +259,15 @@ index df548af..e02f5da 100644
ref={forwardedRef}
selectable={_selectable}
selectionColor={selectionColor}
-@@ -252,6 +275,7 @@ const Text: React.AbstractComponent<
+@@ -262,6 +286,7 @@ const Text: React.AbstractComponent<
@@ -347,10 +335,10 @@ index 8f4cf7e..6238ebc 100644
@property (nonatomic, copy, nullable) RCTDirectEventBlock onContentSizeChange;
- (void)uiManagerWillPerformMounting;
-diff --git a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputShadowView.m b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputShadowView.m
-index 04d2446..9d77743 100644
---- a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputShadowView.m
-+++ b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputShadowView.m
+diff --git a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputShadowView.mm b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputShadowView.mm
+index 1f06b79..48172ce 100644
+--- a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputShadowView.mm
++++ b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputShadowView.mm
@@ -218,7 +218,22 @@ - (NSAttributedString *)measurableAttributedText
- (CGSize)sizeThatFitsMinimumSize:(CGSize)minimumSize maximumSize:(CGSize)maximumSize
@@ -375,10 +363,10 @@ index 04d2446..9d77743 100644
if (!_textStorage) {
_textContainer = [NSTextContainer new];
-diff --git a/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputViewManager.m b/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputViewManager.m
+diff --git a/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputViewManager.mm b/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputViewManager.mm
index 413ac42..56d039c 100644
---- a/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputViewManager.m
-+++ b/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputViewManager.m
+--- a/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputViewManager.mm
++++ b/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputViewManager.mm
@@ -19,6 +19,7 @@ - (RCTShadowView *)shadowView
RCTBaseTextInputShadowView *shadowView = (RCTBaseTextInputShadowView *)[super shadowView];
@@ -442,7 +430,7 @@ index 8cab407..ad5fa96 100644
+ public static final int MAXIMUM_NUMBER_OF_LINES = Integer.MAX_VALUE;
}
diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.java
-index 3f76fa7..7a5d096 100644
+index fa6eae3..f524753 100644
--- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.java
+++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.java
@@ -96,6 +96,7 @@ public class ViewProps {
@@ -454,18 +442,18 @@ index 3f76fa7..7a5d096 100644
public static final String ADJUSTS_FONT_SIZE_TO_FIT = "adjustsFontSizeToFit";
public static final String MINIMUM_FONT_SCALE = "minimumFontScale";
diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactBaseTextShadowNode.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactBaseTextShadowNode.java
-index b5811c7..96eef96 100644
+index d2c2d6e..e4dec5d 100644
--- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactBaseTextShadowNode.java
+++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactBaseTextShadowNode.java
-@@ -303,6 +303,7 @@ public abstract class ReactBaseTextShadowNode extends LayoutShadowNode {
- protected boolean mIsAccessibilityLink = false;
+@@ -311,6 +311,7 @@ public abstract class ReactBaseTextShadowNode extends LayoutShadowNode {
+ protected @Nullable Role mRole = null;
protected int mNumberOfLines = UNSET;
+ protected int mMaxNumberOfLines = UNSET;
protected int mTextAlign = Gravity.NO_GRAVITY;
protected int mTextBreakStrategy =
(Build.VERSION.SDK_INT < Build.VERSION_CODES.M) ? 0 : Layout.BREAK_STRATEGY_HIGH_QUALITY;
-@@ -387,6 +388,12 @@ public abstract class ReactBaseTextShadowNode extends LayoutShadowNode {
+@@ -395,6 +396,12 @@ public abstract class ReactBaseTextShadowNode extends LayoutShadowNode {
markUpdated();
}
@@ -479,7 +467,7 @@ index b5811c7..96eef96 100644
public void setLineHeight(float lineHeight) {
mTextAttributes.setLineHeight(lineHeight);
diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java
-index 7b5d0c1..c3032eb 100644
+index f683c24..b5f6f7d 100644
--- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java
+++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java
@@ -49,8 +49,8 @@ public abstract class ReactTextAnchorViewManager sSpannableCache =
new LruCache<>(spannableCacheSize);
private static final ConcurrentHashMap sTagToSpannableCache =
-@@ -385,6 +387,48 @@ public class TextLayoutManager {
+@@ -395,6 +397,48 @@ public class TextLayoutManager {
? paragraphAttributes.getInt(MAXIMUM_NUMBER_OF_LINES_KEY)
: UNSET;
@@ -619,10 +607,10 @@ index 561a2d0..9409cfc 100644
maximumNumberOfLines == UNSET || maximumNumberOfLines == 0
? layout.getLineCount()
diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java
-index 0d118f0..0ae44b7 100644
+index 8cd5764..35a2e9e 100644
--- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java
+++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java
-@@ -18,6 +18,7 @@ import android.text.SpannableStringBuilder;
+@@ -20,6 +20,7 @@ import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.StaticLayout;
import android.text.TextPaint;
@@ -630,7 +618,7 @@ index 0d118f0..0ae44b7 100644
import android.util.LayoutDirection;
import android.util.LruCache;
import android.view.View;
-@@ -61,6 +62,7 @@ public class TextLayoutManagerMapBuffer {
+@@ -66,6 +67,7 @@ public class TextLayoutManagerMapBuffer {
public static final short PA_KEY_ADJUST_FONT_SIZE_TO_FIT = 3;
public static final short PA_KEY_INCLUDE_FONT_PADDING = 4;
public static final short PA_KEY_HYPHENATION_FREQUENCY = 5;
@@ -638,7 +626,7 @@ index 0d118f0..0ae44b7 100644
private static final boolean ENABLE_MEASURE_LOGGING = ReactBuildConfig.DEBUG && false;
-@@ -399,6 +401,47 @@ public class TextLayoutManagerMapBuffer {
+@@ -417,6 +419,46 @@ public class TextLayoutManagerMapBuffer {
? paragraphAttributes.getInt(PA_KEY_MAX_NUMBER_OF_LINES)
: UNSET;
@@ -681,29 +669,33 @@ index 0d118f0..0ae44b7 100644
+ if (numberOfLines != UNSET && numberOfLines != 0) {
+ maximumNumberOfLines = numberOfLines;
+ }
-+
+
int calculatedLineCount =
maximumNumberOfLines == UNSET || maximumNumberOfLines == 0
? layout.getLineCount()
diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java
-index ced37be..ef2f321 100644
+index 081f2b8..0659179 100644
--- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java
+++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java
-@@ -548,7 +548,13 @@ public class ReactEditText extends AppCompatEditText
+@@ -546,9 +546,15 @@ public class ReactEditText extends AppCompatEditText {
+ * android.widget.TextView#isMultilineInputType(int)}} Source: {@Link TextView.java}
*/
- if (isMultiline()) {
-+ // we save max lines as setSingleLines overwrites it
-+ // https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/widget/TextView.java#10671
-+ int maxLines = getMaxLines();
- setSingleLine(false);
-+ if (maxLines != -1) {
-+ setMaxLines(maxLines);
-+ }
- }
+- if (isMultiline()) {
+- setSingleLine(false);
+- }
++ if (isMultiline()) {
++ // we save max lines as setSingleLines overwrites it
++ // https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/widget/TextView.java#10671
++ int maxLines = getMaxLines();
++ setSingleLine(false);
++ if (maxLines != -1) {
++ setMaxLines(maxLines);
++ }
++ }
// We override the KeyListener so that all keys on the soft input keyboard as well as hardware
+ // keyboards work. Some KeyListeners like DigitsKeyListener will display the keyboard but not
diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputLocalData.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputLocalData.java
index a850510..c59be1d 100644
--- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputLocalData.java
@@ -720,10 +712,10 @@ index a850510..c59be1d 100644
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
editText.setBreakStrategy(mBreakStrategy);
diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java
-index b27ace4..c6a2d63 100644
+index 8496a7d..e4d975b 100644
--- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java
+++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java
-@@ -737,9 +737,18 @@ public class ReactTextInputManager extends BaseViewManager= Build.VERSION_CODES.M
diff --git a/node_modules/react-native/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.cpp b/node_modules/react-native/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.cpp
-index 2994aca..fff0d5e 100644
+index f2317ba..10f342c 100644
--- a/node_modules/react-native/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.cpp
+++ b/node_modules/react-native/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.cpp
@@ -16,6 +16,7 @@ namespace facebook::react {
- bool ParagraphAttributes::operator==(const ParagraphAttributes &rhs) const {
+ bool ParagraphAttributes::operator==(const ParagraphAttributes& rhs) const {
return std::tie(
+ numberOfLines,
maximumNumberOfLines,
ellipsizeMode,
textBreakStrategy,
-@@ -23,6 +24,7 @@ bool ParagraphAttributes::operator==(const ParagraphAttributes &rhs) const {
+@@ -23,6 +24,7 @@ bool ParagraphAttributes::operator==(const ParagraphAttributes& rhs) const {
includeFontPadding,
android_hyphenationFrequency) ==
std::tie(
@@ -777,7 +769,7 @@ index 2994aca..fff0d5e 100644
rhs.maximumNumberOfLines,
rhs.ellipsizeMode,
rhs.textBreakStrategy,
-@@ -42,6 +44,7 @@ bool ParagraphAttributes::operator!=(const ParagraphAttributes &rhs) const {
+@@ -42,6 +44,7 @@ bool ParagraphAttributes::operator!=(const ParagraphAttributes& rhs) const {
#if RN_DEBUG_STRING_CONVERTIBLE
SharedDebugStringConvertibleList ParagraphAttributes::getDebugProps() const {
return {
@@ -786,10 +778,10 @@ index 2994aca..fff0d5e 100644
debugStringConvertibleItem("ellipsizeMode", ellipsizeMode),
debugStringConvertibleItem("textBreakStrategy", textBreakStrategy),
diff --git a/node_modules/react-native/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.h b/node_modules/react-native/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.h
-index f5f87c6..b7d1e90 100644
+index d73f863..1f85b22 100644
--- a/node_modules/react-native/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.h
+++ b/node_modules/react-native/ReactCommon/react/renderer/attributedstring/ParagraphAttributes.h
-@@ -30,6 +30,11 @@ class ParagraphAttributes : public DebugStringConvertible {
+@@ -29,6 +29,11 @@ class ParagraphAttributes : public DebugStringConvertible {
public:
#pragma mark - Fields
@@ -801,20 +793,20 @@ index f5f87c6..b7d1e90 100644
/*
* Maximum number of lines which paragraph can take.
* Zero value represents "no limit".
-@@ -92,6 +97,7 @@ struct hash {
- const facebook::react::ParagraphAttributes &attributes) const {
- return folly::hash::hash_combine(
- 0,
+@@ -89,6 +94,7 @@ struct hash {
+ size_t operator()(
+ const facebook::react::ParagraphAttributes& attributes) const {
+ return facebook::react::hash_combine(
+ attributes.numberOfLines,
attributes.maximumNumberOfLines,
attributes.ellipsizeMode,
attributes.textBreakStrategy,
diff --git a/node_modules/react-native/ReactCommon/react/renderer/attributedstring/conversions.h b/node_modules/react-native/ReactCommon/react/renderer/attributedstring/conversions.h
-index 8687b89..eab75f4 100644
+index 445e452..3f0bb36 100644
--- a/node_modules/react-native/ReactCommon/react/renderer/attributedstring/conversions.h
+++ b/node_modules/react-native/ReactCommon/react/renderer/attributedstring/conversions.h
-@@ -835,10 +835,16 @@ inline ParagraphAttributes convertRawProp(
- ParagraphAttributes const &defaultParagraphAttributes) {
+@@ -692,10 +692,16 @@ inline ParagraphAttributes convertRawProp(
+ const ParagraphAttributes& defaultParagraphAttributes) {
auto paragraphAttributes = ParagraphAttributes{};
- paragraphAttributes.maximumNumberOfLines = convertRawProp(
@@ -831,23 +823,23 @@ index 8687b89..eab75f4 100644
sourceParagraphAttributes.maximumNumberOfLines,
defaultParagraphAttributes.maximumNumberOfLines);
paragraphAttributes.ellipsizeMode = convertRawProp(
-@@ -913,6 +919,7 @@ inline std::string toString(AttributedString::Range const &range) {
+@@ -770,6 +776,7 @@ inline std::string toString(const AttributedString::Range& range) {
inline folly::dynamic toDynamic(
- const ParagraphAttributes ¶graphAttributes) {
+ const ParagraphAttributes& paragraphAttributes) {
auto values = folly::dynamic::object();
+ values("numberOfLines", paragraphAttributes.numberOfLines);
values("maximumNumberOfLines", paragraphAttributes.maximumNumberOfLines);
values("ellipsizeMode", toString(paragraphAttributes.ellipsizeMode));
values("textBreakStrategy", toString(paragraphAttributes.textBreakStrategy));
-@@ -1118,6 +1125,7 @@ constexpr static MapBuffer::Key PA_KEY_TEXT_BREAK_STRATEGY = 2;
+@@ -979,6 +986,7 @@ constexpr static MapBuffer::Key PA_KEY_TEXT_BREAK_STRATEGY = 2;
constexpr static MapBuffer::Key PA_KEY_ADJUST_FONT_SIZE_TO_FIT = 3;
constexpr static MapBuffer::Key PA_KEY_INCLUDE_FONT_PADDING = 4;
constexpr static MapBuffer::Key PA_KEY_HYPHENATION_FREQUENCY = 5;
+constexpr static MapBuffer::Key PA_KEY_NUMBER_OF_LINES = 6;
- inline MapBuffer toMapBuffer(const ParagraphAttributes ¶graphAttributes) {
+ inline MapBuffer toMapBuffer(const ParagraphAttributes& paragraphAttributes) {
auto builder = MapBufferBuilder();
-@@ -1135,6 +1143,8 @@ inline MapBuffer toMapBuffer(const ParagraphAttributes ¶graphAttributes) {
+@@ -996,6 +1004,8 @@ inline MapBuffer toMapBuffer(const ParagraphAttributes& paragraphAttributes) {
builder.putString(
PA_KEY_HYPHENATION_FREQUENCY,
toString(paragraphAttributes.android_hyphenationFrequency));
@@ -857,7 +849,7 @@ index 8687b89..eab75f4 100644
return builder.build();
}
diff --git a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.cpp b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.cpp
-index 9953e22..98eb3da 100644
+index 116284f..5749c57 100644
--- a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.cpp
+++ b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.cpp
@@ -56,6 +56,10 @@ AndroidTextInputProps::AndroidTextInputProps(
@@ -865,9 +857,9 @@ index 9953e22..98eb3da 100644
sourceProps.numberOfLines,
{0})),
+ maximumNumberOfLines(CoreFeatures::enablePropIteratorSetter? sourceProps.maximumNumberOfLines : convertRawProp(context, rawProps,
-+ "maximumNumberOfLines",
-+ sourceProps.maximumNumberOfLines,
-+ {0})),
++ "maximumNumberOfLines",
++ sourceProps.maximumNumberOfLines,
++ {0})),
disableFullscreenUI(CoreFeatures::enablePropIteratorSetter? sourceProps.disableFullscreenUI : convertRawProp(context, rawProps,
"disableFullscreenUI",
sourceProps.disableFullscreenUI,
@@ -901,10 +893,10 @@ index 9953e22..98eb3da 100644
props["returnKeyLabel"] = returnKeyLabel;
props["numberOfLines"] = numberOfLines;
diff --git a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.h b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.h
-index ba39ebb..ead28e3 100644
+index 43cbb68..0bf63e7 100644
--- a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.h
+++ b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputProps.h
-@@ -84,6 +84,7 @@ class AndroidTextInputProps final : public ViewProps, public BaseTextProps {
+@@ -81,6 +81,7 @@ class AndroidTextInputProps final : public ViewProps, public BaseTextProps {
std::string autoComplete{};
std::string returnKeyLabel{};
int numberOfLines{0};
@@ -913,21 +905,20 @@ index ba39ebb..ead28e3 100644
std::string textBreakStrategy{};
SharedColor underlineColorAndroid{};
diff --git a/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm b/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm
-index 368c334..a1bb33e 100644
+index 368c334..ef9ec17 100644
--- a/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm
+++ b/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm
-@@ -244,26 +244,51 @@ - (void)getRectWithAttributedString:(AttributedString)attributedString
+@@ -244,26 +244,49 @@ - (void)getRectWithAttributedString:(AttributedString)attributedString
#pragma mark - Private
-- (NSTextStorage *)_textStorageForNSAttributesString:(NSAttributedString *)attributedString
-++- (NSTextStorage *)_textStorageForNSAttributesString:(NSAttributedString *)inputAttributedString
++- (NSTextStorage *)_textStorageForNSAttributesString:(NSAttributedString *)inputAttributedString
paragraphAttributes:(ParagraphAttributes)paragraphAttributes
size:(CGSize)size
{
- NSTextContainer *textContainer = [[NSTextContainer alloc] initWithSize:size];
-+ NSMutableAttributedString *attributedString = [ inputAttributedString mutableCopy];
-+
++NSMutableAttributedString *attributedString = [ inputAttributedString mutableCopy];
+ /*
+ * The block below is responsible for setting the exact height of the view in lines
+ * Unfortunatelly, iOS doesn't export any easy way to do it. So we set maximumNumberOfLines
@@ -969,9 +960,8 @@ index 368c334..a1bb33e 100644
+ : NSLineBreakByClipping;
+ textContainer.size = size;
+ textContainer.maximumNumberOfLines = paragraphAttributes.maximumNumberOfLines;
-+
++
+ [textStorage replaceCharactersInRange:(NSRange){0, textStorage.length} withAttributedString:attributedString];
-+
+
if (paragraphAttributes.adjustsFontSizeToFit) {
CGFloat minimumFontSize = !isnan(paragraphAttributes.minimumFontSize) ? paragraphAttributes.minimumFontSize : 4.0;
diff --git a/patches/react-native+0.72.4+004+ModalKeyboardFlashing.patch b/patches/react-native+0.73.2+001+initial.patch
similarity index 93%
rename from patches/react-native+0.72.4+004+ModalKeyboardFlashing.patch
rename to patches/react-native+0.73.2+001+initial.patch
index 84a233894f94..673013517e3d 100644
--- a/patches/react-native+0.72.4+004+ModalKeyboardFlashing.patch
+++ b/patches/react-native+0.73.2+001+initial.patch
@@ -2,7 +2,7 @@ diff --git a/node_modules/react-native/React/Views/RCTModalHostViewManager.m b/n
index 4b9f9ad..b72984c 100644
--- a/node_modules/react-native/React/Views/RCTModalHostViewManager.m
+++ b/node_modules/react-native/React/Views/RCTModalHostViewManager.m
-@@ -79,6 +79,13 @@ RCT_EXPORT_MODULE()
+@@ -79,6 +79,13 @@ - (void)presentModalHostView:(RCTModalHostView *)modalHostView
if (self->_presentationBlock) {
self->_presentationBlock([modalHostView reactViewController], viewController, animated, completionBlock);
} else {
diff --git a/patches/react-native-vision-camera+2.16.2.patch b/patches/react-native-vision-camera+2.16.2.patch
new file mode 100644
index 000000000000..d08f7c11f5f3
--- /dev/null
+++ b/patches/react-native-vision-camera+2.16.2.patch
@@ -0,0 +1,13 @@
+diff --git a/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/frameprocessor/FrameProcessorRuntimeManager.kt b/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/frameprocessor/FrameProcessorRuntimeManager.kt
+index c0a8b23..653b51e 100644
+--- a/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/frameprocessor/FrameProcessorRuntimeManager.kt
++++ b/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/frameprocessor/FrameProcessorRuntimeManager.kt
+@@ -40,7 +40,7 @@ class FrameProcessorRuntimeManager(context: ReactApplicationContext, frameProces
+ val holder = context.catalystInstance.jsCallInvokerHolder as CallInvokerHolderImpl
+ mScheduler = VisionCameraScheduler(frameProcessorThread)
+ mContext = WeakReference(context)
+- mHybridData = initHybrid(context.javaScriptContextHolder.get(), holder, mScheduler!!)
++ mHybridData = initHybrid(context.javaScriptContextHolder!!.get(), holder, mScheduler!!)
+ initializeRuntime()
+
+ Log.i(TAG, "Installing JSI Bindings on JS Thread...")
diff --git a/src/CONST.ts b/src/CONST.ts
index b1a6b6895de7..d6f3d3cdcef6 100755
--- a/src/CONST.ts
+++ b/src/CONST.ts
@@ -479,7 +479,9 @@ const CONST = {
ONFIDO_TERMS_OF_SERVICE_URL: 'https://onfido.com/terms-of-service/',
// Use Environment.getEnvironmentURL to get the complete URL with port number
DEV_NEW_EXPENSIFY_URL: 'https://dev.new.expensify.com:',
- EXPENSIFY_INBOX_URL: 'https://www.expensify.com/inbox',
+ OLDDOT_URLS: {
+ INBOX: 'inbox',
+ },
SIGN_IN_FORM_WIDTH: 300,
@@ -527,6 +529,7 @@ const CONST = {
TASKCOMPLETED: 'TASKCOMPLETED',
TASKEDITED: 'TASKEDITED',
TASKREOPENED: 'TASKREOPENED',
+ ACTIONABLEMENTIONWHISPER: 'ACTIONABLEMENTIONWHISPER',
POLICYCHANGELOG: {
ADD_APPROVER_RULE: 'POLICYCHANGELOG_ADD_APPROVER_RULE',
ADD_BUDGET: 'POLICYCHANGELOG_ADD_BUDGET',
@@ -600,6 +603,12 @@ const CONST = {
},
THREAD_DISABLED: ['CREATED'],
},
+ CANCEL_PAYMENT_REASONS: {
+ ADMIN: 'CANCEL_REASON_ADMIN',
+ },
+ ACTIONABLE_MENTION_WHISPER_RESOLUTION: {
+ INVITE: 'invited',
+ },
ARCHIVE_REASON: {
DEFAULT: 'default',
ACCOUNT_CLOSED: 'accountClosed',
@@ -630,18 +639,13 @@ const CONST = {
ANNOUNCE: '#announce',
ADMINS: '#admins',
},
- STATE: {
- OPEN: 'OPEN',
- SUBMITTED: 'SUBMITTED',
- PROCESSING: 'PROCESSING',
- },
STATE_NUM: {
OPEN: 0,
- PROCESSING: 1,
- SUBMITTED: 2,
+ SUBMITTED: 1,
+ APPROVED: 2,
BILLING: 3,
},
- STATUS: {
+ STATUS_NUM: {
OPEN: 0,
SUBMITTED: 1,
CLOSED: 2,
@@ -1440,6 +1444,8 @@ const CONST = {
INVISIBLE_CHARACTERS_GROUPS: /[\p{C}\p{Z}]/gu,
OTHER_INVISIBLE_CHARACTERS: /[\u3164]/g,
+
+ REPORT_FIELD_TITLE: /{report:([a-zA-Z]+)}/g,
},
PRONOUNS: {
@@ -2725,7 +2731,7 @@ const CONST = {
EXPECTED_OUTPUT: 'FCFA 123,457',
},
- PATHS_TO_TREAT_AS_EXTERNAL: ['NewExpensify.dmg'],
+ PATHS_TO_TREAT_AS_EXTERNAL: ['NewExpensify.dmg', 'docs/index.html'],
// Test tool menu parameters
TEST_TOOL: {
diff --git a/src/ROUTES.ts b/src/ROUTES.ts
index 7538a16d1a2c..37003a09a0cd 100644
--- a/src/ROUTES.ts
+++ b/src/ROUTES.ts
@@ -286,10 +286,6 @@ const ROUTES = {
route: ':iouType/new/merchant/:reportID?',
getRoute: (iouType: string, reportID = '') => `${iouType}/new/merchant/${reportID}` as const,
},
- MONEY_REQUEST_WAYPOINT: {
- route: ':iouType/new/waypoint/:waypointIndex',
- getRoute: (iouType: string, waypointIndex: number) => `${iouType}/new/waypoint/${waypointIndex}` as const,
- },
MONEY_REQUEST_RECEIPT: {
route: ':iouType/new/receipt/:reportID?',
getRoute: (iouType: string, reportID = '') => `${iouType}/new/receipt/${reportID}` as const,
@@ -298,10 +294,6 @@ const ROUTES = {
route: ':iouType/new/address/:reportID?',
getRoute: (iouType: string, reportID = '') => `${iouType}/new/address/${reportID}` as const,
},
- MONEY_REQUEST_EDIT_WAYPOINT: {
- route: 'r/:threadReportID/edit/distance/:transactionID/waypoint/:waypointIndex',
- getRoute: (threadReportID: number, transactionID: string, waypointIndex: number) => `r/${threadReportID}/edit/distance/${transactionID}/waypoint/${waypointIndex}` as const,
- },
MONEY_REQUEST_DISTANCE_TAB: {
route: ':iouType/new/:reportID?/distance',
getRoute: (iouType: string, reportID = '') => `${iouType}/new/${reportID}/distance` as const,
@@ -378,9 +370,9 @@ const ROUTES = {
getUrlWithBackToParam(`create/${iouType}/tag/${transactionID}/${reportID}`, backTo),
},
MONEY_REQUEST_STEP_WAYPOINT: {
- route: 'create/:iouType/waypoint/:transactionID/:reportID/:pageIndex',
- getRoute: (iouType: ValueOf, transactionID: string, reportID: string, pageIndex = '', backTo = '') =>
- getUrlWithBackToParam(`create/${iouType}/waypoint/${transactionID}/${reportID}/${pageIndex}`, backTo),
+ route: ':action/:iouType/waypoint/:transactionID/:reportID/:pageIndex',
+ getRoute: (action: ValueOf, iouType: ValueOf, transactionID: string, reportID: string, pageIndex = '', backTo = '') =>
+ getUrlWithBackToParam(`${action}/${iouType}/waypoint/${transactionID}/${reportID}/${pageIndex}`, backTo),
},
// This URL is used as a redirect to one of the create tabs below. This is so that we can message users with a link
// straight to those flows without needing to have optimistic transaction and report IDs.
diff --git a/src/components/AddressSearch/index.js b/src/components/AddressSearch/index.js
index 9f2635633318..357f5af8cb58 100644
--- a/src/components/AddressSearch/index.js
+++ b/src/components/AddressSearch/index.js
@@ -363,7 +363,7 @@ function AddressSearch({
},
{
maximumAge: 0, // No cache, always get fresh location info
- timeout: 5000,
+ timeout: 30000,
},
);
};
diff --git a/src/components/AnchorForAttachmentsOnly/BaseAnchorForAttachmentsOnly.js b/src/components/AnchorForAttachmentsOnly/BaseAnchorForAttachmentsOnly.tsx
similarity index 52%
rename from src/components/AnchorForAttachmentsOnly/BaseAnchorForAttachmentsOnly.js
rename to src/components/AnchorForAttachmentsOnly/BaseAnchorForAttachmentsOnly.tsx
index 6161ba140726..df8a0a30b129 100644
--- a/src/components/AnchorForAttachmentsOnly/BaseAnchorForAttachmentsOnly.js
+++ b/src/components/AnchorForAttachmentsOnly/BaseAnchorForAttachmentsOnly.tsx
@@ -1,6 +1,6 @@
-import PropTypes from 'prop-types';
import React from 'react';
import {withOnyx} from 'react-native-onyx';
+import type {OnyxEntry} from 'react-native-onyx';
import AttachmentView from '@components/Attachments/AttachmentView';
import PressableWithoutFeedback from '@components/Pressable/PressableWithoutFeedback';
import {ShowContextMenuContext, showContextMenuForReport} from '@components/ShowContextMenuContext';
@@ -10,59 +10,52 @@ import * as ReportUtils from '@libs/ReportUtils';
import * as Download from '@userActions/Download';
import CONST from '@src/CONST';
import ONYXKEYS from '@src/ONYXKEYS';
-import {defaultProps as anchorForAttachmentsOnlyDefaultProps, propTypes as anchorForAttachmentsOnlyPropTypes} from './anchorForAttachmentsOnlyPropTypes';
-
-const propTypes = {
- /** Press in handler for the link */
- onPressIn: PropTypes.func,
-
- /** Press out handler for the link */
- onPressOut: PropTypes.func,
+import type {Download as OnyxDownload} from '@src/types/onyx';
+import type AnchorForAttachmentsOnlyProps from './types';
+type BaseAnchorForAttachmentsOnlyOnyxProps = {
/** If a file download is happening */
- download: PropTypes.shape({
- isDownloading: PropTypes.bool.isRequired,
- }),
-
- ...anchorForAttachmentsOnlyPropTypes,
+ download: OnyxEntry;
};
-const defaultProps = {
- onPressIn: undefined,
- onPressOut: undefined,
- download: {isDownloading: false},
- ...anchorForAttachmentsOnlyDefaultProps,
-};
+type BaseAnchorForAttachmentsOnlyProps = AnchorForAttachmentsOnlyProps &
+ BaseAnchorForAttachmentsOnlyOnyxProps & {
+ /** Press in handler for the link */
+ onPressIn?: () => void;
+
+ /** Press out handler for the link */
+ onPressOut?: () => void;
+ };
-function BaseAnchorForAttachmentsOnly(props) {
- const sourceURL = props.source;
- const sourceURLWithAuth = addEncryptedAuthTokenToURL(sourceURL);
- const sourceID = (sourceURL.match(CONST.REGEX.ATTACHMENT_ID) || [])[1];
- const fileName = props.displayName;
+function BaseAnchorForAttachmentsOnly({style, source = '', displayName = '', download, onPressIn, onPressOut}: BaseAnchorForAttachmentsOnlyProps) {
+ const sourceURLWithAuth = addEncryptedAuthTokenToURL(source);
+ const sourceID = (source.match(CONST.REGEX.ATTACHMENT_ID) ?? [])[1];
- const isDownloading = props.download && props.download.isDownloading;
+ const isDownloading = download?.isDownloading ?? false;
return (
{({anchor, report, action, checkIfContextMenuActive}) => (
{
if (isDownloading) {
return;
}
Download.setDownload(sourceID, true);
- fileDownload(sourceURLWithAuth, fileName).then(() => Download.setDownload(sourceID, false));
+ fileDownload(sourceURLWithAuth, displayName).then(() => Download.setDownload(sourceID, false));
}}
- onPressIn={props.onPressIn}
- onPressOut={props.onPressOut}
+ onPressIn={onPressIn}
+ onPressOut={onPressOut}
+ // @ts-expect-error TODO: Remove this once ShowContextMenuContext (https://github.com/Expensify/App/issues/24980) is migrated to TypeScript.
onLongPress={(event) => showContextMenuForReport(event, anchor, report.reportID, action, checkIfContextMenuActive, ReportUtils.isArchivedRoom(report))}
- accessibilityLabel={fileName}
+ accessibilityLabel={displayName}
role={CONST.ROLE.BUTTON}
>
@@ -73,13 +66,11 @@ function BaseAnchorForAttachmentsOnly(props) {
}
BaseAnchorForAttachmentsOnly.displayName = 'BaseAnchorForAttachmentsOnly';
-BaseAnchorForAttachmentsOnly.propTypes = propTypes;
-BaseAnchorForAttachmentsOnly.defaultProps = defaultProps;
-export default withOnyx({
+export default withOnyx({
download: {
key: ({source}) => {
- const sourceID = (source.match(CONST.REGEX.ATTACHMENT_ID) || [])[1];
+ const sourceID = (source?.match(CONST.REGEX.ATTACHMENT_ID) ?? [])[1];
return `${ONYXKEYS.COLLECTION.DOWNLOAD}${sourceID}`;
},
},
diff --git a/src/components/AnchorForAttachmentsOnly/anchorForAttachmentsOnlyPropTypes.js b/src/components/AnchorForAttachmentsOnly/anchorForAttachmentsOnlyPropTypes.js
deleted file mode 100644
index 9452e615d31c..000000000000
--- a/src/components/AnchorForAttachmentsOnly/anchorForAttachmentsOnlyPropTypes.js
+++ /dev/null
@@ -1,21 +0,0 @@
-import PropTypes from 'prop-types';
-import stylePropTypes from '@styles/stylePropTypes';
-
-const propTypes = {
- /** The URL of the attachment */
- source: PropTypes.string,
-
- /** Filename for attachments. */
- displayName: PropTypes.string,
-
- /** Any additional styles to apply */
- style: stylePropTypes,
-};
-
-const defaultProps = {
- source: '',
- style: {},
- displayName: '',
-};
-
-export {propTypes, defaultProps};
diff --git a/src/components/AnchorForAttachmentsOnly/index.native.js b/src/components/AnchorForAttachmentsOnly/index.native.tsx
similarity index 62%
rename from src/components/AnchorForAttachmentsOnly/index.native.js
rename to src/components/AnchorForAttachmentsOnly/index.native.tsx
index 3277d51ec058..2e0e94bc0b88 100644
--- a/src/components/AnchorForAttachmentsOnly/index.native.js
+++ b/src/components/AnchorForAttachmentsOnly/index.native.tsx
@@ -1,9 +1,9 @@
import React from 'react';
import useThemeStyles from '@hooks/useThemeStyles';
-import * as anchorForAttachmentsOnlyPropTypes from './anchorForAttachmentsOnlyPropTypes';
import BaseAnchorForAttachmentsOnly from './BaseAnchorForAttachmentsOnly';
+import type AnchorForAttachmentsOnlyProps from './types';
-function AnchorForAttachmentsOnly(props) {
+function AnchorForAttachmentsOnly(props: AnchorForAttachmentsOnlyProps) {
const styles = useThemeStyles();
return (
;
+};
+
+export default AnchorForAttachmentsOnlyProps;
diff --git a/src/components/Attachments/AttachmentView/AttachmentViewPdf/index.android.js b/src/components/Attachments/AttachmentView/AttachmentViewPdf/index.android.js
index 6d510d234512..db4f4f11d68c 100644
--- a/src/components/Attachments/AttachmentView/AttachmentViewPdf/index.android.js
+++ b/src/components/Attachments/AttachmentView/AttachmentViewPdf/index.android.js
@@ -15,17 +15,26 @@ function AttachmentViewPdf(props) {
const offsetX = useSharedValue(0);
const offsetY = useSharedValue(0);
+ // Reanimated freezes all objects captured in the closure of a worklet.
+ // Since Reanimated 3, entire objects are captured instead of just the relevant properties.
+ // See https://github.com/software-mansion/react-native-reanimated/pull/4060
+ // Because context contains more properties, all of them (most notably the pager ref) were
+ // frozen, which combined with Reanimated using strict mode since 3.6.0 was resulting in errors.
+ // Without strict mode, it would just silently fail.
+ // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze#description
+ const shouldPagerScroll = attachmentCarouselPagerContext !== null ? attachmentCarouselPagerContext.shouldPagerScroll : undefined;
+
const Pan = Gesture.Pan()
.manualActivation(true)
.onTouchesMove((evt) => {
- if (offsetX.value !== 0 && offsetY.value !== 0 && attachmentCarouselPagerContext) {
+ if (offsetX.value !== 0 && offsetY.value !== 0 && shouldPagerScroll) {
// if the value of X is greater than Y and the pdf is not zoomed in,
// enable the pager scroll so that the user
// can swipe to the next attachment otherwise disable it.
if (Math.abs(evt.allTouches[0].absoluteX - offsetX.value) > Math.abs(evt.allTouches[0].absoluteY - offsetY.value) && scaleRef.value === 1) {
- attachmentCarouselPagerContext.shouldPagerScroll.value = true;
+ shouldPagerScroll.value = true;
} else {
- attachmentCarouselPagerContext.shouldPagerScroll.value = false;
+ shouldPagerScroll.value = false;
}
}
offsetX.value = evt.allTouches[0].absoluteX;
diff --git a/src/components/BlockingViews/FullPageNotFoundView.tsx b/src/components/BlockingViews/FullPageNotFoundView.tsx
index 5993e60861f5..807029addf5e 100644
--- a/src/components/BlockingViews/FullPageNotFoundView.tsx
+++ b/src/components/BlockingViews/FullPageNotFoundView.tsx
@@ -33,10 +33,10 @@ type FullPageNotFoundViewProps = {
linkKey?: TranslationPaths;
/** Method to trigger when pressing the back button of the header */
- onBackButtonPress: () => void;
+ onBackButtonPress?: () => void;
/** Function to call when pressing the navigation link */
- onLinkPress: () => void;
+ onLinkPress?: () => void;
};
// eslint-disable-next-line rulesdir/no-negated-variables
diff --git a/src/components/ConfirmedRoute.tsx b/src/components/ConfirmedRoute.tsx
index 05d6557a72e3..c01f7c6250f4 100644
--- a/src/components/ConfirmedRoute.tsx
+++ b/src/components/ConfirmedRoute.tsx
@@ -37,7 +37,7 @@ function ConfirmedRoute({mapboxAccessToken, transaction}: ConfirmedRouteProps) {
const {isOffline} = useNetwork();
const {route0: route} = transaction.routes ?? {};
const waypoints = transaction.comment?.waypoints ?? {};
- const coordinates = route.geometry?.coordinates ?? [];
+ const coordinates = route?.geometry?.coordinates ?? [];
const theme = useTheme();
const styles = useThemeStyles();
diff --git a/src/components/DisplayNames/DisplayNamesWithTooltip.tsx b/src/components/DisplayNames/DisplayNamesWithTooltip.tsx
index f22b1f0c2209..0d554baabeda 100644
--- a/src/components/DisplayNames/DisplayNamesWithTooltip.tsx
+++ b/src/components/DisplayNames/DisplayNamesWithTooltip.tsx
@@ -4,6 +4,7 @@ import {View} from 'react-native';
import Text from '@components/Text';
import Tooltip from '@components/Tooltip';
import useThemeStyles from '@hooks/useThemeStyles';
+import * as ReportUtils from '@libs/ReportUtils';
import DisplayNamesTooltipItem from './DisplayNamesTooltipItem';
import type DisplayNamesProps from './types';
@@ -48,12 +49,12 @@ function DisplayNamesWithToolTip({shouldUseFullTitle, fullTitle, displayNamesWit
return (
// Tokenization of string only support prop numberOfLines on Web
{shouldUseFullTitle
- ? fullTitle
+ ? ReportUtils.formatReportLastMessageText(fullTitle)
: displayNamesWithTooltips.map(({displayName, accountID, avatar, login}, index) => (
// eslint-disable-next-line react/no-array-index-key
diff --git a/src/components/DistanceRequest/index.js b/src/components/DistanceRequest/index.js
index 72be7c2b8873..b63ce337a1d9 100644
--- a/src/components/DistanceRequest/index.js
+++ b/src/components/DistanceRequest/index.js
@@ -24,6 +24,7 @@ import variables from '@styles/variables';
import * as MapboxToken from '@userActions/MapboxToken';
import * as Transaction from '@userActions/Transaction';
import * as TransactionEdit from '@userActions/TransactionEdit';
+import CONST from '@src/CONST';
import ONYXKEYS from '@src/ONYXKEYS';
import ROUTES from '@src/ROUTES';
import DistanceRequestFooter from './DistanceRequestFooter';
@@ -170,7 +171,9 @@ function DistanceRequest({transactionID, report, transaction, route, isEditingRe
* @param {Number} index of the waypoint to edit
*/
const navigateToWaypointEditPage = (index) => {
- Navigation.navigate(isEditingRequest ? ROUTES.MONEY_REQUEST_EDIT_WAYPOINT.getRoute(report.reportID, transactionID, index) : ROUTES.MONEY_REQUEST_WAYPOINT.getRoute('request', index));
+ Navigation.navigate(
+ ROUTES.MONEY_REQUEST_STEP_WAYPOINT.getRoute(CONST.IOU.ACTION.EDIT, CONST.IOU.TYPE.REQUEST, transactionID, report.reportID, index, Navigation.getActiveRouteWithoutParams()),
+ );
};
const getError = () => {
diff --git a/src/components/EnvironmentBadge.tsx b/src/components/EnvironmentBadge.tsx
index 3a8445f62880..ceb4acf1b9ee 100644
--- a/src/components/EnvironmentBadge.tsx
+++ b/src/components/EnvironmentBadge.tsx
@@ -30,7 +30,7 @@ function EnvironmentBadge() {
error={environment !== CONST.ENVIRONMENT.STAGING && environment !== CONST.ENVIRONMENT.ADHOC}
text={text}
badgeStyles={[styles.alignSelfStart, styles.headerEnvBadge]}
- textStyles={[styles.headerEnvBadgeText]}
+ textStyles={[styles.headerEnvBadgeText, {fontWeight: '700'}]}
environment={environment}
/>
);
diff --git a/src/components/HTMLEngineProvider/BaseHTMLEngineProvider.js b/src/components/HTMLEngineProvider/BaseHTMLEngineProvider.tsx
similarity index 55%
rename from src/components/HTMLEngineProvider/BaseHTMLEngineProvider.js
rename to src/components/HTMLEngineProvider/BaseHTMLEngineProvider.tsx
index 46d04ca9404d..690f2fc6883a 100755
--- a/src/components/HTMLEngineProvider/BaseHTMLEngineProvider.js
+++ b/src/components/HTMLEngineProvider/BaseHTMLEngineProvider.tsx
@@ -1,27 +1,19 @@
-import PropTypes from 'prop-types';
import React, {useMemo} from 'react';
-import {defaultHTMLElementModels, RenderHTMLConfigProvider, TRenderEngineProvider} from 'react-native-render-html';
-import _ from 'underscore';
+import type {TextProps} from 'react-native';
+import {HTMLContentModel, HTMLElementModel, RenderHTMLConfigProvider, TRenderEngineProvider} from 'react-native-render-html';
import useThemeStyles from '@hooks/useThemeStyles';
import convertToLTR from '@libs/convertToLTR';
import FontUtils from '@styles/utils/FontUtils';
+import type ChildrenProps from '@src/types/utils/ChildrenProps';
import * as HTMLEngineUtils from './htmlEngineUtils';
import htmlRenderers from './HTMLRenderers';
-const propTypes = {
+type BaseHTMLEngineProviderProps = ChildrenProps & {
/** Whether text elements should be selectable */
- textSelectable: PropTypes.bool,
+ textSelectable?: boolean;
/** Handle line breaks according to the HTML standard (default on web) */
- enableExperimentalBRCollapsing: PropTypes.bool,
-
- children: PropTypes.node,
-};
-
-const defaultProps = {
- textSelectable: false,
- children: null,
- enableExperimentalBRCollapsing: false,
+ enableExperimentalBRCollapsing?: boolean;
};
// We are using the explicit composite architecture for performance gains.
@@ -29,52 +21,62 @@ const defaultProps = {
// context to RenderHTMLSource components. See https://git.io/JRcZb
// Beware that each prop should be referentialy stable between renders to avoid
// costly invalidations and commits.
-function BaseHTMLEngineProvider(props) {
+function BaseHTMLEngineProvider({textSelectable = false, children, enableExperimentalBRCollapsing = false}: BaseHTMLEngineProviderProps) {
const styles = useThemeStyles();
// Declare nonstandard tags and their content model here
+ /* eslint-disable @typescript-eslint/naming-convention */
const customHTMLElementModels = useMemo(
() => ({
- edited: defaultHTMLElementModels.span.extend({
+ edited: HTMLElementModel.fromCustomModel({
tagName: 'edited',
+ contentModel: HTMLContentModel.textual,
}),
- 'alert-text': defaultHTMLElementModels.div.extend({
+ 'alert-text': HTMLElementModel.fromCustomModel({
tagName: 'alert-text',
mixedUAStyles: {...styles.formError, ...styles.mb0},
+ contentModel: HTMLContentModel.block,
}),
- 'muted-text': defaultHTMLElementModels.div.extend({
+ 'muted-text': HTMLElementModel.fromCustomModel({
tagName: 'muted-text',
mixedUAStyles: {...styles.colorMuted, ...styles.mb0},
+ contentModel: HTMLContentModel.block,
}),
- comment: defaultHTMLElementModels.div.extend({
+ comment: HTMLElementModel.fromCustomModel({
tagName: 'comment',
mixedUAStyles: {whiteSpace: 'pre'},
+ contentModel: HTMLContentModel.block,
}),
- 'email-comment': defaultHTMLElementModels.div.extend({
+ 'email-comment': HTMLElementModel.fromCustomModel({
tagName: 'email-comment',
mixedUAStyles: {whiteSpace: 'normal'},
+ contentModel: HTMLContentModel.block,
}),
- strong: defaultHTMLElementModels.span.extend({
+ strong: HTMLElementModel.fromCustomModel({
tagName: 'strong',
mixedUAStyles: {whiteSpace: 'pre'},
+ contentModel: HTMLContentModel.textual,
}),
- 'mention-user': defaultHTMLElementModels.span.extend({tagName: 'mention-user'}),
- 'mention-here': defaultHTMLElementModels.span.extend({tagName: 'mention-here'}),
- 'next-step': defaultHTMLElementModels.span.extend({
+ 'mention-user': HTMLElementModel.fromCustomModel({tagName: 'mention-user', contentModel: HTMLContentModel.textual}),
+ 'mention-here': HTMLElementModel.fromCustomModel({tagName: 'mention-here', contentModel: HTMLContentModel.textual}),
+ 'next-step': HTMLElementModel.fromCustomModel({
tagName: 'next-step',
mixedUAStyles: {...styles.textLabelSupporting, ...styles.lh16},
+ contentModel: HTMLContentModel.textual,
}),
- 'next-step-email': defaultHTMLElementModels.span.extend({tagName: 'next-step-email'}),
- video: defaultHTMLElementModels.div.extend({
+ 'next-step-email': HTMLElementModel.fromCustomModel({tagName: 'next-step-email', contentModel: HTMLContentModel.textual}),
+ video: HTMLElementModel.fromCustomModel({
tagName: 'video',
mixedUAStyles: {whiteSpace: 'pre'},
+ contentModel: HTMLContentModel.block,
}),
}),
[styles.colorMuted, styles.formError, styles.mb0, styles.textLabelSupporting, styles.lh16],
);
+ /* eslint-enable @typescript-eslint/naming-convention */
// We need to memoize this prop to make it referentially stable.
- const defaultTextProps = useMemo(() => ({selectable: props.textSelectable, allowFontScaling: false, textBreakStrategy: 'simple'}), [props.textSelectable]);
+ const defaultTextProps: TextProps = useMemo(() => ({selectable: textSelectable, allowFontScaling: false, textBreakStrategy: 'simple'}), [textSelectable]);
const defaultViewProps = {style: [styles.alignItemsStart, styles.userSelectText]};
return (
(text.data = convertToLTR(text.data)),
@@ -91,18 +93,17 @@ function BaseHTMLEngineProvider(props) {
- {props.children}
+ {children}
);
}
BaseHTMLEngineProvider.displayName = 'BaseHTMLEngineProvider';
-BaseHTMLEngineProvider.propTypes = propTypes;
-BaseHTMLEngineProvider.defaultProps = defaultProps;
export default BaseHTMLEngineProvider;
diff --git a/src/components/HTMLEngineProvider/htmlEnginePropTypes.js b/src/components/HTMLEngineProvider/htmlEnginePropTypes.js
deleted file mode 100644
index 6c8537c8d228..000000000000
--- a/src/components/HTMLEngineProvider/htmlEnginePropTypes.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import PropTypes from 'prop-types';
-
-const propTypes = {
- children: PropTypes.node,
-
- /** Optional debug flag. Prints the TRT in the console when true. */
- debug: PropTypes.bool,
-};
-
-const defaultProps = {
- children: null,
- debug: false,
-};
-
-export {propTypes, defaultProps};
diff --git a/src/components/HTMLEngineProvider/htmlEngineUtils.js b/src/components/HTMLEngineProvider/htmlEngineUtils.ts
similarity index 57%
rename from src/components/HTMLEngineProvider/htmlEngineUtils.js
rename to src/components/HTMLEngineProvider/htmlEngineUtils.ts
index 4495cb8ff136..5f082424a565 100644
--- a/src/components/HTMLEngineProvider/htmlEngineUtils.js
+++ b/src/components/HTMLEngineProvider/htmlEngineUtils.ts
@@ -1,4 +1,6 @@
-import lodashGet from 'lodash/get';
+import type {TNode} from 'react-native-render-html';
+
+type Predicate = (node: TNode) => boolean;
const MAX_IMG_DIMENSIONS = 512;
@@ -7,12 +9,12 @@ const MAX_IMG_DIMENSIONS = 512;
* is used by the HTML component in the default renderer for img tags to scale
* down images that would otherwise overflow horizontally.
*
- * @param {string} tagName - The name of the tag for which max width should be constrained.
- * @param {number} contentWidth - The content width provided to the HTML
+ * @param contentWidth - The content width provided to the HTML
* component.
- * @returns {number} The minimum between contentWidth and MAX_IMG_DIMENSIONS
+ * @param tagName - The name of the tag for which max width should be constrained.
+ * @returns The minimum between contentWidth and MAX_IMG_DIMENSIONS
*/
-function computeEmbeddedMaxWidth(tagName, contentWidth) {
+function computeEmbeddedMaxWidth(contentWidth: number, tagName: string): number {
if (tagName === 'img') {
return Math.min(MAX_IMG_DIMENSIONS, contentWidth);
}
@@ -22,21 +24,15 @@ function computeEmbeddedMaxWidth(tagName, contentWidth) {
/**
* Check if tagName is equal to any of our custom tags wrapping chat comments.
*
- * @param {string} tagName
- * @returns {Boolean}
*/
-function isCommentTag(tagName) {
+function isCommentTag(tagName: string): boolean {
return tagName === 'email-comment' || tagName === 'comment';
}
/**
* Check if there is an ancestor node for which the predicate returns true.
- *
- * @param {TNode} tnode
- * @param {Function} predicate
- * @returns {Boolean}
*/
-function isChildOfNode(tnode, predicate) {
+function isChildOfNode(tnode: TNode, predicate: Predicate): boolean {
let currentNode = tnode.parent;
while (currentNode) {
if (predicate(currentNode)) {
@@ -50,21 +46,17 @@ function isChildOfNode(tnode, predicate) {
/**
* Check if there is an ancestor node with name 'comment'.
* Finding node with name 'comment' flags that we are rendering a comment.
- * @param {TNode} tnode
- * @returns {Boolean}
*/
-function isChildOfComment(tnode) {
- return isChildOfNode(tnode, (node) => isCommentTag(lodashGet(node, 'domNode.name', '')));
+function isChildOfComment(tnode: TNode): boolean {
+ return isChildOfNode(tnode, (node) => node.domNode?.name !== undefined && isCommentTag(node.domNode.name));
}
/**
* Check if there is an ancestor node with the name 'h1'.
* Finding a node with the name 'h1' flags that we are rendering inside an h1 element.
- * @param {TNode} tnode
- * @returns {Boolean}
*/
-function isChildOfH1(tnode) {
- return isChildOfNode(tnode, (node) => lodashGet(node, 'domNode.name', '').toLowerCase() === 'h1');
+function isChildOfH1(tnode: TNode): boolean {
+ return isChildOfNode(tnode, (node) => node.domNode?.name !== undefined && node.domNode.name.toLowerCase() === 'h1');
}
export {computeEmbeddedMaxWidth, isChildOfComment, isCommentTag, isChildOfH1};
diff --git a/src/components/HTMLEngineProvider/index.js b/src/components/HTMLEngineProvider/index.js
deleted file mode 100755
index 8a8e96269411..000000000000
--- a/src/components/HTMLEngineProvider/index.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import React from 'react';
-import withWindowDimensions from '@components/withWindowDimensions';
-import * as DeviceCapabilities from '@libs/DeviceCapabilities';
-import BaseHTMLEngineProvider from './BaseHTMLEngineProvider';
-import {defaultProps, propTypes} from './htmlEnginePropTypes';
-
-function HTMLEngineProvider(props) {
- return (
-
- {props.children}
-
- );
-}
-
-HTMLEngineProvider.displayName = 'HTMLEngineProvider';
-HTMLEngineProvider.propTypes = propTypes;
-HTMLEngineProvider.defaultProps = defaultProps;
-
-export default withWindowDimensions(HTMLEngineProvider);
diff --git a/src/components/HTMLEngineProvider/index.native.js b/src/components/HTMLEngineProvider/index.native.js
deleted file mode 100755
index f760a5a36649..000000000000
--- a/src/components/HTMLEngineProvider/index.native.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import React from 'react';
-import BaseHTMLEngineProvider from './BaseHTMLEngineProvider';
-import {defaultProps, propTypes} from './htmlEnginePropTypes';
-
-function HTMLEngineProvider(props) {
- return (
-
- {props.children}
-
- );
-}
-
-HTMLEngineProvider.displayName = 'HTMLEngineProvider';
-HTMLEngineProvider.propTypes = propTypes;
-HTMLEngineProvider.defaultProps = defaultProps;
-
-export default HTMLEngineProvider;
diff --git a/src/components/HTMLEngineProvider/index.native.tsx b/src/components/HTMLEngineProvider/index.native.tsx
new file mode 100755
index 000000000000..c77bcaf7c5e3
--- /dev/null
+++ b/src/components/HTMLEngineProvider/index.native.tsx
@@ -0,0 +1,11 @@
+import React from 'react';
+import type ChildrenProps from '@src/types/utils/ChildrenProps';
+import BaseHTMLEngineProvider from './BaseHTMLEngineProvider';
+
+function HTMLEngineProvider({children}: ChildrenProps) {
+ return {children};
+}
+
+HTMLEngineProvider.displayName = 'HTMLEngineProvider';
+
+export default HTMLEngineProvider;
diff --git a/src/components/HTMLEngineProvider/index.tsx b/src/components/HTMLEngineProvider/index.tsx
new file mode 100755
index 000000000000..9addb549d13a
--- /dev/null
+++ b/src/components/HTMLEngineProvider/index.tsx
@@ -0,0 +1,15 @@
+import React from 'react';
+import useWindowDimensions from '@hooks/useWindowDimensions';
+import * as DeviceCapabilities from '@libs/DeviceCapabilities';
+import type ChildrenProps from '@src/types/utils/ChildrenProps';
+import BaseHTMLEngineProvider from './BaseHTMLEngineProvider';
+
+function HTMLEngineProvider({children}: ChildrenProps) {
+ const {isSmallScreenWidth} = useWindowDimensions();
+
+ return {children};
+}
+
+HTMLEngineProvider.displayName = 'HTMLEngineProvider';
+
+export default HTMLEngineProvider;
diff --git a/src/components/LHNOptionsList/LHNOptionsList.js b/src/components/LHNOptionsList/LHNOptionsList.js
index 71b14b6fadcd..6bb4973d0c64 100644
--- a/src/components/LHNOptionsList/LHNOptionsList.js
+++ b/src/components/LHNOptionsList/LHNOptionsList.js
@@ -118,7 +118,7 @@ function LHNOptionsList({
const transactionID = lodashGet(itemParentReportAction, ['originalMessage', 'IOUTransactionID'], '');
const itemTransaction = transactionID ? transactions[`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`] : {};
const itemComment = draftComments[`${ONYXKEYS.COLLECTION.REPORT_DRAFT_COMMENT}${reportID}`] || '';
- const participants = [...ReportUtils.getParticipantsIDs(itemFullReport), itemFullReport.ownerAccountID];
+ const participants = [...ReportUtils.getParticipantsIDs(itemFullReport), itemFullReport.ownerAccountID, itemParentReportAction.actorAccountID];
const participantsPersonalDetails = OptionsListUtils.getPersonalDetailsForAccountIDs(participants, personalDetails);
diff --git a/src/components/LottieAnimations/index.tsx b/src/components/LottieAnimations/index.tsx
index 0d2cac253135..d42d471eba5e 100644
--- a/src/components/LottieAnimations/index.tsx
+++ b/src/components/LottieAnimations/index.tsx
@@ -51,6 +51,11 @@ const DotLottieAnimations: Record = {
w: 853,
h: 480,
},
+ Coin: {
+ file: require('@assets/animations/Coin.lottie'),
+ w: 375,
+ h: 240,
+ },
};
export default DotLottieAnimations;
diff --git a/src/components/MoneyReportHeader.js b/src/components/MoneyReportHeader.js
index 5b59fca6cdae..ce1c9611c733 100644
--- a/src/components/MoneyReportHeader.js
+++ b/src/components/MoneyReportHeader.js
@@ -1,6 +1,6 @@
import lodashGet from 'lodash/get';
import PropTypes from 'prop-types';
-import React, {useMemo} from 'react';
+import React, {useCallback, useMemo, useState} from 'react';
import {View} from 'react-native';
import {withOnyx} from 'react-native-onyx';
import _ from 'underscore';
@@ -24,7 +24,9 @@ import CONST from '@src/CONST';
import ONYXKEYS from '@src/ONYXKEYS';
import ROUTES from '@src/ROUTES';
import Button from './Button';
+import ConfirmModal from './ConfirmModal';
import HeaderWithBackButton from './HeaderWithBackButton';
+import * as Expensicons from './Icon/Expensicons';
import MoneyReportHeaderStatusBar from './MoneyReportHeaderStatusBar';
import participantPropTypes from './participantPropTypes';
import SettlementButton from './SettlementButton';
@@ -94,6 +96,13 @@ function MoneyReportHeader({session, personalDetails, policy, chatReport, nextSt
isPolicyAdmin && (isApproved || isManager)
: isPolicyAdmin || (ReportUtils.isMoneyRequestReport(moneyRequestReport) && isManager);
const isDraft = ReportUtils.isDraftExpenseReport(moneyRequestReport);
+ const [isConfirmModalVisible, setIsConfirmModalVisible] = useState(false);
+
+ const cancelPayment = useCallback(() => {
+ IOU.cancelPayment(moneyRequestReport, chatReport);
+ setIsConfirmModalVisible(false);
+ }, [moneyRequestReport, chatReport]);
+
const shouldShowPayButton = useMemo(
() => isPayer && !isDraft && !isSettled && !moneyRequestReport.isWaitingOnBankAccount && reimbursableTotal !== 0 && !ReportUtils.isArchivedRoom(chatReport),
[isPayer, isDraft, isSettled, moneyRequestReport, reimbursableTotal, chatReport],
@@ -120,6 +129,13 @@ function MoneyReportHeader({session, personalDetails, policy, chatReport, nextSt
);
const threeDotsMenuItems = [HeaderUtils.getPinMenuItem(moneyRequestReport)];
+ if (isPayer && isSettled && ReportUtils.isExpenseReport(moneyRequestReport)) {
+ threeDotsMenuItems.push({
+ icon: Expensicons.Trashcan,
+ text: translate('iou.cancelPayment'),
+ onSelected: () => setIsConfirmModalVisible(true),
+ });
+ }
if (!ReportUtils.isArchivedRoom(chatReport)) {
threeDotsMenuItems.push({
icon: ZoomIcon,
@@ -217,6 +233,16 @@ function MoneyReportHeader({session, personalDetails, policy, chatReport, nextSt
)}
+ setIsConfirmModalVisible(false)}
+ prompt={translate('iou.cancelPaymentConfirmation')}
+ confirmText={translate('iou.cancelPayment')}
+ cancelText={translate('common.dismiss')}
+ danger
+ />
);
}
diff --git a/src/components/MoneyRequestConfirmationList.js b/src/components/MoneyRequestConfirmationList.js
index 13dce9337673..f66e73a2ef02 100755
--- a/src/components/MoneyRequestConfirmationList.js
+++ b/src/components/MoneyRequestConfirmationList.js
@@ -657,7 +657,7 @@ function MoneyRequestConfirmationList(props) {
/>
{!shouldShowAllFields && (
)}
diff --git a/src/components/OptionRow.tsx b/src/components/OptionRow.tsx
index 79b72b378e46..dd8cd115e13f 100644
--- a/src/components/OptionRow.tsx
+++ b/src/components/OptionRow.tsx
@@ -268,8 +268,8 @@ function OptionRow({
onSelectedStatePressed(option)}
disabled={isDisabled}
- role={CONST.ROLE.CHECKBOX}
- accessibilityLabel={CONST.ROLE.CHECKBOX}
+ role={CONST.ROLE.BUTTON}
+ accessibilityLabel={CONST.ROLE.BUTTON}
>
diff --git a/src/components/OptionsSelector/BaseOptionsSelector.js b/src/components/OptionsSelector/BaseOptionsSelector.js
index 792073b72613..412aeedcf965 100755
--- a/src/components/OptionsSelector/BaseOptionsSelector.js
+++ b/src/components/OptionsSelector/BaseOptionsSelector.js
@@ -7,12 +7,9 @@ import ArrowKeyFocusManager from '@components/ArrowKeyFocusManager';
import Button from '@components/Button';
import FixedFooter from '@components/FixedFooter';
import FormHelpMessage from '@components/FormHelpMessage';
-import Icon from '@components/Icon';
-import {Info} from '@components/Icon/Expensicons';
import OptionsList from '@components/OptionsList';
-import {PressableWithoutFeedback} from '@components/Pressable';
+import ReferralProgramCTA from '@components/ReferralProgramCTA';
import ShowMoreButton from '@components/ShowMoreButton';
-import Text from '@components/Text';
import TextInput from '@components/TextInput';
import withLocalize, {withLocalizePropTypes} from '@components/withLocalize';
import withNavigationFocus from '@components/withNavigationFocus';
@@ -21,10 +18,8 @@ import withThemeStyles, {withThemeStylesPropTypes} from '@components/withThemeSt
import compose from '@libs/compose';
import getPlatform from '@libs/getPlatform';
import KeyboardShortcut from '@libs/KeyboardShortcut';
-import Navigation from '@libs/Navigation/Navigation';
import setSelection from '@libs/setSelection';
import CONST from '@src/CONST';
-import ROUTES from '@src/ROUTES';
import {defaultProps as optionsSelectorDefaultProps, propTypes as optionsSelectorPropTypes} from './optionsSelectorPropTypes';
const propTypes = {
@@ -80,8 +75,12 @@ class BaseOptionsSelector extends Component {
this.incrementPage = this.incrementPage.bind(this);
this.sliceSections = this.sliceSections.bind(this);
this.calculateAllVisibleOptionsCount = this.calculateAllVisibleOptionsCount.bind(this);
+ this.handleFocusIn = this.handleFocusIn.bind(this);
+ this.handleFocusOut = this.handleFocusOut.bind(this);
this.debouncedUpdateSearchValue = _.debounce(this.updateSearchValue, CONST.TIMING.SEARCH_OPTION_LIST_DEBOUNCE_TIME);
this.relatedTarget = null;
+ this.accessibilityRoles = _.values(CONST.ROLE);
+ this.isWebOrDesktop = [CONST.PLATFORM.DESKTOP, CONST.PLATFORM.WEB].includes(getPlatform());
const allOptions = this.flattenSections();
const sections = this.sliceSections();
@@ -95,12 +94,15 @@ class BaseOptionsSelector extends Component {
shouldShowReferralModal: false,
errorMessage: '',
paginationPage: 1,
+ disableEnterShortCut: false,
value: '',
};
}
componentDidMount() {
- this.subscribeToKeyboardShortcut();
+ this.subscribeToEnterShortcut();
+ this.subscribeToCtrlEnterShortcut();
+ this.subscribeActiveElement();
if (this.props.isFocused && this.props.autoFocus && this.textInput) {
this.focusTimeout = setTimeout(() => {
@@ -112,9 +114,18 @@ class BaseOptionsSelector extends Component {
}
componentDidUpdate(prevProps, prevState) {
+ if (prevState.disableEnterShortCut !== this.state.disableEnterShortCut) {
+ if (this.state.disableEnterShortCut) {
+ this.unsubscribeEnter();
+ } else {
+ this.subscribeToEnterShortcut();
+ }
+ }
+
if (prevProps.isFocused !== this.props.isFocused) {
if (this.props.isFocused) {
- this.subscribeToKeyboardShortcut();
+ this.subscribeToEnterShortcut();
+ this.subscribeToCtrlEnterShortcut();
} else {
this.unSubscribeFromKeyboardShortcut();
}
@@ -123,7 +134,7 @@ class BaseOptionsSelector extends Component {
// Screen coming back into focus, for example
// when doing Cmd+Shift+K, then Cmd+K, then Cmd+Shift+K.
// Only applies to platforms that support keyboard shortcuts
- if ([CONST.PLATFORM.DESKTOP, CONST.PLATFORM.WEB].includes(getPlatform()) && !prevProps.isFocused && this.props.isFocused && this.props.autoFocus && this.textInput) {
+ if (this.isWebOrDesktop && !prevProps.isFocused && this.props.isFocused && this.props.autoFocus && this.textInput) {
setTimeout(() => {
this.textInput.focus();
}, CONST.ANIMATED_TRANSITION);
@@ -259,7 +270,36 @@ class BaseOptionsSelector extends Component {
this.setState((prevState) => ({shouldShowReferralModal: !prevState.shouldShowReferralModal}));
}
- subscribeToKeyboardShortcut() {
+ handleFocusIn() {
+ const activeElement = document.activeElement;
+ this.setState({
+ disableEnterShortCut: activeElement && this.accessibilityRoles.includes(activeElement.role) && activeElement.role !== CONST.ROLE.PRESENTATION,
+ });
+ }
+
+ handleFocusOut() {
+ this.setState({
+ disableEnterShortCut: false,
+ });
+ }
+
+ subscribeActiveElement() {
+ if (!this.isWebOrDesktop) {
+ return;
+ }
+ document.addEventListener('focusin', this.handleFocusIn);
+ document.addEventListener('focusout', this.handleFocusOut);
+ }
+
+ unSubscribeActiveElement() {
+ if (!this.isWebOrDesktop) {
+ return;
+ }
+ document.removeEventListener('focusin', this.handleFocusIn);
+ document.removeEventListener('focusout', this.handleFocusOut);
+ }
+
+ subscribeToEnterShortcut() {
const enterConfig = CONST.KEYBOARD_SHORTCUTS.ENTER;
this.unsubscribeEnter = KeyboardShortcut.subscribe(
enterConfig.shortcutKey,
@@ -269,7 +309,9 @@ class BaseOptionsSelector extends Component {
true,
() => !this.state.allOptions[this.state.focusedIndex],
);
+ }
+ subscribeToCtrlEnterShortcut() {
const CTRLEnterConfig = CONST.KEYBOARD_SHORTCUTS.CTRL_ENTER;
this.unsubscribeCTRLEnter = KeyboardShortcut.subscribe(
CTRLEnterConfig.shortcutKey,
@@ -620,39 +662,7 @@ class BaseOptionsSelector extends Component {
{this.props.shouldShowReferralCTA && (
- {
- Navigation.navigate(ROUTES.REFERRAL_DETAILS_MODAL.getRoute(this.props.referralContentType));
- }}
- style={[
- this.props.themeStyles.p5,
- this.props.themeStyles.w100,
- this.props.themeStyles.br2,
- this.props.themeStyles.highlightBG,
- this.props.themeStyles.flexRow,
- this.props.themeStyles.justifyContentBetween,
- this.props.themeStyles.alignItemsCenter,
- {gap: 10},
- ]}
- accessibilityLabel="referral"
- role={CONST.ACCESSIBILITY_ROLE.BUTTON}
- >
-
- {this.props.translate(`referralProgram.${this.props.referralContentType}.buttonText1`)}
-
- {this.props.translate(`referralProgram.${this.props.referralContentType}.buttonText2`)}
-
-
-
-
+
)}
diff --git a/src/pages/iou/MoneyRequestReferralProgramCTA.tsx b/src/components/ReferralProgramCTA.tsx
similarity index 68%
rename from src/pages/iou/MoneyRequestReferralProgramCTA.tsx
rename to src/components/ReferralProgramCTA.tsx
index 31394e1bd0e1..473d5cdbed08 100644
--- a/src/pages/iou/MoneyRequestReferralProgramCTA.tsx
+++ b/src/components/ReferralProgramCTA.tsx
@@ -1,20 +1,24 @@
import React from 'react';
-import Icon from '@components/Icon';
-import {Info} from '@components/Icon/Expensicons';
-import {PressableWithoutFeedback} from '@components/Pressable';
-import Text from '@components/Text';
import useLocalize from '@hooks/useLocalize';
import useTheme from '@hooks/useTheme';
import useThemeStyles from '@hooks/useThemeStyles';
import CONST from '@src/CONST';
import Navigation from '@src/libs/Navigation/Navigation';
import ROUTES from '@src/ROUTES';
+import Icon from './Icon';
+import {Info} from './Icon/Expensicons';
+import {PressableWithoutFeedback} from './Pressable';
+import Text from './Text';
-type MoneyRequestReferralProgramCTAProps = {
- referralContentType: typeof CONST.REFERRAL_PROGRAM.CONTENT_TYPES.SEND_MONEY | typeof CONST.REFERRAL_PROGRAM.CONTENT_TYPES.MONEY_REQUEST;
+type ReferralProgramCTAProps = {
+ referralContentType:
+ | typeof CONST.REFERRAL_PROGRAM.CONTENT_TYPES.MONEY_REQUEST
+ | typeof CONST.REFERRAL_PROGRAM.CONTENT_TYPES.START_CHAT
+ | typeof CONST.REFERRAL_PROGRAM.CONTENT_TYPES.SEND_MONEY
+ | typeof CONST.REFERRAL_PROGRAM.CONTENT_TYPES.REFER_FRIEND;
};
-function MoneyRequestReferralProgramCTA({referralContentType}: MoneyRequestReferralProgramCTAProps) {
+function ReferralProgramCTA({referralContentType}: ReferralProgramCTAProps) {
const {translate} = useLocalize();
const styles = useThemeStyles();
const theme = useTheme();
@@ -41,9 +45,10 @@ function MoneyRequestReferralProgramCTA({referralContentType}: MoneyRequestRefer
src={Info}
height={20}
width={20}
+ fill={theme.icon}
/>
);
}
-export default MoneyRequestReferralProgramCTA;
+export default ReferralProgramCTA;
diff --git a/src/components/ReportActionItem/ActionableItemButtons.tsx b/src/components/ReportActionItem/ActionableItemButtons.tsx
new file mode 100644
index 000000000000..d1f169d2f409
--- /dev/null
+++ b/src/components/ReportActionItem/ActionableItemButtons.tsx
@@ -0,0 +1,42 @@
+import React from 'react';
+import {View} from 'react-native';
+import Button from '@components/Button';
+import useLocalize from '@hooks/useLocalize';
+import useThemeStyles from '@hooks/useThemeStyles';
+import type {TranslationPaths} from '@src/languages/types';
+
+type ActionableItem = {
+ isPrimary?: boolean;
+ key: string;
+ onPress: () => void;
+ text: TranslationPaths;
+};
+
+type ActionableItemButtonsProps = {
+ items: ActionableItem[];
+};
+
+function ActionableItemButtons(props: ActionableItemButtonsProps) {
+ const styles = useThemeStyles();
+ const {translate} = useLocalize();
+
+ return (
+
+ {props.items?.map((item) => (
+
+ ))}
+
+ );
+}
+
+ActionableItemButtons.displayName = 'ActionableItemButtton';
+
+export default ActionableItemButtons;
+export type {ActionableItem};
diff --git a/src/components/ReportActionItem/MoneyReportView.tsx b/src/components/ReportActionItem/MoneyReportView.tsx
index 16ea27b17f42..4fcca3e518a5 100644
--- a/src/components/ReportActionItem/MoneyReportView.tsx
+++ b/src/components/ReportActionItem/MoneyReportView.tsx
@@ -1,11 +1,14 @@
-import React from 'react';
+import React, {useMemo} from 'react';
import type {StyleProp, TextStyle} from 'react-native';
import {View} from 'react-native';
import Icon from '@components/Icon';
import * as Expensicons from '@components/Icon/Expensicons';
+import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription';
+import OfflineWithFeedback from '@components/OfflineWithFeedback';
import SpacerView from '@components/SpacerView';
import Text from '@components/Text';
import useLocalize from '@hooks/useLocalize';
+import usePermissions from '@hooks/usePermissions';
import useStyleUtils from '@hooks/useStyleUtils';
import useTheme from '@hooks/useTheme';
import useThemeStyles from '@hooks/useThemeStyles';
@@ -14,22 +17,26 @@ import * as CurrencyUtils from '@libs/CurrencyUtils';
import * as ReportUtils from '@libs/ReportUtils';
import AnimatedEmptyStateBackground from '@pages/home/report/AnimatedEmptyStateBackground';
import variables from '@styles/variables';
-import type {Report} from '@src/types/onyx';
+import type {PolicyReportField, Report} from '@src/types/onyx';
type MoneyReportViewProps = {
/** The report currently being looked at */
report: Report;
+ /** Policy report fields */
+ policyReportFields: PolicyReportField[];
+
/** Whether we should display the horizontal rule below the component */
shouldShowHorizontalRule: boolean;
};
-function MoneyReportView({report, shouldShowHorizontalRule}: MoneyReportViewProps) {
+function MoneyReportView({report, policyReportFields, shouldShowHorizontalRule}: MoneyReportViewProps) {
const theme = useTheme();
const styles = useThemeStyles();
const StyleUtils = useStyleUtils();
const {translate} = useLocalize();
const {isSmallScreenWidth} = useWindowDimensions();
+ const {canUseReportFields} = usePermissions();
const isSettled = ReportUtils.isSettled(report.reportID);
const {totalDisplaySpend, nonReimbursableSpend, reimbursableSpend} = ReportUtils.getMoneyRequestSpendBreakdown(report);
@@ -46,10 +53,41 @@ function MoneyReportView({report, shouldShowHorizontalRule}: MoneyReportViewProp
StyleUtils.getColorStyle(theme.textSupporting),
];
+ const sortedPolicyReportFields = useMemo(
+ () => policyReportFields.sort(({orderWeight: firstOrderWeight}, {orderWeight: secondOrderWeight}) => firstOrderWeight - secondOrderWeight),
+ [policyReportFields],
+ );
+
return (
+ {canUseReportFields &&
+ sortedPolicyReportFields.map((reportField) => {
+ const title = ReportUtils.getReportFieldTitle(report, reportField);
+ return (
+
+ {}}
+ shouldShowRightIcon
+ disabled={false}
+ wrapperStyle={[styles.pv2, styles.taskDescriptionMenuItem]}
+ shouldGreyOutWhenDisabled={false}
+ numberOfLinesTitle={0}
+ interactive
+ shouldStackHorizontally={false}
+ onSecondaryInteraction={() => {}}
+ hoverAndPressStyle={false}
+ titleWithTooltips={[]}
+ />
+
+ );
+ })}
{
if (isDistanceRequest) {
- return requestAmount && !hasPendingWaypoints ? CurrencyUtils.convertToDisplayString(requestAmount, props.transaction.currency) : translate('common.tbd');
+ return requestAmount && !hasPendingWaypoints ? CurrencyUtils.convertToDisplayString(requestAmount, requestCurrency) : translate('common.tbd');
}
if (isScanning) {
diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js
index 036b64af1e4b..7c7998c24c95 100644
--- a/src/components/ReportActionItem/MoneyRequestView.js
+++ b/src/components/ReportActionItem/MoneyRequestView.js
@@ -432,7 +432,7 @@ export default compose(
return `${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`;
},
},
- transactionViolation: {
+ transactionViolations: {
key: ({report}) => {
const parentReportAction = ReportActionsUtils.getParentReportAction(report);
const transactionID = lodashGet(parentReportAction, ['originalMessage', 'IOUTransactionID'], 0);
diff --git a/src/components/ReportActionItem/ReportPreview.js b/src/components/ReportActionItem/ReportPreview.js
index abc7e3954200..622cd75a568b 100644
--- a/src/components/ReportActionItem/ReportPreview.js
+++ b/src/components/ReportActionItem/ReportPreview.js
@@ -1,6 +1,6 @@
import lodashGet from 'lodash/get';
import PropTypes from 'prop-types';
-import React, {useEffect, useMemo, useState} from 'react';
+import React, {useMemo} from 'react';
import {View} from 'react-native';
import {withOnyx} from 'react-native-onyx';
import _ from 'underscore';
@@ -13,6 +13,7 @@ import refPropTypes from '@components/refPropTypes';
import SettlementButton from '@components/SettlementButton';
import {showContextMenuForReport} from '@components/ShowContextMenuContext';
import Text from '@components/Text';
+import transactionPropTypes from '@components/transactionPropTypes';
import withLocalize, {withLocalizePropTypes} from '@components/withLocalize';
import useLocalize from '@hooks/useLocalize';
import useTheme from '@hooks/useTheme';
@@ -22,7 +23,6 @@ import ControlSelection from '@libs/ControlSelection';
import * as CurrencyUtils from '@libs/CurrencyUtils';
import * as DeviceCapabilities from '@libs/DeviceCapabilities';
import Navigation from '@libs/Navigation/Navigation';
-import onyxSubscribe from '@libs/onyxSubscribe';
import * as ReceiptUtils from '@libs/ReceiptUtils';
import * as ReportActionUtils from '@libs/ReportActionsUtils';
import * as ReportUtils from '@libs/ReportUtils';
@@ -105,6 +105,9 @@ const propTypes = {
/** Whether a message is a whisper */
isWhisper: PropTypes.bool,
+ /** All the transactions, used to update ReportPreview label and status */
+ transactions: PropTypes.objectOf(transactionPropTypes),
+
...withLocalizePropTypes,
};
@@ -121,6 +124,7 @@ const defaultProps = {
policy: {
isHarvestingEnabled: false,
},
+ transactions: {},
};
function ReportPreview(props) {
@@ -128,10 +132,17 @@ function ReportPreview(props) {
const styles = useThemeStyles();
const {translate} = useLocalize();
- const [hasMissingSmartscanFields, sethasMissingSmartscanFields] = useState(false);
- const [areAllRequestsBeingSmartScanned, setAreAllRequestsBeingSmartScanned] = useState(false);
- const [hasOnlyDistanceRequests, setHasOnlyDistanceRequests] = useState(false);
- const [hasNonReimbursableTransactions, setHasNonReimbursableTransactions] = useState(false);
+ const {hasMissingSmartscanFields, areAllRequestsBeingSmartScanned, hasOnlyDistanceRequests, hasNonReimbursableTransactions} = useMemo(
+ () => ({
+ hasMissingSmartscanFields: ReportUtils.hasMissingSmartscanFields(props.iouReportID),
+ areAllRequestsBeingSmartScanned: ReportUtils.areAllRequestsBeingSmartScanned(props.iouReportID, props.action),
+ hasOnlyDistanceRequests: ReportUtils.hasOnlyDistanceRequestTransactions(props.iouReportID),
+ hasNonReimbursableTransactions: ReportUtils.hasNonReimbursableTransactions(props.iouReportID),
+ }),
+ // When transactions get updated these status may have changed, so that is a case where we also want to run this.
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ [props.transactions, props.iouReportID, props.action],
+ );
const managerID = props.iouReport.managerID || 0;
const isCurrentUserManager = managerID === lodashGet(props.session, 'accountID');
@@ -162,7 +173,7 @@ function ReportPreview(props) {
const previewSubtitle =
formattedMerchant ||
props.translate('iou.requestCount', {
- count: numberOfRequests,
+ count: numberOfRequests - numberOfScanningReceipts,
scanningReceipts: numberOfScanningReceipts,
});
@@ -218,28 +229,6 @@ function ReportPreview(props) {
const bankAccountRoute = ReportUtils.getBankAccountRoute(props.chatReport);
- useEffect(() => {
- const unsubscribeOnyxTransaction = onyxSubscribe({
- key: ONYXKEYS.COLLECTION.TRANSACTION,
- waitForCollectionCallback: true,
- callback: (allTransactions) => {
- if (_.isEmpty(allTransactions)) {
- return;
- }
-
- sethasMissingSmartscanFields(ReportUtils.hasMissingSmartscanFields(props.iouReportID));
- setAreAllRequestsBeingSmartScanned(ReportUtils.areAllRequestsBeingSmartScanned(props.iouReportID, props.action));
- setHasOnlyDistanceRequests(ReportUtils.hasOnlyDistanceRequestTransactions(props.iouReportID));
- setHasNonReimbursableTransactions(ReportUtils.hasNonReimbursableTransactions(props.iouReportID));
- },
- });
-
- return () => {
- unsubscribeOnyxTransaction();
- };
- // eslint-disable-next-line react-hooks/exhaustive-deps
- }, []);
-
const isPaidGroupPolicy = ReportUtils.isPaidGroupPolicyExpenseChat(props.chatReport);
const isPolicyAdmin = policyType !== CONST.POLICY.TYPE.PERSONAL && lodashGet(props.policy, 'role') === CONST.POLICY.ROLE.ADMIN;
const isPayer = isPaidGroupPolicy
@@ -370,5 +359,8 @@ export default compose(
session: {
key: ONYXKEYS.SESSION,
},
+ transactions: {
+ key: ONYXKEYS.COLLECTION.TRANSACTION,
+ },
}),
)(ReportPreview);
diff --git a/src/components/ReportActionItem/TaskPreview.js b/src/components/ReportActionItem/TaskPreview.tsx
similarity index 50%
rename from src/components/ReportActionItem/TaskPreview.js
rename to src/components/ReportActionItem/TaskPreview.tsx
index 414f030d4fc7..a509d8d922e1 100644
--- a/src/components/ReportActionItem/TaskPreview.js
+++ b/src/components/ReportActionItem/TaskPreview.tsx
@@ -1,22 +1,20 @@
-import lodashGet from 'lodash/get';
-import PropTypes from 'prop-types';
+import Str from 'expensify-common/lib/str';
import React from 'react';
import {View} from 'react-native';
import {withOnyx} from 'react-native-onyx';
-import _ from 'underscore';
+import type {OnyxEntry} from 'react-native-onyx';
import Checkbox from '@components/Checkbox';
import Icon from '@components/Icon';
import * as Expensicons from '@components/Icon/Expensicons';
import {usePersonalDetails} from '@components/OnyxProvider';
import PressableWithoutFeedback from '@components/Pressable/PressableWithoutFeedback';
-import refPropTypes from '@components/refPropTypes';
import RenderHTML from '@components/RenderHTML';
import {showContextMenuForReport} from '@components/ShowContextMenuContext';
-import withCurrentUserPersonalDetails, {withCurrentUserPersonalDetailsDefaultProps, withCurrentUserPersonalDetailsPropTypes} from '@components/withCurrentUserPersonalDetails';
-import withLocalize, {withLocalizePropTypes} from '@components/withLocalize';
+import withCurrentUserPersonalDetails from '@components/withCurrentUserPersonalDetails';
+import type {WithCurrentUserPersonalDetailsProps} from '@components/withCurrentUserPersonalDetails';
+import useLocalize from '@hooks/useLocalize';
import useStyleUtils from '@hooks/useStyleUtils';
import useThemeStyles from '@hooks/useThemeStyles';
-import compose from '@libs/compose';
import ControlSelection from '@libs/ControlSelection';
import * as DeviceCapabilities from '@libs/DeviceCapabilities';
import getButtonState from '@libs/getButtonState';
@@ -24,144 +22,137 @@ import * as LocalePhoneNumber from '@libs/LocalePhoneNumber';
import Navigation from '@libs/Navigation/Navigation';
import * as ReportUtils from '@libs/ReportUtils';
import * as TaskUtils from '@libs/TaskUtils';
-import reportActionPropTypes from '@pages/home/report/reportActionPropTypes';
import * as Session from '@userActions/Session';
import * as Task from '@userActions/Task';
import CONST from '@src/CONST';
import ONYXKEYS from '@src/ONYXKEYS';
import ROUTES from '@src/ROUTES';
+import type {Policy, Report, ReportAction} from '@src/types/onyx';
+import {isEmptyObject} from '@src/types/utils/EmptyObject';
-const propTypes = {
- /** The ID of the associated taskReport */
- taskReportID: PropTypes.string.isRequired,
-
- /** Whether the task preview is hovered so we can modify its style */
- isHovered: PropTypes.bool,
-
- /** The linked reportAction */
- action: PropTypes.shape(reportActionPropTypes).isRequired,
+type PolicyRole = {
+ /** The role of current user */
+ role: string;
+};
+type TaskPreviewOnyxProps = {
/* Onyx Props */
- taskReport: PropTypes.shape({
- /** Title of the task */
- reportName: PropTypes.string,
-
- /** AccountID of the manager in this iou report */
- managerID: PropTypes.number,
-
- /** AccountID of the creator of this iou report */
- ownerAccountID: PropTypes.number,
- }),
+ /* current report of TaskPreview */
+ taskReport: OnyxEntry;
/** The policy of root parent report */
- rootParentReportpolicy: PropTypes.shape({
- /** The role of current user */
- role: PropTypes.string,
- }),
-
- /** The chat report associated with taskReport */
- chatReportID: PropTypes.string.isRequired,
-
- /** Popover context menu anchor, used for showing context menu */
- contextMenuAnchor: refPropTypes,
-
- /** Callback for updating context menu active state, used for showing context menu */
- checkIfContextMenuActive: PropTypes.func,
-
- /* Onyx Props */
- ...withLocalizePropTypes,
-
- ...withCurrentUserPersonalDetailsPropTypes,
+ rootParentReportpolicy: OnyxEntry;
};
-const defaultProps = {
- ...withCurrentUserPersonalDetailsDefaultProps,
- taskReport: {},
- rootParentReportpolicy: {},
- isHovered: false,
-};
-
-function TaskPreview(props) {
+type TaskPreviewProps = WithCurrentUserPersonalDetailsProps &
+ TaskPreviewOnyxProps & {
+ /** The ID of the associated policy */
+ // eslint-disable-next-line react/no-unused-prop-types
+ policyID: string;
+ /** The ID of the associated taskReport */
+ taskReportID: string;
+
+ /** Whether the task preview is hovered so we can modify its style */
+ isHovered: boolean;
+
+ /** The linked reportAction */
+ action: OnyxEntry;
+
+ /** The chat report associated with taskReport */
+ chatReportID: string;
+
+ /** Popover context menu anchor, used for showing context menu */
+ contextMenuAnchor: Element;
+
+ /** Callback for updating context menu active state, used for showing context menu */
+ checkIfContextMenuActive: () => void;
+ };
+
+function TaskPreview({
+ taskReport,
+ taskReportID,
+ action,
+ contextMenuAnchor,
+ chatReportID,
+ checkIfContextMenuActive,
+ currentUserPersonalDetails,
+ rootParentReportpolicy,
+ isHovered = false,
+}: TaskPreviewProps) {
const styles = useThemeStyles();
const StyleUtils = useStyleUtils();
const personalDetails = usePersonalDetails() || CONST.EMPTY_OBJECT;
+ const {translate} = useLocalize();
+
// The reportAction might not contain details regarding the taskReport
// Only the direct parent reportAction will contain details about the taskReport
// Other linked reportActions will only contain the taskReportID and we will grab the details from there
- const isTaskCompleted = !_.isEmpty(props.taskReport)
- ? props.taskReport.stateNum === CONST.REPORT.STATE_NUM.SUBMITTED && props.taskReport.statusNum === CONST.REPORT.STATUS.APPROVED
- : props.action.childStateNum === CONST.REPORT.STATE_NUM.SUBMITTED && props.action.childStatusNum === CONST.REPORT.STATUS.APPROVED;
- const taskTitle = _.escape(TaskUtils.getTaskTitle(props.taskReportID, props.action.childReportName));
- const taskAssigneeAccountID = Task.getTaskAssigneeAccountID(props.taskReport) || props.action.childManagerAccountID;
- const assigneeLogin = lodashGet(personalDetails, [taskAssigneeAccountID, 'login'], '');
- const assigneeDisplayName = lodashGet(personalDetails, [taskAssigneeAccountID, 'displayName'], '');
+ const isTaskCompleted = !isEmptyObject(taskReport)
+ ? taskReport?.stateNum === CONST.REPORT.STATE_NUM.APPROVED && taskReport.statusNum === CONST.REPORT.STATUS_NUM.APPROVED
+ : action?.childStateNum === CONST.REPORT.STATE_NUM.APPROVED && action?.childStatusNum === CONST.REPORT.STATUS_NUM.APPROVED;
+ const taskTitle = Str.htmlEncode(TaskUtils.getTaskTitle(taskReportID, action?.childReportName ?? ''));
+ const taskAssigneeAccountID = Task.getTaskAssigneeAccountID(taskReport ?? {}) ?? action?.childManagerAccountID ?? '';
+ const assigneeLogin = personalDetails[taskAssigneeAccountID]?.login ?? '';
+ const assigneeDisplayName = personalDetails[taskAssigneeAccountID]?.displayName ?? '';
const taskAssignee = assigneeDisplayName || LocalePhoneNumber.formatPhoneNumber(assigneeLogin);
const htmlForTaskPreview =
taskAssignee && taskAssigneeAccountID !== 0
? `@${taskAssignee} ${taskTitle}`
: `${taskTitle}`;
- const isDeletedParentAction = ReportUtils.isCanceledTaskReport(props.taskReport, props.action);
+ const isDeletedParentAction = ReportUtils.isCanceledTaskReport(taskReport, action);
if (isDeletedParentAction) {
- return ${props.translate('parentReportAction.deletedTask')}`} />;
+ return ${translate('parentReportAction.deletedTask')}`} />;
}
return (
Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(props.taskReportID))}
+ onPress={() => Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(taskReportID))}
onPressIn={() => DeviceCapabilities.canUseTouchScreen() && ControlSelection.block()}
onPressOut={() => ControlSelection.unblock()}
- onLongPress={(event) => showContextMenuForReport(event, props.contextMenuAnchor, props.chatReportID, props.action, props.checkIfContextMenuActive)}
+ onLongPress={(event) => showContextMenuForReport(event, contextMenuAnchor, chatReportID, action ?? {}, checkIfContextMenuActive)}
style={[styles.flexRow, styles.justifyContentBetween]}
role={CONST.ROLE.BUTTON}
- accessibilityLabel={props.translate('task.task')}
+ accessibilityLabel={translate('task.task')}
>
{
if (isTaskCompleted) {
- Task.reopenTask(props.taskReport);
+ Task.reopenTask(taskReport ?? {});
} else {
- Task.completeTask(props.taskReport);
+ Task.completeTask(taskReport ?? {});
}
})}
- accessibilityLabel={props.translate('task.task')}
+ accessibilityLabel={translate('task.task')}
/>
);
}
-TaskPreview.propTypes = propTypes;
-TaskPreview.defaultProps = defaultProps;
TaskPreview.displayName = 'TaskPreview';
-export default compose(
- withLocalize,
- withCurrentUserPersonalDetails,
- withOnyx({
+export default withCurrentUserPersonalDetails(
+ withOnyx({
taskReport: {
key: ({taskReportID}) => `${ONYXKEYS.COLLECTION.REPORT}${taskReportID}`,
- initialValue: {},
},
rootParentReportpolicy: {
- key: ({policyID}) => `${ONYXKEYS.COLLECTION.POLICY}${policyID || '0'}`,
- selector: (policy) => _.pick(policy, ['role']),
+ key: ({policyID}) => `${ONYXKEYS.COLLECTION.POLICY}${policyID ?? '0'}`,
+ selector: (policy: Policy | null) => ({role: policy?.role ?? ''}),
},
- }),
-)(TaskPreview);
+ })(TaskPreview),
+);
diff --git a/src/components/RoomNameInput/index.js b/src/components/RoomNameInput/index.js
index 8bfc25a5db75..61f004a47b96 100644
--- a/src/components/RoomNameInput/index.js
+++ b/src/components/RoomNameInput/index.js
@@ -27,18 +27,15 @@ function RoomNameInput({isFocused, autoFocus, disabled, errorText, forwardedRef,
// Prevent cursor jump behaviour:
// Check if newRoomNameWithHash is the same as modifiedRoomName
- // If it is then the room name is valid (does not contain unallowed characters); no action required
- // If not then the room name contains unvalid characters and we must adjust the cursor position manually
+ // If it is, then the room name is valid (does not contain forbidden characters) – no action required
+ // If not, then the room name contains invalid characters, and we must adjust the cursor position manually
// Read more: https://github.com/Expensify/App/issues/12741
const oldRoomNameWithHash = value || '';
const newRoomNameWithHash = `${CONST.POLICY.ROOM_PREFIX}${roomName}`;
if (modifiedRoomName !== newRoomNameWithHash) {
const offset = modifiedRoomName.length - oldRoomNameWithHash.length;
- const newSelection = {
- start: selection.start + offset,
- end: selection.end + offset,
- };
- setSelection(newSelection);
+ const newCursorPosition = selection.end + offset;
+ setSelection({start: newCursorPosition, end: newCursorPosition});
}
};
diff --git a/src/components/SelectionList/BaseSelectionList.js b/src/components/SelectionList/BaseSelectionList.js
index c2e3fd2887cd..960618808fd9 100644
--- a/src/components/SelectionList/BaseSelectionList.js
+++ b/src/components/SelectionList/BaseSelectionList.js
@@ -63,6 +63,7 @@ function BaseSelectionList({
disableKeyboardShortcuts = false,
children,
shouldStopPropagation = false,
+ shouldShowTooltips = true,
shouldUseDynamicMaxToRenderPerBatch = false,
rightHandSideComponent,
}) {
@@ -304,7 +305,7 @@ function BaseSelectionList({
const isDisabled = section.isDisabled || item.isDisabled;
const isItemFocused = !isDisabled && focusedIndex === normalizedIndex;
// We only create tooltips for the first 10 users or so since some reports have hundreds of users, causing performance to degrade.
- const showTooltip = normalizedIndex < 10;
+ const showTooltip = shouldShowTooltips && normalizedIndex < 10;
return (
{Boolean(item.icons) && (
@@ -24,7 +26,7 @@ function UserListItem({item, textStyles, alternateTextStyles, showTooltip}) {
text={item.text}
>
{item.text}
@@ -36,7 +38,7 @@ function UserListItem({item, textStyles, alternateTextStyles, showTooltip}) {
text={item.alternateText}
>
{item.alternateText}
diff --git a/src/components/SelectionList/selectionListPropTypes.js b/src/components/SelectionList/selectionListPropTypes.js
index 2e380040bd91..f5178112a4c3 100644
--- a/src/components/SelectionList/selectionListPropTypes.js
+++ b/src/components/SelectionList/selectionListPropTypes.js
@@ -190,6 +190,9 @@ const propTypes = {
/** Custom content to display in the footer */
footerContent: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),
+ /** Whether to show the toolip text */
+ shouldShowTooltips: PropTypes.bool,
+
/** Whether to use dynamic maxToRenderPerBatch depending on the visible number of elements */
shouldUseDynamicMaxToRenderPerBatch: PropTypes.bool,
diff --git a/src/components/ValuePicker/ValueSelectorModal.js b/src/components/ValuePicker/ValueSelectorModal.js
index 79608edb3ef4..e45ba873d8a3 100644
--- a/src/components/ValuePicker/ValueSelectorModal.js
+++ b/src/components/ValuePicker/ValueSelectorModal.js
@@ -26,6 +26,9 @@ const propTypes = {
/** Function to call when the user closes the modal */
onClose: PropTypes.func,
+
+ /** Whether to show the toolip text */
+ shouldShowTooltips: PropTypes.bool,
};
const defaultProps = {
@@ -34,9 +37,10 @@ const defaultProps = {
label: '',
onClose: () => {},
onItemSelected: () => {},
+ shouldShowTooltips: true,
};
-function ValueSelectorModal({items, selectedItem, label, isVisible, onClose, onItemSelected}) {
+function ValueSelectorModal({items, selectedItem, label, isVisible, onClose, onItemSelected, shouldShowTooltips}) {
const styles = useThemeStyles();
const [sectionsData, setSectionsData] = useState([]);
@@ -69,6 +73,7 @@ function ValueSelectorModal({items, selectedItem, label, isVisible, onClose, onI
onSelectRow={onItemSelected}
initiallyFocusedOptionKey={selectedItem.value}
shouldStopPropagation
+ shouldShowTooltips={shouldShowTooltips}
/>
diff --git a/src/components/ValuePicker/index.js b/src/components/ValuePicker/index.js
index a21402b9993f..d90529114af4 100644
--- a/src/components/ValuePicker/index.js
+++ b/src/components/ValuePicker/index.js
@@ -34,6 +34,9 @@ const propTypes = {
/** A ref to forward to MenuItemWithTopDescription */
forwardedRef: refPropTypes,
+
+ /** Whether to show the toolip text */
+ shouldShowTooltips: PropTypes.bool,
};
const defaultProps = {
@@ -45,9 +48,10 @@ const defaultProps = {
errorText: '',
furtherDetails: undefined,
onInputChange: () => {},
+ shouldShowTooltips: true,
};
-function ValuePicker({value, label, items, placeholder, errorText, onInputChange, furtherDetails, forwardedRef}) {
+function ValuePicker({value, label, items, placeholder, errorText, onInputChange, furtherDetails, shouldShowTooltips, forwardedRef}) {
const styles = useThemeStyles();
const StyleUtils = useStyleUtils();
const [isPickerVisible, setIsPickerVisible] = useState(false);
@@ -67,7 +71,7 @@ function ValuePicker({value, label, items, placeholder, errorText, onInputChange
hidePickerModal();
};
- const descStyle = value.length === 0 ? StyleUtils.getFontSizeStyle(variables.fontSizeLabel) : null;
+ const descStyle = !value || value.length === 0 ? StyleUtils.getFontSizeStyle(variables.fontSizeLabel) : null;
const selectedItem = _.find(items, {value});
const selectedLabel = selectedItem ? selectedItem.label : '';
@@ -92,6 +96,7 @@ function ValuePicker({value, label, items, placeholder, errorText, onInputChange
items={items}
onClose={hidePickerModal}
onItemSelected={updateInput}
+ shouldShowTooltips={shouldShowTooltips}
/>
);
diff --git a/src/hooks/useDragAndDrop.ts b/src/hooks/useDragAndDrop.ts
index 8c9054dc0bf1..7644d7bba5f0 100644
--- a/src/hooks/useDragAndDrop.ts
+++ b/src/hooks/useDragAndDrop.ts
@@ -1,6 +1,6 @@
import {useIsFocused} from '@react-navigation/native';
import type React from 'react';
-import {useCallback, useContext, useEffect, useState} from 'react';
+import {useCallback, useContext, useEffect, useRef, useState} from 'react';
import type {View} from 'react-native';
import {PopoverContext} from '@components/PopoverProvider';
@@ -31,6 +31,8 @@ export default function useDragAndDrop({dropZone, onDrop = () => {}, shouldAllow
const [isDraggingOver, setIsDraggingOver] = useState(false);
const {close: closePopover} = useContext(PopoverContext);
+ const enterTarget = useRef(null);
+
useEffect(() => {
if (isFocused && !isDisabled) {
return;
@@ -76,6 +78,7 @@ export default function useDragAndDrop({dropZone, onDrop = () => {}, shouldAllow
break;
case DRAG_ENTER_EVENT:
handleDragEvent(event);
+ enterTarget.current = event.target;
if (isDraggingOver) {
return;
}
@@ -86,7 +89,7 @@ export default function useDragAndDrop({dropZone, onDrop = () => {}, shouldAllow
return;
}
// This is necessary because dragging over children will cause dragleave to execute on the parent.
- if ((event.currentTarget as HTMLElement | null)?.contains(event.relatedTarget as HTMLElement | null)) {
+ if (enterTarget.current !== event.target) {
return;
}
diff --git a/src/hooks/useResponsiveLayout.ts b/src/hooks/useResponsiveLayout.ts
index dd782a9dbba5..3ca2482ec387 100644
--- a/src/hooks/useResponsiveLayout.ts
+++ b/src/hooks/useResponsiveLayout.ts
@@ -3,7 +3,7 @@ import {useRoute} from '@react-navigation/native';
import useWindowDimensions from './useWindowDimensions';
type RouteParams = ParamListBase & {
- params: {isInRHP?: boolean};
+ params: {layout?: string};
};
type ResponsiveLayoutResult = {
shouldUseNarrowLayout: boolean;
@@ -16,10 +16,11 @@ export default function useResponsiveLayout(): ResponsiveLayoutResult {
try {
// eslint-disable-next-line react-hooks/rules-of-hooks
const {params} = useRoute>();
- return {shouldUseNarrowLayout: isSmallScreenWidth || (params?.isInRHP ?? false)};
+ const isNarrowLayout = params?.layout === 'narrow' ?? false;
+ const shouldUseNarrowLayout = isSmallScreenWidth || isNarrowLayout;
+
+ return {shouldUseNarrowLayout};
} catch (error) {
- return {
- shouldUseNarrowLayout: isSmallScreenWidth,
- };
+ return {shouldUseNarrowLayout: isSmallScreenWidth};
}
}
diff --git a/src/languages/en.ts b/src/languages/en.ts
index c57b1ce310b5..b6fa37560536 100755
--- a/src/languages/en.ts
+++ b/src/languages/en.ts
@@ -1,7 +1,9 @@
import {CONST as COMMON_CONST} from 'expensify-common/lib/CONST';
+import Str from 'expensify-common/lib/str';
import CONST from '@src/CONST';
import type {
AddressLineParams,
+ AdminCanceledRequestParams,
AlreadySignedInParams,
AmountEachParams,
ApprovedAmountParams,
@@ -111,6 +113,7 @@ type AllCountries = Record;
export default {
common: {
cancel: 'Cancel',
+ dismiss: 'Dismiss',
yes: 'Yes',
no: 'No',
ok: 'OK',
@@ -573,6 +576,8 @@ export default {
requestMoney: 'Request money',
sendMoney: 'Send money',
pay: 'Pay',
+ cancelPayment: 'Cancel payment',
+ cancelPaymentConfirmation: 'Are you sure that you want to cancel this payment?',
viewDetails: 'View details',
pending: 'Pending',
canceled: 'Canceled',
@@ -584,7 +589,8 @@ export default {
receiptStatusText: "Only you can see this receipt when it's scanning. Check back later or enter the details now.",
receiptScanningFailed: 'Receipt scanning failed. Enter the details manually.',
transactionPendingText: 'It takes a few days from the date the card was used for the transaction to post.',
- requestCount: ({count, scanningReceipts = 0}: RequestCountParams) => `${count} requests${scanningReceipts > 0 ? `, ${scanningReceipts} scanning` : ''}`,
+ requestCount: ({count, scanningReceipts = 0}: RequestCountParams) =>
+ `${count} ${Str.pluralize('request', 'requests', count)}${scanningReceipts > 0 ? `, ${scanningReceipts} scanning` : ''}`,
deleteRequest: 'Delete request',
deleteConfirmation: 'Are you sure that you want to delete this request?',
settledExpensify: 'Paid',
@@ -609,6 +615,7 @@ export default {
payerSettled: ({amount}: PayerSettledParams) => `paid ${amount}`,
approvedAmount: ({amount}: ApprovedAmountParams) => `approved ${amount}`,
waitingOnBankAccount: ({submitterDisplayName}: WaitingOnBankAccountParams) => `started settling up, payment is held until ${submitterDisplayName} adds a bank account`,
+ adminCanceledRequest: ({amount}: AdminCanceledRequestParams) => `The ${amount} payment has been cancelled by the admin.`,
canceledRequest: ({amount, submitterDisplayName}: CanceledRequestParams) =>
`Canceled the ${amount} payment, because ${submitterDisplayName} did not enable their Expensify Wallet within 30 days`,
settledAfterAddedBankAccount: ({submitterDisplayName, amount}: SettledAfterAddedBankAccountParams) =>
@@ -1966,6 +1973,10 @@ export default {
levelTwoResult: 'Message hidden from channel, plus anonymous warning and message is reported for review.',
levelThreeResult: 'Message removed from channel plus anonymous warning and message is reported for review.',
},
+ actionableMentionWhisperOptions: {
+ invite: 'Invite them',
+ nothing: 'Do nothing',
+ },
teachersUnitePage: {
teachersUnite: 'Teachers Unite',
joinExpensifyOrg: 'Join Expensify.org in eliminating injustice around the world and help teachers split their expenses for classrooms in need!',
diff --git a/src/languages/es.ts b/src/languages/es.ts
index 8969ce91a9a5..271f0787bfde 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -1,6 +1,8 @@
+import Str from 'expensify-common/lib/str';
import CONST from '@src/CONST';
import type {
AddressLineParams,
+ AdminCanceledRequestParams,
AlreadySignedInParams,
AmountEachParams,
ApprovedAmountParams,
@@ -101,6 +103,7 @@ import type {
export default {
common: {
cancel: 'Cancelar',
+ dismiss: 'Descartar',
yes: 'SÃ',
no: 'No',
ok: 'OK',
@@ -566,6 +569,8 @@ export default {
requestMoney: 'Pedir dinero',
sendMoney: 'Enviar dinero',
pay: 'Pagar',
+ cancelPayment: 'Cancelar el pago',
+ cancelPaymentConfirmation: '¿Estás seguro de que quieres cancelar este pago?',
viewDetails: 'Ver detalles',
pending: 'Pendiente',
canceled: 'Canceló',
@@ -577,7 +582,8 @@ export default {
receiptStatusText: 'Solo tú puedes ver este recibo cuando se está escaneando. Vuelve más tarde o introduce los detalles ahora.',
receiptScanningFailed: 'El escaneo de recibo ha fallado. Introduce los detalles manualmente.',
transactionPendingText: 'La transacción tarda unos dÃas en contabilizarse desde la fecha en que se utilizó la tarjeta.',
- requestCount: ({count, scanningReceipts = 0}: RequestCountParams) => `${count} solicitudes${scanningReceipts > 0 ? `, ${scanningReceipts} escaneando` : ''}`,
+ requestCount: ({count, scanningReceipts = 0}: RequestCountParams) =>
+ `${count} ${Str.pluralize('solicitude', 'solicitudes', count)}${scanningReceipts > 0 ? `, ${scanningReceipts} escaneando` : ''}`,
deleteRequest: 'Eliminar pedido',
deleteConfirmation: '¿Estás seguro de que quieres eliminar este pedido?',
settledExpensify: 'Pagado',
@@ -602,6 +608,7 @@ export default {
payerSettled: ({amount}: PayerSettledParams) => `pagó ${amount}`,
approvedAmount: ({amount}: ApprovedAmountParams) => `aprobó ${amount}`,
waitingOnBankAccount: ({submitterDisplayName}: WaitingOnBankAccountParams) => `inicio el pago, pero no se procesará hasta que ${submitterDisplayName} añada una cuenta bancaria`,
+ adminCanceledRequest: ({amount}: AdminCanceledRequestParams) => `El pago de ${amount} ha sido cancelado por el administrador.`,
canceledRequest: ({amount, submitterDisplayName}: CanceledRequestParams) =>
`Canceló el pago ${amount}, porque ${submitterDisplayName} no habilitó su billetera Expensify en un plazo de 30 dÃas.`,
settledAfterAddedBankAccount: ({submitterDisplayName, amount}: SettledAfterAddedBankAccountParams) =>
@@ -2430,6 +2437,10 @@ export default {
copy: 'Copiar',
copied: '¡Copiado!',
},
+ actionableMentionWhisperOptions: {
+ invite: 'Invitar',
+ nothing: 'No hacer nada',
+ },
moderation: {
flagDescription: 'Todos los mensajes marcados se enviarán a un moderador para su revisión.',
chooseAReason: 'Elige abajo un motivo para reportarlo:',
diff --git a/src/languages/types.ts b/src/languages/types.ts
index 3185b7a8f6f1..35a5110abf79 100644
--- a/src/languages/types.ts
+++ b/src/languages/types.ts
@@ -135,6 +135,8 @@ type WaitingOnBankAccountParams = {submitterDisplayName: string};
type CanceledRequestParams = {amount: string; submitterDisplayName: string};
+type AdminCanceledRequestParams = {amount: string};
+
type SettledAfterAddedBankAccountParams = {submitterDisplayName: string; amount: string};
type PaidElsewhereWithAmountParams = {payer?: string; amount: string};
@@ -288,6 +290,7 @@ type TranslationFlatObject = {
};
export type {
+ AdminCanceledRequestParams,
ApprovedAmountParams,
AddressLineParams,
AlreadySignedInParams,
diff --git a/src/libs/DoInteractionTask/index.desktop.ts b/src/libs/DoInteractionTask/index.desktop.ts
new file mode 100644
index 000000000000..73b3cb19ec32
--- /dev/null
+++ b/src/libs/DoInteractionTask/index.desktop.ts
@@ -0,0 +1,10 @@
+import {InteractionManager} from 'react-native';
+
+// For desktop, we should call the callback after all interactions to prevent freezing. See more detail in https://github.com/Expensify/App/issues/28916
+function doInteractionTask(callback: () => void) {
+ return InteractionManager.runAfterInteractions(() => {
+ callback();
+ });
+}
+
+export default doInteractionTask;
diff --git a/src/libs/DoInteractionTask/index.ts b/src/libs/DoInteractionTask/index.ts
new file mode 100644
index 000000000000..dffbb0562b98
--- /dev/null
+++ b/src/libs/DoInteractionTask/index.ts
@@ -0,0 +1,6 @@
+function doInteractionTask(callback: () => void) {
+ callback();
+ return null;
+}
+
+export default doInteractionTask;
diff --git a/src/libs/E2E/apiMocks/openApp.ts b/src/libs/E2E/apiMocks/openApp.ts
index ec714d693666..d6dd4a8f8003 100644
--- a/src/libs/E2E/apiMocks/openApp.ts
+++ b/src/libs/E2E/apiMocks/openApp.ts
@@ -2043,10 +2043,10 @@ const openApp = (): Response => ({
managerID: 16,
currency: 'USD',
chatReportID: '98817646',
- state: 'SUBMITTED',
cachedTotal: '($1,473.11)',
total: 147311,
stateNum: 1,
+ statusNum: 1,
},
report_4249286573496381: {
reportID: '4249286573496381',
@@ -2054,10 +2054,10 @@ const openApp = (): Response => ({
managerID: 21,
currency: 'USD',
chatReportID: '4867098979334014',
- state: 'SUBMITTED',
cachedTotal: '($212.78)',
total: 21278,
stateNum: 1,
+ statusNum: 1,
},
},
},
diff --git a/src/libs/ModifiedExpenseMessage.ts b/src/libs/ModifiedExpenseMessage.ts
index 61e7ce04ab71..ff5ad9327191 100644
--- a/src/libs/ModifiedExpenseMessage.ts
+++ b/src/libs/ModifiedExpenseMessage.ts
@@ -1,9 +1,9 @@
-import {format} from 'date-fns';
import Onyx from 'react-native-onyx';
import CONST from '@src/CONST';
import ONYXKEYS from '@src/ONYXKEYS';
import type {PolicyTags, ReportAction} from '@src/types/onyx';
import * as CurrencyUtils from './CurrencyUtils';
+import DateUtils from './DateUtils';
import * as Localize from './Localize';
import * as PolicyUtils from './PolicyUtils';
import * as ReportUtils from './ReportUtils';
@@ -145,13 +145,11 @@ function getForReportAction(reportAction: ReportAction): string {
);
}
- const hasModifiedCreated = reportActionOriginalMessage && 'oldCreated' in reportActionOriginalMessage && 'created' in reportActionOriginalMessage;
- if (hasModifiedCreated) {
- // Take only the YYYY-MM-DD value as the original date includes timestamp
- let formattedOldCreated: Date | string = new Date(reportActionOriginalMessage?.oldCreated ? reportActionOriginalMessage.oldCreated : 0);
- formattedOldCreated = format(formattedOldCreated, CONST.DATE.FNS_FORMAT_STRING);
+ if (reportActionOriginalMessage?.oldCreated && reportActionOriginalMessage?.created) {
+ const formattedOldCreated = DateUtils.formatWithUTCTimeZone(reportActionOriginalMessage.oldCreated, CONST.DATE.FNS_FORMAT_STRING);
+
buildMessageFragmentForValue(
- reportActionOriginalMessage?.created ?? '',
+ reportActionOriginalMessage.created,
formattedOldCreated,
Localize.translateLocal('common.date'),
false,
diff --git a/src/libs/Navigation/AppNavigator/AuthScreens.tsx b/src/libs/Navigation/AppNavigator/AuthScreens.tsx
index 7286615e6ba6..03a3612d4566 100644
--- a/src/libs/Navigation/AppNavigator/AuthScreens.tsx
+++ b/src/libs/Navigation/AppNavigator/AuthScreens.tsx
@@ -51,7 +51,7 @@ type AuthScreensProps = {
isUsingMemoryOnlyKeys: OnyxEntry;
/** The last Onyx update ID was applied to the client */
- lastUpdateIDAppliedToClient: OnyxEntry;
+ initialLastUpdateIDAppliedToClient: OnyxEntry;
};
const loadReportAttachments = () => require('../../../pages/home/report/ReportAttachments').default as React.ComponentType;
@@ -63,6 +63,7 @@ const loadConciergePage = () => require('../../../pages/ConciergePage').default
let timezone: Timezone | null;
let currentAccountID = -1;
let isLoadingApp = false;
+let lastUpdateIDAppliedToClient: OnyxEntry;
Onyx.connect({
key: ONYXKEYS.SESSION,
@@ -112,6 +113,21 @@ Onyx.connect({
},
});
+Onyx.connect({
+ key: ONYXKEYS.ONYX_UPDATES_LAST_UPDATE_ID_APPLIED_TO_CLIENT,
+ callback: (value: OnyxEntry) => {
+ lastUpdateIDAppliedToClient = value;
+ },
+});
+
+function handleNetworkReconnect() {
+ if (isLoadingApp) {
+ App.openApp();
+ } else {
+ App.reconnectApp(lastUpdateIDAppliedToClient);
+ }
+}
+
const RootStack = createCustomStackNavigator();
// We want to delay the re-rendering for components(e.g. ReportActionCompose)
// that depends on modal visibility until Modal is completely closed and its focused
@@ -129,7 +145,7 @@ const modalScreenListeners = {
},
};
-function AuthScreens({lastUpdateIDAppliedToClient, session, lastOpenedPublicRoomID, isUsingMemoryOnlyKeys = false}: AuthScreensProps) {
+function AuthScreens({session, lastOpenedPublicRoomID, isUsingMemoryOnlyKeys = false, initialLastUpdateIDAppliedToClient}: AuthScreensProps) {
const styles = useThemeStyles();
const StyleUtils = useStyleUtils();
const {isSmallScreenWidth} = useWindowDimensions();
@@ -156,13 +172,7 @@ function AuthScreens({lastUpdateIDAppliedToClient, session, lastOpenedPublicRoom
}
NetworkConnection.listenForReconnect();
- NetworkConnection.onReconnect(() => {
- if (isLoadingApp) {
- App.openApp();
- } else {
- App.reconnectApp(lastUpdateIDAppliedToClient);
- }
- });
+ NetworkConnection.onReconnect(handleNetworkReconnect);
PusherConnectionManager.init();
Pusher.init({
appKey: CONFIG.PUSHER.APP_KEY,
@@ -180,7 +190,7 @@ function AuthScreens({lastUpdateIDAppliedToClient, session, lastOpenedPublicRoom
if (shouldGetAllData) {
App.openApp();
} else {
- App.reconnectApp(lastUpdateIDAppliedToClient);
+ App.reconnectApp(initialLastUpdateIDAppliedToClient);
}
PriorityMode.autoSwitchToFocusMode();
@@ -329,7 +339,7 @@ export default withOnyx({
isUsingMemoryOnlyKeys: {
key: ONYXKEYS.IS_USING_MEMORY_ONLY_KEYS,
},
- lastUpdateIDAppliedToClient: {
+ initialLastUpdateIDAppliedToClient: {
key: ONYXKEYS.ONYX_UPDATES_LAST_UPDATE_ID_APPLIED_TO_CLIENT,
},
})(AuthScreensMemoized);
diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators.tsx
index 4be1c988561b..9d4be56ba08f 100644
--- a/src/libs/Navigation/AppNavigator/ModalStackNavigators.tsx
+++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators.tsx
@@ -62,6 +62,7 @@ function createModalStackNavigator(screens:
key={name}
name={name}
getComponent={(screens as Required)[name as Screen]}
+ initialParams={{layout: 'narrow'} as TStackParams[string]}
/>
))}
@@ -103,8 +104,7 @@ const MoneyRequestModalStackNavigator = createModalStackNavigator require('../../../pages/AddPersonalBankAccountPage').default as React.ComponentType,
[SCREENS.IOU_SEND.ADD_DEBIT_CARD]: () => require('../../../pages/settings/Wallet/AddDebitCardPage').default as React.ComponentType,
[SCREENS.IOU_SEND.ENABLE_PAYMENTS]: () => require('../../../pages/EnablePayments/EnablePaymentsPage').default as React.ComponentType,
- [SCREENS.MONEY_REQUEST.WAYPOINT]: () => require('../../../pages/iou/NewDistanceRequestWaypointEditorPage').default as React.ComponentType,
- [SCREENS.MONEY_REQUEST.EDIT_WAYPOINT]: () => require('../../../pages/iou/MoneyRequestEditWaypointPage').default as React.ComponentType,
+ [SCREENS.MONEY_REQUEST.WAYPOINT]: () => require('../../../pages/iou/MoneyRequestWaypointPage').default as React.ComponentType,
[SCREENS.MONEY_REQUEST.DISTANCE]: () => require('../../../pages/iou/NewDistanceRequestPage').default as React.ComponentType,
[SCREENS.MONEY_REQUEST.RECEIPT]: () => require('../../../pages/EditRequestReceiptPage').default as React.ComponentType,
});
diff --git a/src/libs/Navigation/AppNavigator/createCustomStackNavigator/CustomRouter.ts b/src/libs/Navigation/AppNavigator/createCustomStackNavigator/CustomRouter.ts
index 10cee2c85952..020719e2dc36 100644
--- a/src/libs/Navigation/AppNavigator/createCustomStackNavigator/CustomRouter.ts
+++ b/src/libs/Navigation/AppNavigator/createCustomStackNavigator/CustomRouter.ts
@@ -1,7 +1,6 @@
import type {NavigationState, PartialState, RouterConfigOptions, StackNavigationState} from '@react-navigation/native';
import {StackRouter} from '@react-navigation/native';
import type {ParamListBase} from '@react-navigation/routers';
-import getIsSmallScreenWidth from '@libs/getIsSmallScreenWidth';
import NAVIGATORS from '@src/NAVIGATORS';
import SCREENS from '@src/SCREENS';
import type {ResponsiveStackNavigatorRouterOptions} from './types';
@@ -65,9 +64,8 @@ function CustomRouter(options: ResponsiveStackNavigatorRouterOptions) {
return {
...stackRouter,
getRehydratedState(partialState: StackNavigationState, {routeNames, routeParamList, routeGetIdList}: RouterConfigOptions): StackNavigationState {
- const isSmallScreenWidth = getIsSmallScreenWidth();
// Make sure that there is at least one CentralPaneNavigator (ReportScreen by default) in the state if this is a wide layout
- if (!isAtLeastOneCentralPaneNavigatorInState(partialState) && !isSmallScreenWidth) {
+ if (!isAtLeastOneCentralPaneNavigatorInState(partialState) && !options.getIsSmallScreenWidth()) {
// If we added a route we need to make sure that the state.stale is true to generate new key for this route
// eslint-disable-next-line no-param-reassign
diff --git a/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.native.tsx b/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.native.tsx
index 151dd0a0f893..5f1010da2ed1 100644
--- a/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.native.tsx
+++ b/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.native.tsx
@@ -24,6 +24,8 @@ function ResponsiveStackNavigator(props: ResponsiveStackNavigatorProps) {
children: props.children,
screenOptions: props.screenOptions,
initialRouteName: props.initialRouteName,
+ // Options for useNavigationBuilder won't update on prop change, so we need to pass a getter for the router to have the current state of isSmallScreenWidth.
+ getIsSmallScreenWidth: () => isSmallScreenWidthRef.current,
});
return (
diff --git a/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.tsx b/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.tsx
index 3f6025d5ff0c..06845e6e6f61 100644
--- a/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.tsx
+++ b/src/libs/Navigation/AppNavigator/createCustomStackNavigator/index.tsx
@@ -46,6 +46,8 @@ function ResponsiveStackNavigator(props: ResponsiveStackNavigatorProps) {
children: props.children,
screenOptions: props.screenOptions,
initialRouteName: props.initialRouteName,
+ // Options for useNavigationBuilder won't update on prop change, so we need to pass a getter for the router to have the current state of isSmallScreenWidth.
+ getIsSmallScreenWidth: () => isSmallScreenWidthRef.current,
});
const stateToRender = useMemo(() => {
diff --git a/src/libs/Navigation/AppNavigator/createCustomStackNavigator/types.ts b/src/libs/Navigation/AppNavigator/createCustomStackNavigator/types.ts
index 09d35e2a1680..ea94fed19b11 100644
--- a/src/libs/Navigation/AppNavigator/createCustomStackNavigator/types.ts
+++ b/src/libs/Navigation/AppNavigator/createCustomStackNavigator/types.ts
@@ -5,7 +5,9 @@ type ResponsiveStackNavigatorConfig = {
isSmallScreenWidth: boolean;
};
-type ResponsiveStackNavigatorRouterOptions = StackRouterOptions;
+type ResponsiveStackNavigatorRouterOptions = StackRouterOptions & {
+ getIsSmallScreenWidth: () => boolean;
+};
type ResponsiveStackNavigatorProps = DefaultNavigatorOptions, StackNavigationOptions, StackNavigationEventMap> &
ResponsiveStackNavigatorConfig;
diff --git a/src/libs/Navigation/linkingConfig.ts b/src/libs/Navigation/linkingConfig.ts
index 5f2a607b5f78..1a495e92eb80 100644
--- a/src/libs/Navigation/linkingConfig.ts
+++ b/src/libs/Navigation/linkingConfig.ts
@@ -433,8 +433,6 @@ const linkingConfig: LinkingOptions = {
[SCREENS.MONEY_REQUEST.CATEGORY]: ROUTES.MONEY_REQUEST_CATEGORY.route,
[SCREENS.MONEY_REQUEST.TAG]: ROUTES.MONEY_REQUEST_TAG.route,
[SCREENS.MONEY_REQUEST.MERCHANT]: ROUTES.MONEY_REQUEST_MERCHANT.route,
- [SCREENS.MONEY_REQUEST.WAYPOINT]: ROUTES.MONEY_REQUEST_WAYPOINT.route,
- [SCREENS.MONEY_REQUEST.EDIT_WAYPOINT]: ROUTES.MONEY_REQUEST_EDIT_WAYPOINT.route,
[SCREENS.MONEY_REQUEST.RECEIPT]: ROUTES.MONEY_REQUEST_RECEIPT.route,
[SCREENS.MONEY_REQUEST.DISTANCE]: ROUTES.MONEY_REQUEST_DISTANCE.route,
[SCREENS.IOU_SEND.ENABLE_PAYMENTS]: ROUTES.IOU_SEND_ENABLE_PAYMENTS,
diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts
index 90f5361f11f4..8d227fa6f697 100644
--- a/src/libs/Navigation/types.ts
+++ b/src/libs/Navigation/types.ts
@@ -3,6 +3,7 @@ import type {CommonActions, NavigationContainerRefWithCurrent, NavigationHelpers
import type {ValueOf} from 'type-fest';
import type CONST from '@src/CONST';
import type NAVIGATORS from '@src/NAVIGATORS';
+import type {Route as Routes} from '@src/ROUTES';
import type SCREENS from '@src/SCREENS';
type NavigationRef = NavigationContainerRefWithCurrent;
@@ -241,12 +242,6 @@ type MoneyRequestNavigatorParamList = {
waypointIndex: string;
threadReportID: number;
};
- [SCREENS.MONEY_REQUEST.EDIT_WAYPOINT]: {
- iouType: string;
- transactionID: string;
- waypointIndex: string;
- threadReportID: number;
- };
[SCREENS.MONEY_REQUEST.DISTANCE]: {
iouType: ValueOf;
reportID: string;
@@ -384,10 +379,11 @@ type RightModalNavigatorParamList = {
type PublicScreensParamList = {
[SCREENS.HOME]: undefined;
[SCREENS.TRANSITION_BETWEEN_APPS]: {
- shouldForceLogin: string;
- email: string;
- shortLivedAuthToken: string;
- exitTo: string;
+ email?: string;
+ error?: string;
+ shortLivedAuthToken?: string;
+ shortLivedToken?: string;
+ exitTo?: Routes;
};
[SCREENS.VALIDATE_LOGIN]: {
accountID: string;
diff --git a/src/libs/OptionsListUtils.js b/src/libs/OptionsListUtils.js
index 0be73ce2735e..9052819f731f 100644
--- a/src/libs/OptionsListUtils.js
+++ b/src/libs/OptionsListUtils.js
@@ -420,7 +420,7 @@ function getLastMessageTextForReport(report) {
} else if (ReportActionUtils.isReimbursementQueuedAction(lastReportAction)) {
lastMessageTextFromReport = ReportUtils.getReimbursementQueuedActionMessage(lastReportAction, report);
} else if (ReportActionUtils.isReimbursementDeQueuedAction(lastReportAction)) {
- lastMessageTextFromReport = ReportUtils.getReimbursementDeQueuedActionMessage(report);
+ lastMessageTextFromReport = ReportUtils.getReimbursementDeQueuedActionMessage(lastReportAction, report);
} else if (ReportActionUtils.isDeletedParentAction(lastReportAction) && ReportUtils.isChatReport(report)) {
lastMessageTextFromReport = ReportUtils.getDeletedParentActionMessageForChatReport(lastReportAction);
} else if (ReportUtils.isReportMessageAttachment({text: report.lastMessageText, html: report.lastMessageHtml, translationKey: report.lastMessageTranslationKey})) {
diff --git a/src/libs/Performance.tsx b/src/libs/Performance.tsx
index a2667955326d..90a13b84d7f7 100644
--- a/src/libs/Performance.tsx
+++ b/src/libs/Performance.tsx
@@ -14,7 +14,7 @@ type WrappedComponentConfig = {id: string};
type PerformanceEntriesCallback = (entry: PerformanceEntry) => void;
-type Phase = 'mount' | 'update';
+type Phase = 'mount' | 'update' | 'nested-update';
type WithRenderTraceHOC = >(WrappedComponent: React.ComponentType
) => React.ComponentType
>;
diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts
index 1010f8bd82e0..76e4da2233c6 100644
--- a/src/libs/ReportUtils.ts
+++ b/src/libs/ReportUtils.ts
@@ -14,9 +14,9 @@ import CONST from '@src/CONST';
import type {ParentNavigationSummaryParams, TranslationPaths} from '@src/languages/types';
import ONYXKEYS from '@src/ONYXKEYS';
import ROUTES from '@src/ROUTES';
-import type {Beta, Login, PersonalDetails, PersonalDetailsList, Policy, Report, ReportAction, ReportMetadata, Session, Transaction} from '@src/types/onyx';
+import type {Beta, Login, PersonalDetails, PersonalDetailsList, Policy, PolicyReportField, Report, ReportAction, ReportMetadata, Session, Transaction} from '@src/types/onyx';
import type {Errors, Icon, PendingAction} from '@src/types/onyx/OnyxCommon';
-import type {IOUMessage, OriginalMessageActionName, OriginalMessageCreated} from '@src/types/onyx/OriginalMessage';
+import type {IOUMessage, OriginalMessageActionName, OriginalMessageCreated, ReimbursementDeQueuedMessage} from '@src/types/onyx/OriginalMessage';
import type {Status} from '@src/types/onyx/PersonalDetails';
import type {NotificationPreference} from '@src/types/onyx/Report';
import type {Message, ReportActionBase, ReportActions} from '@src/types/onyx/ReportAction';
@@ -112,7 +112,6 @@ type OptimisticExpenseReport = Pick<
| 'ownerAccountID'
| 'currency'
| 'reportName'
- | 'state'
| 'stateNum'
| 'statusNum'
| 'total'
@@ -180,6 +179,11 @@ type OptimisticSubmittedReportAction = Pick<
'actionName' | 'actorAccountID' | 'automatic' | 'avatar' | 'isAttachment' | 'originalMessage' | 'message' | 'person' | 'reportActionID' | 'shouldShow' | 'created' | 'pendingAction'
>;
+type OptimisticCancelPaymentReportAction = Pick<
+ ReportAction,
+ 'actionName' | 'actorAccountID' | 'message' | 'originalMessage' | 'person' | 'reportActionID' | 'shouldShow' | 'created' | 'pendingAction'
+>;
+
type OptimisticEditedTaskReportAction = Pick<
ReportAction,
'reportActionID' | 'actionName' | 'pendingAction' | 'actorAccountID' | 'automatic' | 'avatar' | 'created' | 'shouldShow' | 'message' | 'person'
@@ -306,13 +310,12 @@ type OptimisticIOUReport = Pick<
| 'participantAccountIDs'
| 'visibleChatMemberAccountIDs'
| 'reportID'
- | 'state'
| 'stateNum'
+ | 'statusNum'
| 'total'
| 'reportName'
| 'notificationPreference'
| 'parentReportID'
- | 'statusNum'
| 'lastVisibleActionCreated'
>;
type DisplayNameWithTooltips = Array>;
@@ -583,14 +586,16 @@ function isCanceledTaskReport(report: OnyxEntry | EmptyObject = {}, pare
* @param parentReportAction - The parent report action of the report (Used to check if the task has been canceled)
*/
function isOpenTaskReport(report: OnyxEntry, parentReportAction: OnyxEntry | EmptyObject = {}): boolean {
- return isTaskReport(report) && !isCanceledTaskReport(report, parentReportAction) && report?.stateNum === CONST.REPORT.STATE_NUM.OPEN && report?.statusNum === CONST.REPORT.STATUS.OPEN;
+ return (
+ isTaskReport(report) && !isCanceledTaskReport(report, parentReportAction) && report?.stateNum === CONST.REPORT.STATE_NUM.OPEN && report?.statusNum === CONST.REPORT.STATUS_NUM.OPEN
+ );
}
/**
* Checks if a report is a completed task report.
*/
function isCompletedTaskReport(report: OnyxEntry): boolean {
- return isTaskReport(report) && report?.stateNum === CONST.REPORT.STATE_NUM.SUBMITTED && report?.statusNum === CONST.REPORT.STATUS.APPROVED;
+ return isTaskReport(report) && report?.stateNum === CONST.REPORT.STATE_NUM.APPROVED && report?.statusNum === CONST.REPORT.STATUS_NUM.APPROVED;
}
/**
@@ -605,14 +610,14 @@ function isReportManager(report: OnyxEntry): boolean {
*/
function isReportApproved(reportOrID: OnyxEntry | string | EmptyObject): boolean {
const report = typeof reportOrID === 'string' ? allReports?.[`${ONYXKEYS.COLLECTION.REPORT}${reportOrID}`] ?? null : reportOrID;
- return report?.stateNum === CONST.REPORT.STATE_NUM.SUBMITTED && report?.statusNum === CONST.REPORT.STATUS.APPROVED;
+ return report?.stateNum === CONST.REPORT.STATE_NUM.APPROVED && report?.statusNum === CONST.REPORT.STATUS_NUM.APPROVED;
}
/**
* Checks if the supplied report is an expense report in Open state and status.
*/
function isDraftExpenseReport(report: OnyxEntry | EmptyObject): boolean {
- return isExpenseReport(report) && report?.stateNum === CONST.REPORT.STATE_NUM.OPEN && report?.statusNum === CONST.REPORT.STATUS.OPEN;
+ return isExpenseReport(report) && report?.stateNum === CONST.REPORT.STATE_NUM.OPEN && report?.statusNum === CONST.REPORT.STATUS_NUM.OPEN;
}
/**
@@ -643,11 +648,11 @@ function isSettled(reportID: string | undefined): boolean {
// In case the payment is scheduled and we are waiting for the payee to set up their wallet,
// consider the report as paid as well.
- if (report.isWaitingOnBankAccount && report.statusNum === CONST.REPORT.STATUS.APPROVED) {
+ if (report.isWaitingOnBankAccount && report.statusNum === CONST.REPORT.STATUS_NUM.APPROVED) {
return true;
}
- return report?.statusNum === CONST.REPORT.STATUS.REIMBURSED;
+ return report?.statusNum === CONST.REPORT.STATUS_NUM.REIMBURSED;
}
/**
@@ -830,7 +835,7 @@ function isConciergeChatReport(report: OnyxEntry): boolean {
* Returns true if report is still being processed
*/
function isProcessingReport(report: OnyxEntry | EmptyObject): boolean {
- return report?.stateNum === CONST.REPORT.STATE_NUM.PROCESSING && report?.statusNum === CONST.REPORT.STATUS.SUBMITTED;
+ return report?.stateNum === CONST.REPORT.STATE_NUM.SUBMITTED && report?.statusNum === CONST.REPORT.STATUS_NUM.SUBMITTED;
}
/**
@@ -936,7 +941,7 @@ function findLastAccessedReport(
* Whether the provided report is an archived room
*/
function isArchivedRoom(report: OnyxEntry | EmptyObject): boolean {
- return report?.statusNum === CONST.REPORT.STATUS.CLOSED && report?.stateNum === CONST.REPORT.STATE_NUM.SUBMITTED;
+ return report?.statusNum === CONST.REPORT.STATUS_NUM.CLOSED && report?.stateNum === CONST.REPORT.STATE_NUM.APPROVED;
}
/**
@@ -1095,13 +1100,25 @@ function getReportNotificationPreference(report: OnyxEntry): string | nu
}
/**
- * Returns whether or not the author of the action is this user
- *
+ * Checks if the current user is the action's author
*/
-function isActionCreator(reportAction: OnyxEntry): boolean {
+function isActionCreator(reportAction: OnyxEntry | Partial): boolean {
return reportAction?.actorAccountID === currentUserAccountID;
}
+/**
+ * Returns the notification preference of the action's child report if it exists.
+ * Otherwise, calculates it based on the action's authorship.
+ */
+function getChildReportNotificationPreference(reportAction: OnyxEntry | Partial): NotificationPreference {
+ const childReportNotificationPreference = reportAction?.childReportNotificationPreference ?? '';
+ if (childReportNotificationPreference) {
+ return childReportNotificationPreference;
+ }
+
+ return isActionCreator(reportAction) ? CONST.REPORT.NOTIFICATION_PREFERENCE.ALWAYS : CONST.REPORT.NOTIFICATION_PREFERENCE.HIDDEN;
+}
+
/**
* Can only delete if the author is this user and the action is an ADDCOMMENT action or an IOU action in an unsettled report, or if the user is a
* policy admin
@@ -1592,9 +1609,13 @@ function getReimbursementQueuedActionMessage(reportAction: OnyxEntry): string {
+function getReimbursementDeQueuedActionMessage(reportAction: OnyxEntry, report: OnyxEntry): string {
+ const amount = CurrencyUtils.convertToDisplayString(Math.abs(report?.total ?? 0), report?.currency);
+ const originalMessage = reportAction?.originalMessage as ReimbursementDeQueuedMessage | undefined;
+ if (originalMessage?.cancellationReason === CONST.REPORT.CANCEL_PAYMENT_REASONS.ADMIN) {
+ return Localize.translateLocal('iou.adminCanceledRequest', {amount});
+ }
const submitterDisplayName = getDisplayNameForParticipant(report?.ownerAccountID, true) ?? '';
- const amount = CurrencyUtils.convertToDisplayString(report?.total ?? 0, report?.currency);
return Localize.translateLocal('iou.canceledRequest', {submitterDisplayName, amount});
}
@@ -2520,7 +2541,7 @@ function buildOptimisticTaskCommentReportAction(taskReportID: string, taskTitle:
reportAction.reportAction.childType = CONST.REPORT.TYPE.TASK;
reportAction.reportAction.childReportName = taskTitle;
reportAction.reportAction.childManagerAccountID = taskAssigneeAccountID;
- reportAction.reportAction.childStatusNum = CONST.REPORT.STATUS.OPEN;
+ reportAction.reportAction.childStatusNum = CONST.REPORT.STATUS_NUM.OPEN;
reportAction.reportAction.childStateNum = CONST.REPORT.STATE_NUM.OPEN;
return reportAction;
@@ -2555,9 +2576,8 @@ function buildOptimisticIOUReport(payeeAccountID: number, payerAccountID: number
participantAccountIDs: participantsAccountIDs,
visibleChatMemberAccountIDs: participantsAccountIDs,
reportID: generateReportID(),
- state: CONST.REPORT.STATE.SUBMITTED,
- stateNum: isSendingMoney ? CONST.REPORT.STATE_NUM.SUBMITTED : CONST.REPORT.STATE_NUM.PROCESSING,
- statusNum: isSendingMoney ? CONST.REPORT.STATUS.REIMBURSED : CONST.REPORT.STATE_NUM.PROCESSING,
+ stateNum: isSendingMoney ? CONST.REPORT.STATE_NUM.APPROVED : CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: isSendingMoney ? CONST.REPORT.STATUS_NUM.REIMBURSED : CONST.REPORT.STATE_NUM.SUBMITTED,
total,
// We don't translate reportName because the server response is always in English
@@ -2588,9 +2608,8 @@ function buildOptimisticExpenseReport(chatReportID: string, policyID: string, pa
const isFree = policy?.type === CONST.POLICY.TYPE.FREE;
// Define the state and status of the report based on whether the policy is free or paid
- const state = isFree ? CONST.REPORT.STATE.SUBMITTED : CONST.REPORT.STATE.OPEN;
- const stateNum = isFree ? CONST.REPORT.STATE_NUM.PROCESSING : CONST.REPORT.STATE_NUM.OPEN;
- const statusNum = isFree ? CONST.REPORT.STATUS.SUBMITTED : CONST.REPORT.STATUS.OPEN;
+ const stateNum = isFree ? CONST.REPORT.STATE_NUM.SUBMITTED : CONST.REPORT.STATE_NUM.OPEN;
+ const statusNum = isFree ? CONST.REPORT.STATUS_NUM.SUBMITTED : CONST.REPORT.STATUS_NUM.OPEN;
return {
reportID: generateReportID(),
@@ -2602,7 +2621,6 @@ function buildOptimisticExpenseReport(chatReportID: string, policyID: string, pa
// We don't translate reportName because the server response is always in English
reportName: `${policyName} owes ${formattedTotal}`,
- state,
stateNum,
statusNum,
total: storedTotal,
@@ -2877,6 +2895,40 @@ function buildOptimisticSubmittedReportAction(amount: number, currency: string,
};
}
+/**
+ * Builds an optimistic REIMBURSEMENTDEQUEUED report action with a randomly generated reportActionID.
+ *
+ */
+function buildOptimisticCancelPaymentReportAction(expenseReportID: string): OptimisticCancelPaymentReportAction {
+ return {
+ actionName: CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENTDEQUEUED,
+ actorAccountID: currentUserAccountID,
+ message: [
+ {
+ cancellationReason: CONST.REPORT.CANCEL_PAYMENT_REASONS.ADMIN,
+ expenseReportID,
+ type: CONST.REPORT.MESSAGE.TYPE.COMMENT,
+ text: '',
+ },
+ ],
+ originalMessage: {
+ cancellationReason: CONST.REPORT.CANCEL_PAYMENT_REASONS.ADMIN,
+ expenseReportID,
+ },
+ person: [
+ {
+ style: 'strong',
+ text: currentUserPersonalDetails?.displayName ?? currentUserEmail,
+ type: 'TEXT',
+ },
+ ],
+ reportActionID: NumberUtils.rand64(),
+ shouldShow: true,
+ created: DateUtils.getDBTime(),
+ pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD,
+ };
+}
+
/**
* Builds an optimistic report preview action with a randomly generated reportActionID.
*
@@ -3308,7 +3360,7 @@ function buildOptimisticTaskReport(
parentReportID,
policyID,
stateNum: CONST.REPORT.STATE_NUM.OPEN,
- statusNum: CONST.REPORT.STATUS.OPEN,
+ statusNum: CONST.REPORT.STATUS_NUM.OPEN,
notificationPreference: CONST.REPORT.NOTIFICATION_PREFERENCE.ALWAYS,
lastVisibleActionCreated: DateUtils.getDBTime(),
};
@@ -3545,7 +3597,7 @@ function getChatByParticipantsAndPolicy(newParticipantList: number[], policyID:
if (!report?.participantAccountIDs) {
return false;
}
- const sortedParticipanctsAccountIDs = report.parentReportActionIDs?.sort();
+ const sortedParticipanctsAccountIDs = report.participantAccountIDs?.sort();
// Only return the room if it has all the participants and is not a policy room
return report.policyID === policyID && lodashIsEqual(newParticipantList, sortedParticipanctsAccountIDs);
}) ?? null
@@ -4199,17 +4251,22 @@ function getIOUReportActionDisplayMessage(reportAction: OnyxEntry)
const formattedAmount = CurrencyUtils.convertToDisplayString(amount, currency) ?? '';
const payerName = isExpenseReport(iouReport) ? getPolicyName(iouReport) : getDisplayNameForParticipant(iouReport?.managerID, true);
- switch (originalMessage.paymentType) {
- case CONST.IOU.PAYMENT_TYPE.ELSEWHERE:
- translationKey = 'iou.paidElsewhereWithAmount';
- break;
- case CONST.IOU.PAYMENT_TYPE.EXPENSIFY:
- case CONST.IOU.PAYMENT_TYPE.VBBA:
- translationKey = 'iou.paidWithExpensifyWithAmount';
- break;
- default:
- translationKey = 'iou.payerPaidAmount';
- break;
+ // If the payment was cancelled, show the "Owes" message
+ if (!isSettled(IOUReportID)) {
+ translationKey = 'iou.payerOwesAmount';
+ } else {
+ switch (originalMessage.paymentType) {
+ case CONST.IOU.PAYMENT_TYPE.ELSEWHERE:
+ translationKey = 'iou.paidElsewhereWithAmount';
+ break;
+ case CONST.IOU.PAYMENT_TYPE.EXPENSIFY:
+ case CONST.IOU.PAYMENT_TYPE.VBBA:
+ translationKey = 'iou.paidWithExpensifyWithAmount';
+ break;
+ default:
+ translationKey = 'iou.payerPaidAmount';
+ break;
+ }
}
return Localize.translateLocal(translationKey, {amount: formattedAmount, payer: payerName ?? ''});
}
@@ -4283,7 +4340,8 @@ function hasSmartscanError(reportActions: ReportAction[]) {
if (!ReportActionsUtils.isSplitBillAction(action) && !ReportActionsUtils.isReportPreviewAction(action)) {
return false;
}
- const isReportPreviewError = ReportActionsUtils.isReportPreviewAction(action) && hasMissingSmartscanFields(ReportActionsUtils.getIOUReportIDFromReportActionPreview(action));
+ const IOUReportID = ReportActionsUtils.getIOUReportIDFromReportActionPreview(action);
+ const isReportPreviewError = ReportActionsUtils.isReportPreviewAction(action) && hasMissingSmartscanFields(IOUReportID) && !isSettled(IOUReportID);
const transactionID = (action.originalMessage as IOUMessage).IOUTransactionID ?? '0';
const transaction = allTransactions?.[`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`] ?? {};
const isSplitBillError = ReportActionsUtils.isSplitBillAction(action) && TransactionUtils.hasMissingSmartscanFields(transaction as Transaction);
@@ -4324,6 +4382,25 @@ function navigateToPrivateNotes(report: Report, session: Session) {
Navigation.navigate(ROUTES.PRIVATE_NOTES_LIST.getRoute(report.reportID));
}
+/**
+ * Given a report field and a report, get the title of the field.
+ * This is specially useful when we have a report field of type formula.
+ */
+function getReportFieldTitle(report: OnyxEntry, reportField: PolicyReportField): string {
+ const value = report?.reportFields?.[reportField.fieldID] ?? reportField.defaultValue;
+
+ if (reportField.type !== 'formula') {
+ return value;
+ }
+
+ return value.replaceAll(CONST.REGEX.REPORT_FIELD_TITLE, (match, property) => {
+ if (report && property in report) {
+ return report[property as keyof Report]?.toString() ?? match;
+ }
+ return match;
+ });
+}
+
/**
* Checks if thread replies should be displayed
*/
@@ -4435,6 +4512,7 @@ export {
buildOptimisticIOUReportAction,
buildOptimisticReportPreview,
buildOptimisticModifiedExpenseReportAction,
+ buildOptimisticCancelPaymentReportAction,
updateReportPreview,
buildOptimisticTaskReportAction,
buildOptimisticAddCommentReportAction,
@@ -4531,8 +4609,10 @@ export {
canEditWriteCapability,
hasSmartscanError,
shouldAutoFocusOnKeyPress,
+ getReportFieldTitle,
shouldDisplayThreadReplies,
shouldDisableThread,
+ getChildReportNotificationPreference,
};
export type {ExpenseOriginalMessage, OptionData, OptimisticChatReport, OptimisticCreatedReportAction};
diff --git a/src/libs/UserUtils.ts b/src/libs/UserUtils.ts
index 653acfa36216..6ec386679a32 100644
--- a/src/libs/UserUtils.ts
+++ b/src/libs/UserUtils.ts
@@ -106,7 +106,7 @@ function getDefaultAvatar(accountID = -1, avatarURL?: string): IconAsset {
// But the avatar link still corresponds to the original ID-generated link. So we extract the SVG image number from the backend's link instead of using the user ID directly
let accountIDHashBucket: AvatarRange;
if (avatarURL) {
- const match = avatarURL.match(/(default-avatar_)(\d+)(?=\.)/);
+ const match = avatarURL.match(/(default-avatar_|avatar_)(\d+)(?=\.)/);
const lastDigit = match && parseInt(match[2], 10);
accountIDHashBucket = lastDigit as AvatarRange;
} else {
diff --git a/src/libs/actions/App.ts b/src/libs/actions/App.ts
index 3a2241bd5494..768dc530cc51 100644
--- a/src/libs/actions/App.ts
+++ b/src/libs/actions/App.ts
@@ -398,7 +398,7 @@ function setUpPoliciesAndNavigate(session: OnyxEntry) {
return;
}
if (!isLoggingInAsNewUser && exitTo) {
- Navigation.isNavigationReady()
+ Navigation.waitForProtectedRoutes()
.then(() => {
// We must call goBack() to remove the /transition route from history
Navigation.goBack(ROUTES.HOME);
diff --git a/src/libs/actions/IOU.js b/src/libs/actions/IOU.js
index ac604019354b..49b6a3b445e1 100644
--- a/src/libs/actions/IOU.js
+++ b/src/libs/actions/IOU.js
@@ -945,6 +945,7 @@ function getUpdateMoneyRequestParams(transactionID, transactionThreadReportID, t
const transaction = allTransactions[`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`];
const iouReport = allReports[`${ONYXKEYS.COLLECTION.REPORT}${transactionThread.parentReportID}`];
const isFromExpenseReport = ReportUtils.isExpenseReport(iouReport);
+ const isScanning = TransactionUtils.hasReceipt(transaction) && TransactionUtils.isReceiptBeingScanned(transaction);
const updatedTransaction = TransactionUtils.getUpdatedTransaction(transaction, transactionChanges, isFromExpenseReport);
const transactionDetails = ReportUtils.getTransactionDetails(updatedTransaction);
@@ -1030,6 +1031,30 @@ function getUpdateMoneyRequestParams(transactionID, transactionThreadReportID, t
},
});
+ if (isScanning && (_.has(transactionChanges, 'amount') || _.has(transactionChanges, 'currency'))) {
+ optimisticData.push(
+ ...[
+ {
+ onyxMethod: Onyx.METHOD.MERGE,
+ key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${iouReport.reportID}`,
+ value: {
+ [transactionThread.parentReportActionID]: {
+ whisperedToAccountIDs: [],
+ },
+ },
+ },
+ {
+ onyxMethod: Onyx.METHOD.MERGE,
+ key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${iouReport.parentReportID}`,
+ value: {
+ [iouReport.parentReportActionID]: {
+ whisperedToAccountIDs: [],
+ },
+ },
+ },
+ ],
+ );
+ }
// Update recently used categories if the category is changed
if (_.has(transactionChanges, 'category')) {
const optimisticPolicyRecentlyUsedCategories = Policy.buildOptimisticPolicyRecentlyUsedCategories(iouReport.policyID, transactionChanges.category);
@@ -1158,6 +1183,21 @@ function updateMoneyRequestTag(transactionID, transactionThreadReportID, tag) {
API.write('UpdateMoneyRequestTag', params, onyxData);
}
+/**
+ * Updates the description of a money request
+ *
+ * @param {String} transactionID
+ * @param {Number} transactionThreadReportID
+ * @param {String} comment
+ */
+function updateMoneyRequestDescription(transactionID, transactionThreadReportID, comment) {
+ const transactionChanges = {
+ comment,
+ };
+ const {params, onyxData} = getUpdateMoneyRequestParams(transactionID, transactionThreadReportID, transactionChanges, true);
+ API.write('UpdateMoneyRequestDescription', params, onyxData);
+}
+
/**
* Edits an existing distance request
*
@@ -3016,7 +3056,7 @@ function getPayMoneyRequestParams(chatReport, iouReport, recipient, paymentMetho
lastMessageText: optimisticIOUReportAction.message[0].text,
lastMessageHtml: optimisticIOUReportAction.message[0].html,
hasOutstandingChildRequest: false,
- statusNum: CONST.REPORT.STATUS.REIMBURSED,
+ statusNum: CONST.REPORT.STATUS_NUM.REIMBURSED,
},
},
{
@@ -3048,6 +3088,16 @@ function getPayMoneyRequestParams(chatReport, iouReport, recipient, paymentMetho
},
},
},
+ {
+ onyxMethod: Onyx.METHOD.MERGE,
+ key: `${ONYXKEYS.COLLECTION.REPORT}${iouReport.reportID}`,
+ value: iouReport,
+ },
+ {
+ onyxMethod: Onyx.METHOD.MERGE,
+ key: `${ONYXKEYS.COLLECTION.REPORT}${chatReport.reportID}`,
+ value: chatReport,
+ },
];
if (!_.isNull(currentNextStep)) {
@@ -3154,8 +3204,8 @@ function approveMoneyRequest(expenseReport) {
...expenseReport,
lastMessageText: optimisticApprovedReportAction.message[0].text,
lastMessageHtml: optimisticApprovedReportAction.message[0].html,
- stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
- statusNum: CONST.REPORT.STATUS.APPROVED,
+ stateNum: CONST.REPORT.STATE_NUM.APPROVED,
+ statusNum: CONST.REPORT.STATUS_NUM.APPROVED,
},
};
const optimisticData = [optimisticIOUReportData, optimisticReportActionsData];
@@ -3228,9 +3278,8 @@ function submitReport(expenseReport) {
...expenseReport,
lastMessageText: lodashGet(optimisticSubmittedReportAction, 'message.0.text', ''),
lastMessageHtml: lodashGet(optimisticSubmittedReportAction, 'message.0.html', ''),
- state: CONST.REPORT.STATE.SUBMITTED,
- stateNum: CONST.REPORT.STATE_NUM.PROCESSING,
- statusNum: CONST.REPORT.STATUS.SUBMITTED,
+ stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.SUBMITTED,
},
},
...(parentReport.reportID
@@ -3276,7 +3325,7 @@ function submitReport(expenseReport) {
onyxMethod: Onyx.METHOD.MERGE,
key: `${ONYXKEYS.COLLECTION.REPORT}${expenseReport.reportID}`,
value: {
- statusNum: CONST.REPORT.STATUS.OPEN,
+ statusNum: CONST.REPORT.STATUS_NUM.OPEN,
stateNum: CONST.REPORT.STATE_NUM.OPEN,
},
},
@@ -3318,6 +3367,108 @@ function submitReport(expenseReport) {
);
}
+/**
+ * @param {Object} expenseReport
+ * @param {Object} chatReport
+ */
+function cancelPayment(expenseReport, chatReport) {
+ const optimisticReportAction = ReportUtils.buildOptimisticCancelPaymentReportAction(expenseReport.reportID);
+ const policy = ReportUtils.getPolicy(chatReport.policyID);
+ const isFree = policy && policy.type === CONST.POLICY.TYPE.FREE;
+ const optimisticData = [
+ {
+ onyxMethod: Onyx.METHOD.MERGE,
+ key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${expenseReport.reportID}`,
+ value: {
+ [optimisticReportAction.reportActionID]: {
+ ...optimisticReportAction,
+ pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD,
+ },
+ },
+ },
+ {
+ onyxMethod: Onyx.METHOD.MERGE,
+ key: `${ONYXKEYS.COLLECTION.REPORT}${expenseReport.reportID}`,
+ value: {
+ ...expenseReport,
+ lastMessageText: lodashGet(optimisticReportAction, 'message.0.text', ''),
+ lastMessageHtml: lodashGet(optimisticReportAction, 'message.0.html', ''),
+ stateNum: isFree ? CONST.REPORT.STATE_NUM.SUBMITTED : CONST.REPORT.STATE_NUM.OPEN,
+ statusNum: isFree ? CONST.REPORT.STATUS_NUM.SUBMITTED : CONST.REPORT.STATUS_NUM.OPEN,
+ },
+ },
+ ...(chatReport.reportID
+ ? [
+ {
+ onyxMethod: Onyx.METHOD.MERGE,
+ key: `${ONYXKEYS.COLLECTION.REPORT}${chatReport.reportID}`,
+ value: {
+ ...chatReport,
+ hasOutstandingIOU: true,
+ hasOutstandingChildRequest: true,
+ iouReportID: expenseReport.reportID,
+ },
+ },
+ ]
+ : []),
+ ];
+
+ const successData = [
+ {
+ onyxMethod: Onyx.METHOD.MERGE,
+ key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${expenseReport.reportID}`,
+ value: {
+ [optimisticReportAction.reportActionID]: {
+ pendingAction: null,
+ },
+ },
+ },
+ ];
+
+ const failureData = [
+ {
+ onyxMethod: Onyx.METHOD.MERGE,
+ key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${expenseReport.reportID}`,
+ value: {
+ [expenseReport.reportActionID]: {
+ errors: ErrorUtils.getMicroSecondOnyxError('iou.error.other'),
+ },
+ },
+ },
+ {
+ onyxMethod: Onyx.METHOD.MERGE,
+ key: `${ONYXKEYS.COLLECTION.REPORT}${expenseReport.reportID}`,
+ value: {
+ statusNum: CONST.REPORT.STATUS_NUM.REIMBURSED,
+ },
+ },
+ ...(chatReport.reportID
+ ? [
+ {
+ onyxMethod: Onyx.METHOD.MERGE,
+ key: `${ONYXKEYS.COLLECTION.REPORT}${chatReport.reportID}`,
+ value: {
+ hasOutstandingIOU: false,
+ hasOutstandingChildRequest: false,
+ iouReportID: 0,
+ },
+ },
+ ]
+ : []),
+ ];
+
+ API.write(
+ 'CancelPayment',
+ {
+ iouReportID: expenseReport.reportID,
+ chatReportID: chatReport.reportID,
+ managerAccountID: expenseReport.managerID,
+ reportActionID: optimisticReportAction.reportActionID,
+ },
+ {optimisticData, successData, failureData},
+ );
+}
+
/**
* @param {String} paymentType
* @param {Object} chatReport
@@ -3643,8 +3794,10 @@ export {
updateMoneyRequestMerchant,
updateMoneyRequestTag,
updateMoneyRequestAmountAndCurrency,
+ updateMoneyRequestDescription,
replaceReceipt,
detachReceipt,
getIOUReportID,
editMoneyRequest,
+ cancelPayment,
};
diff --git a/src/libs/actions/Link.ts b/src/libs/actions/Link.ts
index 2fb863467e32..186c9beed970 100644
--- a/src/libs/actions/Link.ts
+++ b/src/libs/actions/Link.ts
@@ -65,7 +65,7 @@ function openOldDotLink(url: string) {
function getInternalNewExpensifyPath(href: string) {
const attrPath = Url.getPathFromURL(href);
return (Url.hasSameExpensifyOrigin(href, CONST.NEW_EXPENSIFY_URL) || Url.hasSameExpensifyOrigin(href, CONST.STAGING_NEW_EXPENSIFY_URL) || href.startsWith(CONST.DEV_NEW_EXPENSIFY_URL)) &&
- !CONST.PATHS_TO_TREAT_AS_EXTERNAL.find((path) => path === attrPath)
+ !CONST.PATHS_TO_TREAT_AS_EXTERNAL.find((path) => attrPath.startsWith(path))
? attrPath
: '';
}
diff --git a/src/libs/actions/Policy.js b/src/libs/actions/Policy.js
index a21b795fa89a..25c8cf5ade80 100644
--- a/src/libs/actions/Policy.js
+++ b/src/libs/actions/Policy.js
@@ -173,8 +173,8 @@ function deleteWorkspace(policyID, reports, policyName) {
onyxMethod: Onyx.METHOD.MERGE,
key: `${ONYXKEYS.COLLECTION.REPORT}${reportID}`,
value: {
- stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
- statusNum: CONST.REPORT.STATUS.CLOSED,
+ stateNum: CONST.REPORT.STATE_NUM.APPROVED,
+ statusNum: CONST.REPORT.STATUS_NUM.CLOSED,
hasDraft: false,
oldPolicyName: allPolicies[`${ONYXKEYS.COLLECTION.POLICY}${policyID}`].name,
},
@@ -368,8 +368,8 @@ function removeMembers(accountIDs, policyID) {
onyxMethod: Onyx.METHOD.MERGE,
key: `${ONYXKEYS.COLLECTION.REPORT}${report.reportID}`,
value: {
- statusNum: CONST.REPORT.STATUS.CLOSED,
- stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.CLOSED,
+ stateNum: CONST.REPORT.STATE_NUM.APPROVED,
oldPolicyName: policy.name,
hasDraft: false,
},
@@ -475,7 +475,7 @@ function createPolicyExpenseChats(policyID, invitedEmailsToAccountIDs, hasOutsta
key: `${ONYXKEYS.COLLECTION.REPORT}${oldChat.reportID}`,
value: {
stateNum: CONST.REPORT.STATE_NUM.OPEN,
- statusNum: CONST.REPORT.STATUS.OPEN,
+ statusNum: CONST.REPORT.STATUS_NUM.OPEN,
},
});
return;
diff --git a/src/libs/actions/Report.ts b/src/libs/actions/Report.ts
index 19f6fa3f36b4..9067e5592937 100644
--- a/src/libs/actions/Report.ts
+++ b/src/libs/actions/Report.ts
@@ -341,6 +341,7 @@ function addActions(reportID: string, text = '', file?: File) {
reportComment?: string;
file?: File;
timezone?: string;
+ shouldAllowActionableMentionWhispers?: boolean;
clientCreatedTime?: string;
};
@@ -350,6 +351,7 @@ function addActions(reportID: string, text = '', file?: File) {
commentReportActionID: file && reportCommentAction ? reportCommentAction.reportActionID : null,
reportComment: reportCommentText,
file,
+ shouldAllowActionableMentionWhispers: true,
clientCreatedTime: file ? attachmentAction?.created : reportCommentAction?.created,
};
@@ -739,7 +741,7 @@ function navigateToAndOpenChildReport(childReportID = '0', parentReportAction: P
'',
undefined,
undefined,
- CONST.REPORT.NOTIFICATION_PREFERENCE.HIDDEN,
+ ReportUtils.getChildReportNotificationPreference(parentReportAction),
parentReportAction.reportActionID,
parentReportID,
);
@@ -2093,8 +2095,8 @@ function leaveRoom(reportID: string, isWorkspaceMemberLeavingWorkspaceRoom = fal
}
: {
reportID: null,
- stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
- statusNum: CONST.REPORT.STATUS.CLOSED,
+ stateNum: CONST.REPORT.STATE_NUM.APPROVED,
+ statusNum: CONST.REPORT.STATUS_NUM.CLOSED,
notificationPreference: CONST.REPORT.NOTIFICATION_PREFERENCE.HIDDEN,
},
},
@@ -2585,6 +2587,60 @@ function clearNewRoomFormError() {
});
}
+function resolveActionableMentionWhisper(reportId: string, reportAction: OnyxEntry, resolution: ValueOf) {
+ const message = reportAction?.message?.[0];
+ if (!message) {
+ return;
+ }
+
+ const updatedMessage: Message = {
+ ...message,
+ resolution,
+ };
+
+ const optimisticData: OnyxUpdate[] = [
+ {
+ onyxMethod: Onyx.METHOD.MERGE,
+ key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${reportId}`,
+ value: {
+ [reportAction.reportActionID]: {
+ message: [updatedMessage],
+ originalMessage: {
+ resolution,
+ },
+ },
+ },
+ },
+ ];
+
+ const failureData: OnyxUpdate[] = [
+ {
+ onyxMethod: Onyx.METHOD.MERGE,
+ key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${reportId}`,
+ value: {
+ [reportAction.reportActionID]: {
+ message: [message],
+ originalMessage: {
+ resolution: null,
+ },
+ },
+ },
+ },
+ ];
+
+ type ResolveActionableMentionWhisperParams = {
+ reportActionID: string;
+ resolution: ValueOf;
+ };
+
+ const parameters: ResolveActionableMentionWhisperParams = {
+ reportActionID: reportAction.reportActionID,
+ resolution,
+ };
+
+ API.write('ResolveActionableMentionWhisper', parameters, {optimisticData, failureData});
+}
+
export {
searchInServer,
addComment,
@@ -2649,4 +2705,5 @@ export {
getDraftPrivateNote,
updateLastVisitTime,
clearNewRoomFormError,
+ resolveActionableMentionWhisper,
};
diff --git a/src/libs/actions/Task.js b/src/libs/actions/Task.js
index e46c9fc380cd..a135c2c8fa94 100644
--- a/src/libs/actions/Task.js
+++ b/src/libs/actions/Task.js
@@ -246,8 +246,8 @@ function completeTask(taskReport) {
onyxMethod: Onyx.METHOD.MERGE,
key: `${ONYXKEYS.COLLECTION.REPORT}${taskReportID}`,
value: {
- stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
- statusNum: CONST.REPORT.STATUS.APPROVED,
+ stateNum: CONST.REPORT.STATE_NUM.APPROVED,
+ statusNum: CONST.REPORT.STATUS_NUM.APPROVED,
},
},
@@ -275,7 +275,7 @@ function completeTask(taskReport) {
key: `${ONYXKEYS.COLLECTION.REPORT}${taskReportID}`,
value: {
stateNum: CONST.REPORT.STATE_NUM.OPEN,
- statusNum: CONST.REPORT.STATUS.OPEN,
+ statusNum: CONST.REPORT.STATUS_NUM.OPEN,
},
},
{
@@ -314,7 +314,7 @@ function reopenTask(taskReport) {
key: `${ONYXKEYS.COLLECTION.REPORT}${taskReportID}`,
value: {
stateNum: CONST.REPORT.STATE_NUM.OPEN,
- statusNum: CONST.REPORT.STATUS.OPEN,
+ statusNum: CONST.REPORT.STATUS_NUM.OPEN,
lastVisibleActionCreated: reopenedTaskReportAction.created,
lastMessageText: message,
lastActorAccountID: reopenedTaskReportAction.actorAccountID,
@@ -344,8 +344,8 @@ function reopenTask(taskReport) {
onyxMethod: Onyx.METHOD.MERGE,
key: `${ONYXKEYS.COLLECTION.REPORT}${taskReportID}`,
value: {
- stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
- statusNum: CONST.REPORT.STATUS.APPROVED,
+ stateNum: CONST.REPORT.STATE_NUM.APPROVED,
+ statusNum: CONST.REPORT.STATUS_NUM.APPROVED,
},
},
{
diff --git a/src/libs/actions/Transaction.ts b/src/libs/actions/Transaction.ts
index 674d0c000656..430de0557674 100644
--- a/src/libs/actions/Transaction.ts
+++ b/src/libs/actions/Transaction.ts
@@ -58,7 +58,7 @@ function addStop(transactionID: string) {
}
function saveWaypoint(transactionID: string, index: string, waypoint: RecentWaypoint | null, isDraft = false) {
- Onyx.merge(`${isDraft ? ONYXKEYS.COLLECTION.TRANSACTION : ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID}`, {
+ Onyx.merge(`${isDraft ? ONYXKEYS.COLLECTION.TRANSACTION_DRAFT : ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`, {
comment: {
waypoints: {
[`waypoint${index}`]: waypoint,
diff --git a/src/libs/actions/Welcome.ts b/src/libs/actions/Welcome.ts
index 5046449c7389..3e3cba49480d 100644
--- a/src/libs/actions/Welcome.ts
+++ b/src/libs/actions/Welcome.ts
@@ -132,7 +132,7 @@ function show({routes, showCreateMenu = () => {}, showPopoverMenu = () => false}
const workspaceChatReport = Object.values(allReports ?? {}).find((report) => {
if (report) {
- return ReportUtils.isPolicyExpenseChat(report) && report.ownerAccountID === currentUserAccountID && report.statusNum !== CONST.REPORT.STATUS.CLOSED;
+ return ReportUtils.isPolicyExpenseChat(report) && report.ownerAccountID === currentUserAccountID && report.statusNum !== CONST.REPORT.STATUS_NUM.CLOSED;
}
return false;
});
diff --git a/src/libs/getIsSmallScreenWidth.ts b/src/libs/getIsSmallScreenWidth.ts
deleted file mode 100644
index 6fba45ea1319..000000000000
--- a/src/libs/getIsSmallScreenWidth.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import {Dimensions} from 'react-native';
-import variables from '@styles/variables';
-
-export default function getIsSmallScreenWidth(windowWidth = Dimensions.get('window').width) {
- return windowWidth <= variables.mobileResponsiveWidthBreakpoint;
-}
diff --git a/src/pages/EditRequestPage.js b/src/pages/EditRequestPage.js
index fe43d96001a0..606d3da1ddb9 100644
--- a/src/pages/EditRequestPage.js
+++ b/src/pages/EditRequestPage.js
@@ -176,18 +176,22 @@ function EditRequestPage({report, route, policyCategories, policyTags, parentRep
[transactionTag, transaction.transactionID, report.reportID],
);
+ const saveComment = useCallback(
+ ({comment: newComment}) => {
+ // Only update comment if it has changed
+ if (newComment.trim() !== transactionDescription) {
+ IOU.updateMoneyRequestDescription(transaction.transactionID, report.reportID, newComment.trim());
+ }
+ Navigation.dismissModal();
+ },
+ [transactionDescription, transaction.transactionID, report.reportID],
+ );
+
if (fieldToEdit === CONST.EDIT_REQUEST_FIELD.DESCRIPTION) {
return (
{
- // In case the comment hasn't been changed, do not make the API request.
- if (transactionChanges.comment.trim() === transactionDescription) {
- Navigation.dismissModal();
- return;
- }
- editMoneyRequest({comment: transactionChanges.comment.trim()});
- }}
+ onSubmit={saveComment}
/>
);
}
diff --git a/src/pages/ErrorPage/ErrorBodyText/index.js b/src/pages/ErrorPage/ErrorBodyText/index.tsx
similarity index 54%
rename from src/pages/ErrorPage/ErrorBodyText/index.js
rename to src/pages/ErrorPage/ErrorBodyText/index.tsx
index 47b765f8f5e8..e675e0447361 100644
--- a/src/pages/ErrorPage/ErrorBodyText/index.js
+++ b/src/pages/ErrorPage/ErrorBodyText/index.tsx
@@ -1,29 +1,27 @@
import React from 'react';
import Text from '@components/Text';
import TextLink from '@components/TextLink';
-import withLocalize, {withLocalizePropTypes} from '@components/withLocalize';
+import useLocalize from '@hooks/useLocalize';
import useThemeStyles from '@hooks/useThemeStyles';
import CONST from '@src/CONST';
-const propTypes = {
- ...withLocalizePropTypes,
-};
-
-function ErrorBodyText(props) {
+function ErrorBodyText() {
const styles = useThemeStyles();
+ const {translate} = useLocalize();
+
return (
- {`${props.translate('genericErrorPage.body.helpTextMobile')} `}
+ {`${translate('genericErrorPage.body.helpTextMobile')} `}
- {props.translate('genericErrorPage.body.helpTextWeb')}
+ {translate('genericErrorPage.body.helpTextWeb')}
);
}
ErrorBodyText.displayName = 'ErrorBodyText';
-ErrorBodyText.propTypes = propTypes;
-export default withLocalize(ErrorBodyText);
+
+export default ErrorBodyText;
diff --git a/src/pages/ErrorPage/ErrorBodyText/index.website.js b/src/pages/ErrorPage/ErrorBodyText/index.website.tsx
similarity index 100%
rename from src/pages/ErrorPage/ErrorBodyText/index.website.js
rename to src/pages/ErrorPage/ErrorBodyText/index.website.tsx
diff --git a/src/pages/ErrorPage/GenericErrorPage.js b/src/pages/ErrorPage/GenericErrorPage.tsx
similarity index 91%
rename from src/pages/ErrorPage/GenericErrorPage.js
rename to src/pages/ErrorPage/GenericErrorPage.tsx
index 56fb5b970084..f4f1d91418c7 100644
--- a/src/pages/ErrorPage/GenericErrorPage.js
+++ b/src/pages/ErrorPage/GenericErrorPage.tsx
@@ -9,7 +9,7 @@ import ImageSVG from '@components/ImageSVG';
import SafeAreaConsumer from '@components/SafeAreaConsumer';
import Text from '@components/Text';
import TextLink from '@components/TextLink';
-import withLocalize, {withLocalizePropTypes} from '@components/withLocalize';
+import useLocalize from '@hooks/useLocalize';
import useStyleUtils from '@hooks/useStyleUtils';
import useTheme from '@hooks/useTheme';
import useThemeStyles from '@hooks/useThemeStyles';
@@ -18,20 +18,18 @@ import * as Session from '@userActions/Session';
import CONST from '@src/CONST';
import ErrorBodyText from './ErrorBodyText';
-const propTypes = {
- ...withLocalizePropTypes,
-};
-
-function GenericErrorPage({translate}) {
+function GenericErrorPage() {
const theme = useTheme();
const styles = useThemeStyles();
const StyleUtils = useStyleUtils();
+ const {translate} = useLocalize();
+
const {resetBoundary} = useErrorBoundary();
return (
{({paddingBottom}) => (
-
+
@@ -78,7 +76,7 @@ function GenericErrorPage({translate}) {
-
+
void;
};
// eslint-disable-next-line rulesdir/no-negated-variables
-function NotFoundPage(props) {
+function NotFoundPage({onBackButtonPress}: NotFoundPageProps) {
return (
);
}
NotFoundPage.displayName = 'NotFoundPage';
-NotFoundPage.propTypes = propTypes;
-NotFoundPage.defaultProps = defaultProps;
export default NotFoundPage;
diff --git a/src/pages/LogInWithShortLivedAuthTokenPage.js b/src/pages/LogInWithShortLivedAuthTokenPage.tsx
similarity index 65%
rename from src/pages/LogInWithShortLivedAuthTokenPage.js
rename to src/pages/LogInWithShortLivedAuthTokenPage.tsx
index 1fe9b67eef16..c5f8a9c20d5b 100644
--- a/src/pages/LogInWithShortLivedAuthTokenPage.js
+++ b/src/pages/LogInWithShortLivedAuthTokenPage.tsx
@@ -1,7 +1,7 @@
-import lodashGet from 'lodash/get';
-import PropTypes from 'prop-types';
+import type {StackScreenProps} from '@react-navigation/stack';
import React, {useEffect} from 'react';
import {View} from 'react-native';
+import type {OnyxEntry} from 'react-native-onyx';
import {withOnyx} from 'react-native-onyx';
import FullScreenLoadingIndicator from '@components/FullscreenLoadingIndicator';
import Icon from '@components/Icon';
@@ -13,62 +13,40 @@ import useLocalize from '@hooks/useLocalize';
import useTheme from '@hooks/useTheme';
import useThemeStyles from '@hooks/useThemeStyles';
import Navigation from '@libs/Navigation/Navigation';
+import type {PublicScreensParamList} from '@libs/Navigation/types';
import * as Session from '@userActions/Session';
import ONYXKEYS from '@src/ONYXKEYS';
+import type SCREENS from '@src/SCREENS';
+import type {Account} from '@src/types/onyx';
-const propTypes = {
- /** The parameters needed to authenticate with a short-lived token are in the URL */
- route: PropTypes.shape({
- /** Each parameter passed via the URL */
- params: PropTypes.shape({
- /** Short-lived authToken to sign in a user */
- shortLivedAuthToken: PropTypes.string,
-
- /** Short-lived authToken to sign in as a user, if they are coming from the old mobile app */
- shortLivedToken: PropTypes.string,
-
- /** The email of the transitioning user */
- email: PropTypes.string,
- }),
- }).isRequired,
-
+type LogInWithShortLivedAuthTokenPageOnyxProps = {
/** The details about the account that the user is signing in with */
- account: PropTypes.shape({
- /** Whether a sign is loading */
- isLoading: PropTypes.bool,
- }),
+ account: OnyxEntry;
};
-const defaultProps = {
- account: {
- isLoading: false,
- },
-};
+type LogInWithShortLivedAuthTokenPageProps = LogInWithShortLivedAuthTokenPageOnyxProps & StackScreenProps;
-function LogInWithShortLivedAuthTokenPage(props) {
+function LogInWithShortLivedAuthTokenPage({route, account}: LogInWithShortLivedAuthTokenPageProps) {
const theme = useTheme();
const styles = useThemeStyles();
const {translate} = useLocalize();
+ const {email = '', shortLivedAuthToken = '', shortLivedToken = '', exitTo, error} = route?.params ?? {};
useEffect(() => {
- const email = lodashGet(props, 'route.params.email', '');
-
// We have to check for both shortLivedAuthToken and shortLivedToken, as the old mobile app uses shortLivedToken, and is not being actively updated.
- const shortLivedAuthToken = lodashGet(props, 'route.params.shortLivedAuthToken', '') || lodashGet(props, 'route.params.shortLivedToken', '');
+ const token = shortLivedAuthToken || shortLivedToken;
// Try to authenticate using the shortLivedToken if we're not already trying to load the accounts
- if (shortLivedAuthToken && !props.account.isLoading) {
- Session.signInWithShortLivedAuthToken(email, shortLivedAuthToken);
+ if (token && !account?.isLoading) {
+ Session.signInWithShortLivedAuthToken(email, token);
return;
}
// If an error is returned as part of the route, ensure we set it in the onyxData for the account
- const error = lodashGet(props, 'route.params.error', '');
if (error) {
Session.setAccountError(error);
}
- const exitTo = lodashGet(props, 'route.params.exitTo', '');
if (exitTo) {
Navigation.isNavigationReady().then(() => {
Navigation.navigate(exitTo);
@@ -76,9 +54,9 @@ function LogInWithShortLivedAuthTokenPage(props) {
}
// The only dependencies of the effect are based on props.route
// eslint-disable-next-line react-hooks/exhaustive-deps
- }, [props.route]);
+ }, [route]);
- if (props.account.isLoading) {
+ if (account?.isLoading) {
return ;
}
@@ -94,7 +72,7 @@ function LogInWithShortLivedAuthTokenPage(props) {
{translate('deeplinkWrapper.launching')}
-
+
{translate('deeplinkWrapper.expired')}{' '}
{
@@ -119,10 +97,8 @@ function LogInWithShortLivedAuthTokenPage(props) {
);
}
-LogInWithShortLivedAuthTokenPage.propTypes = propTypes;
-LogInWithShortLivedAuthTokenPage.defaultProps = defaultProps;
LogInWithShortLivedAuthTokenPage.displayName = 'LogInWithShortLivedAuthTokenPage';
-export default withOnyx({
+export default withOnyx({
account: {key: ONYXKEYS.ACCOUNT},
})(LogInWithShortLivedAuthTokenPage);
diff --git a/src/pages/LogOutPreviousUserPage.js b/src/pages/LogOutPreviousUserPage.js
index 9609f3f9bd56..5c8a39204467 100644
--- a/src/pages/LogOutPreviousUserPage.js
+++ b/src/pages/LogOutPreviousUserPage.js
@@ -5,10 +5,8 @@ import {Linking} from 'react-native';
import {withOnyx} from 'react-native-onyx';
import FullScreenLoadingIndicator from '@components/FullscreenLoadingIndicator';
import * as SessionUtils from '@libs/SessionUtils';
-import Navigation from '@navigation/Navigation';
import * as Session from '@userActions/Session';
import ONYXKEYS from '@src/ONYXKEYS';
-import ROUTES from '@src/ROUTES';
const propTypes = {
/** The details about the account that the user is signing in with */
@@ -33,6 +31,10 @@ const defaultProps = {
},
};
+// This page is responsible for handling transitions from OldDot. Specifically, it logs the current user
+// out if the transition is for another user.
+//
+// This component should not do any other navigation as that handled in App.setUpPoliciesAndNavigate
function LogOutPreviousUserPage(props) {
useEffect(() => {
Linking.getInitialURL().then((transitionURL) => {
@@ -53,18 +55,11 @@ function LogOutPreviousUserPage(props) {
const shortLivedAuthToken = lodashGet(props, 'route.params.shortLivedAuthToken', '');
Session.signInWithShortLivedAuthToken(email, shortLivedAuthToken);
}
-
- const exitTo = lodashGet(props, 'route.params.exitTo', '');
- // We don't want to navigate to the exitTo route when creating a new workspace from a deep link,
- // because we already handle creating the optimistic policy and navigating to it in App.setUpPoliciesAndNavigate,
- // which is already called when AuthScreens mounts.
- if (exitTo && exitTo !== ROUTES.WORKSPACE_NEW && !props.account.isLoading && !isLoggingInAsNewUser) {
- Navigation.isNavigationReady().then(() => {
- Navigation.navigate(exitTo);
- });
- }
});
- }, [props]);
+
+ // We only want to run this effect once on mount (when the page first loads after transitioning from OldDot)
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, []);
return ;
}
diff --git a/src/pages/NewChatPage.js b/src/pages/NewChatPage.js
index 3a58727eddb7..b90ce6bbc247 100755
--- a/src/pages/NewChatPage.js
+++ b/src/pages/NewChatPage.js
@@ -1,6 +1,6 @@
import PropTypes from 'prop-types';
import React, {useCallback, useEffect, useMemo, useState} from 'react';
-import {InteractionManager, View} from 'react-native';
+import {View} from 'react-native';
import {withOnyx} from 'react-native-onyx';
import _ from 'underscore';
import KeyboardAvoidingView from '@components/KeyboardAvoidingView';
@@ -15,6 +15,7 @@ import useThemeStyles from '@hooks/useThemeStyles';
import useWindowDimensions from '@hooks/useWindowDimensions';
import compose from '@libs/compose';
import * as DeviceCapabilities from '@libs/DeviceCapabilities';
+import doInteractionTask from '@libs/DoInteractionTask';
import * as OptionsListUtils from '@libs/OptionsListUtils';
import * as ReportUtils from '@libs/ReportUtils';
import variables from '@styles/variables';
@@ -209,11 +210,16 @@ function NewChatPage({betas, isGroupChat, personalDetails, reports, translate, i
}, [reports, personalDetails, searchTerm]);
useEffect(() => {
- const interactionTask = InteractionManager.runAfterInteractions(() => {
+ const interactionTask = doInteractionTask(() => {
setDidScreenTransitionEnd(true);
});
- return interactionTask.cancel;
+ return () => {
+ if (!interactionTask) {
+ return;
+ }
+ interactionTask.cancel();
+ };
}, []);
useEffect(() => {
diff --git a/src/pages/SearchPage/SearchPageFooter.tsx b/src/pages/SearchPage/SearchPageFooter.tsx
index 69429962869b..e0ef67ad9ec3 100644
--- a/src/pages/SearchPage/SearchPageFooter.tsx
+++ b/src/pages/SearchPage/SearchPageFooter.tsx
@@ -1,55 +1,15 @@
import React from 'react';
import {View} from 'react-native';
-import Icon from '@components/Icon';
-import {Info} from '@components/Icon/Expensicons';
-import {PressableWithoutFeedback} from '@components/Pressable';
-import Text from '@components/Text';
-import useLocalize from '@hooks/useLocalize';
-import useTheme from '@hooks/useTheme';
+import ReferralProgramCTA from '@components/ReferralProgramCTA';
import useThemeStyles from '@hooks/useThemeStyles';
-import Navigation from '@libs/Navigation/Navigation';
import CONST from '@src/CONST';
-import ROUTES from '@src/ROUTES';
function SearchPageFooter() {
const themeStyles = useThemeStyles();
- const theme = useTheme();
- const {translate} = useLocalize();
return (
- {
- Navigation.navigate(ROUTES.REFERRAL_DETAILS_MODAL.getRoute(CONST.REFERRAL_PROGRAM.CONTENT_TYPES.REFER_FRIEND));
- }}
- style={[
- themeStyles.p5,
- themeStyles.w100,
- themeStyles.br2,
- themeStyles.highlightBG,
- themeStyles.flexRow,
- themeStyles.justifyContentBetween,
- themeStyles.alignItemsCenter,
- {gap: 10},
- ]}
- accessibilityLabel="referral"
- role={CONST.ACCESSIBILITY_ROLE.BUTTON}
- >
-
- {translate(`referralProgram.${CONST.REFERRAL_PROGRAM.CONTENT_TYPES.REFER_FRIEND}.buttonText1`)}
-
- {translate(`referralProgram.${CONST.REFERRAL_PROGRAM.CONTENT_TYPES.REFER_FRIEND}.buttonText2`)}
-
-
-
-
+
);
}
diff --git a/src/pages/home/HeaderView.js b/src/pages/home/HeaderView.js
index edf6b65b2f4a..9b2765718250 100644
--- a/src/pages/home/HeaderView.js
+++ b/src/pages/home/HeaderView.js
@@ -109,9 +109,7 @@ function HeaderView(props) {
const isAutomatedExpensifyAccount = ReportUtils.hasSingleParticipant(props.report) && ReportUtils.hasAutomatedExpensifyAccountIDs(participants);
const parentReportAction = ReportActionsUtils.getParentReportAction(props.report);
const isCanceledTaskReport = ReportUtils.isCanceledTaskReport(props.report, parentReportAction);
- const lastVisibleMessage = ReportActionsUtils.getLastVisibleMessage(props.report.reportID);
const isWhisperAction = ReportActionsUtils.isWhisperAction(parentReportAction);
- const isEmptyChat = !props.report.lastMessageText && !props.report.lastMessageTranslationKey && !lastVisibleMessage.lastMessageText && !lastVisibleMessage.lastMessageTranslationKey;
const isUserCreatedPolicyRoom = ReportUtils.isUserCreatedPolicyRoom(props.report);
const isPolicyMember = useMemo(() => !_.isEmpty(props.policy), [props.policy]);
const canLeaveRoom = ReportUtils.canLeaveRoom(props.report, isPolicyMember);
@@ -133,7 +131,7 @@ function HeaderView(props) {
}
// Task is not closed
- if (props.report.stateNum !== CONST.REPORT.STATE_NUM.SUBMITTED && props.report.statusNum !== CONST.REPORT.STATUS.CLOSED && canModifyTask) {
+ if (props.report.stateNum !== CONST.REPORT.STATE_NUM.APPROVED && props.report.statusNum !== CONST.REPORT.STATUS_NUM.CLOSED && canModifyTask) {
threeDotMenuItems.push({
icon: Expensicons.Trashcan,
text: translate('common.delete'),
@@ -153,7 +151,7 @@ function HeaderView(props) {
),
);
- const canJoinOrLeave = (isChatThread && !isEmptyChat) || isUserCreatedPolicyRoom || canLeaveRoom;
+ const canJoinOrLeave = isChatThread || isUserCreatedPolicyRoom || canLeaveRoom;
const canJoin = canJoinOrLeave && !isWhisperAction && props.report.notificationPreference === CONST.REPORT.NOTIFICATION_PREFERENCE.HIDDEN;
const canLeave = canJoinOrLeave && ((isChatThread && props.report.notificationPreference.length) || isUserCreatedPolicyRoom || canLeaveRoom);
if (canJoin) {
diff --git a/src/pages/home/ReportScreen.js b/src/pages/home/ReportScreen.js
index 64e48ecd5509..b35d9240f3f7 100644
--- a/src/pages/home/ReportScreen.js
+++ b/src/pages/home/ReportScreen.js
@@ -187,7 +187,7 @@ function ReportScreen({
// There are no reportActions at all to display and we are still in the process of loading the next set of actions.
const isLoadingInitialReportActions = _.isEmpty(reportActions) && reportMetadata.isLoadingInitialReportActions;
- const isOptimisticDelete = lodashGet(report, 'statusNum') === CONST.REPORT.STATUS.CLOSED;
+ const isOptimisticDelete = lodashGet(report, 'statusNum') === CONST.REPORT.STATUS_NUM.CLOSED;
const shouldHideReport = !ReportUtils.canAccessReport(report, policies, betas);
const isLoading = !reportID || !isSidebarLoaded || _.isEmpty(personalDetails);
const isSingleTransactionView = ReportUtils.isMoneyRequest(report);
@@ -383,8 +383,8 @@ function ReportScreen({
(prevOnyxReportID &&
prevOnyxReportID === routeReportID &&
!onyxReportID &&
- prevReport.statusNum === CONST.REPORT.STATUS.OPEN &&
- (report.statusNum === CONST.REPORT.STATUS.CLOSED || (!report.statusNum && !prevReport.parentReportID && prevReport.chatType === CONST.REPORT.CHAT_TYPE.POLICY_ROOM))) ||
+ prevReport.statusNum === CONST.REPORT.STATUS_NUM.OPEN &&
+ (report.statusNum === CONST.REPORT.STATUS_NUM.CLOSED || (!report.statusNum && !prevReport.parentReportID && prevReport.chatType === CONST.REPORT.CHAT_TYPE.POLICY_ROOM))) ||
((ReportUtils.isMoneyRequest(prevReport) || ReportUtils.isMoneyRequestReport(prevReport)) && _.isEmpty(report))
) {
Navigation.dismissModal();
diff --git a/src/pages/home/report/ContextMenu/ContextMenuActions.js b/src/pages/home/report/ContextMenu/ContextMenuActions.js
index f22eda58ce7f..aa815b0b32dc 100644
--- a/src/pages/home/report/ContextMenu/ContextMenuActions.js
+++ b/src/pages/home/report/ContextMenu/ContextMenuActions.js
@@ -156,14 +156,10 @@ export default [
successTextTranslateKey: '',
successIcon: null,
shouldShow: (type, reportAction, isArchivedRoom, betas, anchor, isChronosReport, reportID) => {
- let childReportNotificationPreference = lodashGet(reportAction, 'childReportNotificationPreference', '');
- if (!childReportNotificationPreference) {
- const isActionCreator = ReportUtils.isActionCreator(reportAction);
- childReportNotificationPreference = isActionCreator ? CONST.REPORT.NOTIFICATION_PREFERENCE.ALWAYS : CONST.REPORT.NOTIFICATION_PREFERENCE.HIDDEN;
- }
+ const childReportNotificationPreference = ReportUtils.getChildReportNotificationPreference(reportAction);
const isDeletedAction = ReportActionsUtils.isDeletedAction(reportAction);
const shouldDisplayThreadReplies = ReportUtils.shouldDisplayThreadReplies(reportAction, reportID);
- const subscribed = childReportNotificationPreference !== 'hidden';
+ const subscribed = childReportNotificationPreference !== CONST.REPORT.NOTIFICATION_PREFERENCE.HIDDEN;
const isCommentAction = reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.ADDCOMMENT && !ReportUtils.isThreadFirstChat(reportAction, reportID);
const isReportPreviewAction = reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.REPORTPREVIEW;
const isIOUAction = reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.IOU && !ReportActionsUtils.isSplitBillAction(reportAction);
@@ -171,11 +167,7 @@ export default [
return !subscribed && !isWhisperAction && (isCommentAction || isReportPreviewAction || isIOUAction) && (!isDeletedAction || shouldDisplayThreadReplies);
},
onPress: (closePopover, {reportAction, reportID}) => {
- let childReportNotificationPreference = lodashGet(reportAction, 'childReportNotificationPreference', '');
- if (!childReportNotificationPreference) {
- const isActionCreator = ReportUtils.isActionCreator(reportAction);
- childReportNotificationPreference = isActionCreator ? CONST.REPORT.NOTIFICATION_PREFERENCE.ALWAYS : CONST.REPORT.NOTIFICATION_PREFERENCE.HIDDEN;
- }
+ const childReportNotificationPreference = ReportUtils.getChildReportNotificationPreference(reportAction);
if (closePopover) {
hideContextMenu(false, () => {
ReportActionComposeFocusManager.focus();
@@ -196,14 +188,10 @@ export default [
successTextTranslateKey: '',
successIcon: null,
shouldShow: (type, reportAction, isArchivedRoom, betas, anchor, isChronosReport, reportID) => {
- let childReportNotificationPreference = lodashGet(reportAction, 'childReportNotificationPreference', '');
- if (!childReportNotificationPreference) {
- const isActionCreator = ReportUtils.isActionCreator(reportAction);
- childReportNotificationPreference = isActionCreator ? CONST.REPORT.NOTIFICATION_PREFERENCE.ALWAYS : CONST.REPORT.NOTIFICATION_PREFERENCE.HIDDEN;
- }
+ const childReportNotificationPreference = ReportUtils.getChildReportNotificationPreference(reportAction);
const isDeletedAction = ReportActionsUtils.isDeletedAction(reportAction);
const shouldDisplayThreadReplies = ReportUtils.shouldDisplayThreadReplies(reportAction, reportID);
- const subscribed = childReportNotificationPreference !== 'hidden';
+ const subscribed = childReportNotificationPreference !== CONST.REPORT.NOTIFICATION_PREFERENCE.HIDDEN;
if (type !== CONST.CONTEXT_MENU_TYPES.REPORT_ACTION) {
return false;
}
@@ -213,11 +201,7 @@ export default [
return subscribed && (isCommentAction || isReportPreviewAction || isIOUAction) && (!isDeletedAction || shouldDisplayThreadReplies);
},
onPress: (closePopover, {reportAction, reportID}) => {
- let childReportNotificationPreference = lodashGet(reportAction, 'childReportNotificationPreference', '');
- if (!childReportNotificationPreference) {
- const isActionCreator = ReportUtils.isActionCreator(reportAction);
- childReportNotificationPreference = isActionCreator ? CONST.REPORT.NOTIFICATION_PREFERENCE.ALWAYS : CONST.REPORT.NOTIFICATION_PREFERENCE.HIDDEN;
- }
+ const childReportNotificationPreference = ReportUtils.getChildReportNotificationPreference(reportAction);
if (closePopover) {
hideContextMenu(false, () => {
ReportActionComposeFocusManager.focus();
@@ -285,6 +269,11 @@ export default [
} else if (ReportActionsUtils.isModifiedExpenseAction(reportAction)) {
const modifyExpenseMessage = ModifiedExpenseMessage.getForReportAction(reportAction);
Clipboard.setString(modifyExpenseMessage);
+ } else if (ReportActionsUtils.isReimbursementDeQueuedAction(reportAction)) {
+ const {expenseReportID} = reportAction.originalMessage;
+ const expenseReport = ReportUtils.getReport(expenseReportID);
+ const displayMessage = ReportUtils.getReimbursementDeQueuedActionMessage(reportAction, expenseReport);
+ Clipboard.setString(displayMessage);
} else if (ReportActionsUtils.isMoneyRequestAction(reportAction)) {
const displayMessage = ReportUtils.getIOUReportActionDisplayMessage(reportAction);
Clipboard.setString(displayMessage);
diff --git a/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions/ComposerWithSuggestions.js b/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions/ComposerWithSuggestions.js
index 6c1d71625dc9..413807b1f992 100644
--- a/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions/ComposerWithSuggestions.js
+++ b/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions/ComposerWithSuggestions.js
@@ -127,8 +127,8 @@ function ComposerWithSuggestions({
const maxComposerLines = isSmallScreenWidth ? CONST.COMPOSER.MAX_LINES_SMALL_SCREEN : CONST.COMPOSER.MAX_LINES;
const isEmptyChat = useMemo(() => _.size(reportActions) === 1, [reportActions]);
- const parentAction = ReportActionsUtils.getParentReportAction(report);
- const shouldAutoFocus = !modal.isVisible && (shouldFocusInputOnScreenFocus || (isEmptyChat && !ReportActionsUtils.isTransactionThread(parentAction))) && shouldShowComposeInput;
+ const parentReportAction = lodashGet(parentReportActions, [report.parentReportActionID]);
+ const shouldAutoFocus = !modal.isVisible && (shouldFocusInputOnScreenFocus || (isEmptyChat && !ReportActionsUtils.isTransactionThread(parentReportAction))) && shouldShowComposeInput;
const valueRef = useRef(value);
valueRef.current = value;
@@ -344,9 +344,6 @@ function ComposerWithSuggestions({
const valueLength = valueRef.current.length;
if (e.key === CONST.KEYBOARD_SHORTCUTS.ARROW_UP.shortcutKey && textInputRef.current.selectionStart === 0 && valueLength === 0 && !ReportUtils.chatIncludesChronos(report)) {
e.preventDefault();
-
- const parentReportActionID = lodashGet(report, 'parentReportActionID', '');
- const parentReportAction = lodashGet(parentReportActions, [parentReportActionID], {});
const lastReportAction = _.find(
[...reportActions, parentReportAction],
(action) => ReportUtils.canEditReportAction(action) && !ReportActionsUtils.isMoneyRequestAction(action),
@@ -356,7 +353,7 @@ function ComposerWithSuggestions({
}
}
},
- [isKeyboardShown, isSmallScreenWidth, parentReportActions, report, reportActions, reportID, handleSendMessage, suggestionsRef, valueRef],
+ [isKeyboardShown, isSmallScreenWidth, parentReportAction, report, reportActions, reportID, handleSendMessage, suggestionsRef, valueRef],
);
const onChangeText = useCallback(
diff --git a/src/pages/home/report/ReportActionItem.js b/src/pages/home/report/ReportActionItem.js
index b1130af5d2ff..9573d4a4ff1a 100644
--- a/src/pages/home/report/ReportActionItem.js
+++ b/src/pages/home/report/ReportActionItem.js
@@ -17,6 +17,7 @@ import PressableWithSecondaryInteraction from '@components/PressableWithSecondar
import EmojiReactionsPropTypes from '@components/Reactions/EmojiReactionsPropTypes';
import ReportActionItemEmojiReactions from '@components/Reactions/ReportActionItemEmojiReactions';
import RenderHTML from '@components/RenderHTML';
+import ActionableItemButtons from '@components/ReportActionItem/ActionableItemButtons';
import ChronosOOOListActions from '@components/ReportActionItem/ChronosOOOListActions';
import MoneyReportView from '@components/ReportActionItem/MoneyReportView';
import MoneyRequestAction from '@components/ReportActionItem/MoneyRequestAction';
@@ -37,7 +38,6 @@ import useTheme from '@hooks/useTheme';
import useThemeStyles from '@hooks/useThemeStyles';
import compose from '@libs/compose';
import ControlSelection from '@libs/ControlSelection';
-import * as CurrencyUtils from '@libs/CurrencyUtils';
import * as DeviceCapabilities from '@libs/DeviceCapabilities';
import focusTextInputAfterAnimation from '@libs/focusTextInputAfterAnimation';
import ModifiedExpenseMessage from '@libs/ModifiedExpenseMessage';
@@ -305,6 +305,25 @@ function ReportActionItem(props) {
[props.report, props.action, toggleContextMenuFromActiveReportAction],
);
+ const actionableItemButtons = useMemo(() => {
+ if (!(props.action.actionName === CONST.REPORT.ACTIONS.TYPE.ACTIONABLEMENTIONWHISPER && !lodashGet(props.action, 'originalMessage.resolution', null))) {
+ return [];
+ }
+ return [
+ {
+ text: 'actionableMentionWhisperOptions.invite',
+ key: `${props.action.reportActionID}-actionableMentionWhisper-${CONST.REPORT.ACTIONABLE_MENTION_WHISPER_RESOLUTION.INVITE}`,
+ onPress: () => Report.resolveActionableMentionWhisper(props.report.reportID, props.action, CONST.REPORT.ACTIONABLE_MENTION_WHISPER_RESOLUTION.INVITE),
+ isPrimary: true,
+ },
+ {
+ text: 'actionableMentionWhisperOptions.nothing',
+ key: `${props.action.reportActionID}-actionableMentionWhisper-${CONST.REPORT.ACTIONABLE_MENTION_WHISPER_RESOLUTION.NOTHING}`,
+ onPress: () => Report.resolveActionableMentionWhisper(props.report.reportID, props.action, CONST.REPORT.ACTIONABLE_MENTION_WHISPER_RESOLUTION.NOTHING),
+ },
+ ];
+ }, [props.action, props.report]);
+
/**
* Get the content of ReportActionItem
* @param {Boolean} hovered whether the ReportActionItem is hovered
@@ -420,10 +439,7 @@ function ReportActionItem(props) {
);
} else if (props.action.actionName === CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENTDEQUEUED) {
- const submitterDisplayName = PersonalDetailsUtils.getDisplayNameOrDefault(lodashGet(personalDetails, props.report.ownerAccountID));
- const amount = CurrencyUtils.convertToDisplayString(props.report.total, props.report.currency);
-
- children = ;
+ children = ;
} else if (props.action.actionName === CONST.REPORT.ACTIONS.TYPE.MODIFIEDEXPENSE) {
children = ;
} else if (props.action.actionName === CONST.REPORT.ACTIONS.TYPE.MARKEDREIMBURSED) {
@@ -467,6 +483,17 @@ function ReportActionItem(props) {
)}
+ {/**
+ These are the actionable buttons that appear at the bottom of a Concierge message
+ for example: Invite a user mentioned but not a member of the room
+ https://github.com/Expensify/App/issues/32741
+ */}
+ {actionableItemButtons.length > 0 && (
+
+ )}
) : (
@@ -766,6 +794,10 @@ export default compose(
},
initialValue: {},
},
+ policyReportFields: {
+ key: ({report}) => (report && 'policyID' in report ? `${ONYXKEYS.COLLECTION.POLICY_REPORT_FIELDS}${report.policyID}` : undefined),
+ initialValue: [],
+ },
emojiReactions: {
key: ({action}) => `${ONYXKEYS.COLLECTION.REPORT_ACTIONS_REACTIONS}${action.reportActionID}`,
initialValue: {},
@@ -807,6 +839,8 @@ export default compose(
prevProps.shouldHideThreadDividerLine === nextProps.shouldHideThreadDividerLine &&
lodashGet(prevProps.report, 'total', 0) === lodashGet(nextProps.report, 'total', 0) &&
lodashGet(prevProps.report, 'nonReimbursableTotal', 0) === lodashGet(nextProps.report, 'nonReimbursableTotal', 0) &&
- prevProps.linkedReportActionID === nextProps.linkedReportActionID,
+ prevProps.linkedReportActionID === nextProps.linkedReportActionID &&
+ _.isEqual(prevProps.policyReportFields, nextProps.policyReportFields) &&
+ _.isEqual(prevProps.report.reportFields, nextProps.report.reportFields),
),
);
diff --git a/src/pages/home/report/ReportActionItemBasicMessage.tsx b/src/pages/home/report/ReportActionItemBasicMessage.tsx
index f0097a6dce26..35141a42b726 100644
--- a/src/pages/home/report/ReportActionItemBasicMessage.tsx
+++ b/src/pages/home/report/ReportActionItemBasicMessage.tsx
@@ -1,3 +1,4 @@
+import Str from 'expensify-common/lib/str';
import React from 'react';
import {View} from 'react-native';
import Text from '@components/Text';
@@ -12,7 +13,7 @@ function ReportActionItemBasicMessage({message, children}: ReportActionItemBasic
const styles = useThemeStyles();
return (
- {message}
+ {Str.htmlDecode(message)}
{children}
);
diff --git a/src/pages/home/report/ReportActionItemMessage.tsx b/src/pages/home/report/ReportActionItemMessage.tsx
index 3a71ee8356b3..025b0cbb8b0a 100644
--- a/src/pages/home/report/ReportActionItemMessage.tsx
+++ b/src/pages/home/report/ReportActionItemMessage.tsx
@@ -57,7 +57,7 @@ function ReportActionItemMessage({action, displayAsGroup, reportID, style, isHid
const originalMessage = action.actionName === CONST.REPORT.ACTIONS.TYPE.IOU ? action.originalMessage : null;
const iouReportID = originalMessage?.IOUReportID;
if (iouReportID) {
- iouMessage = ReportUtils.getReportPreviewMessage(ReportUtils.getReport(iouReportID), action);
+ iouMessage = ReportUtils.getIOUReportActionDisplayMessage(action);
}
}
diff --git a/src/pages/home/report/ReportActionItemParentAction.js b/src/pages/home/report/ReportActionItemParentAction.js
index c11200ccc4db..d1a294881eb9 100644
--- a/src/pages/home/report/ReportActionItemParentAction.js
+++ b/src/pages/home/report/ReportActionItemParentAction.js
@@ -24,6 +24,9 @@ const propTypes = {
/** The id of the report */
reportID: PropTypes.string.isRequired,
+ /** Position index of the report parent action in the overall report FlatList view */
+ index: PropTypes.number.isRequired,
+
/** The id of the parent report */
// eslint-disable-next-line react/no-unused-prop-types
parentReportID: PropTypes.string.isRequired,
@@ -72,7 +75,7 @@ function ReportActionItemParentAction(props) {
displayAsGroup={false}
isMostRecentIOUReportAction={false}
shouldDisplayNewMarker={props.shouldDisplayNewMarker}
- index={0}
+ index={props.index}
/>
)}
diff --git a/src/pages/home/report/ReportActionsListItemRenderer.js b/src/pages/home/report/ReportActionsListItemRenderer.js
index ba47e804de06..a9ae2b4c73b9 100644
--- a/src/pages/home/report/ReportActionsListItemRenderer.js
+++ b/src/pages/home/report/ReportActionsListItemRenderer.js
@@ -61,6 +61,7 @@ function ReportActionsListItemRenderer({
reportID={report.reportID}
parentReportID={`${report.parentReportID}`}
shouldDisplayNewMarker={shouldDisplayNewMarker}
+ index={index}
/>
) : (
;
+
+function ReportAttachments({route}: ReportAttachmentsProps) {
+ const reportID = route.params.reportID;
const report = ReportUtils.getReport(reportID);
// In native the imported images sources are of type number. Ref: https://reactnative.dev/docs/image#imagesource
- const decodedSource = decodeURI(_.get(props, ['route', 'params', 'source']));
+ const decodedSource = decodeURI(route.params.source);
const source = Number(decodedSource) || decodedSource;
const onCarouselAttachmentChange = useCallback(
- (attachment) => {
- const route = ROUTES.REPORT_ATTACHMENTS.getRoute(reportID, attachment.source);
- Navigation.navigate(route);
+ (attachment: Attachment) => {
+ const routeToNavigate = ROUTES.REPORT_ATTACHMENTS.getRoute(reportID, attachment.source);
+ Navigation.navigate(routeToNavigate);
},
[reportID],
);
return (
;
-}
-
-MoneyRequestEditWaypointPage.displayName = 'MoneyRequestEditWaypointPage';
-MoneyRequestEditWaypointPage.propTypes = propTypes;
-MoneyRequestEditWaypointPage.defaultProps = defaultProps;
-export default MoneyRequestEditWaypointPage;
diff --git a/src/pages/iou/NewDistanceRequestWaypointEditorPage.js b/src/pages/iou/MoneyRequestWaypointPage.js
similarity index 77%
rename from src/pages/iou/NewDistanceRequestWaypointEditorPage.js
rename to src/pages/iou/MoneyRequestWaypointPage.js
index 269cde577040..2f8b8b9cc729 100644
--- a/src/pages/iou/NewDistanceRequestWaypointEditorPage.js
+++ b/src/pages/iou/MoneyRequestWaypointPage.js
@@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
import React from 'react';
import {withOnyx} from 'react-native-onyx';
import ONYXKEYS from '@src/ONYXKEYS';
-import WaypointEditor from './WaypointEditor';
+import IOURequestStepWaypoint from './request/step/IOURequestStepWaypoint';
const propTypes = {
/** The transactionID of this request */
@@ -32,9 +32,9 @@ const defaultProps = {
// This component is responsible for grabbing the transactionID from the IOU key
// You can't use Onyx props in the withOnyx mapping, so we need to set up and access the transactionID here, and then pass it down so that WaypointEditor can subscribe to the transaction.
-function NewDistanceRequestWaypointEditorPage({transactionID, route}) {
+function MoneyRequestWaypointPage({transactionID, route}) {
return (
- iou && iou.transactionID},
-})(NewDistanceRequestWaypointEditorPage);
+})(MoneyRequestWaypointPage);
diff --git a/src/pages/iou/WaypointEditor.js b/src/pages/iou/WaypointEditor.js
deleted file mode 100644
index ab8874091152..000000000000
--- a/src/pages/iou/WaypointEditor.js
+++ /dev/null
@@ -1,292 +0,0 @@
-import {useNavigation} from '@react-navigation/native';
-import lodashGet from 'lodash/get';
-import PropTypes from 'prop-types';
-import React, {useMemo, useRef, useState} from 'react';
-import {withOnyx} from 'react-native-onyx';
-import _ from 'underscore';
-import AddressSearch from '@components/AddressSearch';
-import FullPageNotFoundView from '@components/BlockingViews/FullPageNotFoundView';
-import ConfirmModal from '@components/ConfirmModal';
-import FormProvider from '@components/Form/FormProvider';
-import InputWrapper from '@components/Form/InputWrapper';
-import HeaderWithBackButton from '@components/HeaderWithBackButton';
-import * as Expensicons from '@components/Icon/Expensicons';
-import ScreenWrapper from '@components/ScreenWrapper';
-import transactionPropTypes from '@components/transactionPropTypes';
-import useLocalize from '@hooks/useLocalize';
-import useLocationBias from '@hooks/useLocationBias';
-import useNetwork from '@hooks/useNetwork';
-import useThemeStyles from '@hooks/useThemeStyles';
-import useWindowDimensions from '@hooks/useWindowDimensions';
-import * as ErrorUtils from '@libs/ErrorUtils';
-import Navigation from '@libs/Navigation/Navigation';
-import * as ValidationUtils from '@libs/ValidationUtils';
-import * as Transaction from '@userActions/Transaction';
-import CONST from '@src/CONST';
-import ONYXKEYS from '@src/ONYXKEYS';
-import ROUTES from '@src/ROUTES';
-
-const propTypes = {
- /** Route params */
- route: PropTypes.shape({
- params: PropTypes.shape({
- /** IOU type */
- iouType: PropTypes.string,
-
- /** Thread reportID */
- threadReportID: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
-
- /** ID of the transaction being edited */
- transactionID: PropTypes.string,
-
- /** Index of the waypoint being edited */
- waypointIndex: PropTypes.string,
- }),
- }),
-
- /* Current location coordinates of the user */
- userLocation: PropTypes.shape({
- /** Latitude of the location */
- latitude: PropTypes.number,
-
- /** Longitude of the location */
- longitude: PropTypes.number,
- }),
-
- recentWaypoints: PropTypes.arrayOf(
- PropTypes.shape({
- /** The name of the location */
- name: PropTypes.string,
-
- /** A description of the location (usually the address) */
- description: PropTypes.string,
-
- /** Data required by the google auto complete plugin to know where to put the markers on the map */
- geometry: PropTypes.shape({
- /** Data about the location */
- location: PropTypes.shape({
- /** Latitude of the location */
- lat: PropTypes.number,
-
- /** Longitude of the location */
- lng: PropTypes.number,
- }),
- }),
- }),
- ),
-
- /* Onyx props */
- /** The optimistic transaction for this request */
- transaction: transactionPropTypes,
-};
-
-const defaultProps = {
- route: {},
- recentWaypoints: [],
- transaction: {},
- userLocation: undefined,
-};
-
-function WaypointEditor({route: {params: {iouType = '', transactionID = '', waypointIndex = '', threadReportID = 0}} = {}, transaction, recentWaypoints, userLocation}) {
- const styles = useThemeStyles();
- const {windowWidth} = useWindowDimensions();
- const [isDeleteStopModalOpen, setIsDeleteStopModalOpen] = useState(false);
- const navigation = useNavigation();
- const isFocused = navigation.isFocused();
- const {translate} = useLocalize();
- const {isOffline} = useNetwork();
- const textInput = useRef(null);
- const parsedWaypointIndex = parseInt(waypointIndex, 10);
- const allWaypoints = lodashGet(transaction, 'comment.waypoints', {});
- const currentWaypoint = lodashGet(allWaypoints, `waypoint${waypointIndex}`, {});
-
- const waypointCount = _.size(allWaypoints);
- const filledWaypointCount = _.size(_.filter(allWaypoints, (waypoint) => !_.isEmpty(waypoint)));
- const locationBias = useLocationBias(allWaypoints, userLocation);
- const waypointDescriptionKey = useMemo(() => {
- switch (parsedWaypointIndex) {
- case 0:
- return 'distance.waypointDescription.start';
- case waypointCount - 1:
- return 'distance.waypointDescription.finish';
- default:
- return 'distance.waypointDescription.stop';
- }
- }, [parsedWaypointIndex, waypointCount]);
-
- const waypointAddress = lodashGet(currentWaypoint, 'address', '');
- const isEditingWaypoint = Boolean(threadReportID);
- // Hide the menu when there is only start and finish waypoint
- const shouldShowThreeDotsButton = waypointCount > 2;
- const shouldDisableEditor =
- isFocused &&
- (Number.isNaN(parsedWaypointIndex) || parsedWaypointIndex < 0 || parsedWaypointIndex > waypointCount || (filledWaypointCount < 2 && parsedWaypointIndex >= waypointCount));
-
- const validate = (values) => {
- const errors = {};
- const waypointValue = values[`waypoint${waypointIndex}`] || '';
- if (isOffline && waypointValue !== '' && !ValidationUtils.isValidAddress(waypointValue)) {
- ErrorUtils.addErrorMessage(errors, `waypoint${waypointIndex}`, 'bankAccount.error.address');
- }
-
- // If the user is online, and they are trying to save a value without using the autocomplete, show an error message instructing them to use a selected address instead.
- // That enables us to save the address with coordinates when it is selected
- if (!isOffline && waypointValue !== '' && waypointAddress !== waypointValue) {
- ErrorUtils.addErrorMessage(errors, `waypoint${waypointIndex}`, 'distance.errors.selectSuggestedAddress');
- }
-
- return errors;
- };
-
- const saveWaypoint = (waypoint) => Transaction.saveWaypoint(transactionID, waypointIndex, waypoint, isEditingWaypoint);
-
- const submit = (values) => {
- const waypointValue = values[`waypoint${waypointIndex}`] || '';
-
- // Allows letting you set a waypoint to an empty value
- if (waypointValue === '') {
- Transaction.removeWaypoint(transaction, waypointIndex);
- }
-
- // While the user is offline, the auto-complete address search will not work
- // Therefore, we're going to save the waypoint as just the address, and the lat/long will be filled in on the backend
- if (isOffline && waypointValue) {
- const waypoint = {
- lat: null,
- lng: null,
- address: waypointValue,
- name: null,
- };
- saveWaypoint(waypoint);
- }
-
- // Other flows will be handled by selecting a waypoint with selectWaypoint as this is mainly for the offline flow
- Navigation.goBack(ROUTES.MONEY_REQUEST_DISTANCE_TAB.getRoute(iouType));
- };
-
- const deleteStopAndHideModal = () => {
- Transaction.removeWaypoint(transaction, waypointIndex);
- setIsDeleteStopModalOpen(false);
- Navigation.goBack(ROUTES.MONEY_REQUEST_DISTANCE_TAB.getRoute(iouType));
- };
-
- const selectWaypoint = (values) => {
- const waypoint = {
- lat: values.lat,
- lng: values.lng,
- address: values.address,
- name: values.name || null,
- };
- saveWaypoint(waypoint);
-
- if (isEditingWaypoint) {
- Navigation.goBack(ROUTES.REPORT_WITH_ID.getRoute(threadReportID));
- return;
- }
- Navigation.goBack(ROUTES.MONEY_REQUEST_DISTANCE_TAB.getRoute(iouType));
- };
-
- return (
- textInput.current && textInput.current.focus()}
- shouldEnableMaxHeight
- testID={WaypointEditor.displayName}
- >
-
- {
- Navigation.goBack(ROUTES.MONEY_REQUEST_DISTANCE_TAB.getRoute(iouType));
- }}
- shouldShowThreeDotsButton={shouldShowThreeDotsButton}
- threeDotsAnchorPosition={styles.threeDotsPopoverOffset(windowWidth)}
- threeDotsMenuItems={[
- {
- icon: Expensicons.Trashcan,
- text: translate('distance.deleteWaypoint'),
- onSelected: () => setIsDeleteStopModalOpen(true),
- },
- ]}
- />
- setIsDeleteStopModalOpen(false)}
- prompt={translate('distance.deleteWaypointConfirmation')}
- confirmText={translate('common.delete')}
- cancelText={translate('common.cancel')}
- danger
- />
-
- (textInput.current = e)}
- hint={!isOffline ? 'distance.errors.selectSuggestedAddress' : ''}
- containerStyles={[styles.mt3]}
- label={translate('distance.address')}
- defaultValue={waypointAddress}
- onPress={selectWaypoint}
- maxInputLength={CONST.FORM_CHARACTER_LIMIT}
- renamedInputKeys={{
- address: `waypoint${waypointIndex}`,
- city: null,
- country: null,
- street: null,
- street2: null,
- zipCode: null,
- lat: null,
- lng: null,
- state: null,
- }}
- predefinedPlaces={recentWaypoints}
- resultTypes=""
- />
-
-
-
- );
-}
-
-WaypointEditor.displayName = 'WaypointEditor';
-WaypointEditor.propTypes = propTypes;
-WaypointEditor.defaultProps = defaultProps;
-export default withOnyx({
- userLocation: {
- key: ONYXKEYS.USER_LOCATION,
- },
- transaction: {
- key: ({route}) => `${ONYXKEYS.COLLECTION.TRANSACTION}${lodashGet(route, 'params.transactionID')}`,
- },
- recentWaypoints: {
- key: ONYXKEYS.NVP_RECENT_WAYPOINTS,
-
- // Only grab the most recent 5 waypoints because that's all that is shown in the UI. This also puts them into the format of data
- // that the google autocomplete component expects for it's "predefined places" feature.
- selector: (waypoints) =>
- _.map(waypoints ? waypoints.slice(0, 5) : [], (waypoint) => ({
- name: waypoint.name,
- description: waypoint.address,
- geometry: {
- location: {
- lat: waypoint.lat,
- lng: waypoint.lng,
- },
- },
- })),
- },
-})(WaypointEditor);
diff --git a/src/pages/iou/request/MoneyTemporaryForRefactorRequestParticipantsSelector.js b/src/pages/iou/request/MoneyTemporaryForRefactorRequestParticipantsSelector.js
index 68e9f68a2bc5..f8c412993bab 100644
--- a/src/pages/iou/request/MoneyTemporaryForRefactorRequestParticipantsSelector.js
+++ b/src/pages/iou/request/MoneyTemporaryForRefactorRequestParticipantsSelector.js
@@ -8,6 +8,7 @@ import Button from '@components/Button';
import FormHelpMessage from '@components/FormHelpMessage';
import {usePersonalDetails} from '@components/OnyxProvider';
import {PressableWithFeedback} from '@components/Pressable';
+import ReferralProgramCTA from '@components/ReferralProgramCTA';
import SelectCircle from '@components/SelectCircle';
import SelectionList from '@components/SelectionList';
import useLocalize from '@hooks/useLocalize';
@@ -16,7 +17,6 @@ import useThemeStyles from '@hooks/useThemeStyles';
import * as Report from '@libs/actions/Report';
import * as DeviceCapabilities from '@libs/DeviceCapabilities';
import * as OptionsListUtils from '@libs/OptionsListUtils';
-import MoneyRequestReferralProgramCTA from '@pages/iou/MoneyRequestReferralProgramCTA';
import reportPropTypes from '@pages/reportPropTypes';
import CONST from '@src/CONST';
import ONYXKEYS from '@src/ONYXKEYS';
@@ -266,7 +266,7 @@ function MoneyTemporaryForRefactorRequestParticipantsSelector({
() => (
-
+
{shouldShowSplitBillErrorMessage && (
diff --git a/src/pages/iou/request/step/IOURequestStepDistance.js b/src/pages/iou/request/step/IOURequestStepDistance.js
index ddf692fedd46..9549a93c8124 100644
--- a/src/pages/iou/request/step/IOURequestStepDistance.js
+++ b/src/pages/iou/request/step/IOURequestStepDistance.js
@@ -21,6 +21,7 @@ import variables from '@styles/variables';
import * as IOU from '@userActions/IOU';
import * as MapboxToken from '@userActions/MapboxToken';
import * as Transaction from '@userActions/Transaction';
+import CONST from '@src/CONST';
import ROUTES from '@src/ROUTES';
import IOURequestStepRoutePropTypes from './IOURequestStepRoutePropTypes';
import StepScreenWrapper from './StepScreenWrapper';
@@ -102,7 +103,9 @@ function IOURequestStepDistance({
* @param {Number} index of the waypoint to edit
*/
const navigateToWaypointEditPage = (index) => {
- Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_WAYPOINT.getRoute(iouType, transactionID, reportID, index));
+ Navigation.navigate(
+ ROUTES.MONEY_REQUEST_STEP_WAYPOINT.getRoute(CONST.IOU.ACTION.CREATE, CONST.IOU.TYPE.REQUEST, transactionID, report.reportID, index, Navigation.getActiveRouteWithoutParams()),
+ );
};
const navigateToNextStep = useCallback(() => {
diff --git a/src/pages/iou/request/step/IOURequestStepWaypoint.js b/src/pages/iou/request/step/IOURequestStepWaypoint.js
index 09617026576d..1087018eeed9 100644
--- a/src/pages/iou/request/step/IOURequestStepWaypoint.js
+++ b/src/pages/iou/request/step/IOURequestStepWaypoint.js
@@ -81,7 +81,7 @@ const defaultProps = {
function IOURequestStepWaypoint({
recentWaypoints,
route: {
- params: {iouType, pageIndex, reportID, transactionID},
+ params: {action, backTo, iouType, pageIndex, reportID, transactionID},
},
transaction,
userLocation,
@@ -135,7 +135,7 @@ function IOURequestStepWaypoint({
return errors;
};
- const saveWaypoint = (waypoint) => Transaction.saveWaypoint(transactionID, pageIndex, waypoint, false);
+ const saveWaypoint = (waypoint) => Transaction.saveWaypoint(transactionID, pageIndex, waypoint, action === CONST.IOU.ACTION.CREATE);
const submit = (values) => {
const waypointValue = values[`waypoint${pageIndex}`] || '';
@@ -180,7 +180,11 @@ function IOURequestStepWaypoint({
address: values.address,
name: values.name || null,
};
- Transaction.saveWaypoint(transactionID, pageIndex, waypoint, false);
+ Transaction.saveWaypoint(transactionID, pageIndex, waypoint, action === CONST.IOU.ACTION.CREATE);
+ if (backTo) {
+ Navigation.goBack(backTo);
+ return;
+ }
Navigation.goBack(ROUTES.MONEY_REQUEST_CREATE_TAB_DISTANCE.getRoute(iouType, transactionID, reportID));
};
diff --git a/src/pages/iou/request/step/withFullTransactionOrNotFound.js b/src/pages/iou/request/step/withFullTransactionOrNotFound.js
index 001159f944e9..7cdbb3484999 100644
--- a/src/pages/iou/request/step/withFullTransactionOrNotFound.js
+++ b/src/pages/iou/request/step/withFullTransactionOrNotFound.js
@@ -70,7 +70,8 @@ export default function (WrappedComponent) {
transaction: {
key: ({route}) => {
const transactionID = lodashGet(route, 'params.transactionID', 0);
- return `${transactionID === CONST.IOU.OPTIMISTIC_TRANSACTION_ID ? ONYXKEYS.COLLECTION.TRANSACTION_DRAFT : ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`;
+ const userAction = lodashGet(route, 'params.action', CONST.IOU.ACTION.CREATE);
+ return `${userAction === CONST.IOU.ACTION.CREATE ? ONYXKEYS.COLLECTION.TRANSACTION_DRAFT : ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`;
},
},
})(WithFullTransactionOrNotFoundWithRef);
diff --git a/src/pages/iou/steps/MoneyRequstParticipantsPage/MoneyRequestParticipantsSelector.js b/src/pages/iou/steps/MoneyRequstParticipantsPage/MoneyRequestParticipantsSelector.js
index 9edede770233..9567b17ecdf5 100755
--- a/src/pages/iou/steps/MoneyRequstParticipantsPage/MoneyRequestParticipantsSelector.js
+++ b/src/pages/iou/steps/MoneyRequstParticipantsPage/MoneyRequestParticipantsSelector.js
@@ -8,6 +8,7 @@ import Button from '@components/Button';
import FormHelpMessage from '@components/FormHelpMessage';
import {usePersonalDetails} from '@components/OnyxProvider';
import {PressableWithFeedback} from '@components/Pressable';
+import ReferralProgramCTA from '@components/ReferralProgramCTA';
import SelectCircle from '@components/SelectCircle';
import SelectionList from '@components/SelectionList';
import useLocalize from '@hooks/useLocalize';
@@ -16,7 +17,6 @@ import useThemeStyles from '@hooks/useThemeStyles';
import * as Report from '@libs/actions/Report';
import * as DeviceCapabilities from '@libs/DeviceCapabilities';
import * as OptionsListUtils from '@libs/OptionsListUtils';
-import MoneyRequestReferralProgramCTA from '@pages/iou/MoneyRequestReferralProgramCTA';
import reportPropTypes from '@pages/reportPropTypes';
import CONST from '@src/CONST';
import ONYXKEYS from '@src/ONYXKEYS';
@@ -285,7 +285,7 @@ function MoneyRequestParticipantsSelector({
() => (
-
+
{shouldShowSplitBillErrorMessage && (
diff --git a/src/pages/reportPropTypes.js b/src/pages/reportPropTypes.js
index 329bf66f7275..3a056ee7c0a3 100644
--- a/src/pages/reportPropTypes.js
+++ b/src/pages/reportPropTypes.js
@@ -63,11 +63,14 @@ export default PropTypes.shape({
stateNum: PropTypes.oneOf(_.values(CONST.REPORT.STATE_NUM)),
/** The status of the current report */
- statusNum: PropTypes.oneOf(_.values(CONST.REPORT.STATUS)),
+ statusNum: PropTypes.oneOf(_.values(CONST.REPORT.STATUS_NUM)),
/** Which user role is capable of posting messages on the report */
writeCapability: PropTypes.oneOf(_.values(CONST.REPORT.WRITE_CAPABILITIES)),
/** Field-specific pending states for offline UI status */
pendingFields: PropTypes.objectOf(PropTypes.string),
+
+ /** Custom fields attached to the report */
+ reportFields: PropTypes.objectOf(PropTypes.string),
});
diff --git a/src/pages/settings/AboutPage/AboutPage.js b/src/pages/settings/AboutPage/AboutPage.js
index 81186af3fcd1..a460c95cdfe6 100644
--- a/src/pages/settings/AboutPage/AboutPage.js
+++ b/src/pages/settings/AboutPage/AboutPage.js
@@ -1,17 +1,16 @@
-import React, {useMemo, useRef} from 'react';
-import {ScrollView, View} from 'react-native';
+import React, {useCallback, useMemo, useRef} from 'react';
+import {View} from 'react-native';
import DeviceInfo from 'react-native-device-info';
import _ from 'underscore';
-import Logo from '@assets/images/new-expensify.svg';
-import HeaderWithBackButton from '@components/HeaderWithBackButton';
import * as Expensicons from '@components/Icon/Expensicons';
-import ImageSVG from '@components/ImageSVG';
+import IllustratedHeaderPageLayout from '@components/IllustratedHeaderPageLayout';
+import LottieAnimations from '@components/LottieAnimations';
import MenuItemList from '@components/MenuItemList';
-import ScreenWrapper from '@components/ScreenWrapper';
import Text from '@components/Text';
import TextLink from '@components/TextLink';
import withLocalize, {withLocalizePropTypes} from '@components/withLocalize';
import withWindowDimensions, {windowDimensionsPropTypes} from '@components/withWindowDimensions';
+import useTheme from '@hooks/useTheme';
import useThemeStyles from '@hooks/useThemeStyles';
import useWaitForNavigation from '@hooks/useWaitForNavigation';
import compose from '@libs/compose';
@@ -22,6 +21,7 @@ import * as Link from '@userActions/Link';
import * as Report from '@userActions/Report';
import CONST from '@src/CONST';
import ROUTES from '@src/ROUTES';
+import SCREENS from '@src/SCREENS';
import pkg from '../../../../package.json';
const propTypes = {
@@ -41,6 +41,7 @@ function getFlavor() {
}
function AboutPage(props) {
+ const theme = useTheme();
const styles = useThemeStyles();
const {translate} = props;
const popoverAnchor = useRef(null);
@@ -95,64 +96,61 @@ function AboutPage(props) {
}));
}, [translate, waitForNavigate]);
+ const overlayContent = useCallback(
+ () => (
+
+
+ v{Environment.isInternalTestBuild() ? `${pkg.version} PR:${CONST.PULL_REQUEST_NUMBER}${getFlavor()}` : `${pkg.version}${getFlavor()}`}
+
+
+ ),
+ // disabling this rule, as we want this to run only on the first render
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ [],
+ );
+
return (
- Navigation.goBack(ROUTES.SETTINGS)}
+ illustration={LottieAnimations.Coin}
+ backgroundColor={theme.PAGE_THEMES[SCREENS.SETTINGS.ABOUT].backgroundColor}
+ overlayContent={overlayContent}
>
- {({safeAreaPaddingBottomStyle}) => (
- <>
- Navigation.goBack(ROUTES.SETTINGS)}
- />
-
-
-
-
-
-
- v{Environment.isInternalTestBuild() ? `${pkg.version} PR:${CONST.PULL_REQUEST_NUMBER}${getFlavor()}` : `${pkg.version}${getFlavor()}`}
-
- {props.translate('initialSettingsPage.aboutPage.description')}
-
-
-
-
-
-
- {props.translate('initialSettingsPage.readTheTermsAndPrivacy.phrase1')}{' '}
-
- {props.translate('initialSettingsPage.readTheTermsAndPrivacy.phrase2')}
- {' '}
- {props.translate('initialSettingsPage.readTheTermsAndPrivacy.phrase3')}{' '}
-
- {props.translate('initialSettingsPage.readTheTermsAndPrivacy.phrase4')}
-
- .
-
-
-
- >
- )}
-
+
+ {props.translate('footer.aboutExpensify')}
+ {props.translate('initialSettingsPage.aboutPage.description')}
+
+
+
+
+ {props.translate('initialSettingsPage.readTheTermsAndPrivacy.phrase1')}{' '}
+
+ {props.translate('initialSettingsPage.readTheTermsAndPrivacy.phrase2')}
+ {' '}
+ {props.translate('initialSettingsPage.readTheTermsAndPrivacy.phrase3')}{' '}
+
+ {props.translate('initialSettingsPage.readTheTermsAndPrivacy.phrase4')}
+
+ .
+
+
+
);
}
diff --git a/src/pages/settings/InitialSettingsPage.js b/src/pages/settings/InitialSettingsPage.js
index d2b91ed6b76b..6e310b9a62bd 100755
--- a/src/pages/settings/InitialSettingsPage.js
+++ b/src/pages/settings/InitialSettingsPage.js
@@ -267,11 +267,11 @@ function InitialSettingsPage(props) {
translationKey: 'initialSettingsPage.goToExpensifyClassic',
icon: Expensicons.NewExpensify,
action: () => {
- Link.openExternalLink(CONST.EXPENSIFY_INBOX_URL);
+ Link.openOldDotLink(CONST.OLDDOT_URLS.INBOX);
},
shouldShowRightIcon: true,
iconRight: Expensicons.NewWindow,
- link: CONST.EXPENSIFY_INBOX_URL,
+ link: Link.buildOldDotURL(CONST.OLDDOT_URLS.INBOX),
},
{
translationKey: 'initialSettingsPage.signOut',
diff --git a/src/pages/settings/Profile/TimezoneSelectPage.js b/src/pages/settings/Profile/TimezoneSelectPage.js
index 2586be9fb673..8280d9b5c604 100644
--- a/src/pages/settings/Profile/TimezoneSelectPage.js
+++ b/src/pages/settings/Profile/TimezoneSelectPage.js
@@ -96,6 +96,7 @@ function TimezoneSelectPage(props) {
sections={[{data: timezoneOptions, indexOffset: 0, isDisabled: timezone.automatic}]}
initiallyFocusedOptionKey={_.get(_.filter(timezoneOptions, (tz) => tz.text === timezone.selected)[0], 'keyForList')}
showScrollIndicator
+ shouldShowTooltips={false}
/>
);
diff --git a/src/pages/settings/Wallet/ExpensifyCardPage.js b/src/pages/settings/Wallet/ExpensifyCardPage.js
index 3c44f806fdb8..856c0613cec7 100644
--- a/src/pages/settings/Wallet/ExpensifyCardPage.js
+++ b/src/pages/settings/Wallet/ExpensifyCardPage.js
@@ -208,7 +208,7 @@ function ExpensifyCardPage({
medium
style={[styles.mh5, styles.mb5]}
text={translate('cardPage.reviewTransaction')}
- onPress={() => Link.openOldDotLink('inbox')}
+ onPress={() => Link.openOldDotLink(CONST.OLDDOT_URLS.INBOX)}
/>
>
) : null}
diff --git a/src/pages/settings/Wallet/WalletPage/WalletPage.js b/src/pages/settings/Wallet/WalletPage/WalletPage.js
index bf547bc4bd10..8382014a01e5 100644
--- a/src/pages/settings/Wallet/WalletPage/WalletPage.js
+++ b/src/pages/settings/Wallet/WalletPage/WalletPage.js
@@ -556,6 +556,7 @@ function WalletPage({bankAccountList, cardList, fundList, isLoadingPaymentMethod
}}
onItemSelected={(method) => addPaymentMethodTypePressed(method)}
anchorRef={addPaymentMethodAnchorRef}
+ shouldShowPersonalBankAccountOption
/>
>
);
diff --git a/src/pages/tasks/TaskAssigneeSelectorModal.js b/src/pages/tasks/TaskAssigneeSelectorModal.js
index a4fc61910be2..1a526a9cdd9b 100644
--- a/src/pages/tasks/TaskAssigneeSelectorModal.js
+++ b/src/pages/tasks/TaskAssigneeSelectorModal.js
@@ -184,29 +184,29 @@ function TaskAssigneeSelectorModal(props) {
return sectionsList;
}, [filteredCurrentUserOption, filteredPersonalDetails, filteredRecentReports, filteredUserToInvite, props]);
- const selectReport = (option) => {
- if (!option) {
- return;
- }
-
- // Check to see if we're creating a new task
- // If there's no route params, we're creating a new task
- if (!props.route.params && option.accountID) {
- Task.setAssigneeValue(option.login, option.accountID, props.task.shareDestination, OptionsListUtils.isCurrentUser(option));
- return Navigation.goBack(ROUTES.NEW_TASK);
- }
-
- // Check to see if we're editing a task and if so, update the assignee
- if (report) {
- if (option.accountID !== report.managerID) {
- const assigneeChatReport = Task.setAssigneeValue(option.login, option.accountID, props.route.params.reportID, OptionsListUtils.isCurrentUser(option));
+ const selectReport = useCallback(
+ (option) => {
+ if (!option) {
+ return;
+ }
- // Pass through the selected assignee
- Task.editTaskAssignee(report, props.session.accountID, option.login, option.accountID, assigneeChatReport);
+ // Check to see if we're editing a task and if so, update the assignee
+ if (report) {
+ if (option.accountID !== report.managerID) {
+ const assigneeChatReport = Task.setAssigneeValue(option.login, option.accountID, report.reportID, OptionsListUtils.isCurrentUser(option));
+
+ // Pass through the selected assignee
+ Task.editTaskAssignee(report, props.session.accountID, option.login, option.accountID, assigneeChatReport);
+ }
+ Navigation.dismissModal(report.reportID);
+ // If there's no report, we're creating a new task
+ } else if (option.accountID) {
+ Task.setAssigneeValue(option.login, option.accountID, props.task.shareDestination, OptionsListUtils.isCurrentUser(option));
+ Navigation.goBack(ROUTES.NEW_TASK);
}
- return Navigation.dismissModal(report.reportID);
- }
- };
+ },
+ [props.session.accountID, props.task.shareDestination, report],
+ );
const isOpen = ReportUtils.isOpenTaskReport(report);
const canModifyTask = Task.canModifyTask(report, props.currentUserPersonalDetails.accountID, lodashGet(props.rootParentReportPolicy, 'role', ''));
diff --git a/src/pages/workspace/WorkspaceInvitePage.js b/src/pages/workspace/WorkspaceInvitePage.js
index c7a1da7b64ff..2150358a5134 100644
--- a/src/pages/workspace/WorkspaceInvitePage.js
+++ b/src/pages/workspace/WorkspaceInvitePage.js
@@ -57,6 +57,7 @@ const propTypes = {
}).isRequired,
isLoadingReportData: PropTypes.bool,
+ invitedEmailsToAccountIDsDraft: PropTypes.objectOf(PropTypes.number),
...policyPropTypes,
};
@@ -64,6 +65,7 @@ const defaultProps = {
personalDetails: {},
betas: [],
isLoadingReportData: true,
+ invitedEmailsToAccountIDsDraft: {},
...policyDefaultProps,
};
@@ -81,7 +83,10 @@ function WorkspaceInvitePage(props) {
useEffect(() => {
setSearchTerm(SearchInputManager.searchInput);
- }, []);
+ return () => {
+ Policy.setWorkspaceInviteMembersDraft(props.route.params.policyID, {});
+ };
+ }, [props.route.params.policyID]);
useEffect(() => {
Policy.clearErrors(props.route.params.policyID);
@@ -105,6 +110,12 @@ function WorkspaceInvitePage(props) {
_.each(inviteOptions.personalDetails, (detail) => (detailsMap[detail.login] = OptionsListUtils.formatMemberForList(detail)));
const newSelectedOptions = [];
+ _.each(_.keys(props.invitedEmailsToAccountIDsDraft), (login) => {
+ if (!_.has(detailsMap, login)) {
+ return;
+ }
+ newSelectedOptions.push({...detailsMap[login], isSelected: true});
+ });
_.each(selectedOptions, (option) => {
newSelectedOptions.push(_.has(detailsMap, option.login) ? {...detailsMap[option.login], isSelected: true} : option);
});
@@ -323,5 +334,8 @@ export default compose(
isLoadingReportData: {
key: ONYXKEYS.IS_LOADING_REPORT_DATA,
},
+ invitedEmailsToAccountIDsDraft: {
+ key: ({route}) => `${ONYXKEYS.COLLECTION.WORKSPACE_INVITE_MEMBERS_DRAFT}${route.params.policyID.toString()}`,
+ },
}),
)(WorkspaceInvitePage);
diff --git a/src/pages/workspace/WorkspaceNewRoomPage.js b/src/pages/workspace/WorkspaceNewRoomPage.js
index 21c93b87806a..35fab36e5d41 100644
--- a/src/pages/workspace/WorkspaceNewRoomPage.js
+++ b/src/pages/workspace/WorkspaceNewRoomPage.js
@@ -77,6 +77,9 @@ const propTypes = {
/** accountID of current user */
accountID: PropTypes.number,
}),
+
+ /** policyID for main workspace */
+ activePolicyID: PropTypes.string,
};
const defaultProps = {
reports: {},
@@ -88,6 +91,7 @@ const defaultProps = {
session: {
accountID: 0,
},
+ activePolicyID: null,
};
function WorkspaceNewRoomPage(props) {
@@ -96,7 +100,7 @@ function WorkspaceNewRoomPage(props) {
const {isOffline} = useNetwork();
const {isSmallScreenWidth} = useWindowDimensions();
const [visibility, setVisibility] = useState(CONST.REPORT.VISIBILITY.RESTRICTED);
- const [policyID, setPolicyID] = useState(null);
+ const [policyID, setPolicyID] = useState(props.activePolicyID);
const [writeCapability, setWriteCapability] = useState(CONST.REPORT.WRITE_CAPABILITIES.ALL);
const wasLoading = usePrevious(props.formState.isLoading);
const visibilityDescription = useMemo(() => translate(`newRoomPage.${visibility}Description`), [translate, visibility]);
@@ -138,6 +142,13 @@ function WorkspaceNewRoomPage(props) {
Report.clearNewRoomFormError();
}, []);
+ useEffect(() => {
+ if (policyID) {
+ return;
+ }
+ setPolicyID(props.activePolicyID);
+ }, [props.activePolicyID, policyID]);
+
useEffect(() => {
if (!(((wasLoading && !props.formState.isLoading) || (isOffline && props.formState.isLoading)) && _.isEmpty(props.formState.errorFields))) {
return;
@@ -296,6 +307,7 @@ function WorkspaceNewRoomPage(props) {
inputID="policyID"
label={translate('workspace.common.workspace')}
items={workspaceOptions}
+ value={policyID}
onValueChange={setPolicyID}
/>
@@ -320,6 +332,7 @@ function WorkspaceNewRoomPage(props) {
onValueChange={setVisibility}
value={visibility}
furtherDetails={visibilityDescription}
+ shouldShowTooltips={false}
/>
@@ -353,5 +366,10 @@ export default compose(
session: {
key: ONYXKEYS.SESSION,
},
+ activePolicyID: {
+ key: ONYXKEYS.ACCOUNT,
+ selector: (account) => (account && account.activePolicyID) || null,
+ initialValue: null,
+ },
}),
)(WorkspaceNewRoomPage);
diff --git a/src/styles/index.ts b/src/styles/index.ts
index 097391f72dd2..54326ec575df 100644
--- a/src/styles/index.ts
+++ b/src/styles/index.ts
@@ -443,6 +443,10 @@ const styles = (theme: ThemeColors) =>
color: theme.link,
},
+ textIvoryLight: {
+ color: theme.iconColorfulBackground,
+ },
+
textNoWrap: {
...whiteSpace.noWrap,
},
@@ -1739,7 +1743,7 @@ const styles = (theme: ThemeColors) =>
fontFamily: FontUtils.fontFamily.platform.EXP_NEUE_BOLD,
fontSize: variables.fontSizeNormal,
fontWeight: FontUtils.fontWeight.bold,
- lineHeight: variables.lineHeightXXLarge,
+ lineHeight: variables.lineHeightXLarge,
...wordBreak.breakWord,
},
diff --git a/src/styles/theme/themes/dark.ts b/src/styles/theme/themes/dark.ts
index 8ac7b0a2359c..4d4234e167ef 100644
--- a/src/styles/theme/themes/dark.ts
+++ b/src/styles/theme/themes/dark.ts
@@ -126,6 +126,10 @@ const darkTheme = {
backgroundColor: colors.productDark200,
statusBarStyle: CONST.STATUS_BAR_STYLE.LIGHT_CONTENT,
},
+ [SCREENS.SETTINGS.ABOUT]: {
+ backgroundColor: colors.yellow600,
+ statusBarStyle: CONST.STATUS_BAR_STYLE.LIGHT_CONTENT,
+ },
[SCREENS.RIGHT_MODAL.REFERRAL]: {
backgroundColor: colors.pink800,
statusBarStyle: CONST.STATUS_BAR_STYLE.LIGHT_CONTENT,
diff --git a/src/styles/theme/themes/light.ts b/src/styles/theme/themes/light.ts
index 663b94aa0fc7..9cc5b03ac777 100644
--- a/src/styles/theme/themes/light.ts
+++ b/src/styles/theme/themes/light.ts
@@ -126,6 +126,10 @@ const lightTheme = {
backgroundColor: colors.productLight200,
statusBarStyle: CONST.STATUS_BAR_STYLE.DARK_CONTENT,
},
+ [SCREENS.SETTINGS.ABOUT]: {
+ backgroundColor: colors.yellow600,
+ statusBarStyle: CONST.STATUS_BAR_STYLE.LIGHT_CONTENT,
+ },
[SCREENS.RIGHT_MODAL.REFERRAL]: {
backgroundColor: colors.pink800,
statusBarStyle: CONST.STATUS_BAR_STYLE.LIGHT_CONTENT,
diff --git a/src/types/modules/react-native.d.ts b/src/types/modules/react-native.d.ts
index 8175a3631354..aaa7058737ae 100644
--- a/src/types/modules/react-native.d.ts
+++ b/src/types/modules/react-native.d.ts
@@ -349,11 +349,6 @@ declare module 'react-native' {
interface ImageStyle extends WebStyle {}
// <------ REACT NATIVE WEB (0.19.0) ------>
- interface TextInput {
- // Typescript type declaration is missing in React Native for setting text selection.
- setSelection: (start: number, end: number) => void;
- }
-
interface NativeModulesStatic {
BootSplash: BootSplashModule;
}
diff --git a/src/types/onyx/OriginalMessage.ts b/src/types/onyx/OriginalMessage.ts
index c4e30157bf6f..09be2d9e04dd 100644
--- a/src/types/onyx/OriginalMessage.ts
+++ b/src/types/onyx/OriginalMessage.ts
@@ -19,6 +19,7 @@ type OriginalMessageActionName =
| 'TASKCOMPLETED'
| 'TASKEDITED'
| 'TASKREOPENED'
+ | 'ACTIONABLEMENTIONWHISPER'
| ValueOf;
type OriginalMessageApproved = {
actionName: typeof CONST.REPORT.ACTIONS.TYPE.APPROVED;
@@ -36,6 +37,7 @@ type IOUMessage = {
/** The ID of the iou transaction */
IOUTransactionID?: string;
IOUReportID?: string;
+ expenseReportID?: string;
amount: number;
comment?: string;
currency: string;
@@ -43,10 +45,15 @@ type IOUMessage = {
participantAccountIDs?: number[];
type: ValueOf;
paymentType?: DeepValueOf;
+ cancellationReason?: string;
/** Only exists when we are sending money */
IOUDetails?: IOUDetails;
};
+type ReimbursementDeQueuedMessage = {
+ cancellationReason: string;
+};
+
type OriginalMessageIOU = {
actionName: typeof CONST.REPORT.ACTIONS.TYPE.IOU;
originalMessage: IOUMessage;
@@ -109,6 +116,18 @@ type OriginalMessageAddComment = {
};
};
+type OriginalMessageActionableMentionWhisper = {
+ actionName: typeof CONST.REPORT.ACTIONS.TYPE.ACTIONABLEMENTIONWHISPER;
+ originalMessage: {
+ inviteeAccountIDs: number[];
+ inviteeEmails: string;
+ lastModified: string;
+ reportID: number;
+ resolution?: ValueOf | null;
+ whisperedTo?: number[];
+ };
+};
+
type OriginalMessageSubmitted = {
actionName: typeof CONST.REPORT.ACTIONS.TYPE.SUBMITTED;
originalMessage: unknown;
@@ -239,6 +258,7 @@ type OriginalMessage =
| OriginalMessageApproved
| OriginalMessageIOU
| OriginalMessageAddComment
+ | OriginalMessageActionableMentionWhisper
| OriginalMessageSubmitted
| OriginalMessageClosed
| OriginalMessageCreated
@@ -260,6 +280,7 @@ export type {
Reaction,
ActionName,
IOUMessage,
+ ReimbursementDeQueuedMessage,
Closed,
OriginalMessageActionName,
ChangeLog,
diff --git a/src/types/onyx/Report.ts b/src/types/onyx/Report.ts
index f6af87038d00..7cc3c508d926 100644
--- a/src/types/onyx/Report.ts
+++ b/src/types/onyx/Report.ts
@@ -83,14 +83,11 @@ type Report = {
/** ID of the chat report */
chatReportID?: string;
- /** The state of the report */
- state?: ValueOf;
-
/** The state that the report is currently in */
stateNum?: ValueOf;
/** The status of the current report */
- statusNum?: ValueOf;
+ statusNum?: ValueOf;
/** Which user role is capable of posting messages on the report */
writeCapability?: WriteCapability;
diff --git a/src/types/onyx/ReportAction.ts b/src/types/onyx/ReportAction.ts
index d81335b284ac..d5c0e19f9373 100644
--- a/src/types/onyx/ReportAction.ts
+++ b/src/types/onyx/ReportAction.ts
@@ -53,6 +53,15 @@ type Message = {
/** ID of a task report */
taskReportID?: string;
+
+ /** Reason of payment cancellation */
+ cancellationReason?: string;
+
+ /** ID of an expense report */
+ expenseReportID?: string;
+
+ /** resolution for actionable mention whisper */
+ resolution?: ValueOf | null;
};
type ImageMetadata = {
@@ -149,7 +158,7 @@ type ReportActionBase = {
childManagerAccountID?: number;
/** The status of the child report */
- childStatusNum?: ValueOf;
+ childStatusNum?: ValueOf;
/** Report action child status name */
childStateNum?: ValueOf;
diff --git a/tests/actions/IOUTest.js b/tests/actions/IOUTest.js
index 3ba19199c30a..5b304346f38f 100644
--- a/tests/actions/IOUTest.js
+++ b/tests/actions/IOUTest.js
@@ -1237,9 +1237,8 @@ describe('actions/IOU', () => {
expect(chatReport.pendingFields).toBeFalsy();
expect(iouReport.pendingFields).toBeFalsy();
- // expect(iouReport.status).toBe(CONST.REPORT.STATUS.SUBMITTED);
- // expect(iouReport.stateNum).toBe(CONST.REPORT.STATE_NUM.SUBMITTED);
- // expect(iouReport.state).toBe(CONST.REPORT.STATE.SUBMITTED);
+ // expect(iouReport.status).toBe(CONST.REPORT.STATUS_NUM.SUBMITTED);
+ // expect(iouReport.stateNum).toBe(CONST.REPORT.STATE_NUM.APPROVED);
resolve();
},
@@ -1306,9 +1305,8 @@ describe('actions/IOU', () => {
expect(chatReport.iouReportID).toBeFalsy();
- // expect(iouReport.status).toBe(CONST.REPORT.STATUS.REIMBURSED);
- // expect(iouReport.state).toBe(CONST.REPORT.STATE.MANUALREIMBURSED);
- // expect(iouReport.stateNum).toBe(CONST.REPORT.STATE_NUM.SUBMITTED);
+ // expect(iouReport.status).toBe(CONST.REPORT.STATUS_NUM.REIMBURSED);
+ // expect(iouReport.stateNum).toBe(CONST.REPORT.STATE_NUM.APPROVED);
resolve();
},
@@ -1356,9 +1354,8 @@ describe('actions/IOU', () => {
expect(chatReport.iouReportID).toBeFalsy();
- // expect(iouReport.status).toBe(CONST.REPORT.STATUS.REIMBURSED);
- // expect(iouReport.state).toBe(CONST.REPORT.STATE.MANUALREIMBURSED);
- // expect(iouReport.stateNum).toBe(CONST.REPORT.STATE_NUM.SUBMITTED);
+ // expect(iouReport.status).toBe(CONST.REPORT.STATUS_NUM.REIMBURSED);
+ // expect(iouReport.stateNum).toBe(CONST.REPORT.STATE_NUM.APPROVED);
resolve();
},
@@ -1770,9 +1767,8 @@ describe('actions/IOU', () => {
expect.objectContaining({
lastMessageHtml: `paid $${amount / 100}.00 with Expensify`,
lastMessageText: `paid $${amount / 100}.00 with Expensify`,
- state: CONST.REPORT.STATE.SUBMITTED,
- statusNum: CONST.REPORT.STATUS.REIMBURSED,
- stateNum: CONST.REPORT.STATE_NUM.PROCESSING,
+ statusNum: CONST.REPORT.STATUS_NUM.REIMBURSED,
+ stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
}),
);
expect(updatedChatReport).toEqual(
diff --git a/tests/perf-test/OptionsSelector.perf-test.js b/tests/perf-test/OptionsSelector.perf-test.js
index da706d7bb629..b30169b8b53f 100644
--- a/tests/perf-test/OptionsSelector.perf-test.js
+++ b/tests/perf-test/OptionsSelector.perf-test.js
@@ -82,7 +82,7 @@ test('[OptionsSelector] should render 1 section', () => {
measurePerformance(, {runs});
});
-test('[OptionsSelector] should render mutliple sections', () => {
+test('[OptionsSelector] should render multiple sections', () => {
const sections = generateSections(mutlipleSectionsConfig);
measurePerformance(, {runs});
});
@@ -118,10 +118,10 @@ test('[OptionsSelector] should scroll and press few items', () => {
const eventData = generateEventData(100, variables.optionRowHeight);
const eventData2 = generateEventData(200, variables.optionRowHeight);
- const scenario = (screen) => {
+ const scenario = async (screen) => {
fireEvent.press(screen.getByText('Item 10'));
fireEvent.scroll(screen.getByTestId('options-list'), eventData);
- fireEvent.press(screen.getByText('Item 100'));
+ fireEvent.press(await screen.findByText('Item 100'));
fireEvent.scroll(screen.getByTestId('options-list'), eventData2);
fireEvent.press(screen.getByText('Item 200'));
};
diff --git a/tests/perf-test/ReportActionsUtils.perf-test.ts b/tests/perf-test/ReportActionsUtils.perf-test.ts
index ea3b48bacf47..2a96a5959942 100644
--- a/tests/perf-test/ReportActionsUtils.perf-test.ts
+++ b/tests/perf-test/ReportActionsUtils.perf-test.ts
@@ -9,18 +9,6 @@ import createCollection from '../utils/collections/createCollection';
import createRandomReportAction from '../utils/collections/reportActions';
import waitForBatchedUpdates from '../utils/waitForBatchedUpdates';
-beforeAll(() =>
- Onyx.init({
- keys: ONYXKEYS,
- safeEvictionKeys: [ONYXKEYS.COLLECTION.REPORT_ACTIONS],
- }),
-);
-
-// Clear out Onyx after each test so that each test starts with a clean slate
-afterEach(() => {
- Onyx.clear();
-});
-
const getMockedReportActionsMap = (reportsLength = 10, actionsPerReportLength = 100) => {
const mockReportActions = Array.from({length: actionsPerReportLength}, (v, i) => {
const reportActionKey = i + 1;
@@ -49,120 +37,113 @@ const reportId = '1';
const runs = CONST.PERFORMANCE_TESTS.RUNS;
-/**
- * This function will be executed 20 times and the average time will be used on the comparison.
- * It will fail based on the CI configuration around Reassure:
- * @see /.github/workflows/reassurePerformanceTests.yml
- *
- * Max deviation on the duration is set to 20% at the time of writing.
- *
- * More on the measureFunction API:
- * @see https://callstack.github.io/reassure/docs/api#measurefunction-function
- */
-test('[ReportActionsUtils] getLastVisibleAction on 10k reportActions', async () => {
- await Onyx.multiSet({
- ...mockedReportActionsMap,
+describe('ReportActionsUtils', () => {
+ beforeAll(() => {
+ Onyx.init({
+ keys: ONYXKEYS,
+ safeEvictionKeys: [ONYXKEYS.COLLECTION.REPORT_ACTIONS],
+ });
+
+ Onyx.multiSet({
+ ...mockedReportActionsMap,
+ });
});
- await waitForBatchedUpdates();
- await measureFunction(() => ReportActionsUtils.getLastVisibleAction(reportId), {runs});
-});
+ afterAll(() => {
+ Onyx.clear();
+ });
-test('[ReportActionsUtils] getLastVisibleAction on 10k reportActions with actionsToMerge', async () => {
- const parentReportActionId = '1';
- const fakeParentAction = reportActions[parentReportActionId];
- const actionsToMerge = {
- [parentReportActionId]: {
- pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE,
- previousMessage: fakeParentAction.message,
- message: [
- {
- translationKey: '',
- type: 'COMMENT',
- html: '',
- text: '',
- isEdited: true,
- isDeletedParentAction: true,
- },
- ],
- errors: null,
- linkMetaData: [],
- },
- } as unknown as ReportActions;
-
- await Onyx.multiSet({
- ...mockedReportActionsMap,
+ /**
+ * This function will be executed 20 times and the average time will be used on the comparison.
+ * It will fail based on the CI configuration around Reassure:
+ * @see /.github/workflows/reassurePerformanceTests.yml
+ *
+ * Max deviation on the duration is set to 20% at the time of writing.
+ *
+ * More on the measureFunction API:
+ * @see https://callstack.github.io/reassure/docs/api#measurefunction-function
+ */
+ test('[ReportActionsUtils] getLastVisibleAction on 10k reportActions', async () => {
+ await waitForBatchedUpdates();
+ await measureFunction(() => ReportActionsUtils.getLastVisibleAction(reportId), {runs});
});
- await waitForBatchedUpdates();
- await measureFunction(() => ReportActionsUtils.getLastVisibleAction(reportId, actionsToMerge), {runs});
-});
-test('[ReportActionsUtils] getMostRecentIOURequestActionID on 10k ReportActions', async () => {
- const reportActionsArray = ReportActionsUtils.getSortedReportActionsForDisplay(reportActions);
- await Onyx.multiSet({
- ...mockedReportActionsMap,
+ test('[ReportActionsUtils] getLastVisibleAction on 10k reportActions with actionsToMerge', async () => {
+ const parentReportActionId = '1';
+ const fakeParentAction = reportActions[parentReportActionId];
+ const actionsToMerge = {
+ [parentReportActionId]: {
+ pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE,
+ previousMessage: fakeParentAction.message,
+ message: [
+ {
+ translationKey: '',
+ type: 'COMMENT',
+ html: '',
+ text: '',
+ isEdited: true,
+ isDeletedParentAction: true,
+ },
+ ],
+ errors: null,
+ linkMetaData: [],
+ },
+ } as unknown as ReportActions;
+
+ await waitForBatchedUpdates();
+ await measureFunction(() => ReportActionsUtils.getLastVisibleAction(reportId, actionsToMerge), {runs});
});
- await waitForBatchedUpdates();
- await measureFunction(() => ReportActionsUtils.getMostRecentIOURequestActionID(reportActionsArray), {runs});
-});
-test('[ReportActionsUtils] getLastVisibleMessage on 10k ReportActions', async () => {
- await Onyx.multiSet({
- ...mockedReportActionsMap,
+ test('[ReportActionsUtils] getMostRecentIOURequestActionID on 10k ReportActions', async () => {
+ const reportActionsArray = ReportActionsUtils.getSortedReportActionsForDisplay(reportActions);
+
+ await waitForBatchedUpdates();
+ await measureFunction(() => ReportActionsUtils.getMostRecentIOURequestActionID(reportActionsArray), {runs});
});
- await waitForBatchedUpdates();
- await measureFunction(() => ReportActionsUtils.getLastVisibleMessage(reportId), {runs});
-});
-test('[ReportActionsUtils] getLastVisibleMessage on 10k ReportActions with actionsToMerge', async () => {
- const parentReportActionId = '1';
- const fakeParentAction = reportActions[parentReportActionId];
- const actionsToMerge = {
- [parentReportActionId]: {
- pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE,
- previousMessage: fakeParentAction.message,
- message: [
- {
- translationKey: '',
- type: 'COMMENT',
- html: '',
- text: '',
- isEdited: true,
- isDeletedParentAction: true,
- },
- ],
- errors: null,
- linkMetaData: [],
- },
- } as unknown as ReportActions;
-
- await Onyx.multiSet({
- ...mockedReportActionsMap,
+ test('[ReportActionsUtils] getLastVisibleMessage on 10k ReportActions', async () => {
+ await waitForBatchedUpdates();
+ await measureFunction(() => ReportActionsUtils.getLastVisibleMessage(reportId), {runs});
});
- await waitForBatchedUpdates();
- await measureFunction(() => ReportActionsUtils.getLastVisibleMessage(reportId, actionsToMerge), {runs});
-});
-test('[ReportActionsUtils] getSortedReportActionsForDisplay on 10k ReportActions', async () => {
- await Onyx.multiSet({
- ...mockedReportActionsMap,
+ test('[ReportActionsUtils] getLastVisibleMessage on 10k ReportActions with actionsToMerge', async () => {
+ const parentReportActionId = '1';
+ const fakeParentAction = reportActions[parentReportActionId];
+ const actionsToMerge = {
+ [parentReportActionId]: {
+ pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE,
+ previousMessage: fakeParentAction.message,
+ message: [
+ {
+ translationKey: '',
+ type: 'COMMENT',
+ html: '',
+ text: '',
+ isEdited: true,
+ isDeletedParentAction: true,
+ },
+ ],
+ errors: null,
+ linkMetaData: [],
+ },
+ } as unknown as ReportActions;
+
+ await waitForBatchedUpdates();
+ await measureFunction(() => ReportActionsUtils.getLastVisibleMessage(reportId, actionsToMerge), {runs});
});
- await waitForBatchedUpdates();
- await measureFunction(() => ReportActionsUtils.getSortedReportActionsForDisplay(reportActions), {runs});
-});
-test('[ReportActionsUtils] getLastClosedReportAction on 10k ReportActions', async () => {
- await Onyx.multiSet({
- ...mockedReportActionsMap,
+ test('[ReportActionsUtils] getSortedReportActionsForDisplay on 10k ReportActions', async () => {
+ await waitForBatchedUpdates();
+ await measureFunction(() => ReportActionsUtils.getSortedReportActionsForDisplay(reportActions), {runs});
+ });
+
+ test('[ReportActionsUtils] getLastClosedReportAction on 10k ReportActions', async () => {
+ await waitForBatchedUpdates();
+ await measureFunction(() => ReportActionsUtils.getLastClosedReportAction(reportActions), {runs});
});
- await waitForBatchedUpdates();
- await measureFunction(() => ReportActionsUtils.getLastClosedReportAction(reportActions), {runs});
-});
-test('[ReportActionsUtils] getMostRecentReportActionLastModified', async () => {
- await Onyx.multiSet({
- ...mockedReportActionsMap,
+ test('[ReportActionsUtils] getMostRecentReportActionLastModified', async () => {
+ await waitForBatchedUpdates();
+ await measureFunction(() => ReportActionsUtils.getMostRecentReportActionLastModified(), {runs});
});
- await waitForBatchedUpdates();
- await measureFunction(() => ReportActionsUtils.getMostRecentReportActionLastModified(), {runs});
});
diff --git a/tests/perf-test/ReportUtils.perf-test.ts b/tests/perf-test/ReportUtils.perf-test.ts
index 62b911fb0417..30f874c669ab 100644
--- a/tests/perf-test/ReportUtils.perf-test.ts
+++ b/tests/perf-test/ReportUtils.perf-test.ts
@@ -13,19 +13,6 @@ import createRandomTransaction from '../utils/collections/transaction';
import waitForBatchedUpdates from '../utils/waitForBatchedUpdates';
const runs = CONST.PERFORMANCE_TESTS.RUNS;
-
-beforeAll(() =>
- Onyx.init({
- keys: ONYXKEYS,
- safeEvictionKeys: [ONYXKEYS.COLLECTION.REPORT_ACTIONS],
- }),
-);
-
-// Clear out Onyx after each test so that each test starts with a clean state
-afterEach(() => {
- Onyx.clear();
-});
-
const getMockedReports = (length = 500) =>
createCollection(
(item) => `${ONYXKEYS.COLLECTION.REPORT}${item.reportID}`,
@@ -50,195 +37,169 @@ const mockedReportsMap = getMockedReports(5000) as Record<`${typeof ONYXKEYS.COL
const mockedPoliciesMap = getMockedPolicies(5000) as Record<`${typeof ONYXKEYS.COLLECTION.POLICY}`, Policy>;
const participantAccountIDs = Array.from({length: 1000}, (v, i) => i + 1);
-test('[ReportUtils] findLastAccessedReport on 2k reports and policies', async () => {
- const ignoreDomainRooms = true;
- const isFirstTimeNewExpensifyUser = true;
- const reports = getMockedReports(2000);
- const policies = getMockedPolicies(2000);
- const openOnAdminRoom = true;
-
- await waitForBatchedUpdates();
- await measureFunction(() => ReportUtils.findLastAccessedReport(reports, ignoreDomainRooms, policies, isFirstTimeNewExpensifyUser, openOnAdminRoom), {runs});
-});
+describe('ReportUtils', () => {
+ beforeAll(() => {
+ Onyx.init({
+ keys: ONYXKEYS,
+ safeEvictionKeys: [ONYXKEYS.COLLECTION.REPORT_ACTIONS],
+ });
+
+ Onyx.multiSet({
+ ...mockedPoliciesMap,
+ ...mockedReportsMap,
+ });
+ });
-test('[ReportUtils] canDeleteReportAction on 5k reports and policies', async () => {
- const reportID = '1';
+ afterAll(() => {
+ Onyx.clear();
+ });
- const reportAction = {...createRandomReportAction(1), actionName: CONST.REPORT.ACTIONS.TYPE.ADDCOMMENT} as unknown as ReportAction;
+ test('[ReportUtils] findLastAccessedReport on 2k reports and policies', async () => {
+ const ignoreDomainRooms = true;
+ const isFirstTimeNewExpensifyUser = true;
+ const reports = getMockedReports(2000);
+ const policies = getMockedPolicies(2000);
+ const openOnAdminRoom = true;
- await Onyx.multiSet({
- ...mockedPoliciesMap,
- ...mockedReportsMap,
+ await waitForBatchedUpdates();
+ await measureFunction(() => ReportUtils.findLastAccessedReport(reports, ignoreDomainRooms, policies, isFirstTimeNewExpensifyUser, openOnAdminRoom), {runs});
});
- await waitForBatchedUpdates();
- await measureFunction(() => ReportUtils.canDeleteReportAction(reportAction, reportID), {runs});
-});
+ test('[ReportUtils] canDeleteReportAction on 5k reports and policies', async () => {
+ const reportID = '1';
+ const reportAction = {...createRandomReportAction(1), actionName: CONST.REPORT.ACTIONS.TYPE.ADDCOMMENT} as unknown as ReportAction;
-test('[ReportUtils] getReportRecipientAccountID on 1k participants', async () => {
- const report = {...createRandomReport(1), participantAccountIDs};
- const currentLoginAccountID = 1;
-
- await Onyx.multiSet({
- ...mockedReportsMap,
+ await waitForBatchedUpdates();
+ await measureFunction(() => ReportUtils.canDeleteReportAction(reportAction, reportID), {runs});
});
- await waitForBatchedUpdates();
- await measureFunction(() => ReportUtils.getReportRecipientAccountIDs(report, currentLoginAccountID), {runs});
-});
-
-test('[ReportUtils] getIconsForParticipants on 1k participants', async () => {
- const participants = Array.from({length: 1000}, (v, i) => i + 1);
+ test('[ReportUtils] getReportRecipientAccountID on 1k participants', async () => {
+ const report = {...createRandomReport(1), participantAccountIDs};
+ const currentLoginAccountID = 1;
- await waitForBatchedUpdates();
- await measureFunction(() => ReportUtils.getIconsForParticipants(participants, personalDetails), {runs});
-});
+ await waitForBatchedUpdates();
+ await measureFunction(() => ReportUtils.getReportRecipientAccountIDs(report, currentLoginAccountID), {runs});
+ });
-test('[ReportUtils] getIcons on 1k participants', async () => {
- const report = {...createRandomReport(1), parentReportID: '1', parentReportActionID: '1', type: CONST.REPORT.TYPE.CHAT};
- const policy = createRandomPolicy(1);
- const defaultIcon = null;
- const defaultName = '';
- const defaultIconId = -1;
+ test('[ReportUtils] getIconsForParticipants on 1k participants', async () => {
+ const participants = Array.from({length: 1000}, (v, i) => i + 1);
- await Onyx.multiSet({
- [ONYXKEYS.PERSONAL_DETAILS_LIST]: personalDetails,
+ await waitForBatchedUpdates();
+ await measureFunction(() => ReportUtils.getIconsForParticipants(participants, personalDetails), {runs});
});
- await waitForBatchedUpdates();
- await measureFunction(() => ReportUtils.getIcons(report, personalDetails, defaultIcon, defaultName, defaultIconId, policy), {runs});
-});
-
-test('[ReportUtils] getDisplayNamesWithTooltips 1k participants', async () => {
- const isMultipleParticipantReport = true;
- const shouldFallbackToHidden = true;
+ test('[ReportUtils] getIcons on 1k participants', async () => {
+ const report = {...createRandomReport(1), parentReportID: '1', parentReportActionID: '1', type: CONST.REPORT.TYPE.CHAT};
+ const policy = createRandomPolicy(1);
+ const defaultIcon = null;
+ const defaultName = '';
+ const defaultIconId = -1;
- await waitForBatchedUpdates();
- await measureFunction(() => ReportUtils.getDisplayNamesWithTooltips(personalDetails, isMultipleParticipantReport, shouldFallbackToHidden), {runs});
-});
+ await waitForBatchedUpdates();
+ await measureFunction(() => ReportUtils.getIcons(report, personalDetails, defaultIcon, defaultName, defaultIconId, policy), {runs});
+ });
-test('[ReportUtils] getReportPreviewMessage on 5k policies', async () => {
- const reportAction = createRandomReportAction(1);
- const report = createRandomReport(1);
- const policy = createRandomPolicy(1);
- const shouldConsiderReceiptBeingScanned = true;
- const isPreviewMessageForParentChatReport = true;
+ test('[ReportUtils] getDisplayNamesWithTooltips 1k participants', async () => {
+ const isMultipleParticipantReport = true;
+ const shouldFallbackToHidden = true;
- await Onyx.multiSet({
- ...mockedPoliciesMap,
+ await waitForBatchedUpdates();
+ await measureFunction(() => ReportUtils.getDisplayNamesWithTooltips(personalDetails, isMultipleParticipantReport, shouldFallbackToHidden), {runs});
});
- await waitForBatchedUpdates();
- await measureFunction(() => ReportUtils.getReportPreviewMessage(report, reportAction, shouldConsiderReceiptBeingScanned, isPreviewMessageForParentChatReport, policy), {runs});
-});
+ test('[ReportUtils] getReportPreviewMessage on 5k policies', async () => {
+ const reportAction = createRandomReportAction(1);
+ const report = createRandomReport(1);
+ const policy = createRandomPolicy(1);
+ const shouldConsiderReceiptBeingScanned = true;
+ const isPreviewMessageForParentChatReport = true;
-test('[ReportUtils] getReportName on 1k participants', async () => {
- const report = {...createRandomReport(1), chatType: undefined, participantAccountIDs};
- const policy = createRandomPolicy(1);
+ await waitForBatchedUpdates();
+ await measureFunction(() => ReportUtils.getReportPreviewMessage(report, reportAction, shouldConsiderReceiptBeingScanned, isPreviewMessageForParentChatReport, policy), {runs});
+ });
- await waitForBatchedUpdates();
- await measureFunction(() => ReportUtils.getReportName(report, policy), {runs});
-});
+ test('[ReportUtils] getReportName on 1k participants', async () => {
+ const report = {...createRandomReport(1), chatType: undefined, participantAccountIDs};
+ const policy = createRandomPolicy(1);
-test('[ReportUtils] canShowReportRecipientLocalTime on 1k participants', async () => {
- const report = {...createRandomReport(1), participantAccountIDs};
- const accountID = 1;
- await Onyx.multiSet({
- ...mockedReportsMap,
+ await waitForBatchedUpdates();
+ await measureFunction(() => ReportUtils.getReportName(report, policy), {runs});
});
- await waitForBatchedUpdates();
- await measureFunction(() => ReportUtils.canShowReportRecipientLocalTime(personalDetails, report, accountID), {runs});
-});
-
-test('[ReportUtils] shouldReportBeInOptionList on 1k participant', async () => {
- const report = {...createRandomReport(1), participantAccountIDs, type: CONST.REPORT.TYPE.CHAT};
- const currentReportId = '2';
- const isInGSDMode = true;
- const betas = [CONST.BETAS.DEFAULT_ROOMS];
- const policies = getMockedPolicies();
+ test('[ReportUtils] canShowReportRecipientLocalTime on 1k participants', async () => {
+ const report = {...createRandomReport(1), participantAccountIDs};
+ const accountID = 1;
- await waitForBatchedUpdates();
- await measureFunction(() => ReportUtils.shouldReportBeInOptionList(report, currentReportId, isInGSDMode, betas, policies), {runs});
-});
+ await waitForBatchedUpdates();
+ await measureFunction(() => ReportUtils.canShowReportRecipientLocalTime(personalDetails, report, accountID), {runs});
+ });
-test('[ReportUtils] getWorkspaceIcon on 5k policies', async () => {
- const report = createRandomReport(1);
- const policy = createRandomPolicy(1);
+ test('[ReportUtils] shouldReportBeInOptionList on 1k participant', async () => {
+ const report = {...createRandomReport(1), participantAccountIDs, type: CONST.REPORT.TYPE.CHAT};
+ const currentReportId = '2';
+ const isInGSDMode = true;
+ const betas = [CONST.BETAS.DEFAULT_ROOMS];
+ const policies = getMockedPolicies();
- await Onyx.multiSet({
- ...mockedPoliciesMap,
+ await waitForBatchedUpdates();
+ await measureFunction(() => ReportUtils.shouldReportBeInOptionList(report, currentReportId, isInGSDMode, betas, policies), {runs});
});
- await waitForBatchedUpdates();
- await measureFunction(() => ReportUtils.getWorkspaceIcon(report, policy), {runs});
-});
-
-test('[ReportUtils] getMoneyRequestOptions on 1k participants', async () => {
- const report = {...createRandomReport(1), type: CONST.REPORT.TYPE.CHAT, chatType: CONST.REPORT.CHAT_TYPE.POLICY_EXPENSE_CHAT, isOwnPolicyExpenseChat: true};
- const policy = createRandomPolicy(1);
- const reportParticipants = Array.from({length: 1000}, (v, i) => i + 1);
+ test('[ReportUtils] getWorkspaceIcon on 5k policies', async () => {
+ const report = createRandomReport(1);
+ const policy = createRandomPolicy(1);
- await Onyx.multiSet({
- ...mockedPoliciesMap,
+ await waitForBatchedUpdates();
+ await measureFunction(() => ReportUtils.getWorkspaceIcon(report, policy), {runs});
});
- await waitForBatchedUpdates();
- await measureFunction(() => ReportUtils.getMoneyRequestOptions(report, policy, reportParticipants), {runs});
-});
-
-test('[ReportUtils] getWorkspaceAvatar on 5k policies', async () => {
- const report = createRandomReport(1);
+ test('[ReportUtils] getMoneyRequestOptions on 1k participants', async () => {
+ const report = {...createRandomReport(1), type: CONST.REPORT.TYPE.CHAT, chatType: CONST.REPORT.CHAT_TYPE.POLICY_EXPENSE_CHAT, isOwnPolicyExpenseChat: true};
+ const policy = createRandomPolicy(1);
+ const reportParticipants = Array.from({length: 1000}, (v, i) => i + 1);
- await Onyx.multiSet({
- ...mockedPoliciesMap,
+ await waitForBatchedUpdates();
+ await measureFunction(() => ReportUtils.getMoneyRequestOptions(report, policy, reportParticipants), {runs});
});
- await waitForBatchedUpdates();
- await measureFunction(() => ReportUtils.getWorkspaceAvatar(report), {runs});
-});
-test('[ReportUtils] getWorkspaceChat on 5k policies', async () => {
- const policyID = '1';
- const accountsID = Array.from({length: 20}, (v, i) => i + 1);
+ test('[ReportUtils] getWorkspaceAvatar on 5k policies', async () => {
+ const report = createRandomReport(1);
- await Onyx.multiSet({
- ...mockedReportsMap,
+ await waitForBatchedUpdates();
+ await measureFunction(() => ReportUtils.getWorkspaceAvatar(report), {runs});
});
- await waitForBatchedUpdates();
- await measureFunction(() => ReportUtils.getWorkspaceChats(policyID, accountsID), {runs});
-});
-
-test('[ReportUtils] getTransactionDetails on 5k reports', async () => {
- const transaction = createRandomTransaction(1);
+ test('[ReportUtils] getWorkspaceChat on 5k policies', async () => {
+ const policyID = '1';
+ const accountsID = Array.from({length: 20}, (v, i) => i + 1);
- await Onyx.multiSet({
- ...mockedReportsMap,
+ await waitForBatchedUpdates();
+ await measureFunction(() => ReportUtils.getWorkspaceChats(policyID, accountsID), {runs});
});
- await waitForBatchedUpdates();
- await measureFunction(() => ReportUtils.getTransactionDetails(transaction, 'yyyy-MM-dd'), {runs});
-});
+ test('[ReportUtils] getTransactionDetails on 5k reports', async () => {
+ const transaction = createRandomTransaction(1);
+
+ await waitForBatchedUpdates();
+ await measureFunction(() => ReportUtils.getTransactionDetails(transaction, 'yyyy-MM-dd'), {runs});
+ });
-test('[ReportUtils] getIOUReportActionDisplayMessage on 5k policies', async () => {
- const reportAction = {
- ...createRandomReportAction(1),
- actionName: CONST.REPORT.ACTIONS.TYPE.IOU,
- originalMessage: {
- IOUReportID: '1',
- IOUTransactionID: '1',
- amount: 100,
- participantAccountID: 1,
- currency: CONST.CURRENCY.USD,
- type: CONST.IOU.REPORT_ACTION_TYPE.PAY,
- paymentType: CONST.IOU.PAYMENT_TYPE.EXPENSIFY,
- },
- };
-
- await Onyx.multiSet({
- ...mockedPoliciesMap,
- });
-
- await waitForBatchedUpdates();
- await measureFunction(() => ReportUtils.getIOUReportActionDisplayMessage(reportAction), {runs});
+ test('[ReportUtils] getIOUReportActionDisplayMessage on 5k policies', async () => {
+ const reportAction = {
+ ...createRandomReportAction(1),
+ actionName: CONST.REPORT.ACTIONS.TYPE.IOU,
+ originalMessage: {
+ IOUReportID: '1',
+ IOUTransactionID: '1',
+ amount: 100,
+ participantAccountID: 1,
+ currency: CONST.CURRENCY.USD,
+ type: CONST.IOU.REPORT_ACTION_TYPE.PAY,
+ paymentType: CONST.IOU.PAYMENT_TYPE.EXPENSIFY,
+ },
+ };
+
+ await waitForBatchedUpdates();
+ await measureFunction(() => ReportUtils.getIOUReportActionDisplayMessage(reportAction), {runs});
+ });
});
diff --git a/tests/perf-test/SelectionList.perf-test.js b/tests/perf-test/SelectionList.perf-test.js
index 355449b962f3..b9f05c33e925 100644
--- a/tests/perf-test/SelectionList.perf-test.js
+++ b/tests/perf-test/SelectionList.perf-test.js
@@ -138,6 +138,8 @@ test('[SelectionList] should scroll and select a few items', () => {
const scenario = (screen) => {
fireEvent.press(screen.getByText('Item 1'));
+ // see https://github.com/callstack/react-native-testing-library/issues/1540
+ fireEvent(screen.getByTestId('selection-list'), 'onContentSizeChange', eventData.nativeEvent.contentSize.width, eventData.nativeEvent.contentSize.height);
fireEvent.scroll(screen.getByTestId('selection-list'), eventData);
fireEvent.press(screen.getByText('Item 7'));
fireEvent.press(screen.getByText('Item 15'));
diff --git a/tests/perf-test/SidebarLinks.perf-test.js b/tests/perf-test/SidebarLinks.perf-test.js
index 1f529b08e6b3..1bc674045c23 100644
--- a/tests/perf-test/SidebarLinks.perf-test.js
+++ b/tests/perf-test/SidebarLinks.perf-test.js
@@ -15,25 +15,6 @@ jest.mock('../../src/components/Icon/Expensicons');
jest.mock('@react-navigation/native');
-beforeAll(() =>
- Onyx.init({
- keys: ONYXKEYS,
- safeEvictionKeys: [ONYXKEYS.COLLECTION.REPORT_ACTIONS],
- registerStorageEventListener: () => {},
- }),
-);
-
-// Initialize the network key for OfflineWithFeedback
-beforeEach(() => {
- wrapOnyxWithWaitForBatchedUpdates(Onyx);
- return Onyx.merge(ONYXKEYS.NETWORK, {isOffline: false});
-});
-
-// Clear out Onyx after each test so that each test starts with a clean slate
-afterEach(() => {
- Onyx.clear();
-});
-
const getMockedReportsMap = (length = 100) => {
const mockReports = Array.from({length}, (__, i) => {
const reportID = i + 1;
@@ -51,71 +32,81 @@ const mockedResponseMap = getMockedReportsMap(500);
const runs = CONST.PERFORMANCE_TESTS.RUNS;
-test('[SidebarLinks] should render Sidebar with 500 reports stored', () => {
- const scenario = async () => {
- // Query for the sidebar
- await screen.findByTestId('lhn-options-list');
- /**
- * Query for display names of participants [1, 2].
- * This will ensure that the sidebar renders a list of items.
- */
- await screen.findAllByText('One, Two');
- };
-
- return waitForBatchedUpdates()
- .then(() =>
- Onyx.multiSet({
- [ONYXKEYS.NVP_PRIORITY_MODE]: CONST.PRIORITY_MODE.DEFAULT,
- [ONYXKEYS.PERSONAL_DETAILS_LIST]: LHNTestUtils.fakePersonalDetails,
- [ONYXKEYS.BETAS]: [CONST.BETAS.DEFAULT_ROOMS],
- [ONYXKEYS.NVP_PRIORITY_MODE]: CONST.PRIORITY_MODE.GSD,
- [ONYXKEYS.IS_LOADING_REPORT_DATA]: false,
- ...mockedResponseMap,
- }),
- )
- .then(() => measurePerformance(, {scenario, runs}));
-});
+describe('SidebarLinks', () => {
+ beforeAll(() => {
+ Onyx.init({
+ keys: ONYXKEYS,
+ safeEvictionKeys: [ONYXKEYS.COLLECTION.REPORT_ACTIONS],
+ registerStorageEventListener: () => {},
+ });
+
+ Onyx.multiSet({
+ [ONYXKEYS.NVP_PRIORITY_MODE]: CONST.PRIORITY_MODE.DEFAULT,
+ [ONYXKEYS.PERSONAL_DETAILS_LIST]: LHNTestUtils.fakePersonalDetails,
+ [ONYXKEYS.BETAS]: [CONST.BETAS.DEFAULT_ROOMS],
+ [ONYXKEYS.NVP_PRIORITY_MODE]: CONST.PRIORITY_MODE.GSD,
+ [ONYXKEYS.IS_LOADING_REPORT_DATA]: false,
+ ...mockedResponseMap,
+ });
+ });
-test('[SidebarLinks] should scroll and click some of the items', () => {
- const scenario = async () => {
- const eventData = {
- nativeEvent: {
- contentOffset: {
- y: variables.optionRowHeight * 5,
- },
- contentSize: {
- // Dimensions of the scrollable content
- height: variables.optionRowHeight * 10,
- width: 100,
- },
- layoutMeasurement: {
- // Dimensions of the device
- height: variables.optionRowHeight * 5,
- width: 100,
+ // Initialize the network key for OfflineWithFeedback
+ beforeEach(() => {
+ wrapOnyxWithWaitForBatchedUpdates(Onyx);
+ return Onyx.merge(ONYXKEYS.NETWORK, {isOffline: false});
+ });
+
+ afterAll(() => {
+ Onyx.clear();
+ });
+
+ test('[SidebarLinks] should render Sidebar with 500 reports stored', async () => {
+ const scenario = async () => {
+ // Query for the sidebar
+ await screen.findByTestId('lhn-options-list');
+ /**
+ * Query for display names of participants [1, 2].
+ * This will ensure that the sidebar renders a list of items.
+ */
+ await screen.findAllByText('One, Two');
+ };
+
+ await waitForBatchedUpdates();
+ await measurePerformance(, {scenario, runs});
+ });
+
+ test('[SidebarLinks] should scroll and click some of the items', async () => {
+ const scenario = async () => {
+ const eventData = {
+ nativeEvent: {
+ contentOffset: {
+ y: variables.optionRowHeight * 5,
+ },
+ contentSize: {
+ // Dimensions of the scrollable content
+ height: variables.optionRowHeight * 10,
+ width: 100,
+ },
+ layoutMeasurement: {
+ // Dimensions of the device
+ height: variables.optionRowHeight * 5,
+ width: 100,
+ },
},
- },
+ };
+
+ const lhnOptionsList = await screen.findByTestId('lhn-options-list');
+
+ fireEvent.scroll(lhnOptionsList, eventData);
+ // find elements that are currently visible in the viewport
+ const button1 = await screen.findByTestId('7');
+ const button2 = await screen.findByTestId('8');
+ fireEvent.press(button1);
+ fireEvent.press(button2);
};
- const lhnOptionsList = await screen.findByTestId('lhn-options-list');
-
- fireEvent.scroll(lhnOptionsList, eventData);
- // find elements that are currently visible in the viewport
- const button1 = await screen.findByTestId('7');
- const button2 = await screen.findByTestId('8');
- fireEvent.press(button1);
- fireEvent.press(button2);
- };
-
- return waitForBatchedUpdates()
- .then(() =>
- Onyx.multiSet({
- [ONYXKEYS.NVP_PRIORITY_MODE]: CONST.PRIORITY_MODE.DEFAULT,
- [ONYXKEYS.PERSONAL_DETAILS_LIST]: LHNTestUtils.fakePersonalDetails,
- [ONYXKEYS.BETAS]: [CONST.BETAS.DEFAULT_ROOMS],
- [ONYXKEYS.NVP_PRIORITY_MODE]: CONST.PRIORITY_MODE.GSD,
- [ONYXKEYS.IS_LOADING_REPORT_DATA]: false,
- ...mockedResponseMap,
- }),
- )
- .then(() => measurePerformance(, {scenario, runs}));
+ await waitForBatchedUpdates();
+
+ await measurePerformance(, {scenario, runs});
+ });
});
diff --git a/tests/perf-test/SidebarUtils.perf-test.ts b/tests/perf-test/SidebarUtils.perf-test.ts
index 6722cbf493a5..6ca81796d3ac 100644
--- a/tests/perf-test/SidebarUtils.perf-test.ts
+++ b/tests/perf-test/SidebarUtils.perf-test.ts
@@ -15,18 +15,6 @@ import createRandomReportAction from '../utils/collections/reportActions';
import createRandomReport from '../utils/collections/reports';
import waitForBatchedUpdates from '../utils/waitForBatchedUpdates';
-beforeAll(() =>
- Onyx.init({
- keys: ONYXKEYS,
- safeEvictionKeys: [ONYXKEYS.COLLECTION.REPORT_ACTIONS],
- }),
-);
-
-// Clear out Onyx after each test so that each test starts with a clean slate
-afterEach(() => {
- Onyx.clear();
-});
-
const getMockedReports = (length = 500) =>
createCollection(
(item) => `${ONYXKEYS.COLLECTION.REPORT}${item.reportID}`,
@@ -47,52 +35,61 @@ const personalDetails = createCollection(
const mockedResponseMap = getMockedReports(5000) as Record<`${typeof ONYXKEYS.COLLECTION.REPORT}`, Report>;
const runs = CONST.PERFORMANCE_TESTS.RUNS;
-test('[SidebarUtils] getOptionData on 5k reports', async () => {
- const report = createRandomReport(1);
- const preferredLocale = 'en';
- const policy = createRandomPolicy(1);
- const parentReportAction = createRandomReportAction(1);
+describe('SidebarUtils', () => {
+ beforeAll(() => {
+ Onyx.init({
+ keys: ONYXKEYS,
+ safeEvictionKeys: [ONYXKEYS.COLLECTION.REPORT_ACTIONS],
+ });
- Onyx.multiSet({
- ...mockedResponseMap,
+ Onyx.multiSet({
+ ...mockedResponseMap,
+ });
});
- await waitForBatchedUpdates();
- await measureFunction(() => SidebarUtils.getOptionData(report, reportActions, personalDetails, preferredLocale, policy, parentReportAction), {runs});
-});
+ afterAll(() => {
+ Onyx.clear();
+ });
-test('[SidebarUtils] getOrderedReportIDs on 5k reports', async () => {
- const currentReportId = '1';
- const allReports = getMockedReports();
- const betas = [CONST.BETAS.DEFAULT_ROOMS];
+ test('[SidebarUtils] getOptionData on 5k reports', async () => {
+ const report = createRandomReport(1);
+ const preferredLocale = 'en';
+ const policy = createRandomPolicy(1);
+ const parentReportAction = createRandomReportAction(1);
- const policies = createCollection(
- (item) => `${ONYXKEYS.COLLECTION.POLICY}${item.id}`,
- (index) => createRandomPolicy(index),
- );
+ await waitForBatchedUpdates();
+ await measureFunction(() => SidebarUtils.getOptionData(report, reportActions, personalDetails, preferredLocale, policy, parentReportAction), {runs});
+ });
+
+ test('[SidebarUtils] getOrderedReportIDs on 5k reports', async () => {
+ const currentReportId = '1';
+ const allReports = getMockedReports();
+ const betas = [CONST.BETAS.DEFAULT_ROOMS];
- const allReportActions = Object.fromEntries(
- Object.keys(reportActions).map((key) => [
- key,
- [
- {
- errors: reportActions[key].errors ?? [],
- message: [
- {
- moderationDecision: {
- decision: reportActions[key].message?.[0]?.moderationDecision?.decision,
+ const policies = createCollection(
+ (item) => `${ONYXKEYS.COLLECTION.POLICY}${item.id}`,
+ (index) => createRandomPolicy(index),
+ );
+
+ const allReportActions = Object.fromEntries(
+ Object.keys(reportActions).map((key) => [
+ key,
+ [
+ {
+ errors: reportActions[key].errors ?? [],
+ message: [
+ {
+ moderationDecision: {
+ decision: reportActions[key].message?.[0]?.moderationDecision?.decision,
+ },
},
- },
- ],
- },
- ],
- ]),
- ) as unknown as OnyxCollection;
+ ],
+ },
+ ],
+ ]),
+ ) as unknown as OnyxCollection;
- Onyx.multiSet({
- ...mockedResponseMap,
+ await waitForBatchedUpdates();
+ await measureFunction(() => SidebarUtils.getOrderedReportIDs(currentReportId, allReports, betas, policies, CONST.PRIORITY_MODE.DEFAULT, allReportActions), {runs});
});
-
- await waitForBatchedUpdates();
- await measureFunction(() => SidebarUtils.getOrderedReportIDs(currentReportId, allReports, betas, policies, CONST.PRIORITY_MODE.DEFAULT, allReportActions), {runs});
});
diff --git a/tests/unit/MigrationTest.js b/tests/unit/MigrationTest.js
index ebffc71e4e0e..4a363d1de36b 100644
--- a/tests/unit/MigrationTest.js
+++ b/tests/unit/MigrationTest.js
@@ -51,8 +51,8 @@ describe('Migrations', () => {
it('Should remove any individual reportActions that have no data in Onyx', () =>
Onyx.multiSet({
[`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}1`]: {
- 1: null,
- 2: null,
+ 1: {},
+ 2: {},
},
})
.then(PersonalDetailsByAccountID)
diff --git a/tests/unit/ModifiedExpenseMessageTest.ts b/tests/unit/ModifiedExpenseMessageTest.ts
index 02990aa5c751..aedc02cc628b 100644
--- a/tests/unit/ModifiedExpenseMessageTest.ts
+++ b/tests/unit/ModifiedExpenseMessageTest.ts
@@ -275,5 +275,42 @@ describe('ModifiedExpenseMessage', () => {
expect(result).toEqual(expectedResult);
});
});
+
+ describe('when the created date is changed', () => {
+ const reportAction = {
+ ...createRandomReportAction(1),
+ actionName: CONST.REPORT.ACTIONS.TYPE.MODIFIEDEXPENSE,
+ originalMessage: {
+ created: '2023-12-27',
+ oldCreated: '2023-12-26',
+ },
+ };
+
+ it('returns the correct text message', () => {
+ const expectedResult = 'changed the date to 2023-12-27 (previously 2023-12-26).';
+
+ const result = ModifiedExpenseMessage.getForReportAction(reportAction);
+
+ expect(result).toEqual(expectedResult);
+ });
+ });
+
+ describe('when the created date was not changed', () => {
+ const reportAction = {
+ ...createRandomReportAction(1),
+ actionName: CONST.REPORT.ACTIONS.TYPE.MODIFIEDEXPENSE,
+ originalMessage: {
+ created: '2023-12-27',
+ },
+ };
+
+ it('returns the correct text message', () => {
+ const expectedResult = 'changed the request';
+
+ const result = ModifiedExpenseMessage.getForReportAction(reportAction);
+
+ expect(result).toEqual(expectedResult);
+ });
+ });
});
});
diff --git a/tests/unit/ReportActionsUtilsTest.js b/tests/unit/ReportActionsUtilsTest.js
index b8b6eb5e7673..19a89d1c892c 100644
--- a/tests/unit/ReportActionsUtilsTest.js
+++ b/tests/unit/ReportActionsUtilsTest.js
@@ -368,7 +368,7 @@ describe('ReportActionsUtils', () => {
callback: () => {
Onyx.disconnect(connectionID);
const res = ReportActionsUtils.getLastVisibleAction(report.reportID);
- expect(res).toBe(action2);
+ expect(res).toEqual(action2);
resolve();
},
});
diff --git a/tests/unit/ReportUtilsTest.js b/tests/unit/ReportUtilsTest.js
index d700aa4724f1..c9e8053e3146 100644
--- a/tests/unit/ReportUtilsTest.js
+++ b/tests/unit/ReportUtilsTest.js
@@ -149,8 +149,8 @@ describe('ReportUtils', () => {
test('Archived', () => {
const archivedAdminsRoom = {
...baseAdminsRoom,
- statusNum: CONST.REPORT.STATUS.CLOSED,
- stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.CLOSED,
+ stateNum: CONST.REPORT.STATE_NUM.APPROVED,
};
expect(ReportUtils.getReportName(archivedAdminsRoom)).toBe('#admins (archived)');
@@ -172,8 +172,8 @@ describe('ReportUtils', () => {
test('Archived', () => {
const archivedPolicyRoom = {
...baseUserCreatedRoom,
- statusNum: CONST.REPORT.STATUS.CLOSED,
- stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.CLOSED,
+ stateNum: CONST.REPORT.STATE_NUM.APPROVED,
};
expect(ReportUtils.getReportName(archivedPolicyRoom)).toBe('#VikingsChat (archived)');
@@ -213,8 +213,8 @@ describe('ReportUtils', () => {
ownerAccountID: 1,
policyID: policy.policyID,
oldPolicyName: policy.name,
- statusNum: CONST.REPORT.STATUS.CLOSED,
- stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.CLOSED,
+ stateNum: CONST.REPORT.STATE_NUM.APPROVED,
};
test('as member', () => {
@@ -307,7 +307,7 @@ describe('ReportUtils', () => {
managerID: currentUserAccountID,
isUnreadWithMention: false,
stateNum: CONST.REPORT.STATE_NUM.OPEN,
- statusNum: CONST.REPORT.STATUS.OPEN,
+ statusNum: CONST.REPORT.STATUS_NUM.OPEN,
};
expect(ReportUtils.requiresAttentionFromCurrentUser(report)).toBe(true);
});
@@ -368,7 +368,7 @@ describe('ReportUtils', () => {
const report = {
...LHNTestUtils.getFakeReport(),
type: CONST.REPORT.TYPE.IOU,
- statusNum: CONST.REPORT.STATUS.REIMBURSED,
+ statusNum: CONST.REPORT.STATUS_NUM.REIMBURSED,
};
const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(report, {}, [currentUserAccountID]);
expect(moneyRequestOptions.length).toBe(0);
@@ -378,8 +378,8 @@ describe('ReportUtils', () => {
const report = {
...LHNTestUtils.getFakeReport(),
type: CONST.REPORT.TYPE.EXPENSE,
- stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
- statusNum: CONST.REPORT.STATUS.APPROVED,
+ stateNum: CONST.REPORT.STATE_NUM.APPROVED,
+ statusNum: CONST.REPORT.STATUS_NUM.APPROVED,
};
const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(report, {}, [currentUserAccountID]);
expect(moneyRequestOptions.length).toBe(0);
@@ -389,7 +389,7 @@ describe('ReportUtils', () => {
const report = {
...LHNTestUtils.getFakeReport(),
type: CONST.REPORT.TYPE.EXPENSE,
- statusNum: CONST.REPORT.STATUS.REIMBURSED,
+ statusNum: CONST.REPORT.STATUS_NUM.REIMBURSED,
};
const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(report, {}, [currentUserAccountID]);
expect(moneyRequestOptions.length).toBe(0);
@@ -419,8 +419,8 @@ describe('ReportUtils', () => {
const report = {
...LHNTestUtils.getFakeReport(),
type: CONST.REPORT.TYPE.EXPENSE,
- stateNum: CONST.REPORT.STATE_NUM.PROCESSING,
- statusNum: CONST.REPORT.STATUS.SUBMITTED,
+ stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.SUBMITTED,
parentReportID: '101',
};
const paidPolicy = {
@@ -508,7 +508,7 @@ describe('ReportUtils', () => {
...LHNTestUtils.getFakeReport(),
type: CONST.REPORT.TYPE.EXPENSE,
stateNum: CONST.REPORT.STATE_NUM.OPEN,
- statusNum: CONST.REPORT.STATUS.OPEN,
+ statusNum: CONST.REPORT.STATUS_NUM.OPEN,
parentReportID: '103',
};
const paidPolicy = {
@@ -523,9 +523,8 @@ describe('ReportUtils', () => {
const report = {
...LHNTestUtils.getFakeReport(),
type: CONST.REPORT.TYPE.IOU,
- state: CONST.REPORT.STATE.SUBMITTED,
- stateNum: CONST.REPORT.STATE_NUM.PROCESSING,
- statusNum: CONST.REPORT.STATUS.SUBMITTED,
+ stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.SUBMITTED,
};
const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(report, {}, [currentUserAccountID, participantsAccountIDs[0]]);
expect(moneyRequestOptions.length).toBe(1);
@@ -536,9 +535,8 @@ describe('ReportUtils', () => {
const report = {
...LHNTestUtils.getFakeReport(),
type: CONST.REPORT.TYPE.IOU,
- state: CONST.REPORT.STATE.SUBMITTED,
- stateNum: CONST.REPORT.STATE_NUM.PROCESSING,
- statusNum: CONST.REPORT.STATUS.SUBMITTED,
+ stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.SUBMITTED,
};
const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(report, {}, [currentUserAccountID, participantsAccountIDs[0]]);
expect(moneyRequestOptions.length).toBe(1);
diff --git a/tests/unit/SidebarFilterTest.js b/tests/unit/SidebarFilterTest.js
index 088e5a1af4d0..83ccf3e92752 100644
--- a/tests/unit/SidebarFilterTest.js
+++ b/tests/unit/SidebarFilterTest.js
@@ -457,20 +457,20 @@ describe('Sidebar', () => {
// Given an archived chat report, an archived default policy room, and an archived user created policy room
const archivedReport = {
...LHNTestUtils.getFakeReport([1, 2]),
- statusNum: CONST.REPORT.STATUS.CLOSED,
- stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.CLOSED,
+ stateNum: CONST.REPORT.STATE_NUM.APPROVED,
};
const archivedPolicyRoomReport = {
...LHNTestUtils.getFakeReport([1, 2]),
chatType: CONST.REPORT.CHAT_TYPE.POLICY_ANNOUNCE,
- statusNum: CONST.REPORT.STATUS.CLOSED,
- stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.CLOSED,
+ stateNum: CONST.REPORT.STATE_NUM.APPROVED,
};
const archivedUserCreatedPolicyRoomReport = {
...LHNTestUtils.getFakeReport([1, 2]),
chatType: CONST.REPORT.CHAT_TYPE.POLICY_ROOM,
- statusNum: CONST.REPORT.STATUS.CLOSED,
- stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.CLOSED,
+ stateNum: CONST.REPORT.STATE_NUM.APPROVED,
};
LHNTestUtils.getDefaultRenderedSidebarLinks();
@@ -681,8 +681,8 @@ describe('Sidebar', () => {
const report = {
...LHNTestUtils.getFakeReport(),
lastVisibleActionCreated: '2022-11-22 03:48:27.267',
- statusNum: CONST.REPORT.STATUS.CLOSED,
- stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.CLOSED,
+ stateNum: CONST.REPORT.STATE_NUM.APPROVED,
};
// Given the user is in all betas
@@ -732,8 +732,8 @@ describe('Sidebar', () => {
// Given an archived report that has all comments read
const report = {
...LHNTestUtils.getFakeReport(),
- statusNum: CONST.REPORT.STATUS.CLOSED,
- stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.CLOSED,
+ stateNum: CONST.REPORT.STATE_NUM.APPROVED,
};
// Given the user is in all betas
@@ -781,8 +781,8 @@ describe('Sidebar', () => {
const report = {
...LHNTestUtils.getFakeReport(),
isPinned: false,
- statusNum: CONST.REPORT.STATUS.CLOSED,
- stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.CLOSED,
+ stateNum: CONST.REPORT.STATE_NUM.APPROVED,
};
// Given the user is in all betas
@@ -826,8 +826,8 @@ describe('Sidebar', () => {
// Given an archived report that is not the active report
const report = {
...LHNTestUtils.getFakeReport(),
- statusNum: CONST.REPORT.STATUS.CLOSED,
- stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.CLOSED,
+ stateNum: CONST.REPORT.STATE_NUM.APPROVED,
};
// Given the user is in all betas
diff --git a/tests/unit/SidebarOrderTest.js b/tests/unit/SidebarOrderTest.js
index 4d49cb3ad516..ed50c32559a7 100644
--- a/tests/unit/SidebarOrderTest.js
+++ b/tests/unit/SidebarOrderTest.js
@@ -255,7 +255,7 @@ describe('Sidebar', () => {
reportName: taskReportName,
managerID: 2,
stateNum: CONST.REPORT.STATE_NUM.OPEN,
- statusNum: CONST.REPORT.STATUS.OPEN,
+ statusNum: CONST.REPORT.STATUS_NUM.OPEN,
};
// Each report has at least one ADDCOMMENT action so should be rendered in the LNH
@@ -313,8 +313,8 @@ describe('Sidebar', () => {
total: 10000,
currency: 'USD',
chatReportID: report3.reportID,
- stateNum: CONST.REPORT.STATE_NUM.PROCESSING,
- statusNum: CONST.REPORT.STATUS.SUBMITTED,
+ stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.SUBMITTED,
};
report3.iouReportID = iouReport.reportID;
@@ -374,9 +374,8 @@ describe('Sidebar', () => {
policyName: 'Workspace',
total: -10000,
currency: 'USD',
- state: CONST.REPORT.STATE.SUBMITTED,
- stateNum: CONST.REPORT.STATE_NUM.PROCESSING,
- statusNum: CONST.REPORT.STATUS.SUBMITTED,
+ stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.SUBMITTED,
chatReportID: report3.reportID,
parentReportID: report3.reportID,
};
@@ -575,9 +574,8 @@ describe('Sidebar', () => {
total: 10000,
currency: 'USD',
chatReportID: report3.reportID,
- state: CONST.REPORT.STATE.SUBMITTED,
- stateNum: CONST.REPORT.STATE_NUM.PROCESSING,
- statusNum: CONST.REPORT.STATUS.SUBMITTED,
+ stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.SUBMITTED,
};
report3.iouReportID = iouReport.reportID;
const currentReportId = report2.reportID;
@@ -740,8 +738,8 @@ describe('Sidebar', () => {
const report1 = {
...LHNTestUtils.getFakeReport([1, 2]),
chatType: CONST.REPORT.CHAT_TYPE.POLICY_ROOM,
- statusNum: CONST.REPORT.STATUS.CLOSED,
- stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.CLOSED,
+ stateNum: CONST.REPORT.STATE_NUM.APPROVED,
};
const report2 = LHNTestUtils.getFakeReport([3, 4]);
const report3 = LHNTestUtils.getFakeReport([5, 6]);
@@ -837,8 +835,8 @@ describe('Sidebar', () => {
const report1 = {
...LHNTestUtils.getFakeReport([1, 2], 3, true),
chatType: CONST.REPORT.CHAT_TYPE.POLICY_ROOM,
- statusNum: CONST.REPORT.STATUS.CLOSED,
- stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.CLOSED,
+ stateNum: CONST.REPORT.STATE_NUM.APPROVED,
};
const report2 = LHNTestUtils.getFakeReport([3, 4], 2, true);
const report3 = LHNTestUtils.getFakeReport([5, 6], 1, true);
@@ -914,8 +912,8 @@ describe('Sidebar', () => {
total: 10000,
currency: 'USD',
chatReportID: report3.reportID,
- stateNum: CONST.REPORT.STATE_NUM.PROCESSING,
- statusNum: CONST.REPORT.STATUS.SUBMITTED,
+ stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.SUBMITTED,
};
const iouReport2 = {
...LHNTestUtils.getFakeReport([9, 10]),
@@ -926,8 +924,8 @@ describe('Sidebar', () => {
total: 10000,
currency: 'USD',
chatReportID: report3.reportID,
- stateNum: CONST.REPORT.STATE_NUM.PROCESSING,
- statusNum: CONST.REPORT.STATUS.SUBMITTED,
+ stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.SUBMITTED,
};
const iouReport3 = {
...LHNTestUtils.getFakeReport([11, 12]),
@@ -938,8 +936,8 @@ describe('Sidebar', () => {
total: 100000,
currency: 'USD',
chatReportID: report3.reportID,
- stateNum: CONST.REPORT.STATE_NUM.PROCESSING,
- statusNum: CONST.REPORT.STATUS.SUBMITTED,
+ stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.SUBMITTED,
};
const iouReport4 = {
...LHNTestUtils.getFakeReport([11, 12]),
@@ -950,8 +948,8 @@ describe('Sidebar', () => {
total: 10000,
currency: 'USD',
chatReportID: report3.reportID,
- stateNum: CONST.REPORT.STATE_NUM.PROCESSING,
- statusNum: CONST.REPORT.STATUS.SUBMITTED,
+ stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.SUBMITTED,
};
const iouReport5 = {
...LHNTestUtils.getFakeReport([11, 12]),
@@ -962,8 +960,8 @@ describe('Sidebar', () => {
total: 10000,
currency: 'USD',
chatReportID: report3.reportID,
- stateNum: CONST.REPORT.STATE_NUM.PROCESSING,
- statusNum: CONST.REPORT.STATUS.SUBMITTED,
+ stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.SUBMITTED,
};
report1.iouReportID = iouReport1.reportID;
diff --git a/tests/unit/SidebarTest.js b/tests/unit/SidebarTest.js
index 56009ee382d5..1101c5732707 100644
--- a/tests/unit/SidebarTest.js
+++ b/tests/unit/SidebarTest.js
@@ -51,8 +51,8 @@ describe('Sidebar', () => {
const report = {
...LHNTestUtils.getFakeReport(['email1@test.com', 'email2@test.com'], 3, true),
chatType: CONST.REPORT.CHAT_TYPE.POLICY_ROOM,
- statusNum: CONST.REPORT.STATUS.CLOSED,
- stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.CLOSED,
+ stateNum: CONST.REPORT.STATE_NUM.APPROVED,
};
// Given the user is in all betas
@@ -86,8 +86,8 @@ describe('Sidebar', () => {
...LHNTestUtils.getFakeReport(['email1@test.com', 'email2@test.com'], 3, true),
policyName: 'Vikings Policy',
chatType: CONST.REPORT.CHAT_TYPE.POLICY_ROOM,
- statusNum: CONST.REPORT.STATUS.CLOSED,
- stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
+ statusNum: CONST.REPORT.STATUS_NUM.CLOSED,
+ stateNum: CONST.REPORT.STATE_NUM.APPROVED,
};
const action = {
...LHNTestUtils.getFakeReportAction('email1@test.com', 3, true),
diff --git a/tests/utils/LHNTestUtils.js b/tests/utils/LHNTestUtils.js
index 535fb018dbc3..900a7852c92d 100644
--- a/tests/utils/LHNTestUtils.js
+++ b/tests/utils/LHNTestUtils.js
@@ -209,8 +209,8 @@ function getAdvancedFakeReport(isArchived, isUserCreatedPolicyRoom, hasAddWorksp
...getFakeReport([1, 2], 0, isUnread),
type: CONST.REPORT.TYPE.CHAT,
chatType: isUserCreatedPolicyRoom ? CONST.REPORT.CHAT_TYPE.POLICY_ROOM : CONST.REPORT.CHAT_TYPE.POLICY_ADMINS,
- statusNum: isArchived ? CONST.REPORT.STATUS.CLOSED : 0,
- stateNum: isArchived ? CONST.REPORT.STATE_NUM.SUBMITTED : 0,
+ statusNum: isArchived ? CONST.REPORT.STATUS_NUM.CLOSED : 0,
+ stateNum: isArchived ? CONST.REPORT.STATE_NUM.APPROVED : 0,
errorFields: hasAddWorkspaceError ? {addWorkspaceRoom: 'blah'} : null,
isPinned,
hasDraft,
diff --git a/web/index.html b/web/index.html
index 967873fe586c..7c02614d17b2 100644
--- a/web/index.html
+++ b/web/index.html
@@ -96,6 +96,11 @@
caret-color: #ffffff;
}
+ /* Customize Plaid iframe */
+ [id^="plaid-link-iframe"] {
+ color-scheme: dark !important;
+ }
+
/* Prevent autofill from overlapping with the input label in Chrome */
div:has(input:-webkit-autofill, input[chrome-autofilled]) > label {
transform: translateY(var(--active-label-translate-y)) scale(var(--active-label-scale)) !important;