diff --git a/.github/actions/javascript/authorChecklist/index.js b/.github/actions/javascript/authorChecklist/index.js index f207a49f0d55c..6fb947077e248 100644 --- a/.github/actions/javascript/authorChecklist/index.js +++ b/.github/actions/javascript/authorChecklist/index.js @@ -16351,7 +16351,7 @@ function highlight(text) { let deprecationWarningShown = false; const NEWLINE = /\r\n|[\n\r\u2028\u2029]/; -function getMarkerLines(loc, source, opts) { +function getMarkerLines(loc, source, opts, startLineBaseZero) { const startLoc = Object.assign({ column: 0, line: -1 @@ -16361,9 +16361,9 @@ function getMarkerLines(loc, source, opts) { linesAbove = 2, linesBelow = 3 } = opts || {}; - const startLine = startLoc.line; + const startLine = startLoc.line - startLineBaseZero; const startColumn = startLoc.column; - const endLine = endLoc.line; + const endLine = endLoc.line - startLineBaseZero; const endColumn = endLoc.column; let start = Math.max(startLine - (linesAbove + 1), 0); let end = Math.min(source.length, endLine + linesBelow); @@ -16409,19 +16409,20 @@ function getMarkerLines(loc, source, opts) { } function codeFrameColumns(rawLines, loc, opts = {}) { const shouldHighlight = opts.forceColor || isColorSupported() && opts.highlightCode; + const startLineBaseZero = (opts.startLine || 1) - 1; const defs = getDefs(shouldHighlight); const lines = rawLines.split(NEWLINE); const { start, end, markerLines - } = getMarkerLines(loc, lines, opts); + } = getMarkerLines(loc, lines, opts, startLineBaseZero); const hasColumns = loc.start && typeof loc.start.column === "number"; - const numberMaxWidth = String(end).length; + const numberMaxWidth = String(end + startLineBaseZero).length; const highlightedLines = shouldHighlight ? highlight(rawLines) : rawLines; let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => { const number = start + 1 + index; - const paddedNumber = ` ${number}`.slice(-numberMaxWidth); + const paddedNumber = ` ${number + startLineBaseZero}`.slice(-numberMaxWidth); const gutter = ` ${paddedNumber} |`; const hasMarker = markerLines[number]; const lastMarkerLine = !markerLines[number + 1]; @@ -16489,6 +16490,10 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; +const spaceIndents = []; +for (let i = 0; i < 32; i++) { + spaceIndents.push(" ".repeat(i * 2)); +} class Buffer { constructor(map, indentChar) { this._map = null; @@ -16496,11 +16501,9 @@ class Buffer { this._str = ""; this._appendCount = 0; this._last = 0; - this._queue = []; - this._queueCursor = 0; this._canMarkIdName = true; this._indentChar = ""; - this._fastIndentations = []; + this._queuedChar = 0; this._position = { line: 1, column: 0 @@ -16514,55 +16517,32 @@ class Buffer { }; this._map = map; this._indentChar = indentChar; - for (let i = 0; i < 64; i++) { - this._fastIndentations.push(indentChar.repeat(i)); - } - this._allocQueue(); - } - _allocQueue() { - const queue = this._queue; - for (let i = 0; i < 16; i++) { - queue.push({ - char: 0, - repeat: 1, - line: undefined, - column: undefined, - identifierName: undefined, - identifierNamePos: undefined, - filename: "" - }); - } } - _pushQueue(char, repeat, line, column, filename) { - const cursor = this._queueCursor; - if (cursor === this._queue.length) { - this._allocQueue(); + get() { + const { + _map, + _last + } = this; + if (this._queuedChar !== 32) { + this._flush(); } - const item = this._queue[cursor]; - item.char = char; - item.repeat = repeat; - item.line = line; - item.column = column; - item.filename = filename; - this._queueCursor++; - } - _popQueue() { - if (this._queueCursor === 0) { - throw new Error("Cannot pop from empty queue"); + const code = _last === 10 ? (this._buf + this._str).trimRight() : this._buf + this._str; + if (_map === null) { + return { + code: code, + decodedMap: undefined, + map: null, + rawMappings: undefined + }; } - return this._queue[--this._queueCursor]; - } - get() { - this._flush(); - const map = this._map; const result = { - code: (this._buf + this._str).trimRight(), - decodedMap: map == null ? void 0 : map.getDecoded(), + code: code, + decodedMap: _map.getDecoded(), get __mergedMap() { return this.map; }, get map() { - const resultMap = map ? map.get() : null; + const resultMap = _map.get(); result.map = resultMap; return resultMap; }, @@ -16573,7 +16553,7 @@ class Buffer { }); }, get rawMappings() { - const mappings = map == null ? void 0 : map.getRawMappings(); + const mappings = _map.getRawMappings(); result.rawMappings = mappings; return mappings; }, @@ -16588,66 +16568,57 @@ class Buffer { } append(str, maybeNewline) { this._flush(); - this._append(str, this._sourcePosition, maybeNewline); + this._append(str, maybeNewline); } appendChar(char) { this._flush(); - this._appendChar(char, 1, this._sourcePosition); + this._appendChar(char, 1, true); } queue(char) { - if (char === 10) { - while (this._queueCursor !== 0) { - const char = this._queue[this._queueCursor - 1].char; - if (char !== 32 && char !== 9) { - break; - } - this._queueCursor--; - } - } - const sourcePosition = this._sourcePosition; - this._pushQueue(char, 1, sourcePosition.line, sourcePosition.column, sourcePosition.filename); - } - queueIndentation(repeat) { - if (repeat === 0) return; - this._pushQueue(-1, repeat, undefined, undefined, undefined); + this._flush(); + this._queuedChar = char; } _flush() { - const queueCursor = this._queueCursor; - const queue = this._queue; - for (let i = 0; i < queueCursor; i++) { - const item = queue[i]; - this._appendChar(item.char, item.repeat, item); + const queuedChar = this._queuedChar; + if (queuedChar !== 0) { + this._appendChar(queuedChar, 1, true); + this._queuedChar = 0; } - this._queueCursor = 0; } - _appendChar(char, repeat, sourcePos) { + _appendChar(char, repeat, useSourcePos) { this._last = char; if (char === -1) { - const fastIndentation = this._fastIndentations[repeat]; - if (fastIndentation !== undefined) { - this._str += fastIndentation; - } else { - this._str += repeat > 1 ? this._indentChar.repeat(repeat) : this._indentChar; - } + const indent = repeat >= 64 ? this._indentChar.repeat(repeat) : spaceIndents[repeat / 2]; + this._str += indent; } else { this._str += repeat > 1 ? String.fromCharCode(char).repeat(repeat) : String.fromCharCode(char); } + const isSpace = char === 32; + const position = this._position; if (char !== 10) { - this._mark(sourcePos.line, sourcePos.column, sourcePos.identifierName, sourcePos.identifierNamePos, sourcePos.filename); - this._position.column += repeat; + if (this._map) { + const sourcePos = this._sourcePosition; + if (useSourcePos && sourcePos) { + this._map.mark(position, sourcePos.line, sourcePos.column, isSpace ? undefined : sourcePos.identifierName, isSpace ? undefined : sourcePos.identifierNamePos, sourcePos.filename); + if (!isSpace && this._canMarkIdName) { + sourcePos.identifierName = undefined; + sourcePos.identifierNamePos = undefined; + } + } else { + this._map.mark(position); + } + } + position.column += repeat; } else { - this._position.line++; - this._position.column = 0; - } - if (this._canMarkIdName) { - sourcePos.identifierName = undefined; - sourcePos.identifierNamePos = undefined; + position.line++; + position.column = 0; } } - _append(str, sourcePos, maybeNewline) { + _append(str, maybeNewline) { const len = str.length; const position = this._position; - this._last = str.charCodeAt(len - 1); + const sourcePos = this._sourcePosition; + this._last = -1; if (++this._appendCount > 4096) { +this._str; this._buf += this._str; @@ -16656,7 +16627,8 @@ class Buffer { } else { this._str += str; } - if (!maybeNewline && !this._map) { + const hasMap = this._map !== null; + if (!maybeNewline && !hasMap) { position.column += len; return; } @@ -16673,67 +16645,40 @@ class Buffer { } let i = str.indexOf("\n"); let last = 0; - if (i !== 0) { - this._mark(line, column, identifierName, identifierNamePos, filename); + if (hasMap && i !== 0) { + this._map.mark(position, line, column, identifierName, identifierNamePos, filename); } while (i !== -1) { position.line++; position.column = 0; last = i + 1; if (last < len && line !== undefined) { - this._mark(++line, 0, undefined, undefined, filename); + line++; + if (hasMap) { + this._map.mark(position, line, 0, undefined, undefined, filename); + } } i = str.indexOf("\n", last); } position.column += len - last; } - _mark(line, column, identifierName, identifierNamePos, filename) { - var _this$_map; - (_this$_map = this._map) == null || _this$_map.mark(this._position, line, column, identifierName, identifierNamePos, filename); - } - removeTrailingNewline() { - const queueCursor = this._queueCursor; - if (queueCursor !== 0 && this._queue[queueCursor - 1].char === 10) { - this._queueCursor--; - } - } removeLastSemicolon() { - const queueCursor = this._queueCursor; - if (queueCursor !== 0 && this._queue[queueCursor - 1].char === 59) { - this._queueCursor--; + if (this._queuedChar === 59) { + this._queuedChar = 0; } } - getLastChar() { - const queueCursor = this._queueCursor; - return queueCursor !== 0 ? this._queue[queueCursor - 1].char : this._last; - } - getNewlineCount() { - const queueCursor = this._queueCursor; - let count = 0; - if (queueCursor === 0) return this._last === 10 ? 1 : 0; - for (let i = queueCursor - 1; i >= 0; i--) { - if (this._queue[i].char !== 10) { - break; - } - count++; + getLastChar(checkQueue) { + if (!checkQueue) { + return this._last; } - return count === queueCursor && this._last === 10 ? count + 1 : count; + const queuedChar = this._queuedChar; + return queuedChar !== 0 ? queuedChar : this._last; } - endsWithCharAndNewline() { - const queue = this._queue; - const queueCursor = this._queueCursor; - if (queueCursor !== 0) { - const lastCp = queue[queueCursor - 1].char; - if (lastCp !== 10) return; - if (queueCursor > 1) { - return queue[queueCursor - 2].char; - } else { - return this._last; - } - } + getNewlineCount() { + return this._queuedChar === 0 && this._last === 10 ? 1 : 0; } hasContent() { - return this._queueCursor !== 0 || !!this._last; + return this._last !== 0; } exactSource(loc, cb) { if (!this._map) { @@ -16743,12 +16688,12 @@ class Buffer { this.source("start", loc); const identifierName = loc.identifierName; const sourcePos = this._sourcePosition; - if (identifierName) { + if (identifierName != null) { this._canMarkIdName = false; sourcePos.identifierName = identifierName; } cb(); - if (identifierName) { + if (identifierName != null) { this._canMarkIdName = true; sourcePos.identifierName = undefined; sourcePos.identifierNamePos = undefined; @@ -16764,6 +16709,7 @@ class Buffer { this._normalizePosition(prop, loc, columnOffset); } _normalizePosition(prop, loc, columnOffset) { + this._flush(); const pos = loc[prop]; const target = this._sourcePosition; if (pos) { @@ -16773,28 +16719,10 @@ class Buffer { } } getCurrentColumn() { - const queue = this._queue; - const queueCursor = this._queueCursor; - let lastIndex = -1; - let len = 0; - for (let i = 0; i < queueCursor; i++) { - const item = queue[i]; - if (item.char === 10) { - lastIndex = len; - } - len += item.repeat; - } - return lastIndex === -1 ? this._position.column + len : len - 1 - lastIndex; + return this._position.column + (this._queuedChar ? 1 : 0); } getCurrentLine() { - let count = 0; - const queue = this._queue; - for (let i = 0; i < this._queueCursor; i++) { - if (queue[i].char === 10) { - count++; - } - } - return this._position.line + count; + return this._position.line; } } exports["default"] = Buffer; @@ -16828,13 +16756,12 @@ function File(node) { } function Program(node) { var _node$directives; - this.noIndentInnerCommentsHere(); - this.printInnerComments(); + this.printInnerComments(false); const directivesLen = (_node$directives = node.directives) == null ? void 0 : _node$directives.length; if (directivesLen) { var _node$directives$trai; const newline = node.body.length ? 2 : 1; - this.printSequence(node.directives, undefined, newline); + this.printSequence(node.directives, undefined, undefined, newline); if (!((_node$directives$trai = node.directives[directivesLen - 1].trailingComments) != null && _node$directives$trai.length)) { this.newline(newline); } @@ -16844,18 +16771,18 @@ function Program(node) { function BlockStatement(node) { var _node$directives2; this.tokenChar(123); - const exit = this.enterDelimited(); + const oldNoLineTerminatorAfterNode = this.enterDelimited(); const directivesLen = (_node$directives2 = node.directives) == null ? void 0 : _node$directives2.length; if (directivesLen) { var _node$directives$trai2; const newline = node.body.length ? 2 : 1; - this.printSequence(node.directives, true, newline); + this.printSequence(node.directives, true, true, newline); if (!((_node$directives$trai2 = node.directives[directivesLen - 1].trailingComments) != null && _node$directives$trai2.length)) { this.newline(newline); } } - this.printSequence(node.body, true); - exit(); + this.printSequence(node.body, true, true); + this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; this.rightBrace(node); } function Directive(node) { @@ -16883,7 +16810,7 @@ function DirectiveLiteral(node) { } function InterpreterDirective(node) { this.token(`#!${node.value}`); - this.newline(1, true); + this._newline(); } function Placeholder(node) { this.token("%%"); @@ -16918,13 +16845,17 @@ exports.ClassProperty = ClassProperty; exports.StaticBlock = StaticBlock; exports._classMethodHead = _classMethodHead; var _t = __nccwpck_require__(7912); +var _expressions = __nccwpck_require__(2961); +var _typescript = __nccwpck_require__(6140); +var _flow = __nccwpck_require__(5529); +var _methods = __nccwpck_require__(3208); const { isExportDefaultDeclaration, isExportNamedDeclaration } = _t; function ClassDeclaration(node, parent) { const inExport = isExportDefaultDeclaration(parent) || isExportNamedDeclaration(parent); - if (!inExport || !this._shouldPrintDecoratorsBeforeExport(parent)) { + if (!inExport || !_expressions._shouldPrintDecoratorsBeforeExport.call(this, parent)) { this.printJoin(node.decorators); } if (node.declare) { @@ -16962,12 +16893,11 @@ function ClassBody(node) { if (node.body.length === 0) { this.tokenChar(125); } else { - this.newline(); const separator = classBodyEmptySemicolonsPrinter(this, node); separator == null || separator(-1); - const exit = this.enterDelimited(); - this.printJoin(node.body, true, true, separator, true); - exit(); + const oldNoLineTerminatorAfterNode = this.enterDelimited(); + this.printJoin(node.body, true, true, separator, true, true); + this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; if (!this.endsWith(10)) this.newline(); this.rightBrace(node); } @@ -16995,7 +16925,7 @@ function classBodyEmptySemicolonsPrinter(printer, node) { const end = nextLocIndex === node.body.length ? node.end : node.body[nextLocIndex].start; let tok; while (k < indexes.length && printer.tokenMap.matchesOriginal(tok = printer._tokens[indexes[k]], ";") && tok.start < end) { - printer.token(";", undefined, occurrenceCount++); + printer.tokenChar(59, occurrenceCount++); k++; } }; @@ -17007,13 +16937,13 @@ function ClassProperty(node) { const endLine = (_node$key$loc = node.key.loc) == null || (_node$key$loc = _node$key$loc.end) == null ? void 0 : _node$key$loc.line; if (endLine) this.catchUp(endLine); } - this.tsPrintClassMemberModifiers(node); + _typescript._tsPrintClassMemberModifiers.call(this, node); if (node.computed) { this.tokenChar(91); this.print(node.key); this.tokenChar(93); } else { - this._variance(node); + _flow._variance.call(this, node); this.print(node.key); } if (node.optional) { @@ -17036,7 +16966,7 @@ function ClassAccessorProperty(node) { this.printJoin(node.decorators); const endLine = (_node$key$loc2 = node.key.loc) == null || (_node$key$loc2 = _node$key$loc2.end) == null ? void 0 : _node$key$loc2.line; if (endLine) this.catchUp(endLine); - this.tsPrintClassMemberModifiers(node); + _typescript._tsPrintClassMemberModifiers.call(this, node); this.word("accessor", true); this.space(); if (node.computed) { @@ -17044,7 +16974,7 @@ function ClassAccessorProperty(node) { this.print(node.key); this.tokenChar(93); } else { - this._variance(node); + _flow._variance.call(this, node); this.print(node.key); } if (node.optional) { @@ -17064,7 +16994,7 @@ function ClassAccessorProperty(node) { } function ClassPrivateProperty(node) { this.printJoin(node.decorators); - this.tsPrintClassMemberModifiers(node); + _typescript._tsPrintClassMemberModifiers.call(this, node); this.print(node.key); if (node.optional) { this.tokenChar(63); @@ -17082,12 +17012,12 @@ function ClassPrivateProperty(node) { this.semicolon(); } function ClassMethod(node) { - this._classMethodHead(node); + _classMethodHead.call(this, node); this.space(); this.print(node.body); } function ClassPrivateMethod(node) { - this._classMethodHead(node); + _classMethodHead.call(this, node); this.space(); this.print(node.body); } @@ -17098,8 +17028,8 @@ function _classMethodHead(node) { const endLine = (_node$key$loc3 = node.key.loc) == null || (_node$key$loc3 = _node$key$loc3.end) == null ? void 0 : _node$key$loc3.line; if (endLine) this.catchUp(endLine); } - this.tsPrintClassMemberModifiers(node); - this._methodHead(node); + _typescript._tsPrintClassMemberModifiers.call(this, node); + _methods._methodHead.call(this, node); } function StaticBlock(node) { this.word("static"); @@ -17128,72 +17058,71 @@ function StaticBlock(node) { Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.addDeprecatedGenerators = addDeprecatedGenerators; -function addDeprecatedGenerators(PrinterClass) { - const deprecatedBabel7Generators = { - Noop() {}, - TSExpressionWithTypeArguments(node) { - this.print(node.expression); - this.print(node.typeParameters); - }, - DecimalLiteral(node) { - const raw = this.getPossibleRaw(node); - if (!this.format.minified && raw !== undefined) { - this.word(raw); - return; - } - this.word(node.value + "m"); - }, - RecordExpression(node) { - const props = node.properties; - let startToken; - let endToken; - if (this.format.recordAndTupleSyntaxType === "bar") { - startToken = "{|"; - endToken = "|}"; - } else if (this.format.recordAndTupleSyntaxType !== "hash" && this.format.recordAndTupleSyntaxType != null) { - throw new Error(`The "recordAndTupleSyntaxType" generator option must be "bar" or "hash" (${JSON.stringify(this.format.recordAndTupleSyntaxType)} received).`); - } else { - startToken = "#{"; - endToken = "}"; - } - this.token(startToken); - if (props.length) { - this.space(); - this.printList(props, this.shouldPrintTrailingComma(endToken), true, true); - this.space(); - } - this.token(endToken); - }, - TupleExpression(node) { - const elems = node.elements; - const len = elems.length; - let startToken; - let endToken; - if (this.format.recordAndTupleSyntaxType === "bar") { - startToken = "[|"; - endToken = "|]"; - } else if (this.format.recordAndTupleSyntaxType === "hash") { - startToken = "#["; - endToken = "]"; - } else { - throw new Error(`${this.format.recordAndTupleSyntaxType} is not a valid recordAndTuple syntax type`); - } - this.token(startToken); - for (let i = 0; i < elems.length; i++) { - const elem = elems[i]; - if (elem) { - if (i > 0) this.space(); - this.print(elem); - if (i < len - 1 || this.shouldPrintTrailingComma(endToken)) { - this.token(",", false, i); - } - } +exports.DecimalLiteral = DecimalLiteral; +exports.Noop = Noop; +exports.RecordExpression = RecordExpression; +exports.TSExpressionWithTypeArguments = TSExpressionWithTypeArguments; +exports.TupleExpression = TupleExpression; +function Noop() {} +function TSExpressionWithTypeArguments(node) { + this.print(node.expression); + this.print(node.typeParameters); +} +function DecimalLiteral(node) { + const raw = this.getPossibleRaw(node); + if (!this.format.minified && raw !== undefined) { + this.word(raw); + return; + } + this.word(node.value + "m"); +} +function RecordExpression(node) { + const props = node.properties; + let startToken; + let endToken; + if (this.format.recordAndTupleSyntaxType === "bar") { + startToken = "{|"; + endToken = "|}"; + } else if (this.format.recordAndTupleSyntaxType !== "hash" && this.format.recordAndTupleSyntaxType != null) { + throw new Error(`The "recordAndTupleSyntaxType" generator option must be "bar" or "hash" (${JSON.stringify(this.format.recordAndTupleSyntaxType)} received).`); + } else { + startToken = "#{"; + endToken = "}"; + } + this.token(startToken); + if (props.length) { + this.space(); + this.printList(props, this.shouldPrintTrailingComma(endToken), true, true); + this.space(); + } + this.token(endToken); +} +function TupleExpression(node) { + const elems = node.elements; + const len = elems.length; + let startToken; + let endToken; + if (this.format.recordAndTupleSyntaxType === "bar") { + startToken = "[|"; + endToken = "|]"; + } else if (this.format.recordAndTupleSyntaxType === "hash") { + startToken = "#["; + endToken = "]"; + } else { + throw new Error(`${this.format.recordAndTupleSyntaxType} is not a valid recordAndTuple syntax type`); + } + this.token(startToken); + for (let i = 0; i < elems.length; i++) { + const elem = elems[i]; + if (elem) { + if (i > 0) this.space(); + this.print(elem); + if (i < len - 1 || this.shouldPrintTrailingComma(endToken)) { + this.token(",", false, i); } - this.token(endToken); } - }; - Object.assign(PrinterClass.prototype, deprecatedBabel7Generators); + } + this.token(endToken); } //# sourceMappingURL=deprecated.js.map @@ -17210,9 +17139,10 @@ function addDeprecatedGenerators(PrinterClass) { Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.LogicalExpression = exports.BinaryExpression = exports.AssignmentExpression = AssignmentExpression; +exports.LogicalExpression = exports.AssignmentExpression = AssignmentExpression; exports.AssignmentPattern = AssignmentPattern; exports.AwaitExpression = AwaitExpression; +exports.BinaryExpression = BinaryExpression; exports.BindExpression = BindExpression; exports.CallExpression = CallExpression; exports.ConditionalExpression = ConditionalExpression; @@ -17250,11 +17180,12 @@ function UnaryExpression(node) { const { operator } = node; - if (operator === "void" || operator === "delete" || operator === "typeof" || operator === "throw") { + const firstChar = operator.charCodeAt(0); + if (firstChar >= 97 && firstChar <= 122) { this.word(operator); this.space(); } else { - this.token(operator); + this.tokenChar(firstChar); } this.print(node.argument); } @@ -17269,18 +17200,18 @@ function DoExpression(node) { } function ParenthesizedExpression(node) { this.tokenChar(40); - const exit = this.enterDelimited(); - this.print(node.expression); - exit(); + const oldNoLineTerminatorAfterNode = this.enterDelimited(); + this.print(node.expression, undefined, true); + this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; this.rightParens(node); } function UpdateExpression(node) { if (node.prefix) { - this.token(node.operator); + this.token(node.operator, false, 0, true); this.print(node.argument); } else { this.print(node.argument, true); - this.token(node.operator); + this.token(node.operator, false, 0, true); } } function ConditionalExpression(node) { @@ -17312,9 +17243,9 @@ function NewExpression(node, parent) { return; } this.tokenChar(40); - const exit = this.enterDelimited(); - this.printList(node.arguments, this.shouldPrintTrailingComma(")")); - exit(); + const oldNoLineTerminatorAfterNode = this.enterDelimited(); + this.printList(node.arguments, this.shouldPrintTrailingComma(")"), undefined, undefined, undefined, true); + this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; this.rightParens(node); } function SequenceExpression(node) { @@ -17334,7 +17265,10 @@ function _shouldPrintDecoratorsBeforeExport(node) { } function Decorator(node) { this.tokenChar(64); - this.print(node.expression); + const { + expression + } = node; + this.print(expression); this.newline(); } function OptionalMemberExpression(node) { @@ -17374,9 +17308,9 @@ function OptionalCallExpression(node) { } this.print(node.typeArguments); this.tokenChar(40); - const exit = this.enterDelimited(); - this.printList(node.arguments); - exit(); + const oldNoLineTerminatorAfterNode = this.enterDelimited(); + this.printList(node.arguments, undefined, undefined, undefined, undefined, true); + this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; this.rightParens(node); } function CallExpression(node) { @@ -17384,9 +17318,9 @@ function CallExpression(node) { this.print(node.typeArguments); this.print(node.typeParameters); this.tokenChar(40); - const exit = this.enterDelimited(); - this.printList(node.arguments, this.shouldPrintTrailingComma(")")); - exit(); + const oldNoLineTerminatorAfterNode = this.enterDelimited(); + this.printList(node.arguments, this.shouldPrintTrailingComma(")"), undefined, undefined, undefined, true); + this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; this.rightParens(node); } function Import() { @@ -17435,11 +17369,21 @@ function AssignmentPattern(node) { function AssignmentExpression(node) { this.print(node.left); this.space(); - if (node.operator === "in" || node.operator === "instanceof") { - this.word(node.operator); + this.token(node.operator, false, 0, true); + this.space(); + this.print(node.right); +} +function BinaryExpression(node) { + this.print(node.left); + this.space(); + const { + operator + } = node; + if (operator.charCodeAt(0) === 105) { + this.word(operator); } else { - this.token(node.operator); - this._endsWithDiv = node.operator === "/"; + this.token(operator, false, 0, true); + this.setLastChar(operator.charCodeAt(operator.length - 1)); } this.space(); this.print(node.right); @@ -17459,11 +17403,11 @@ function MemberExpression(node) { computed = true; } if (computed) { - const exit = this.enterDelimited(); + const oldNoLineTerminatorAfterNode = this.enterDelimited(); this.tokenChar(91); - this.print(node.property); + this.print(node.property, undefined, true); this.tokenChar(93); - exit(); + this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; } else { this.tokenChar(46); this.print(node.property); @@ -17618,7 +17562,7 @@ function DeclareClass(node, parent) { } this.word("class"); this.space(); - this._interfaceish(node); + _interfaceish.call(this, node); } function DeclareFunction(node, parent) { if (!isDeclareExportDeclaration(parent)) { @@ -17649,7 +17593,7 @@ function DeclaredPredicate(node) { function DeclareInterface(node) { this.word("declare"); this.space(); - this.InterfaceDeclaration(node); + InterfaceDeclaration.call(this, node); } function DeclareModule(node) { this.word("declare"); @@ -17671,14 +17615,14 @@ function DeclareModuleExports(node) { function DeclareTypeAlias(node) { this.word("declare"); this.space(); - this.TypeAlias(node); + TypeAlias.call(this, node); } function DeclareOpaqueType(node, parent) { if (!isDeclareExportDeclaration(parent)) { this.word("declare"); this.space(); } - this.OpaqueType(node); + OpaqueType.call(this, node); } function DeclareVariable(node, parent) { if (!isDeclareExportDeclaration(parent)) { @@ -17906,7 +17850,7 @@ function _variance(node) { function InterfaceDeclaration(node) { this.word("interface"); this.space(); - this._interfaceish(node); + _interfaceish.call(this, node); } function andSeparator(occurrenceCount) { this.space(); @@ -17984,7 +17928,7 @@ function TypeParameterInstantiation(node) { this.tokenChar(62); } function TypeParameter(node) { - this._variance(node); + _variance.call(this, node); this.word(node.name); if (node.bound) { this.print(node.bound); @@ -18026,12 +17970,12 @@ function ObjectTypeAnnotation(node) { if (props.length) { this.newline(); this.space(); - this.printJoin(props, true, true, undefined, undefined, () => { + this.printJoin(props, true, true, () => { if (props.length !== 1 || node.inexact) { this.tokenChar(44); this.space(); } - }); + }, true); this.space(); } if (node.inexact) { @@ -18077,7 +18021,7 @@ function ObjectTypeIndexer(node) { this.word("static"); this.space(); } - this._variance(node); + _variance.call(this, node); this.tokenChar(91); if (node.id) { this.print(node.id); @@ -18103,7 +18047,7 @@ function ObjectTypeProperty(node) { this.word(node.kind); this.space(); } - this._variance(node); + _variance.call(this, node); this.print(node.key); if (node.optional) this.tokenChar(63); if (!node.method) { @@ -18460,39 +18404,40 @@ var _index = __nccwpck_require__(9223); const { isIdentifier } = _t; -function _params(node, idNode, parentNode) { +function _params(node, noLineTerminator, idNode, parentNode) { this.print(node.typeParameters); - const nameInfo = _getFuncIdName.call(this, idNode, parentNode); - if (nameInfo) { - this.sourceIdentifierName(nameInfo.name, nameInfo.pos); + if (idNode !== undefined || parentNode !== undefined) { + const nameInfo = _getFuncIdName.call(this, idNode, parentNode); + if (nameInfo) { + this.sourceIdentifierName(nameInfo.name, nameInfo.pos); + } } this.tokenChar(40); - this._parameters(node.params, ")"); - const noLineTerminator = node.type === "ArrowFunctionExpression"; + _parameters.call(this, node.params, 41); this.print(node.returnType, noLineTerminator); this._noLineTerminator = noLineTerminator; } function _parameters(parameters, endToken) { - const exit = this.enterDelimited(); + const oldNoLineTerminatorAfterNode = this.enterDelimited(); const trailingComma = this.shouldPrintTrailingComma(endToken); const paramLength = parameters.length; for (let i = 0; i < paramLength; i++) { - this._param(parameters[i]); + _param.call(this, parameters[i]); if (trailingComma || i < paramLength - 1) { - this.token(",", undefined, i); + this.tokenChar(44, i); this.space(); } } - this.token(endToken); - exit(); + this.tokenChar(endToken); + this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; } function _param(parameter) { - this.printJoin(parameter.decorators); - this.print(parameter); + this.printJoin(parameter.decorators, undefined, undefined, undefined, undefined, true); + this.print(parameter, undefined, true); if (parameter.optional) { this.tokenChar(63); } - this.print(parameter.typeAnnotation); + this.print(parameter.typeAnnotation, undefined, true); } function _methodHead(node) { const kind = node.kind; @@ -18520,7 +18465,11 @@ function _methodHead(node) { if (node.optional) { this.tokenChar(63); } - this._params(node, node.computed && node.key.type !== "StringLiteral" ? undefined : node.key); + if (this._buf._map) { + _params.call(this, node, false, node.computed && node.key.type !== "StringLiteral" ? undefined : node.key); + } else { + _params.call(this, node, false); + } } function _predicate(node, noLineTerminatorAfter) { if (node.predicate) { @@ -18531,18 +18480,18 @@ function _predicate(node, noLineTerminatorAfter) { this.print(node.predicate, noLineTerminatorAfter); } } -function _functionHead(node, parent) { +function _functionHead(node, parent, hasPredicate) { if (node.async) { this.word("async"); if (!this.format.preserveFormat) { - this._endsWithInnerRaw = false; + this._innerCommentsState = 0; } this.space(); } this.word("function"); if (node.generator) { if (!this.format.preserveFormat) { - this._endsWithInnerRaw = false; + this._innerCommentsState = 0; } this.tokenChar(42); } @@ -18550,13 +18499,17 @@ function _functionHead(node, parent) { if (node.id) { this.print(node.id); } - this._params(node, node.id, parent); - if (node.type !== "TSDeclareFunction") { - this._predicate(node); + if (this._buf._map) { + _params.call(this, node, false, node.id, parent); + } else { + _params.call(this, node, false); + } + if (hasPredicate) { + _predicate.call(this, node); } } function FunctionExpression(node, parent) { - this._functionHead(node, parent); + _functionHead.call(this, node, parent, true); this.space(); this.print(node.body); } @@ -18565,12 +18518,12 @@ function ArrowFunctionExpression(node, parent) { this.word("async", true); this.space(); } - if (this._shouldPrintArrowParamsParens(node)) { - this._params(node, undefined, parent); + if (_shouldPrintArrowParamsParens.call(this, node)) { + _params.call(this, node, true, undefined, this._buf._map ? parent : undefined); } else { this.print(node.params[0], true); } - this._predicate(node, true); + _predicate.call(this, node, true); this.space(); this.printInnerComments(); this.token("=>"); @@ -18667,6 +18620,7 @@ exports.ImportSpecifier = ImportSpecifier; exports._printAttributes = _printAttributes; var _t = __nccwpck_require__(7912); var _index = __nccwpck_require__(9223); +var _expressions = __nccwpck_require__(2961); const { isClassDeclaration, isExportDefaultSpecifier, @@ -18765,14 +18719,14 @@ function ExportAllDeclaration(node) { if ((_node$attributes = node.attributes) != null && _node$attributes.length || (_node$assertions = node.assertions) != null && _node$assertions.length) { this.print(node.source, true); this.space(); - this._printAttributes(node, false); + _printAttributes.call(this, node, false); } else { this.print(node.source); } this.semicolon(); } function maybePrintDecoratorsBeforeExport(printer, node) { - if (isClassDeclaration(node.declaration) && printer._shouldPrintDecoratorsBeforeExport(node)) { + if (isClassDeclaration(node.declaration) && _expressions._shouldPrintDecoratorsBeforeExport.call(printer, node)) { printer.printJoin(node.declaration.decorators); } } @@ -18823,7 +18777,7 @@ function ExportNamedDeclaration(node) { if ((_node$attributes2 = node.attributes) != null && _node$attributes2.length || (_node$assertions2 = node.assertions) != null && _node$assertions2.length) { this.print(node.source, true); this.space(); - this._printAttributes(node, hasBrace); + _printAttributes.call(this, node, hasBrace); } else { this.print(node.source); } @@ -18896,7 +18850,7 @@ function ImportDeclaration(node) { if ((_node$attributes3 = node.attributes) != null && _node$attributes3.length || (_node$assertions3 = node.assertions) != null && _node$assertions3.length) { this.print(node.source, true); this.space(); - this._printAttributes(node, hasBrace); + _printAttributes.call(this, node, hasBrace); } else { this.print(node.source); } @@ -18954,7 +18908,8 @@ exports.CatchClause = CatchClause; exports.ContinueStatement = ContinueStatement; exports.DebuggerStatement = DebuggerStatement; exports.DoWhileStatement = DoWhileStatement; -exports.ForOfStatement = exports.ForInStatement = void 0; +exports.ForInStatement = ForInStatement; +exports.ForOfStatement = ForOfStatement; exports.ForStatement = ForStatement; exports.IfStatement = IfStatement; exports.LabeledStatement = LabeledStatement; @@ -18968,9 +18923,9 @@ exports.VariableDeclarator = VariableDeclarator; exports.WhileStatement = WhileStatement; exports.WithStatement = WithStatement; var _t = __nccwpck_require__(7912); +var _index = __nccwpck_require__(9223); const { isFor, - isForStatement, isIfStatement, isStatement } = _t; @@ -18980,7 +18935,7 @@ function WithStatement(node) { this.tokenChar(40); this.print(node.object); this.tokenChar(41); - this.printBlock(node); + this.printBlock(node.body); } function IfStatement(node) { this.word("if"); @@ -19021,23 +18976,21 @@ function ForStatement(node) { this.word("for"); this.space(); this.tokenChar(40); - { - const exit = this.enterForStatementInit(); - this.print(node.init); - exit(); - } + this.tokenContext |= _index.TokenContext.forInitHead | _index.TokenContext.forInOrInitHeadAccumulate; + this.print(node.init); + this.tokenContext = _index.TokenContext.normal; this.tokenChar(59); if (node.test) { this.space(); this.print(node.test); } - this.token(";", false, 1); + this.tokenChar(59, 1); if (node.update) { this.space(); this.print(node.update); } this.tokenChar(41); - this.printBlock(node); + this.printBlock(node.body); } function WhileStatement(node) { this.word("while"); @@ -19045,32 +18998,41 @@ function WhileStatement(node) { this.tokenChar(40); this.print(node.test); this.tokenChar(41); - this.printBlock(node); + this.printBlock(node.body); } -function ForXStatement(node) { +function ForInStatement(node) { this.word("for"); this.space(); - const isForOf = node.type === "ForOfStatement"; - if (isForOf && node.await) { + this.noIndentInnerCommentsHere(); + this.tokenChar(40); + this.tokenContext |= _index.TokenContext.forInHead | _index.TokenContext.forInOrInitHeadAccumulate; + this.print(node.left); + this.tokenContext = _index.TokenContext.normal; + this.space(); + this.word("in"); + this.space(); + this.print(node.right); + this.tokenChar(41); + this.printBlock(node.body); +} +function ForOfStatement(node) { + this.word("for"); + this.space(); + if (node.await) { this.word("await"); this.space(); } this.noIndentInnerCommentsHere(); this.tokenChar(40); - { - const exit = this.enterForXStatementInit(isForOf); - this.print(node.left); - exit == null || exit(); - } + this.tokenContext |= _index.TokenContext.forOfHead; + this.print(node.left); this.space(); - this.word(isForOf ? "of" : "in"); + this.word("of"); this.space(); this.print(node.right); this.tokenChar(41); - this.printBlock(node); + this.printBlock(node.body); } -const ForInStatement = exports.ForInStatement = ForXStatement; -const ForOfStatement = exports.ForOfStatement = ForXStatement; function DoWhileStatement(node) { this.word("do"); this.space(); @@ -19171,6 +19133,10 @@ function DebuggerStatement() { this.word("debugger"); this.semicolon(); } +function commaSeparatorWithNewline(occurrenceCount) { + this.tokenChar(44, occurrenceCount); + this.newline(); +} function VariableDeclaration(node, parent) { if (node.declare) { this.word("declare"); @@ -19179,12 +19145,15 @@ function VariableDeclaration(node, parent) { const { kind } = node; - if (kind === "await using") { - this.word("await"); - this.space(); - this.word("using", true); - } else { - this.word(kind, kind === "using"); + switch (kind) { + case "await using": + this.word("await"); + this.space(); + case "using": + this.word("using", true); + break; + default: + this.word(kind); } this.space(); let hasInits = false; @@ -19192,18 +19161,23 @@ function VariableDeclaration(node, parent) { for (const declar of node.declarations) { if (declar.init) { hasInits = true; + break; } } } - this.printList(node.declarations, undefined, undefined, node.declarations.length > 1, hasInits ? function (occurrenceCount) { - this.token(",", false, occurrenceCount); - this.newline(); - } : undefined); - if (isFor(parent)) { - if (isForStatement(parent)) { - if (parent.init === node) return; - } else { - if (parent.left === node) return; + this.printList(node.declarations, undefined, undefined, node.declarations.length > 1, hasInits ? commaSeparatorWithNewline : undefined); + if (parent != null) { + switch (parent.type) { + case "ForStatement": + if (parent.init === node) { + return; + } + break; + case "ForInStatement": + case "ForOfStatement": + if (parent.left === node) { + return; + } } } this.semicolon(); @@ -19263,7 +19237,7 @@ function _printTemplate(node, substitutions) { this.token(partRaw + "`", true); } function TemplateLiteral(node) { - this._printTemplate(node, node.expressions); + _printTemplate.call(this, node, node.expressions); } //# sourceMappingURL=template-literals.js.map @@ -19301,15 +19275,13 @@ exports.VoidPattern = VoidPattern; exports._getRawIdentifier = _getRawIdentifier; var _t = __nccwpck_require__(7912); var _jsesc = __nccwpck_require__(5733); +var _methods = __nccwpck_require__(3208); const { isAssignmentPattern, isIdentifier } = _t; -let lastRawIdentNode = null; let lastRawIdentResult = ""; function _getRawIdentifier(node) { - if (node === lastRawIdentNode) return lastRawIdentResult; - lastRawIdentNode = node; const { name } = node; @@ -19321,9 +19293,11 @@ function _getRawIdentifier(node) { return lastRawIdentResult = node.name; } function Identifier(node) { - var _node$loc; - this.sourceIdentifierName(((_node$loc = node.loc) == null ? void 0 : _node$loc.identifierName) || node.name); - this.word(this.tokenMap ? this._getRawIdentifier(node) : node.name); + if (this._buf._map) { + var _node$loc; + this.sourceIdentifierName(((_node$loc = node.loc) == null ? void 0 : _node$loc.identifierName) || node.name); + } + this.word(this.tokenMap ? lastRawIdentResult : node.name); } function ArgumentPlaceholder() { this.tokenChar(63); @@ -19336,18 +19310,17 @@ function ObjectExpression(node) { const props = node.properties; this.tokenChar(123); if (props.length) { - const exit = this.enterDelimited(); + const oldNoLineTerminatorAfterNode = this.enterDelimited(); this.space(); - this.printList(props, this.shouldPrintTrailingComma("}"), true, true); + this.printList(props, this.shouldPrintTrailingComma("}"), true, true, undefined, true); this.space(); - exit(); + this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; } - this.sourceWithOffset("end", node.loc, -1); - this.tokenChar(125); + this.rightBrace(node); } function ObjectMethod(node) { this.printJoin(node.decorators); - this._methodHead(node); + _methods._methodHead.call(this, node); this.space(); this.print(node.body); } @@ -19375,24 +19348,24 @@ function ArrayExpression(node) { const elems = node.elements; const len = elems.length; this.tokenChar(91); - const exit = this.enterDelimited(); + const oldNoLineTerminatorAfterNode = this.enterDelimited(); for (let i = 0; i < elems.length; i++) { const elem = elems[i]; if (elem) { if (i > 0) this.space(); - this.print(elem); + this.print(elem, undefined, true); if (i < len - 1 || this.shouldPrintTrailingComma("]")) { - this.token(",", false, i); + this.tokenChar(44, i); } } else { - this.token(",", false, i); + this.tokenChar(44, i); } } - exit(); + this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; this.tokenChar(93); } function RegExpLiteral(node) { - this.word(`/${node.pattern}/${node.flags}`); + this.word(`/${node.pattern}/${node.flags}`, false); } function BooleanLiteral(node) { this.word(node.value ? "true" : "false"); @@ -19464,7 +19437,7 @@ function VoidPattern() { /***/ }), /***/ 6140: -/***/ ((__unused_webpack_module, exports) => { +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; @@ -19474,7 +19447,7 @@ Object.defineProperty(exports, "__esModule", ({ })); exports.TSAnyKeyword = TSAnyKeyword; exports.TSArrayType = TSArrayType; -exports.TSSatisfiesExpression = exports.TSAsExpression = TSTypeExpression; +exports.TSAsExpression = TSAsExpression; exports.TSBigIntKeyword = TSBigIntKeyword; exports.TSBooleanKeyword = TSBooleanKeyword; exports.TSCallSignatureDeclaration = TSCallSignatureDeclaration; @@ -19518,6 +19491,7 @@ exports.TSParenthesizedType = TSParenthesizedType; exports.TSPropertySignature = TSPropertySignature; exports.TSQualifiedName = TSQualifiedName; exports.TSRestType = TSRestType; +exports.TSSatisfiesExpression = TSSatisfiesExpression; exports.TSStringKeyword = TSStringKeyword; exports.TSSymbolKeyword = TSSymbolKeyword; exports.TSTemplateLiteralType = TSTemplateLiteralType; @@ -19537,10 +19511,10 @@ exports.TSUndefinedKeyword = TSUndefinedKeyword; exports.TSUnionType = TSUnionType; exports.TSUnknownKeyword = TSUnknownKeyword; exports.TSVoidKeyword = TSVoidKeyword; -exports.tsPrintClassMemberModifiers = tsPrintClassMemberModifiers; -exports.tsPrintFunctionOrConstructorType = tsPrintFunctionOrConstructorType; -exports.tsPrintPropertyOrMethodName = tsPrintPropertyOrMethodName; -exports.tsPrintSignatureDeclarationBase = tsPrintSignatureDeclarationBase; +exports._tsPrintClassMemberModifiers = _tsPrintClassMemberModifiers; +var _methods = __nccwpck_require__(3208); +var _classes = __nccwpck_require__(8860); +var _templateLiterals = __nccwpck_require__(2893); function TSTypeAnnotation(node, parent) { this.token((parent.type === "TSFunctionType" || parent.type === "TSConstructorType") && parent.typeAnnotation === node ? "=>" : ":"); this.space(); @@ -19593,18 +19567,18 @@ function TSParameterProperty(node) { this.word("readonly"); this.space(); } - this._param(node.parameter); + _methods._param.call(this, node.parameter); } function TSDeclareFunction(node, parent) { if (node.declare) { this.word("declare"); this.space(); } - this._functionHead(node, parent); + _methods._functionHead.call(this, node, parent, false); this.semicolon(); } function TSDeclareMethod(node) { - this._classMethodHead(node); + _classes._classMethodHead.call(this, node); this.semicolon(); } function TSQualifiedName(node) { @@ -19613,7 +19587,7 @@ function TSQualifiedName(node) { this.print(node.right); } function TSCallSignatureDeclaration(node) { - this.tsPrintSignatureDeclarationBase(node); + tsPrintSignatureDeclarationBase.call(this, node); maybePrintTrailingCommaOrSemicolon(this, node); } function maybePrintTrailingCommaOrSemicolon(printer, node) { @@ -19630,7 +19604,7 @@ function maybePrintTrailingCommaOrSemicolon(printer, node) { function TSConstructSignatureDeclaration(node) { this.word("new"); this.space(); - this.tsPrintSignatureDeclarationBase(node); + tsPrintSignatureDeclarationBase.call(this, node); maybePrintTrailingCommaOrSemicolon(this, node); } function TSPropertySignature(node) { @@ -19641,7 +19615,7 @@ function TSPropertySignature(node) { this.word("readonly"); this.space(); } - this.tsPrintPropertyOrMethodName(node); + tsPrintPropertyOrMethodName.call(this, node); this.print(node.typeAnnotation); maybePrintTrailingCommaOrSemicolon(this, node); } @@ -19665,8 +19639,8 @@ function TSMethodSignature(node) { this.word(kind); this.space(); } - this.tsPrintPropertyOrMethodName(node); - this.tsPrintSignatureDeclarationBase(node); + tsPrintPropertyOrMethodName.call(this, node); + tsPrintSignatureDeclarationBase.call(this, node); maybePrintTrailingCommaOrSemicolon(this, node); } function TSIndexSignature(node) { @@ -19683,7 +19657,7 @@ function TSIndexSignature(node) { this.space(); } this.tokenChar(91); - this._parameters(node.parameters, "]"); + _methods._parameters.call(this, node.parameters, 93); this.print(node.typeAnnotation); maybePrintTrailingCommaOrSemicolon(this, node); } @@ -19730,7 +19704,7 @@ function TSThisType() { this.word("this"); } function TSFunctionType(node) { - this.tsPrintFunctionOrConstructorType(node); + tsPrintFunctionOrConstructorType.call(this, node); } function TSConstructorType(node) { if (node.abstract) { @@ -19739,7 +19713,7 @@ function TSConstructorType(node) { } this.word("new"); this.space(); - this.tsPrintFunctionOrConstructorType(node); + tsPrintFunctionOrConstructorType.call(this, node); } function tsPrintFunctionOrConstructorType(node) { const { @@ -19748,7 +19722,7 @@ function tsPrintFunctionOrConstructorType(node) { const parameters = node.parameters; this.print(typeParameters); this.tokenChar(40); - this._parameters(parameters, ")"); + _methods._parameters.call(this, parameters, 41); this.space(); const returnType = node.typeAnnotation; this.print(returnType); @@ -19781,7 +19755,7 @@ function TSTypeQuery(node) { } } function TSTypeLiteral(node) { - printBraced(this, node, () => this.printJoin(node.members, true, true)); + printBraced(this, node, () => this.printJoin(node.members, true, true, undefined, undefined, true)); } function TSArrayType(node) { this.print(node.elementType, true); @@ -19870,7 +19844,7 @@ function TSMappedType(node) { typeAnnotation } = node; this.tokenChar(123); - const exit = this.enterDelimited(); + const oldNoLineTerminatorAfterNode = this.enterDelimited(); this.space(); if (readonly) { tokenIfPlusMinus(this, readonly); @@ -19882,12 +19856,12 @@ function TSMappedType(node) { this.space(); this.word("in"); this.space(); - this.print(node.typeParameter.constraint); + this.print(node.typeParameter.constraint, undefined, true); if (nameType) { this.space(); this.word("as"); this.space(); - this.print(nameType); + this.print(nameType, undefined, true); } this.tokenChar(93); if (optional) { @@ -19897,10 +19871,10 @@ function TSMappedType(node) { if (typeAnnotation) { this.tokenChar(58); this.space(); - this.print(typeAnnotation); + this.print(typeAnnotation, undefined, true); } this.space(); - exit(); + this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; this.tokenChar(125); } function tokenIfPlusMinus(self, tok) { @@ -19909,7 +19883,7 @@ function tokenIfPlusMinus(self, tok) { } } function TSTemplateLiteralType(node) { - this._printTemplate(node, node.types); + _templateLiterals._printTemplate.call(this, node, node.types); } function TSLiteralType(node) { this.print(node.literal); @@ -19944,7 +19918,7 @@ function TSInterfaceDeclaration(node) { this.print(body); } function TSInterfaceBody(node) { - printBraced(this, node, () => this.printJoin(node.body, true, true)); + printBraced(this, node, () => this.printJoin(node.body, true, true, undefined, undefined, true)); } function TSTypeAliasDeclaration(node) { const { @@ -19967,15 +19941,25 @@ function TSTypeAliasDeclaration(node) { this.print(typeAnnotation); this.semicolon(); } -function TSTypeExpression(node) { +function TSAsExpression(node) { const { - type, expression, typeAnnotation } = node; this.print(expression, true); this.space(); - this.word(type === "TSAsExpression" ? "as" : "satisfies"); + this.word("as"); + this.space(); + this.print(typeAnnotation); +} +function TSSatisfiesExpression(node) { + const { + expression, + typeAnnotation + } = node; + this.print(expression, true); + this.space(); + this.word("satisfies"); this.space(); this.print(typeAnnotation); } @@ -20017,7 +20001,7 @@ function TSEnumDeclaration(node) { function TSEnumBody(node) { printBraced(this, node, () => { var _this$shouldPrintTrai; - return this.printList(node.members, (_this$shouldPrintTrai = this.shouldPrintTrailingComma("}")) != null ? _this$shouldPrintTrai : true, true, true); + return this.printList(node.members, (_this$shouldPrintTrai = this.shouldPrintTrailingComma("}")) != null ? _this$shouldPrintTrai : true, true, true, undefined, true); }); } function TSEnumMember(node) { @@ -20062,7 +20046,7 @@ function TSModuleDeclaration(node) { this.print(body); } function TSModuleBlock(node) { - printBraced(this, node, () => this.printSequence(node.body, true)); + printBraced(this, node, () => this.printSequence(node.body, true, true)); } function TSImportType(node) { const { @@ -20112,6 +20096,7 @@ function TSExternalModuleReference(node) { function TSNonNullExpression(node) { this.print(node.expression); this.tokenChar(33); + this.setLastChar(33); } function TSExportAssignment(node) { this.word("export"); @@ -20138,11 +20123,11 @@ function tsPrintSignatureDeclarationBase(node) { const parameters = node.parameters; this.print(typeParameters); this.tokenChar(40); - this._parameters(parameters, ")"); + _methods._parameters.call(this, parameters, 41); const returnType = node.typeAnnotation; this.print(returnType); } -function tsPrintClassMemberModifiers(node) { +function _tsPrintClassMemberModifiers(node) { const isPrivateField = node.type === "ClassPrivateProperty"; const isPublicField = node.type === "ClassAccessorProperty" || node.type === "ClassProperty"; printModifiersList(this, node, [isPublicField && node.declare && "declare", !isPrivateField && node.accessibility]); @@ -20154,9 +20139,9 @@ function tsPrintClassMemberModifiers(node) { } function printBraced(printer, node, cb) { printer.token("{"); - const exit = printer.enterDelimited(); + const oldNoLineTerminatorAfterNode = printer.enterDelimited(); cb(); - exit(); + printer._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; printer.rightBrace(node); } function printModifiersList(printer, node, modifiers) { @@ -20312,22 +20297,12 @@ Object.defineProperty(exports, "__esModule", ({ })); exports.TokenContext = void 0; exports.isLastChild = isLastChild; -exports.needsParens = needsParens; -exports.needsWhitespace = needsWhitespace; -exports.needsWhitespaceAfter = needsWhitespaceAfter; -exports.needsWhitespaceBefore = needsWhitespaceBefore; -var whitespace = __nccwpck_require__(5850); +exports.parentNeedsParens = parentNeedsParens; var parens = __nccwpck_require__(8444); var _t = __nccwpck_require__(7912); +var _nodes = __nccwpck_require__(5644); const { - FLIPPED_ALIAS_KEYS, - VISITOR_KEYS, - isCallExpression, - isDecorator, - isExpressionStatement, - isMemberExpression, - isNewExpression, - isParenthesizedExpression + VISITOR_KEYS } = _t; const TokenContext = exports.TokenContext = { normal: 0, @@ -20341,63 +20316,32 @@ const TokenContext = exports.TokenContext = { forInOrInitHeadAccumulate: 128, forInOrInitHeadAccumulatePassThroughMask: 128 }; -function expandAliases(obj) { - const map = new Map(); - function add(type, func) { - const fn = map.get(type); - map.set(type, fn ? function (node, parent, stack, getRawIdentifier) { - var _fn; - return (_fn = fn(node, parent, stack, getRawIdentifier)) != null ? _fn : func(node, parent, stack, getRawIdentifier); - } : func); - } - for (const type of Object.keys(obj)) { - const aliases = FLIPPED_ALIAS_KEYS[type]; - if (aliases) { - for (const alias of aliases) { - add(alias, obj[type]); - } - } else { - add(type, obj[type]); - } +for (const type of Object.keys(parens)) { + const func = parens[type]; + if (_nodes.generatorInfosMap.has(type)) { + _nodes.generatorInfosMap.get(type)[2] = func; } - return map; } -const expandedParens = expandAliases(parens); -const expandedWhitespaceNodes = expandAliases(whitespace.nodes); function isOrHasCallExpression(node) { - if (isCallExpression(node)) { - return true; - } - return isMemberExpression(node) && isOrHasCallExpression(node.object); -} -function needsWhitespace(node, parent, type) { - var _expandedWhitespaceNo; - if (!node) return false; - if (isExpressionStatement(node)) { - node = node.expression; - } - const flag = (_expandedWhitespaceNo = expandedWhitespaceNodes.get(node.type)) == null ? void 0 : _expandedWhitespaceNo(node, parent); - if (typeof flag === "number") { - return (flag & type) !== 0; + switch (node.type) { + case "CallExpression": + return true; + case "MemberExpression": + return isOrHasCallExpression(node.object); } return false; } -function needsWhitespaceBefore(node, parent) { - return needsWhitespace(node, parent, 1); -} -function needsWhitespaceAfter(node, parent) { - return needsWhitespace(node, parent, 2); -} -function needsParens(node, parent, tokenContext, getRawIdentifier) { - var _expandedParens$get; - if (!parent) return false; - if (isNewExpression(parent) && parent.callee === node) { - if (isOrHasCallExpression(node)) return true; - } - if (isDecorator(parent)) { - return !isDecoratorMemberExpression(node) && !(isCallExpression(node) && isDecoratorMemberExpression(node.callee)) && !isParenthesizedExpression(node); +function parentNeedsParens(node, parent, parentId) { + switch (parentId) { + case 112: + if (parent.callee === node) { + if (isOrHasCallExpression(node)) return true; + } + break; + case 42: + return !isDecoratorMemberExpression(node) && !(node.type === "CallExpression" && isDecoratorMemberExpression(node.callee)) && node.type !== "ParenthesizedExpression"; } - return ((_expandedParens$get = expandedParens.get(node.type)) == null ? void 0 : _expandedParens$get(node, parent, tokenContext, getRawIdentifier)) || false; + return false; } function isDecoratorMemberExpression(node) { switch (node.type) { @@ -20441,7 +20385,6 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.AssignmentExpression = AssignmentExpression; -exports.Binary = Binary; exports.BinaryExpression = BinaryExpression; exports.ClassExpression = ClassExpression; exports.ArrowFunctionExpression = exports.ConditionalExpression = ConditionalExpression; @@ -20461,7 +20404,7 @@ exports.TSConstructorType = exports.TSFunctionType = TSFunctionType; exports.TSInferType = TSInferType; exports.TSInstantiationExpression = TSInstantiationExpression; exports.TSIntersectionType = TSIntersectionType; -exports.UnaryLike = exports.TSTypeAssertion = UnaryLike; +exports.SpreadElement = exports.UnaryExpression = exports.TSTypeAssertion = UnaryLike; exports.TSTypeOperator = TSTypeOperator; exports.TSUnionType = TSUnionType; exports.IntersectionTypeAnnotation = exports.UnionTypeAnnotation = UnionTypeAnnotation; @@ -20470,229 +20413,267 @@ exports.AwaitExpression = exports.YieldExpression = YieldExpression; var _t = __nccwpck_require__(7912); var _index = __nccwpck_require__(9223); const { - isArrayTypeAnnotation, - isBinaryExpression, - isCallExpression, - isForOfStatement, - isIndexedAccessType, isMemberExpression, - isObjectPattern, isOptionalMemberExpression, isYieldExpression, isStatement } = _t; -const PRECEDENCE = new Map([["||", 0], ["??", 0], ["|>", 0], ["&&", 1], ["|", 2], ["^", 3], ["&", 4], ["==", 5], ["===", 5], ["!=", 5], ["!==", 5], ["<", 6], [">", 6], ["<=", 6], [">=", 6], ["in", 6], ["instanceof", 6], [">>", 7], ["<<", 7], [">>>", 7], ["+", 8], ["-", 8], ["*", 9], ["/", 9], ["%", 9], ["**", 10]]); -function getBinaryPrecedence(node, nodeType) { - if (nodeType === "BinaryExpression" || nodeType === "LogicalExpression") { - return PRECEDENCE.get(node.operator); - } - if (nodeType === "TSAsExpression" || nodeType === "TSSatisfiesExpression") { - return PRECEDENCE.get("in"); - } +const PRECEDENCE = new Map([["||", 0], ["??", 1], ["&&", 2], ["|", 3], ["^", 4], ["&", 5], ["==", 6], ["===", 6], ["!=", 6], ["!==", 6], ["<", 7], [">", 7], ["<=", 7], [">=", 7], ["in", 7], ["instanceof", 7], [">>", 8], ["<<", 8], [">>>", 8], ["+", 9], ["-", 9], ["*", 10], ["/", 10], ["%", 10], ["**", 11]]); +function isTSTypeExpression(nodeId) { + return nodeId === 156 || nodeId === 201 || nodeId === 209; } -function isTSTypeExpression(nodeType) { - return nodeType === "TSAsExpression" || nodeType === "TSSatisfiesExpression" || nodeType === "TSTypeAssertion"; -} -const isClassExtendsClause = (node, parent) => { - const parentType = parent.type; - return (parentType === "ClassDeclaration" || parentType === "ClassExpression") && parent.superClass === node; +const isClassExtendsClause = (node, parent, parentId) => { + return (parentId === 21 || parentId === 22) && parent.superClass === node; }; -const hasPostfixPart = (node, parent) => { - const parentType = parent.type; - return (parentType === "MemberExpression" || parentType === "OptionalMemberExpression") && parent.object === node || (parentType === "CallExpression" || parentType === "OptionalCallExpression" || parentType === "NewExpression") && parent.callee === node || parentType === "TaggedTemplateExpression" && parent.tag === node || parentType === "TSNonNullExpression"; +const hasPostfixPart = (node, parent, parentId) => { + switch (parentId) { + case 108: + case 132: + return parent.object === node; + case 17: + case 130: + case 112: + return parent.callee === node; + case 222: + return parent.tag === node; + case 191: + return true; + } + return false; }; -function NullableTypeAnnotation(node, parent) { - return isArrayTypeAnnotation(parent); +function NullableTypeAnnotation(node, parent, parentId) { + return parentId === 4; } -function FunctionTypeAnnotation(node, parent, tokenContext) { - const parentType = parent.type; - return (parentType === "UnionTypeAnnotation" || parentType === "IntersectionTypeAnnotation" || parentType === "ArrayTypeAnnotation" || Boolean(tokenContext & _index.TokenContext.arrowFlowReturnType) +function FunctionTypeAnnotation(node, parent, parentId, tokenContext) { + return (parentId === 239 || parentId === 90 || parentId === 4 || (tokenContext & _index.TokenContext.arrowFlowReturnType) > 0 ); } -function UpdateExpression(node, parent) { - return hasPostfixPart(node, parent) || isClassExtendsClause(node, parent); +function UpdateExpression(node, parent, parentId) { + return hasPostfixPart(node, parent, parentId) || isClassExtendsClause(node, parent, parentId); } function needsParenBeforeExpressionBrace(tokenContext) { - return Boolean(tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.arrowBody)); + return (tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.arrowBody)) > 0; } -function ObjectExpression(node, parent, tokenContext) { +function ObjectExpression(node, parent, parentId, tokenContext) { return needsParenBeforeExpressionBrace(tokenContext); } -function DoExpression(node, parent, tokenContext) { - return !node.async && Boolean(tokenContext & _index.TokenContext.expressionStatement); +function DoExpression(node, parent, parentId, tokenContext) { + return (tokenContext & _index.TokenContext.expressionStatement) > 0 && !node.async; } -function Binary(node, parent) { - const parentType = parent.type; - if (node.type === "BinaryExpression" && node.operator === "**" && parentType === "BinaryExpression" && parent.operator === "**") { - return parent.left === node; - } - if (isClassExtendsClause(node, parent)) { +function BinaryLike(node, parent, parentId, nodeType) { + if (isClassExtendsClause(node, parent, parentId)) { return true; } - if (hasPostfixPart(node, parent) || parentType === "UnaryExpression" || parentType === "SpreadElement" || parentType === "AwaitExpression") { + if (hasPostfixPart(node, parent, parentId) || parentId === 238 || parentId === 145 || parentId === 8) { return true; } - const parentPos = getBinaryPrecedence(parent, parentType); - if (parentPos != null) { - const nodePos = getBinaryPrecedence(node, node.type); - if (parentPos === nodePos && parentType === "BinaryExpression" && parent.right === node || parentPos > nodePos) { + let parentPos; + switch (parentId) { + case 10: + case 107: + parentPos = PRECEDENCE.get(parent.operator); + break; + case 156: + case 201: + parentPos = 7; + } + if (parentPos !== undefined) { + const nodePos = nodeType === 2 ? 7 : PRECEDENCE.get(node.operator); + if (parentPos > nodePos) return true; + if (parentPos === nodePos && parentId === 10 && (nodePos === 11 ? parent.left === node : parent.right === node)) { + return true; + } + if (nodeType === 1 && parentId === 107 && (nodePos === 1 && parentPos !== 1 || parentPos === 1 && nodePos !== 1)) { return true; } } + return false; } -function UnionTypeAnnotation(node, parent) { - const parentType = parent.type; - return parentType === "ArrayTypeAnnotation" || parentType === "NullableTypeAnnotation" || parentType === "IntersectionTypeAnnotation" || parentType === "UnionTypeAnnotation"; +function UnionTypeAnnotation(node, parent, parentId) { + switch (parentId) { + case 4: + case 115: + case 90: + case 239: + return true; + } + return false; } -function OptionalIndexedAccessType(node, parent) { - return isIndexedAccessType(parent) && parent.objectType === node; +function OptionalIndexedAccessType(node, parent, parentId) { + return parentId === 84 && parent.objectType === node; } -function TSAsExpression(node, parent) { - if ((parent.type === "AssignmentExpression" || parent.type === "AssignmentPattern") && parent.left === node) { +function TSAsExpression(node, parent, parentId) { + if ((parentId === 6 || parentId === 7) && parent.left === node) { return true; } - if (parent.type === "BinaryExpression" && (parent.operator === "|" || parent.operator === "&") && node === parent.left) { + if (parentId === 10 && (parent.operator === "|" || parent.operator === "&") && node === parent.left) { return true; } - return Binary(node, parent); + return BinaryLike(node, parent, parentId, 2); } -function TSConditionalType(node, parent) { - const parentType = parent.type; - if (parentType === "TSArrayType" || parentType === "TSIndexedAccessType" && parent.objectType === node || parentType === "TSOptionalType" || parentType === "TSTypeOperator" || parentType === "TSTypeParameter") { - return true; - } - if ((parentType === "TSIntersectionType" || parentType === "TSUnionType") && parent.types[0] === node) { - return true; - } - if (parentType === "TSConditionalType" && (parent.checkType === node || parent.extendsType === node)) { - return true; +function TSConditionalType(node, parent, parentId) { + switch (parentId) { + case 155: + case 195: + case 211: + case 212: + return true; + case 175: + return parent.objectType === node; + case 181: + case 219: + return parent.types[0] === node; + case 161: + return parent.checkType === node || parent.extendsType === node; } return false; } -function TSUnionType(node, parent) { - const parentType = parent.type; - return parentType === "TSIntersectionType" || parentType === "TSTypeOperator" || parentType === "TSArrayType" || parentType === "TSIndexedAccessType" && parent.objectType === node || parentType === "TSOptionalType"; +function TSUnionType(node, parent, parentId) { + switch (parentId) { + case 181: + case 211: + case 155: + case 195: + return true; + case 175: + return parent.objectType === node; + } + return false; } -function TSIntersectionType(node, parent) { - const parentType = parent.type; - return parentType === "TSTypeOperator" || parentType === "TSArrayType" || parentType === "TSIndexedAccessType" && parent.objectType === node || parentType === "TSOptionalType"; +function TSIntersectionType(node, parent, parentId) { + return parentId === 211 || TSTypeOperator(node, parent, parentId); } -function TSInferType(node, parent) { - const parentType = parent.type; - if (parentType === "TSArrayType" || parentType === "TSIndexedAccessType" && parent.objectType === node || parentType === "TSOptionalType") { +function TSInferType(node, parent, parentId) { + if (TSTypeOperator(node, parent, parentId)) { + return true; + } + if ((parentId === 181 || parentId === 219) && node.typeParameter.constraint && parent.types[0] === node) { return true; } - if (node.typeParameter.constraint) { - if ((parentType === "TSIntersectionType" || parentType === "TSUnionType") && parent.types[0] === node) { + return false; +} +function TSTypeOperator(node, parent, parentId) { + switch (parentId) { + case 155: + case 195: return true; - } + case 175: + if (parent.objectType === node) { + return true; + } } return false; } -function TSTypeOperator(node, parent) { - const parentType = parent.type; - return parentType === "TSArrayType" || parentType === "TSIndexedAccessType" && parent.objectType === node || parentType === "TSOptionalType"; +function TSInstantiationExpression(node, parent, parentId) { + switch (parentId) { + case 17: + case 130: + case 112: + case 177: + return (parent.typeParameters + ) != null; + } + return false; } -function TSInstantiationExpression(node, parent) { - const parentType = parent.type; - return (parentType === "CallExpression" || parentType === "OptionalCallExpression" || parentType === "NewExpression" || parentType === "TSInstantiationExpression") && !!parent.typeParameters; +function TSFunctionType(node, parent, parentId) { + if (TSUnionType(node, parent, parentId)) return true; + return parentId === 219 || parentId === 161 && (parent.checkType === node || parent.extendsType === node); } -function TSFunctionType(node, parent) { - const parentType = parent.type; - return parentType === "TSIntersectionType" || parentType === "TSUnionType" || parentType === "TSTypeOperator" || parentType === "TSOptionalType" || parentType === "TSArrayType" || parentType === "TSIndexedAccessType" && parent.objectType === node || parentType === "TSConditionalType" && (parent.checkType === node || parent.extendsType === node); +function BinaryExpression(node, parent, parentId, tokenContext) { + if (BinaryLike(node, parent, parentId, 0)) return true; + return (tokenContext & _index.TokenContext.forInOrInitHeadAccumulate) > 0 && node.operator === "in"; } -function BinaryExpression(node, parent, tokenContext) { - return node.operator === "in" && Boolean(tokenContext & _index.TokenContext.forInOrInitHeadAccumulate); +function LogicalExpression(node, parent, parentId) { + return BinaryLike(node, parent, parentId, 1); } -function SequenceExpression(node, parent) { - const parentType = parent.type; - if (parentType === "SequenceExpression" || parentType === "ParenthesizedExpression" || parentType === "MemberExpression" && parent.property === node || parentType === "OptionalMemberExpression" && parent.property === node || parentType === "TemplateLiteral") { +function SequenceExpression(node, parent, parentId) { + if (parentId === 144 || parentId === 133 || parentId === 108 && parent.property === node || parentId === 132 && parent.property === node || parentId === 224) { return false; } - if (parentType === "ClassDeclaration") { + if (parentId === 21) { return true; } - if (parentType === "ForOfStatement") { + if (parentId === 68) { return parent.right === node; } - if (parentType === "ExportDefaultDeclaration") { + if (parentId === 60) { return true; } return !isStatement(parent); } -function YieldExpression(node, parent) { - const parentType = parent.type; - return parentType === "BinaryExpression" || parentType === "LogicalExpression" || parentType === "UnaryExpression" || parentType === "SpreadElement" || hasPostfixPart(node, parent) || parentType === "AwaitExpression" && isYieldExpression(node) || parentType === "ConditionalExpression" && node === parent.test || isClassExtendsClause(node, parent) || isTSTypeExpression(parentType); +function YieldExpression(node, parent, parentId) { + return parentId === 10 || parentId === 107 || parentId === 238 || parentId === 145 || hasPostfixPart(node, parent, parentId) || parentId === 8 && isYieldExpression(node) || parentId === 28 && node === parent.test || isClassExtendsClause(node, parent, parentId) || isTSTypeExpression(parentId); } -function ClassExpression(node, parent, tokenContext) { - return Boolean(tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.exportDefault)); +function ClassExpression(node, parent, parentId, tokenContext) { + return (tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.exportDefault)) > 0; } -function UnaryLike(node, parent) { - return hasPostfixPart(node, parent) || isBinaryExpression(parent) && parent.operator === "**" && parent.left === node || isClassExtendsClause(node, parent); +function UnaryLike(node, parent, parentId) { + return hasPostfixPart(node, parent, parentId) || parentId === 10 && parent.operator === "**" && parent.left === node || isClassExtendsClause(node, parent, parentId); } -function FunctionExpression(node, parent, tokenContext) { - return Boolean(tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.exportDefault)); +function FunctionExpression(node, parent, parentId, tokenContext) { + return (tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.exportDefault)) > 0; } -function ConditionalExpression(node, parent) { - const parentType = parent.type; - if (parentType === "UnaryExpression" || parentType === "SpreadElement" || parentType === "BinaryExpression" || parentType === "LogicalExpression" || parentType === "ConditionalExpression" && parent.test === node || parentType === "AwaitExpression" || isTSTypeExpression(parentType)) { +function ConditionalExpression(node, parent, parentId) { + switch (parentId) { + case 238: + case 145: + case 10: + case 107: + case 8: + return true; + case 28: + if (parent.test === node) { + return true; + } + } + if (isTSTypeExpression(parentId)) { return true; } - return UnaryLike(node, parent); -} -function OptionalMemberExpression(node, parent) { - return isCallExpression(parent) && parent.callee === node || isMemberExpression(parent) && parent.object === node; + return UnaryLike(node, parent, parentId); } -function AssignmentExpression(node, parent, tokenContext) { - if (needsParenBeforeExpressionBrace(tokenContext) && isObjectPattern(node.left)) { - return true; - } else { - return ConditionalExpression(node, parent); +function OptionalMemberExpression(node, parent, parentId) { + switch (parentId) { + case 17: + return parent.callee === node; + case 108: + return parent.object === node; } + return false; } -function LogicalExpression(node, parent) { - const parentType = parent.type; - if (isTSTypeExpression(parentType)) return true; - if (parentType !== "LogicalExpression") return false; - switch (node.operator) { - case "||": - return parent.operator === "??" || parent.operator === "&&"; - case "&&": - return parent.operator === "??"; - case "??": - return parent.operator !== "??"; +function AssignmentExpression(node, parent, parentId, tokenContext) { + if (needsParenBeforeExpressionBrace(tokenContext) && node.left.type === "ObjectPattern") { + return true; } + return ConditionalExpression(node, parent, parentId); } -function Identifier(node, parent, tokenContext, getRawIdentifier) { +function Identifier(node, parent, parentId, tokenContext, getRawIdentifier) { var _node$extra; - const parentType = parent.type; - if ((_node$extra = node.extra) != null && _node$extra.parenthesized && parentType === "AssignmentExpression" && parent.left === node) { + if (getRawIdentifier && getRawIdentifier(node) !== node.name) { + return false; + } + if (parentId === 6 && (_node$extra = node.extra) != null && _node$extra.parenthesized && parent.left === node) { const rightType = parent.right.type; if ((rightType === "FunctionExpression" || rightType === "ClassExpression") && parent.right.id == null) { return true; } } - if (getRawIdentifier && getRawIdentifier(node) !== node.name) { - return false; - } - if (node.name === "let") { - const isFollowedByBracket = isMemberExpression(parent, { - object: node, - computed: true - }) || isOptionalMemberExpression(parent, { - object: node, - computed: true, - optional: false - }); - if (isFollowedByBracket && tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.forInitHead | _index.TokenContext.forInHead)) { - return true; + if (tokenContext & _index.TokenContext.forOfHead || (parentId === 108 || parentId === 132) && tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.forInitHead | _index.TokenContext.forInHead)) { + if (node.name === "let") { + const isFollowedByBracket = isMemberExpression(parent, { + object: node, + computed: true + }) || isOptionalMemberExpression(parent, { + object: node, + computed: true, + optional: false + }); + if (isFollowedByBracket && tokenContext & (_index.TokenContext.expressionStatement | _index.TokenContext.forInitHead | _index.TokenContext.forInHead)) { + return true; + } + return (tokenContext & _index.TokenContext.forOfHead) > 0; } - return Boolean(tokenContext & _index.TokenContext.forOfHead); } - return node.name === "async" && isForOfStatement(parent, { - left: node, - await: false - }); + return parentId === 68 && parent.left === node && node.name === "async" && !parent.await; } //# sourceMappingURL=parentheses.js.map @@ -20700,7 +20681,7 @@ function Identifier(node, parent, tokenContext, getRawIdentifier) { /***/ }), -/***/ 5850: +/***/ 5644: /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; @@ -20709,157 +20690,20 @@ function Identifier(node, parent, tokenContext, getRawIdentifier) { Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.nodes = void 0; -var _t = __nccwpck_require__(7912); -const { - FLIPPED_ALIAS_KEYS, - isArrayExpression, - isAssignmentExpression, - isBinary, - isBlockStatement, - isCallExpression, - isFunction, - isIdentifier, - isLiteral, - isMemberExpression, - isObjectExpression, - isOptionalCallExpression, - isOptionalMemberExpression, - isStringLiteral -} = _t; -function crawlInternal(node, state) { - if (!node) return state; - if (isMemberExpression(node) || isOptionalMemberExpression(node)) { - crawlInternal(node.object, state); - if (node.computed) crawlInternal(node.property, state); - } else if (isBinary(node) || isAssignmentExpression(node)) { - crawlInternal(node.left, state); - crawlInternal(node.right, state); - } else if (isCallExpression(node) || isOptionalCallExpression(node)) { - state.hasCall = true; - crawlInternal(node.callee, state); - } else if (isFunction(node)) { - state.hasFunction = true; - } else if (isIdentifier(node)) { - state.hasHelper = state.hasHelper || node.callee && isHelper(node.callee); - } - return state; -} -function crawl(node) { - return crawlInternal(node, { - hasCall: false, - hasFunction: false, - hasHelper: false - }); -} -function isHelper(node) { - if (!node) return false; - if (isMemberExpression(node)) { - return isHelper(node.object) || isHelper(node.property); - } else if (isIdentifier(node)) { - return node.name === "require" || node.name.charCodeAt(0) === 95; - } else if (isCallExpression(node)) { - return isHelper(node.callee); - } else if (isBinary(node) || isAssignmentExpression(node)) { - return isIdentifier(node.left) && isHelper(node.left) || isHelper(node.right); - } else { - return false; - } +exports.generatorInfosMap = void 0; +var generatorFunctions = __nccwpck_require__(8312); +var deprecatedGeneratorFunctions = __nccwpck_require__(342); +const generatorInfosMap = exports.generatorInfosMap = new Map(); +let index = 0; +for (const key of Object.keys(generatorFunctions).sort()) { + if (key.startsWith("_")) continue; + generatorInfosMap.set(key, [generatorFunctions[key], index++, undefined]); } -function isType(node) { - return isLiteral(node) || isObjectExpression(node) || isArrayExpression(node) || isIdentifier(node) || isMemberExpression(node); +for (const key of Object.keys(deprecatedGeneratorFunctions)) { + generatorInfosMap.set(key, [deprecatedGeneratorFunctions[key], index++, undefined]); } -const nodes = exports.nodes = { - AssignmentExpression(node) { - const state = crawl(node.right); - if (state.hasCall && state.hasHelper || state.hasFunction) { - return state.hasFunction ? 1 | 2 : 2; - } - return 0; - }, - SwitchCase(node, parent) { - return (!!node.consequent.length || parent.cases[0] === node ? 1 : 0) | (!node.consequent.length && parent.cases[parent.cases.length - 1] === node ? 2 : 0); - }, - LogicalExpression(node) { - if (isFunction(node.left) || isFunction(node.right)) { - return 2; - } - return 0; - }, - Literal(node) { - if (isStringLiteral(node) && node.value === "use strict") { - return 2; - } - return 0; - }, - CallExpression(node) { - if (isFunction(node.callee) || isHelper(node)) { - return 1 | 2; - } - return 0; - }, - OptionalCallExpression(node) { - if (isFunction(node.callee)) { - return 1 | 2; - } - return 0; - }, - VariableDeclaration(node) { - for (let i = 0; i < node.declarations.length; i++) { - const declar = node.declarations[i]; - let enabled = isHelper(declar.id) && !isType(declar.init); - if (!enabled && declar.init) { - const state = crawl(declar.init); - enabled = isHelper(declar.init) && state.hasCall || state.hasFunction; - } - if (enabled) { - return 1 | 2; - } - } - return 0; - }, - IfStatement(node) { - if (isBlockStatement(node.consequent)) { - return 1 | 2; - } - return 0; - } -}; -nodes.ObjectProperty = nodes.ObjectTypeProperty = nodes.ObjectMethod = function (node, parent) { - if (parent.properties[0] === node) { - return 1; - } - return 0; -}; -nodes.ObjectTypeCallProperty = function (node, parent) { - var _parent$properties; - if (parent.callProperties[0] === node && !((_parent$properties = parent.properties) != null && _parent$properties.length)) { - return 1; - } - return 0; -}; -nodes.ObjectTypeIndexer = function (node, parent) { - var _parent$properties2, _parent$callPropertie; - if (parent.indexers[0] === node && !((_parent$properties2 = parent.properties) != null && _parent$properties2.length) && !((_parent$callPropertie = parent.callProperties) != null && _parent$callPropertie.length)) { - return 1; - } - return 0; -}; -nodes.ObjectTypeInternalSlot = function (node, parent) { - var _parent$properties3, _parent$callPropertie2, _parent$indexers; - if (parent.internalSlots[0] === node && !((_parent$properties3 = parent.properties) != null && _parent$properties3.length) && !((_parent$callPropertie2 = parent.callProperties) != null && _parent$callPropertie2.length) && !((_parent$indexers = parent.indexers) != null && _parent$indexers.length)) { - return 1; - } - return 0; -}; -[["Function", true], ["Class", true], ["Loop", true], ["LabeledStatement", true], ["SwitchStatement", true], ["TryStatement", true]].forEach(function ([type, amounts]) { - [type].concat(FLIPPED_ALIAS_KEYS[type] || []).forEach(function (type) { - const ret = amounts ? 1 | 2 : 0; - nodes[type] = () => ret; - }); -}); -//# sourceMappingURL=whitespace.js.map +//# sourceMappingURL=nodes.js.map /***/ }), @@ -20876,11 +20720,10 @@ Object.defineProperty(exports, "__esModule", ({ exports["default"] = void 0; var _buffer = __nccwpck_require__(260); var _index = __nccwpck_require__(9223); -var n = _index; +var _nodes = __nccwpck_require__(5644); var _t = __nccwpck_require__(7912); var _tokenMap = __nccwpck_require__(6737); -var generatorFunctions = __nccwpck_require__(8312); -var _deprecated = __nccwpck_require__(342); +var _types2 = __nccwpck_require__(3817); const { isExpression, isFunction, @@ -20896,15 +20739,13 @@ const HAS_NEWLINE_OR_BlOCK_COMMENT_END = /[\n\r\u2028\u2029]|\*\//; function commentIsNewline(c) { return c.type === "CommentLine" || HAS_NEWLINE.test(c.value); } -const { - needsParens -} = n; class Printer { constructor(format, map, tokens = null, originalCode = null) { this.tokenContext = _index.TokenContext.normal; this._tokens = null; this._originalCode = null; this._currentNode = null; + this._currentTypeId = null; this._indent = 0; this._indentRepeat = 0; this._insideAux = false; @@ -20912,14 +20753,11 @@ class Printer { this._noLineTerminatorAfterNode = null; this._printAuxAfterOnNextUserNode = false; this._printedComments = new Set(); - this._endsWithInteger = false; - this._endsWithWord = false; - this._endsWithDiv = false; this._lastCommentLine = 0; - this._endsWithInnerRaw = false; - this._indentInnerComments = true; + this._innerCommentsState = 0; + this._flags = 0; this.tokenMap = null; - this._boundGetRawIdentifier = this._getRawIdentifier.bind(this); + this._boundGetRawIdentifier = null; this._printSemicolonBeforeNextNode = -1; this._printSemicolonBeforeNextToken = -1; this.format = format; @@ -20928,67 +20766,66 @@ class Printer { this._indentRepeat = format.indent.style.length; this._inputMap = (map == null ? void 0 : map._inputMap) || null; this._buf = new _buffer.default(map, format.indent.style[0]); - } - enterForStatementInit() { - this.tokenContext |= _index.TokenContext.forInitHead | _index.TokenContext.forInOrInitHeadAccumulate; - return () => this.tokenContext = _index.TokenContext.normal; - } - enterForXStatementInit(isForOf) { - if (isForOf) { - this.tokenContext |= _index.TokenContext.forOfHead; - return null; - } else { - this.tokenContext |= _index.TokenContext.forInHead | _index.TokenContext.forInOrInitHeadAccumulate; - return () => this.tokenContext = _index.TokenContext.normal; + const { + preserveFormat, + compact, + concise, + retainLines, + retainFunctionParens + } = format; + if (preserveFormat) { + this._flags |= 1; + } + if (compact) { + this._flags |= 2; + } + if (concise) { + this._flags |= 4; + } + if (retainLines) { + this._flags |= 8; + } + if (retainFunctionParens) { + this._flags |= 16; + } + if (format.auxiliaryCommentBefore || format.auxiliaryCommentAfter) { + this._flags |= 32; } } enterDelimited() { - const oldTokenContext = this.tokenContext; const oldNoLineTerminatorAfterNode = this._noLineTerminatorAfterNode; - if (!(oldTokenContext & _index.TokenContext.forInOrInitHeadAccumulate) && oldNoLineTerminatorAfterNode === null) { - return () => {}; + if (oldNoLineTerminatorAfterNode !== null) { + this._noLineTerminatorAfterNode = null; } - this._noLineTerminatorAfterNode = null; - this.tokenContext = _index.TokenContext.normal; - return () => { - this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; - this.tokenContext = oldTokenContext; - }; + return oldNoLineTerminatorAfterNode; } generate(ast) { if (this.format.preserveFormat) { this.tokenMap = new _tokenMap.TokenMap(ast, this._tokens, this._originalCode); + this._boundGetRawIdentifier = _types2._getRawIdentifier.bind(this); } this.print(ast); this._maybeAddAuxComment(); return this._buf.get(); } - indent() { - const { - format - } = this; - if (format.preserveFormat || format.compact || format.concise) { + indent(flags = this._flags) { + if (flags & (1 | 2 | 4)) { return; } - this._indent++; + this._indent += this._indentRepeat; } - dedent() { - const { - format - } = this; - if (format.preserveFormat || format.compact || format.concise) { + dedent(flags = this._flags) { + if (flags & (1 | 2 | 4)) { return; } - this._indent--; + this._indent -= this._indentRepeat; } semicolon(force = false) { - this._maybeAddAuxComment(); - if (force) { - this._appendChar(59); - this._noLineTerminator = false; - return; + const flags = this._flags; + if (flags & 32) { + this._maybeAddAuxComment(); } - if (this.tokenMap) { + if (flags & 1) { const node = this._currentNode; if (node.start != null && node.end != null) { if (!this.tokenMap.endMatches(node, ";")) { @@ -20999,7 +20836,11 @@ class Printer { this._catchUpTo(this._tokens[indexes[indexes.length - 1]].loc.start); } } - this._queue(59); + if (force) { + this._appendChar(59); + } else { + this._queue(59); + } this._noLineTerminator = false; } rightBrace(node) { @@ -21014,15 +20855,14 @@ class Printer { this.tokenChar(41); } space(force = false) { - const { - format - } = this; - if (format.compact || format.preserveFormat) return; + if (this._flags & (1 | 2)) { + return; + } if (force) { this._space(); - } else if (this._buf.hasContent()) { - const lastCp = this.getLastChar(); - if (lastCp !== 32 && lastCp !== 10) { + } else { + const lastCp = this.getLastChar(true); + if (lastCp !== 0 && lastCp !== 32 && lastCp !== 10) { this._space(); } } @@ -21030,13 +20870,17 @@ class Printer { word(str, noLineTerminatorAfter = false) { this.tokenContext &= _index.TokenContext.forInOrInitHeadAccumulatePassThroughMask; this._maybePrintInnerComments(str); - this._maybeAddAuxComment(); - if (this.tokenMap) this._catchUpToCurrentToken(str); - if (this._endsWithWord || this._endsWithDiv && str.charCodeAt(0) === 47) { + const flags = this._flags; + if (flags & 32) { + this._maybeAddAuxComment(); + } + if (flags & 1) this._catchUpToCurrentToken(str); + const lastChar = this.getLastChar(); + if (lastChar === -2 || lastChar === -3 || lastChar === 47 && str.charCodeAt(0) === 47) { this._space(); } this._append(str, false); - this._endsWithWord = true; + this.setLastChar(-3); this._noLineTerminator = noLineTerminatorAfter; } number(str, number) { @@ -21048,61 +20892,68 @@ class Printer { return false; } this.word(str); - this._endsWithInteger = Number.isInteger(number) && !isNonDecimalLiteral(str) && !SCIENTIFIC_NOTATION.test(str) && !ZERO_DECIMAL_INTEGER.test(str) && str.charCodeAt(str.length - 1) !== 46; + if (Number.isInteger(number) && !isNonDecimalLiteral(str) && !SCIENTIFIC_NOTATION.test(str) && !ZERO_DECIMAL_INTEGER.test(str) && str.charCodeAt(str.length - 1) !== 46) { + this.setLastChar(-2); + } } - token(str, maybeNewline = false, occurrenceCount = 0) { + token(str, maybeNewline = false, occurrenceCount = 0, mayNeedSpace = false) { this.tokenContext &= _index.TokenContext.forInOrInitHeadAccumulatePassThroughMask; this._maybePrintInnerComments(str, occurrenceCount); - this._maybeAddAuxComment(); - if (this.tokenMap) this._catchUpToCurrentToken(str, occurrenceCount); - const lastChar = this.getLastChar(); - const strFirst = str.charCodeAt(0); - if (lastChar === 33 && (str === "--" || strFirst === 61) || strFirst === 43 && lastChar === 43 || strFirst === 45 && lastChar === 45 || strFirst === 46 && this._endsWithInteger) { - this._space(); + const flags = this._flags; + if (flags & 32) { + this._maybeAddAuxComment(); + } + if (flags & 1) { + this._catchUpToCurrentToken(str, occurrenceCount); + } + if (mayNeedSpace) { + const strFirst = str.charCodeAt(0); + if ((strFirst === 45 && str === "--" || strFirst === 61) && this.getLastChar() === 33 || strFirst === 43 && this.getLastChar() === 43 || strFirst === 45 && this.getLastChar() === 45 || strFirst === 46 && this.getLastChar() === -2) { + this._space(); + } } this._append(str, maybeNewline); this._noLineTerminator = false; } - tokenChar(char) { + tokenChar(char, occurrenceCount = 0) { this.tokenContext &= _index.TokenContext.forInOrInitHeadAccumulatePassThroughMask; - const str = String.fromCharCode(char); - this._maybePrintInnerComments(str); - this._maybeAddAuxComment(); - if (this.tokenMap) this._catchUpToCurrentToken(str); - const lastChar = this.getLastChar(); - if (char === 43 && lastChar === 43 || char === 45 && lastChar === 45 || char === 46 && this._endsWithInteger) { + this._maybePrintInnerComments(char, occurrenceCount); + const flags = this._flags; + if (flags & 32) { + this._maybeAddAuxComment(); + } + if (flags & 1) { + this._catchUpToCurrentToken(char, occurrenceCount); + } + if (char === 43 && this.getLastChar() === 43 || char === 45 && this.getLastChar() === 45 || char === 46 && this.getLastChar() === -2) { this._space(); } this._appendChar(char); this._noLineTerminator = false; } - newline(i = 1, force) { + newline(i = 1, flags = this._flags) { if (i <= 0) return; - if (!force) { - if (this.format.retainLines || this.format.compact) return; - if (this.format.concise) { - this.space(); - return; - } + if (flags & (8 | 2)) { + return; + } + if (flags & 4) { + this.space(); + return; } if (i > 2) i = 2; i -= this._buf.getNewlineCount(); for (let j = 0; j < i; j++) { this._newline(); } - return; } endsWith(char) { - return this.getLastChar() === char; + return this.getLastChar(true) === char; } - getLastChar() { - return this._buf.getLastChar(); + getLastChar(checkQueue) { + return this._buf.getLastChar(checkQueue); } - endsWithCharAndNewline() { - return this._buf.endsWithCharAndNewline(); - } - removeTrailingNewline() { - this._buf.removeTrailingNewline(); + setLastChar(char) { + this._buf._last = char; } exactSource(loc, cb) { if (!loc) { @@ -21132,49 +20983,40 @@ class Printer { this._queue(32); } _newline() { - this._queue(10); + if (this._buf._queuedChar === 32) this._buf._queuedChar = 0; + this._appendChar(10, true); } _catchUpToCurrentToken(str, occurrenceCount = 0) { const token = this.tokenMap.findMatching(this._currentNode, str, occurrenceCount); if (token) this._catchUpTo(token.loc.start); if (this._printSemicolonBeforeNextToken !== -1 && this._printSemicolonBeforeNextToken === this._buf.getCurrentLine()) { - this._buf.appendChar(59); - this._endsWithWord = false; - this._endsWithInteger = false; - this._endsWithDiv = false; + this._appendChar(59, true); } this._printSemicolonBeforeNextToken = -1; this._printSemicolonBeforeNextNode = -1; } _append(str, maybeNewline) { - this._maybeIndent(str.charCodeAt(0)); + this._maybeIndent(); this._buf.append(str, maybeNewline); - this._endsWithWord = false; - this._endsWithInteger = false; - this._endsWithDiv = false; } - _appendChar(char) { - this._maybeIndent(char); + _appendChar(char, noIndent) { + if (!noIndent) { + this._maybeIndent(); + } this._buf.appendChar(char); - this._endsWithWord = false; - this._endsWithInteger = false; - this._endsWithDiv = false; } _queue(char) { - this._maybeIndent(char); this._buf.queue(char); - this._endsWithWord = false; - this._endsWithInteger = false; + this.setLastChar(-1); } - _maybeIndent(firstChar) { - if (this._indent && firstChar !== 10 && this.endsWith(10)) { - this._buf.queueIndentation(this._getIndent()); + _maybeIndent() { + const indent = this._shouldIndent(); + if (indent > 0) { + this._buf._appendChar(-1, indent, false); } } - _shouldIndent(firstChar) { - if (this._indent && firstChar !== 10 && this.endsWith(10)) { - return true; - } + _shouldIndent() { + return this.endsWith(10) ? this._indent : 0; } catchUp(line) { if (!this.format.retainLines) return; @@ -21184,11 +21026,9 @@ class Printer { } } _catchUp(prop, loc) { - const { - format - } = this; - if (!format.preserveFormat) { - if (format.retainLines && loc != null && loc[prop]) { + const flags = this._flags; + if ((flags & 1) === 0) { + if (flags & 8 && loc != null && loc[prop]) { this.catchUp(loc[prop].line); } return; @@ -21212,64 +21052,80 @@ class Printer { if (spacesCount > 0) { const spaces = this._originalCode ? this._originalCode.slice(index - spacesCount, index).replace(/[^\t\x0B\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF]/gu, " ") : " ".repeat(spacesCount); this._append(spaces, false); + this.setLastChar(32); } } - _getIndent() { - return this._indentRepeat * this._indent; - } printTerminatorless(node) { this._noLineTerminator = true; this.print(node); } - print(node, noLineTerminatorAfter = false, trailingCommentsLineOffset) { - var _node$extra, _node$leadingComments, _node$leadingComments2; + print(node, noLineTerminatorAfter = false, resetTokenContext = false, trailingCommentsLineOffset) { + var _node$leadingComments, _node$leadingComments2; if (!node) return; - this._endsWithInnerRaw = false; - const nodeType = node.type; - const format = this.format; - const oldConcise = format.concise; + this._innerCommentsState = 0; + const { + type, + loc, + extra + } = node; + const flags = this._flags; + let changedFlags = false; if (node._compact) { - format.concise = true; + this._flags |= 4; + changedFlags = true; } - const printMethod = this[nodeType]; - if (printMethod === undefined) { - throw new ReferenceError(`unknown node of type ${JSON.stringify(nodeType)} with constructor ${JSON.stringify(node.constructor.name)}`); + const nodeInfo = _nodes.generatorInfosMap.get(type); + if (nodeInfo === undefined) { + throw new ReferenceError(`unknown node of type ${JSON.stringify(type)} with constructor ${JSON.stringify(node.constructor.name)}`); } + const [printMethod, nodeId, needsParens] = nodeInfo; const parent = this._currentNode; + const parentId = this._currentTypeId; this._currentNode = node; - if (this.tokenMap) { + this._currentTypeId = nodeId; + if (flags & 1) { this._printSemicolonBeforeNextToken = this._printSemicolonBeforeNextNode; } - const oldInAux = this._insideAux; - this._insideAux = node.loc == null; - this._maybeAddAuxComment(this._insideAux && !oldInAux); - const parenthesized = (_node$extra = node.extra) == null ? void 0 : _node$extra.parenthesized; - let shouldPrintParens = parenthesized && format.preserveFormat || parenthesized && format.retainFunctionParens && nodeType === "FunctionExpression" || needsParens(node, parent, this.tokenContext, format.preserveFormat ? this._boundGetRawIdentifier : undefined); + let oldInAux; + if (flags & 32) { + oldInAux = this._insideAux; + this._insideAux = loc == null; + this._maybeAddAuxComment(this._insideAux && !oldInAux); + } + let oldTokenContext = 0; + if (resetTokenContext) { + oldTokenContext = this.tokenContext; + if (oldTokenContext & _index.TokenContext.forInOrInitHeadAccumulate) { + this.tokenContext = 0; + } else { + oldTokenContext = 0; + } + } + const parenthesized = extra != null && extra.parenthesized; + let shouldPrintParens = parenthesized && flags & 1 || parenthesized && flags & 16 && nodeId === 71 || parent && ((0, _index.parentNeedsParens)(node, parent, parentId) || needsParens != null && needsParens(node, parent, parentId, this.tokenContext, flags & 1 ? this._boundGetRawIdentifier : undefined)); if (!shouldPrintParens && parenthesized && (_node$leadingComments = node.leadingComments) != null && _node$leadingComments.length && node.leadingComments[0].type === "CommentBlock") { - const parentType = parent == null ? void 0 : parent.type; - switch (parentType) { - case "ExpressionStatement": - case "VariableDeclarator": - case "AssignmentExpression": - case "ReturnStatement": + switch (parentId) { + case 65: + case 243: + case 6: + case 143: break; - case "CallExpression": - case "OptionalCallExpression": - case "NewExpression": + case 17: + case 130: + case 112: if (parent.callee !== node) break; default: shouldPrintParens = true; } } let indentParenthesized = false; - if (!shouldPrintParens && this._noLineTerminator && ((_node$leadingComments2 = node.leadingComments) != null && _node$leadingComments2.some(commentIsNewline) || this.format.retainLines && node.loc && node.loc.start.line > this._buf.getCurrentLine())) { + if (!shouldPrintParens && this._noLineTerminator && ((_node$leadingComments2 = node.leadingComments) != null && _node$leadingComments2.some(commentIsNewline) || flags & 8 && loc && loc.start.line > this._buf.getCurrentLine())) { shouldPrintParens = true; indentParenthesized = true; } let oldNoLineTerminatorAfterNode; - let oldTokenContext; if (!shouldPrintParens) { - noLineTerminatorAfter || (noLineTerminatorAfter = !!parent && this._noLineTerminatorAfterNode === parent && n.isLastChild(parent, node)); + noLineTerminatorAfter || (noLineTerminatorAfter = !!parent && this._noLineTerminatorAfterNode === parent && (0, _index.isLastChild)(parent, node)); if (noLineTerminatorAfter) { var _node$trailingComment; if ((_node$trailingComment = node.trailingComments) != null && _node$trailingComment.some(commentIsNewline)) { @@ -21283,18 +21139,18 @@ class Printer { if (shouldPrintParens) { this.tokenChar(40); if (indentParenthesized) this.indent(); - this._endsWithInnerRaw = false; - if (this.tokenContext & _index.TokenContext.forInOrInitHeadAccumulate) { + this._innerCommentsState = 0; + if (!resetTokenContext) { oldTokenContext = this.tokenContext; - this.tokenContext = _index.TokenContext.normal; + } + if (oldTokenContext & _index.TokenContext.forInOrInitHeadAccumulate) { + this.tokenContext = 0; } oldNoLineTerminatorAfterNode = this._noLineTerminatorAfterNode; this._noLineTerminatorAfterNode = null; } - this._lastCommentLine = 0; this._printLeadingComments(node, parent); - const loc = nodeType === "Program" || nodeType === "File" ? null : node.loc; - this.exactSource(loc, printMethod.bind(this, node, parent)); + this.exactSource(nodeId === 139 || nodeId === 66 ? null : loc, printMethod.bind(this, node, parent)); if (shouldPrintParens) { this._printTrailingComments(node, parent); if (indentParenthesized) { @@ -21303,20 +21159,25 @@ class Printer { } this.tokenChar(41); this._noLineTerminator = noLineTerminatorAfter; - if (oldTokenContext) this.tokenContext = oldTokenContext; } else if (noLineTerminatorAfter && !this._noLineTerminator) { this._noLineTerminator = true; this._printTrailingComments(node, parent); } else { this._printTrailingComments(node, parent, trailingCommentsLineOffset); } + if (oldTokenContext) this.tokenContext = oldTokenContext; this._currentNode = parent; - format.concise = oldConcise; - this._insideAux = oldInAux; - if (oldNoLineTerminatorAfterNode !== undefined) { + this._currentTypeId = parentId; + if (changedFlags) { + this._flags = flags; + } + if (flags & 32) { + this._insideAux = oldInAux; + } + if (oldNoLineTerminatorAfterNode != null) { this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode; } - this._endsWithInnerRaw = false; + this._innerCommentsState = 0; } _maybeAddAuxComment(enteredPositionlessNode) { if (enteredPositionlessNode) this._printAuxBeforeComment(); @@ -21350,46 +21211,46 @@ class Printer { return extra.raw; } } - printJoin(nodes, statement, indent, separator, printTrailingSeparator, iterator, trailingCommentsLineOffset) { + printJoin(nodes, statement, indent, separator, printTrailingSeparator, resetTokenContext, trailingCommentsLineOffset) { if (!(nodes != null && nodes.length)) return; - if (indent == null && this.format.retainLines) { + const flags = this._flags; + if (indent == null && flags & 8) { var _nodes$0$loc; const startLine = (_nodes$0$loc = nodes[0].loc) == null ? void 0 : _nodes$0$loc.start.line; if (startLine != null && startLine !== this._buf.getCurrentLine()) { indent = true; } } - if (indent) this.indent(); - const newlineOpts = { - nextNodeStartLine: 0 - }; - const boundSeparator = separator == null ? void 0 : separator.bind(this); + if (indent) this.indent(flags); const len = nodes.length; for (let i = 0; i < len; i++) { const node = nodes[i]; if (!node) continue; - if (statement) this._printNewline(i === 0, newlineOpts); - this.print(node, undefined, trailingCommentsLineOffset || 0); - iterator == null || iterator(node, i); - if (boundSeparator != null) { - if (i < len - 1) boundSeparator(i, false);else if (printTrailingSeparator) boundSeparator(i, true); + if (statement && i === 0 && this._buf.hasContent()) { + this.newline(1, flags); + } + this.print(node, false, resetTokenContext, trailingCommentsLineOffset || 0); + if (separator != null) { + if (i < len - 1) separator.call(this, i, false);else if (printTrailingSeparator) separator.call(this, i, true); } if (statement) { - var _node$trailingComment2; - if (!((_node$trailingComment2 = node.trailingComments) != null && _node$trailingComment2.length)) { - this._lastCommentLine = 0; - } if (i + 1 === len) { - this.newline(1); + this.newline(1, flags); } else { - var _nextNode$loc; - const nextNode = nodes[i + 1]; - newlineOpts.nextNodeStartLine = ((_nextNode$loc = nextNode.loc) == null ? void 0 : _nextNode$loc.start.line) || 0; - this._printNewline(true, newlineOpts); + const lastCommentLine = this._lastCommentLine; + if (lastCommentLine > 0) { + var _nodes$loc; + const offset = (((_nodes$loc = nodes[i + 1].loc) == null ? void 0 : _nodes$loc.start.line) || 0) - lastCommentLine; + if (offset >= 0) { + this.newline(offset || 1, flags); + continue; + } + } + this.newline(1, flags); } } } - if (indent) this.dedent(); + if (indent) this.dedent(flags); } printAndIndentOnComments(node) { const indent = node.leadingComments && node.leadingComments.length > 0; @@ -21397,12 +21258,11 @@ class Printer { this.print(node); if (indent) this.dedent(); } - printBlock(parent) { - const node = parent.body; - if (node.type !== "EmptyStatement") { + printBlock(body) { + if (body.type !== "EmptyStatement") { this.space(); } - this.print(node); + this.print(body); } _printTrailingComments(node, parent, lineOffset) { const { @@ -21414,6 +21274,8 @@ class Printer { } if (trailingComments != null && trailingComments.length) { this._printComments(2, trailingComments, node, parent, lineOffset); + } else { + this._lastCommentLine = 0; } } _printLeadingComments(node, parent) { @@ -21422,65 +21284,48 @@ class Printer { this._printComments(0, comments, node, parent); } _maybePrintInnerComments(nextTokenStr, nextTokenOccurrenceCount) { - if (this._endsWithInnerRaw) { - var _this$tokenMap; - this.printInnerComments((_this$tokenMap = this.tokenMap) == null ? void 0 : _this$tokenMap.findMatching(this._currentNode, nextTokenStr, nextTokenOccurrenceCount)); + var _this$tokenMap; + const state = this._innerCommentsState; + switch (state & 3) { + case 0: + this._innerCommentsState = 1 | 4; + return; + case 1: + this.printInnerComments((state & 4) > 0, (_this$tokenMap = this.tokenMap) == null ? void 0 : _this$tokenMap.findMatching(this._currentNode, nextTokenStr, nextTokenOccurrenceCount)); } - this._endsWithInnerRaw = true; - this._indentInnerComments = true; } - printInnerComments(nextToken) { + printInnerComments(indent = true, nextToken) { const node = this._currentNode; const comments = node.innerComments; - if (!(comments != null && comments.length)) return; + if (!(comments != null && comments.length)) { + this._innerCommentsState = 2; + return; + } const hasSpace = this.endsWith(32); - const indent = this._indentInnerComments; - const printedCommentsCount = this._printedComments.size; if (indent) this.indent(); - this._printComments(1, comments, node, undefined, undefined, nextToken); - if (hasSpace && printedCommentsCount !== this._printedComments.size) { - this.space(); + switch (this._printComments(1, comments, node, undefined, undefined, nextToken)) { + case 2: + this._innerCommentsState = 2; + case 1: + if (hasSpace) this.space(); } if (indent) this.dedent(); } noIndentInnerCommentsHere() { - this._indentInnerComments = false; + this._innerCommentsState &= ~4; } - printSequence(nodes, indent, trailingCommentsLineOffset) { - this.printJoin(nodes, true, indent != null ? indent : false, undefined, undefined, undefined, trailingCommentsLineOffset); + printSequence(nodes, indent, resetTokenContext, trailingCommentsLineOffset) { + this.printJoin(nodes, true, indent != null ? indent : false, undefined, undefined, resetTokenContext, trailingCommentsLineOffset); } - printList(items, printTrailingSeparator, statement, indent, separator, iterator) { - this.printJoin(items, statement, indent, separator != null ? separator : commaSeparator, printTrailingSeparator, iterator); + printList(items, printTrailingSeparator, statement, indent, separator, resetTokenContext) { + this.printJoin(items, statement, indent, separator != null ? separator : commaSeparator, printTrailingSeparator, resetTokenContext); } shouldPrintTrailingComma(listEnd) { if (!this.tokenMap) return null; - const listEndIndex = this.tokenMap.findLastIndex(this._currentNode, token => this.tokenMap.matchesOriginal(token, listEnd)); + const listEndIndex = this.tokenMap.findLastIndex(this._currentNode, token => this.tokenMap.matchesOriginal(token, typeof listEnd === "number" ? String.fromCharCode(listEnd) : listEnd)); if (listEndIndex <= 0) return null; return this.tokenMap.matchesOriginal(this._tokens[listEndIndex - 1], ","); } - _printNewline(newLine, opts) { - const format = this.format; - if (format.retainLines || format.compact) return; - if (format.concise) { - this.space(); - return; - } - if (!newLine) { - return; - } - const startLine = opts.nextNodeStartLine; - const lastCommentLine = this._lastCommentLine; - if (startLine > 0 && lastCommentLine > 0) { - const offset = startLine - lastCommentLine; - if (offset >= 0) { - this.newline(offset || 1); - return; - } - } - if (this._buf.hasContent()) { - this.newline(1); - } - } _shouldPrintComment(comment, nextToken) { if (comment.ignore) return 0; if (this._printedComments.has(comment)) return 0; @@ -21502,13 +21347,19 @@ class Printer { _printComment(comment, skipNewLines) { const noLineTerminator = this._noLineTerminator; const isBlockComment = comment.type === "CommentBlock"; - const printNewLines = isBlockComment && skipNewLines !== 1 && !this._noLineTerminator; + const printNewLines = isBlockComment && skipNewLines !== 1 && !noLineTerminator; if (printNewLines && this._buf.hasContent() && skipNewLines !== 2) { this.newline(1); } - const lastCharCode = this.getLastChar(); - if (lastCharCode !== 91 && lastCharCode !== 123 && lastCharCode !== 40) { - this.space(); + switch (this.getLastChar(true)) { + case 47: + this._space(); + case 91: + case 123: + case 40: + break; + default: + this.space(); } let val; if (isBlockComment) { @@ -21520,12 +21371,12 @@ class Printer { const newlineRegex = new RegExp("\\n\\s{1," + offset + "}", "g"); val = val.replace(newlineRegex, "\n"); } - if (this.format.concise) { + if (this._flags & 4) { val = val.replace(/\n(?!$)/g, `\n`); } else { let indentSize = this.format.retainLines ? 0 : this._buf.getCurrentColumn(); - if (this._shouldIndent(47) || this.format.retainLines) { - indentSize += this._getIndent(); + if (this._shouldIndent() || this.format.retainLines) { + indentSize += this._indent; } val = val.replace(/\n(?!$)/g, `\n${" ".repeat(indentSize)}`); } @@ -21535,24 +21386,10 @@ class Printer { } else { val = `/*${comment.value}*/`; } - if (this._endsWithDiv) this._space(); - if (this.tokenMap) { - const { - _printSemicolonBeforeNextToken, - _printSemicolonBeforeNextNode - } = this; - this._printSemicolonBeforeNextToken = -1; - this._printSemicolonBeforeNextNode = -1; - this.source("start", comment.loc); - this._append(val, isBlockComment); - this._printSemicolonBeforeNextNode = _printSemicolonBeforeNextNode; - this._printSemicolonBeforeNextToken = _printSemicolonBeforeNextToken; - } else { - this.source("start", comment.loc); - this._append(val, isBlockComment); - } + this.source("start", comment.loc); + this._append(val, isBlockComment); if (!isBlockComment && !noLineTerminator) { - this.newline(1, true); + this._newline(); } if (printNewLines && skipNewLines !== 3) { this.newline(1); @@ -21566,13 +21403,15 @@ class Printer { const nodeEndLine = hasLoc ? nodeLoc.end.line : 0; let lastLine = 0; let leadingCommentNewline = 0; - const maybeNewline = this._noLineTerminator ? function () {} : this.newline.bind(this); + const { + _noLineTerminator, + _flags + } = this; for (let i = 0; i < len; i++) { const comment = comments[i]; const shouldPrint = this._shouldPrintComment(comment, nextToken); if (shouldPrint === 2) { - hasLoc = false; - break; + return i === 0 ? 0 : 1; } if (hasLoc && comment.loc && shouldPrint === 1) { const commentStartLine = comment.loc.start.line; @@ -21587,25 +21426,37 @@ class Printer { offset = commentStartLine - lastLine; } lastLine = commentEndLine; - maybeNewline(offset); + if (offset > 0 && !_noLineTerminator) { + this.newline(offset, _flags); + } this._printComment(comment, 1); if (i + 1 === len) { - maybeNewline(Math.max(nodeStartLine - lastLine, leadingCommentNewline)); + const count = Math.max(nodeStartLine - lastLine, leadingCommentNewline); + if (count > 0 && !_noLineTerminator) { + this.newline(count, _flags); + } lastLine = nodeStartLine; } } else if (type === 1) { const offset = commentStartLine - (i === 0 ? nodeStartLine : lastLine); lastLine = commentEndLine; - maybeNewline(offset); + if (offset > 0 && !_noLineTerminator) { + this.newline(offset, _flags); + } this._printComment(comment, 1); if (i + 1 === len) { - maybeNewline(Math.min(1, nodeEndLine - lastLine)); + const count = Math.min(1, nodeEndLine - lastLine); + if (count > 0 && !_noLineTerminator) { + this.newline(count, _flags); + } lastLine = nodeEndLine; } } else { const offset = commentStartLine - (i === 0 ? nodeEndLine - lineOffset : lastLine); lastLine = commentEndLine; - maybeNewline(offset); + if (offset > 0 && !_noLineTerminator) { + this.newline(offset, _flags); + } this._printComment(comment, 1); } } else { @@ -21617,9 +21468,7 @@ class Printer { const singleLine = comment.loc ? comment.loc.start.line === comment.loc.end.line : !HAS_NEWLINE.test(comment.value); const shouldSkipNewline = singleLine && !isStatement(node) && !isClassBody(parent) && !isTSInterfaceBody(parent) && !isTSEnumMember(node); if (type === 0) { - this._printComment(comment, shouldSkipNewline && node.type !== "ObjectExpression" || singleLine && isFunction(parent, { - body: node - }) ? 1 : 0); + this._printComment(comment, shouldSkipNewline && node.type !== "ObjectExpression" || singleLine && isFunction(parent) && parent.body === node ? 1 : 0); } else if (shouldSkipNewline && type === 2) { this._printComment(comment, 1); } else { @@ -21635,13 +21484,12 @@ class Printer { if (type === 2 && hasLoc && lastLine) { this._lastCommentLine = lastLine; } + return 2; } } -Object.assign(Printer.prototype, generatorFunctions); -(0, _deprecated.addDeprecatedGenerators)(Printer); var _default = exports["default"] = Printer; function commaSeparator(occurrenceCount, last) { - this.token(",", false, occurrenceCount); + this.tokenChar(44, occurrenceCount); if (!last) this.space(); } @@ -21805,6 +21653,9 @@ class TokenMap { findMatching(node, test, occurrenceCount = 0) { const indexes = this._nodesToTokenIndexes.get(node); if (indexes) { + if (typeof test === "number") { + test = String.fromCharCode(test); + } let i = 0; const count = occurrenceCount; if (count > 1) { @@ -31685,7 +31536,7 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { return this.finishCallExpression(node, state.optionalChainMember); } const tokenType = this.state.type; - if (tokenType === 48 || tokenType === 52 || tokenType !== 10 && tokenCanStartExpression(tokenType) && !this.hasPrecedingLineBreak()) { + if (tokenType === 48 || tokenType === 52 || tokenType !== 10 && tokenType !== 93 && tokenType !== 120 && tokenCanStartExpression(tokenType) && !this.hasPrecedingLineBreak()) { return; } const node = this.startNodeAt(startLoc); @@ -32160,8 +32011,18 @@ var typescript = superClass => class TypeScriptParserMixin extends superClass { } parseClassSuper(node) { super.parseClassSuper(node); - if (node.superClass && (this.match(47) || this.match(51))) { - node.superTypeParameters = this.tsParseTypeArgumentsInExpression(); + if (node.superClass) { + if (node.superClass.type === "TSInstantiationExpression") { + const tsInstantiationExpression = node.superClass; + const superClass = tsInstantiationExpression.expression; + this.takeSurroundingComments(superClass, superClass.start, superClass.end); + const superTypeArguments = tsInstantiationExpression.typeParameters; + this.takeSurroundingComments(superTypeArguments, superTypeArguments.start, superTypeArguments.end); + node.superClass = superClass; + node.superTypeParameters = superTypeArguments; + } else if (this.match(47) || this.match(51)) { + node.superTypeParameters = this.tsParseTypeArgumentsInExpression(); + } } if (this.eatContextual(113)) { node.implements = this.tsParseHeritageClause("implements"); @@ -37751,6 +37612,7 @@ exports["default"] = void 0; var _index = __nccwpck_require__(8877); var _t = __nccwpck_require__(7912); var _context = __nccwpck_require__(4108); +var _hub = __nccwpck_require__(9817); const { VISITOR_KEYS } = _t; @@ -37777,12 +37639,17 @@ class TraversalContext { return false; } create(node, container, key, listKey) { + const { + parentPath + } = this; + const hub = parentPath == null ? node.type === "Program" || node.type === "File" ? new _hub.default() : undefined : parentPath.hub; return _index.default.get({ - parentPath: this.parentPath, + parentPath, parent: node, container, key: key, - listKey + listKey, + hub }); } maybeQueue(path, notPriority) { @@ -43241,6 +43108,9 @@ const renameVisitor = { path.requeueComputedKeyAndDecorators(); } } + if (path.isSwitchStatement()) { + path.context.maybeQueue(path.get("discriminant")); + } } }, ObjectProperty({ @@ -43669,7 +43539,7 @@ function verify$1(visitor) { } if (shouldIgnoreKey(nodeType)) continue; if (!TYPES.includes(nodeType)) { - throw new Error(`You gave us a visitor for the node type ${nodeType} but it's not a valid type in @babel/traverse ${"7.28.6"}`); + throw new Error(`You gave us a visitor for the node type ${nodeType} but it's not a valid type in @babel/traverse ${"7.29.0"}`); } const visitors = visitor[nodeType]; if (typeof visitors === "object") { @@ -46129,13 +45999,15 @@ function classDeclaration(id = null, superClass = null, body, decorators = null) validate(defs.decorators, node, "decorators", decorators, 1); return node; } -function exportAllDeclaration(source) { +function exportAllDeclaration(source, attributes = null) { const node = { type: "ExportAllDeclaration", - source + source, + attributes }; const defs = NODE_FIELDS.ExportAllDeclaration; validate(defs.source, node, "source", source, 1); + validate(defs.attributes, node, "attributes", attributes, 1); return node; } function exportDefaultDeclaration(declaration) { @@ -46147,17 +46019,19 @@ function exportDefaultDeclaration(declaration) { validate(defs.declaration, node, "declaration", declaration, 1); return node; } -function exportNamedDeclaration(declaration = null, specifiers = [], source = null) { +function exportNamedDeclaration(declaration = null, specifiers = [], source = null, attributes = null) { const node = { type: "ExportNamedDeclaration", declaration, specifiers, - source + source, + attributes }; const defs = NODE_FIELDS.ExportNamedDeclaration; validate(defs.declaration, node, "declaration", declaration, 1); validate(defs.specifiers, node, "specifiers", specifiers, 1); validate(defs.source, node, "source", source, 1); + validate(defs.attributes, node, "attributes", attributes, 1); return node; } function exportSpecifier(local, exported) { @@ -46186,15 +46060,17 @@ function forOfStatement(left, right, body, _await = false) { validate(defs.await, node, "await", _await); return node; } -function importDeclaration(specifiers, source) { +function importDeclaration(specifiers, source, attributes = null) { const node = { type: "ImportDeclaration", specifiers, - source + source, + attributes }; const defs = NODE_FIELDS.ImportDeclaration; validate(defs.specifiers, node, "specifiers", specifiers, 1); validate(defs.source, node, "source", source, 1); + validate(defs.attributes, node, "attributes", attributes, 1); return node; } function importDefaultSpecifier(local) { @@ -50483,7 +50359,7 @@ importAttributes.assertions = { validate: (0, _utils.arrayOfType)("ImportAttribute") }; defineType("ExportAllDeclaration", { - builder: ["source"], + builder: ["source", "attributes"], visitor: ["source", "attributes", "assertions"], aliases: ["Statement", "Declaration", "ImportOrExportDeclaration", "ExportDeclaration"], fields: Object.assign({ @@ -50502,7 +50378,7 @@ defineType("ExportDefaultDeclaration", { } }); defineType("ExportNamedDeclaration", { - builder: ["declaration", "specifiers", "source"], + builder: ["declaration", "specifiers", "source", "attributes"], visitor: ["declaration", "specifiers", "source", "attributes", "assertions"], aliases: ["Statement", "Declaration", "ImportOrExportDeclaration", "ExportDeclaration"], fields: Object.assign({ @@ -50592,7 +50468,7 @@ defineType("ForOfStatement", { } }); defineType("ImportDeclaration", { - builder: ["specifiers", "source"], + builder: ["specifiers", "source", "attributes"], visitor: ["specifiers", "source", "attributes", "assertions"], aliases: ["Statement", "Declaration", "ImportOrExportDeclaration"], fields: Object.assign({}, importAttributes, { diff --git a/android/app/src/main/java/com/expensify/chat/MainApplication.kt b/android/app/src/main/java/com/expensify/chat/MainApplication.kt index a2b8670207800..eb5f693d48633 100644 --- a/android/app/src/main/java/com/expensify/chat/MainApplication.kt +++ b/android/app/src/main/java/com/expensify/chat/MainApplication.kt @@ -13,7 +13,6 @@ import com.expensify.chat.shortcutManagerModule.ShortcutManagerPackage import com.facebook.react.PackageList import com.facebook.react.ReactApplication import com.facebook.react.ReactHost -import com.facebook.react.ReactNativeHost import com.facebook.react.ReactPackage import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost @@ -22,37 +21,27 @@ import com.facebook.react.modules.i18nmanager.I18nUtil import com.facebook.react.soloader.OpenSourceMergedSoMapping import com.facebook.soloader.SoLoader import expo.modules.ApplicationLifecycleDispatcher -import expo.modules.ReactNativeHostWrapper import com.facebook.react.ReactNativeApplicationEntryPoint.loadReactNative class MainApplication : MultiDexApplication(), ReactApplication { companion object { private const val APP_START_TIME_PREFERENCES = "AppStartTime" } - 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(ShortcutManagerPackage()) - add(BootSplashPackage()) - add(ExpensifyAppPackage()) - add(RNTextInputResetPackage()) - add(NavBarManagerPackage()) - } - - 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 val reactHost: ReactHost - get() = getDefaultReactHost(applicationContext, reactNativeHost) + override val reactHost: ReactHost by lazy { + getDefaultReactHost( + context = applicationContext, + packageList = + PackageList(this).packages.apply { + // Packages that cannot be autolinked yet can be added manually here, for example: + // add(MyReactNativePackage()) + add(ShortcutManagerPackage()) + add(BootSplashPackage()) + add(ExpensifyAppPackage()) + add(RNTextInputResetPackage()) + add(NavBarManagerPackage()) + }, + ) + } override fun onCreate() { super.onCreate() diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar index 1b33c55baabb5..8bdaf60c75ab8 100644 Binary files a/android/gradle/wrapper/gradle-wrapper.jar and b/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index d4081da476bb3..2a84e188b85a3 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/android/settings.gradle b/android/settings.gradle index 7353cc4985af8..8dbb83a9a867a 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,5 +1,11 @@ -pluginManagement { includeBuild("../node_modules/@react-native/gradle-plugin") } -plugins { id("com.facebook.react.settings") } +pluginManagement { + includeBuild("../node_modules/@react-native/gradle-plugin") + includeBuild("../node_modules/expo-modules-autolinking/android/expo-gradle-plugin") +} +plugins { + id("com.facebook.react.settings") + id("expo-autolinking-settings") +} apply from: "${rootDir}/../gradleUtils/PatchedArtifactsSettings.gradle" extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autolinkLibrariesFromCommand(['npx', 'rock', 'config', '-p', 'android']) } @@ -33,3 +39,7 @@ if(settings.extensions.patchedArtifacts.buildFromSource) { apply from: new File(["node", "--print", "require.resolve('expo/package.json')"].execute(null, rootDir).text.trim(), "../scripts/autolinking.gradle") useExpoModules() +expoAutolinking { + projectRoot = file(rootDir) + useExpoModules() +} diff --git a/gradleUtils/PatchedArtifactsSettings.gradle b/gradleUtils/PatchedArtifactsSettings.gradle index 588f8115e4f5a..066a70ef982a2 100644 --- a/gradleUtils/PatchedArtifactsSettings.gradle +++ b/gradleUtils/PatchedArtifactsSettings.gradle @@ -1,3 +1,4 @@ +import groovy.xml.XmlSlurper import groovy.json.JsonSlurper import java.util.concurrent.TimeUnit diff --git a/ios/NewExpensify.xcodeproj/project.pbxproj b/ios/NewExpensify.xcodeproj/project.pbxproj index 8908e3ad69f5b..a9f7925ffeb9b 100644 --- a/ios/NewExpensify.xcodeproj/project.pbxproj +++ b/ios/NewExpensify.xcodeproj/project.pbxproj @@ -673,25 +673,6 @@ shellPath = /bin/sh; shellScript = "if [ \"$CONFIGURATION\" != \"DebugDevelopment\" ]; then\n \"${PODS_ROOT}/FullStory/tools/FullStoryCommandLine\" \"${CONFIGURATION_BUILD_DIR}/${WRAPPER_NAME}\"\nelse\n echo \"Skipping FullStory Asset Uploader phase for DebugDevelopment scheme.\"\nfi\n"; }; - 87174A5CC3CF40CC94B76870 /* Strip Debug Symbols */ = { - isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - name = "Strip Debug Symbols"; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "bash \"${PROJECT_DIR}/../scripts/strip-ios-debug-symbols.sh\"\n"; - }; 5124824122A346BD617AD428 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -710,7 +691,7 @@ "${PODS_XCFRAMEWORKS_BUILD_DIR}/group-ib-fp/GIBMobileSdk.framework/GIBMobileSdk", "${PODS_XCFRAMEWORKS_BUILD_DIR}/group-ib-fp/FPAppsCapability.framework/FPAppsCapability", "${PODS_XCFRAMEWORKS_BUILD_DIR}/group-ib-fp/FPCallCapability.framework/FPCallCapability", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermesvm.framework/hermesvm", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( @@ -725,7 +706,7 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GIBMobileSdk.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FPAppsCapability.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FPCallCapability.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermesvm.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -756,6 +737,25 @@ shellPath = /bin/sh; shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-NewExpensify/expo-configure-project.sh\"\n"; }; + 87174A5CC3CF40CC94B76870 /* Strip Debug Symbols */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Strip Debug Symbols"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "bash \"${PROJECT_DIR}/../scripts/strip-ios-debug-symbols.sh\"\n"; + }; 87667FE2684C0D1946DE7329 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -791,7 +791,7 @@ "${PODS_CONFIGURATION_BUILD_DIR}/AppAuth/AppAuthCore_Privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/EXConstants.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/ExpoConstants_privacy.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/EXTaskManager/ExpoTaskManager_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/ExpoTaskManager/ExpoTaskManager_privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore_Privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreInternal/FirebaseCoreInternal_Privacy.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations/FirebaseInstallations_Privacy.bundle", diff --git a/ios/Podfile.lock b/ios/Podfile.lock index c24cf67eb515c..253f0fd93e180 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -29,11 +29,8 @@ PODS: - AppLogs (0.1.0) - boost (1.84.0) - DoubleConversion (1.1.6) - - EXConstants (18.0.10): + - EXConstants (55.0.7): - ExpoModulesCore - - EXImageLoader (5.1.0): - - ExpoModulesCore - - React-Core - expensify-react-native-background-task (0.0.0): - boost - DoubleConversion @@ -91,7 +88,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - Expo (54.0.22): + - Expo (55.0.0): - boost - DoubleConversion - ExpoModulesCore @@ -122,28 +119,32 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - ExpoAsset (12.0.8): + - ExpoAsset (55.0.2): - ExpoModulesCore - - ExpoAudio (1.1.1): + - ExpoAudio (55.0.4): + - ExpoModulesCore + - ExpoDomWebView (55.0.3): - ExpoModulesCore - ExpoFont (14.0.8): - ExpoModulesCore - - ExpoImage (3.0.8): + - ExpoImage (55.0.3): - ExpoModulesCore - libavif/libdav1d - SDWebImage (~> 5.21.0) - SDWebImageAVIFCoder (~> 0.11.0) - SDWebImageSVGCoder (~> 1.7.0) - SDWebImageWebPCoder (~> 0.14.6) - - ExpoImageManipulator (13.1.5): - - EXImageLoader + - ExpoImageManipulator (55.0.2): - ExpoModulesCore - SDWebImageWebPCoder - - ExpoLocation (19.0.7): + - ExpoLocation (55.0.3): - ExpoModulesCore - - ExpoModulesCore (3.0.24): + - ExpoLogBox (55.0.7): + - React-Core + - ExpoModulesCore (55.0.4): - boost - DoubleConversion + - ExpoModulesJSI - fast_float - fmt - glog @@ -168,21 +169,26 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - RNWorklets - SocketRocket - Yoga + - ExpoModulesJSI (55.0.4): + - hermes-engine + - React-Core + - ReactCommon - ExpoSecureStore (14.2.4): - ExpoModulesCore - ExpoStoreReview (9.0.9): - ExpoModulesCore - - ExpoVideo (3.0.12): + - ExpoTaskManager (55.0.2): - ExpoModulesCore - - ExpoWebBrowser (15.0.10): + - UMAppLoader + - ExpoVideo (55.0.3): - ExpoModulesCore - - EXTaskManager (14.0.9): + - ExpoWebBrowser (15.0.10): - ExpoModulesCore - - UMAppLoader - fast_float (8.0.0) - - FBLazyVector (0.81.4) + - FBLazyVector (0.83.1) - Firebase/Analytics (11.13.0): - Firebase/Core - Firebase/Core (11.13.0): @@ -315,9 +321,9 @@ PODS: - GTMSessionFetcher/Core (< 4.0, >= 3.3) - GTMSessionFetcher/Core (3.5.0) - GzipSwift (5.1.1) - - hermes-engine (0.81.4): - - hermes-engine/Pre-built (= 0.81.4) - - hermes-engine/Pre-built (0.81.4) + - hermes-engine (0.14.0): + - hermes-engine/Pre-built (= 0.14.0) + - hermes-engine/Pre-built (0.14.0) - libavif/core (0.11.1) - libavif/libdav1d (0.11.1): - libavif/core @@ -440,28 +446,31 @@ PODS: - fast_float (= 8.0.0) - fmt (= 11.0.2) - glog - - RCTDeprecation (0.81.4) - - RCTRequired (0.81.4) - - RCTTypeSafety (0.81.4): - - FBLazyVector (= 0.81.4) - - RCTRequired (= 0.81.4) - - React-Core (= 0.81.4) - - React (0.81.4): - - React-Core (= 0.81.4) - - React-Core/DevSupport (= 0.81.4) - - React-Core/RCTWebSocket (= 0.81.4) - - React-RCTActionSheet (= 0.81.4) - - React-RCTAnimation (= 0.81.4) - - React-RCTBlob (= 0.81.4) - - React-RCTImage (= 0.81.4) - - React-RCTLinking (= 0.81.4) - - React-RCTNetwork (= 0.81.4) - - React-RCTSettings (= 0.81.4) - - React-RCTText (= 0.81.4) - - React-RCTVibration (= 0.81.4) - - React-callinvoker (0.81.4) + - RCTDeprecation (0.83.1) + - RCTRequired (0.83.1) + - RCTSwiftUI (0.83.1) + - RCTSwiftUIWrapper (0.83.1): + - RCTSwiftUI + - RCTTypeSafety (0.83.1): + - FBLazyVector (= 0.83.1) + - RCTRequired (= 0.83.1) + - React-Core (= 0.83.1) + - React (0.83.1): + - React-Core (= 0.83.1) + - React-Core/DevSupport (= 0.83.1) + - React-Core/RCTWebSocket (= 0.83.1) + - React-RCTActionSheet (= 0.83.1) + - React-RCTAnimation (= 0.83.1) + - React-RCTBlob (= 0.83.1) + - React-RCTImage (= 0.83.1) + - React-RCTLinking (= 0.83.1) + - React-RCTNetwork (= 0.83.1) + - React-RCTSettings (= 0.83.1) + - React-RCTText (= 0.83.1) + - React-RCTVibration (= 0.83.1) + - React-callinvoker (0.83.1) - React-Codegen (0.1.0) - - React-Core (0.81.4): + - React-Core (0.83.1): - boost - DoubleConversion - fast_float @@ -471,7 +480,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTDeprecation - - React-Core/Default (= 0.81.4) + - React-Core/Default (= 0.83.1) - React-cxxreact - React-featureflags - React-hermes @@ -481,13 +490,12 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils - SocketRocket - Yoga - - React-Core/CoreModulesHeaders (0.81.4): + - React-Core/CoreModulesHeaders (0.83.1): - boost - DoubleConversion - fast_float @@ -507,13 +515,12 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils - SocketRocket - Yoga - - React-Core/Default (0.81.4): + - React-Core/Default (0.83.1): - boost - DoubleConversion - fast_float @@ -532,13 +539,12 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils - SocketRocket - Yoga - - React-Core/DevSupport (0.81.4): + - React-Core/DevSupport (0.83.1): - boost - DoubleConversion - fast_float @@ -548,8 +554,8 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTDeprecation - - React-Core/Default (= 0.81.4) - - React-Core/RCTWebSocket (= 0.81.4) + - React-Core/Default (= 0.83.1) + - React-Core/RCTWebSocket (= 0.83.1) - React-cxxreact - React-featureflags - React-hermes @@ -559,13 +565,12 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils - SocketRocket - Yoga - - React-Core/RCTActionSheetHeaders (0.81.4): + - React-Core/RCTActionSheetHeaders (0.83.1): - boost - DoubleConversion - fast_float @@ -585,13 +590,12 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils - SocketRocket - Yoga - - React-Core/RCTAnimationHeaders (0.81.4): + - React-Core/RCTAnimationHeaders (0.83.1): - boost - DoubleConversion - fast_float @@ -611,13 +615,12 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils - SocketRocket - Yoga - - React-Core/RCTBlobHeaders (0.81.4): + - React-Core/RCTBlobHeaders (0.83.1): - boost - DoubleConversion - fast_float @@ -637,13 +640,12 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils - SocketRocket - Yoga - - React-Core/RCTImageHeaders (0.81.4): + - React-Core/RCTImageHeaders (0.83.1): - boost - DoubleConversion - fast_float @@ -663,13 +665,12 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils - SocketRocket - Yoga - - React-Core/RCTLinkingHeaders (0.81.4): + - React-Core/RCTLinkingHeaders (0.83.1): - boost - DoubleConversion - fast_float @@ -689,13 +690,12 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils - SocketRocket - Yoga - - React-Core/RCTNetworkHeaders (0.81.4): + - React-Core/RCTNetworkHeaders (0.83.1): - boost - DoubleConversion - fast_float @@ -715,13 +715,12 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils - SocketRocket - Yoga - - React-Core/RCTSettingsHeaders (0.81.4): + - React-Core/RCTSettingsHeaders (0.83.1): - boost - DoubleConversion - fast_float @@ -741,13 +740,12 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils - SocketRocket - Yoga - - React-Core/RCTTextHeaders (0.81.4): + - React-Core/RCTTextHeaders (0.83.1): - boost - DoubleConversion - fast_float @@ -767,13 +765,12 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils - SocketRocket - Yoga - - React-Core/RCTVibrationHeaders (0.81.4): + - React-Core/RCTVibrationHeaders (0.83.1): - boost - DoubleConversion - fast_float @@ -793,13 +790,12 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils - SocketRocket - Yoga - - React-Core/RCTWebSocket (0.81.4): + - React-Core/RCTWebSocket (0.83.1): - boost - DoubleConversion - fast_float @@ -809,7 +805,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTDeprecation - - React-Core/Default (= 0.81.4) + - React-Core/Default (= 0.83.1) - React-cxxreact - React-featureflags - React-hermes @@ -819,13 +815,12 @@ PODS: - React-jsinspectorcdp - React-jsitooling - React-perflogger - - React-rendererconsistency - React-runtimeexecutor - React-runtimescheduler - React-utils - SocketRocket - Yoga - - React-CoreModules (0.81.4): + - React-CoreModules (0.83.1): - boost - DoubleConversion - fast_float @@ -833,20 +828,22 @@ PODS: - glog - RCT-Folly - RCT-Folly/Fabric - - RCTTypeSafety (= 0.81.4) - - React-Core/CoreModulesHeaders (= 0.81.4) - - React-jsi (= 0.81.4) + - RCTTypeSafety (= 0.83.1) + - React-Core/CoreModulesHeaders (= 0.83.1) + - React-debug + - React-jsi (= 0.83.1) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - React-NativeModulesApple - React-RCTBlob - React-RCTFBReactNativeSpec - - React-RCTImage (= 0.81.4) + - React-RCTImage (= 0.83.1) - React-runtimeexecutor + - React-utils - ReactCommon - SocketRocket - - React-cxxreact (0.81.4): + - React-cxxreact (0.83.1): - boost - DoubleConversion - fast_float @@ -855,19 +852,20 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - React-callinvoker (= 0.81.4) - - React-debug (= 0.81.4) - - React-jsi (= 0.81.4) + - React-callinvoker (= 0.83.1) + - React-debug (= 0.83.1) + - React-jsi (= 0.83.1) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - - React-logger (= 0.81.4) - - React-perflogger (= 0.81.4) + - React-logger (= 0.83.1) + - React-perflogger (= 0.83.1) - React-runtimeexecutor - - React-timing (= 0.81.4) + - React-timing (= 0.83.1) + - React-utils - SocketRocket - - React-debug (0.81.4) - - React-defaultsnativemodule (0.81.4): + - React-debug (0.83.1) + - React-defaultsnativemodule (0.83.1): - boost - DoubleConversion - fast_float @@ -877,14 +875,18 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - React-domnativemodule + - React-featureflags - React-featureflagsnativemodule - React-idlecallbacksnativemodule + - React-intersectionobservernativemodule - React-jsi - React-jsiexecutor - React-microtasksnativemodule - React-RCTFBReactNativeSpec + - React-webperformancenativemodule - SocketRocket - - React-domnativemodule (0.81.4): + - Yoga + - React-domnativemodule (0.83.1): - boost - DoubleConversion - fast_float @@ -904,7 +906,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-Fabric (0.81.4): + - React-Fabric (0.83.1): - boost - DoubleConversion - fast_float @@ -918,23 +920,25 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/animations (= 0.81.4) - - React-Fabric/attributedstring (= 0.81.4) - - React-Fabric/bridging (= 0.81.4) - - React-Fabric/componentregistry (= 0.81.4) - - React-Fabric/componentregistrynative (= 0.81.4) - - React-Fabric/components (= 0.81.4) - - React-Fabric/consistency (= 0.81.4) - - React-Fabric/core (= 0.81.4) - - React-Fabric/dom (= 0.81.4) - - React-Fabric/imagemanager (= 0.81.4) - - React-Fabric/leakchecker (= 0.81.4) - - React-Fabric/mounting (= 0.81.4) - - React-Fabric/observers (= 0.81.4) - - React-Fabric/scheduler (= 0.81.4) - - React-Fabric/telemetry (= 0.81.4) - - React-Fabric/templateprocessor (= 0.81.4) - - React-Fabric/uimanager (= 0.81.4) + - React-Fabric/animated (= 0.83.1) + - React-Fabric/animationbackend (= 0.83.1) + - React-Fabric/animations (= 0.83.1) + - React-Fabric/attributedstring (= 0.83.1) + - React-Fabric/bridging (= 0.83.1) + - React-Fabric/componentregistry (= 0.83.1) + - React-Fabric/componentregistrynative (= 0.83.1) + - React-Fabric/components (= 0.83.1) + - React-Fabric/consistency (= 0.83.1) + - React-Fabric/core (= 0.83.1) + - React-Fabric/dom (= 0.83.1) + - React-Fabric/imagemanager (= 0.83.1) + - React-Fabric/leakchecker (= 0.83.1) + - React-Fabric/mounting (= 0.83.1) + - React-Fabric/observers (= 0.83.1) + - React-Fabric/scheduler (= 0.83.1) + - React-Fabric/telemetry (= 0.83.1) + - React-Fabric/templateprocessor (= 0.83.1) + - React-Fabric/uimanager (= 0.83.1) - React-featureflags - React-graphics - React-jsi @@ -946,7 +950,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/animations (0.81.4): + - React-Fabric/animated (0.83.1): - boost - DoubleConversion - fast_float @@ -971,7 +975,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/attributedstring (0.81.4): + - React-Fabric/animationbackend (0.83.1): - boost - DoubleConversion - fast_float @@ -996,7 +1000,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/bridging (0.81.4): + - React-Fabric/animations (0.83.1): - boost - DoubleConversion - fast_float @@ -1021,7 +1025,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/componentregistry (0.81.4): + - React-Fabric/attributedstring (0.83.1): - boost - DoubleConversion - fast_float @@ -1046,7 +1050,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/componentregistrynative (0.81.4): + - React-Fabric/bridging (0.83.1): - boost - DoubleConversion - fast_float @@ -1071,7 +1075,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/components (0.81.4): + - React-Fabric/componentregistry (0.83.1): - boost - DoubleConversion - fast_float @@ -1085,10 +1089,6 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/components/legacyviewmanagerinterop (= 0.81.4) - - React-Fabric/components/root (= 0.81.4) - - React-Fabric/components/scrollview (= 0.81.4) - - React-Fabric/components/view (= 0.81.4) - React-featureflags - React-graphics - React-jsi @@ -1100,7 +1100,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/components/legacyviewmanagerinterop (0.81.4): + - React-Fabric/componentregistrynative (0.83.1): - boost - DoubleConversion - fast_float @@ -1125,7 +1125,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/components/root (0.81.4): + - React-Fabric/components (0.83.1): - boost - DoubleConversion - fast_float @@ -1139,6 +1139,10 @@ PODS: - React-Core - React-cxxreact - React-debug + - React-Fabric/components/legacyviewmanagerinterop (= 0.83.1) + - React-Fabric/components/root (= 0.83.1) + - React-Fabric/components/scrollview (= 0.83.1) + - React-Fabric/components/view (= 0.83.1) - React-featureflags - React-graphics - React-jsi @@ -1150,7 +1154,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/components/scrollview (0.81.4): + - React-Fabric/components/legacyviewmanagerinterop (0.83.1): - boost - DoubleConversion - fast_float @@ -1175,7 +1179,57 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/components/view (0.81.4): + - React-Fabric/components/root (0.83.1): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/components/scrollview (0.83.1): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/components/view (0.83.1): - boost - DoubleConversion - fast_float @@ -1202,7 +1256,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-Fabric/consistency (0.81.4): + - React-Fabric/consistency (0.83.1): - boost - DoubleConversion - fast_float @@ -1227,7 +1281,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/core (0.81.4): + - React-Fabric/core (0.83.1): - boost - DoubleConversion - fast_float @@ -1252,7 +1306,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/dom (0.81.4): + - React-Fabric/dom (0.83.1): - boost - DoubleConversion - fast_float @@ -1277,7 +1331,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/imagemanager (0.81.4): + - React-Fabric/imagemanager (0.83.1): - boost - DoubleConversion - fast_float @@ -1302,7 +1356,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/leakchecker (0.81.4): + - React-Fabric/leakchecker (0.83.1): - boost - DoubleConversion - fast_float @@ -1327,7 +1381,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/mounting (0.81.4): + - React-Fabric/mounting (0.83.1): - boost - DoubleConversion - fast_float @@ -1352,7 +1406,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/observers (0.81.4): + - React-Fabric/observers (0.83.1): - boost - DoubleConversion - fast_float @@ -1366,7 +1420,8 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/observers/events (= 0.81.4) + - React-Fabric/observers/events (= 0.83.1) + - React-Fabric/observers/intersection (= 0.83.1) - React-featureflags - React-graphics - React-jsi @@ -1378,7 +1433,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/observers/events (0.81.4): + - React-Fabric/observers/events (0.83.1): - boost - DoubleConversion - fast_float @@ -1403,7 +1458,32 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/scheduler (0.81.4): + - React-Fabric/observers/intersection (0.83.1): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - React-Fabric/scheduler (0.83.1): - boost - DoubleConversion - fast_float @@ -1423,6 +1503,7 @@ PODS: - React-jsi - React-jsiexecutor - React-logger + - React-performancecdpmetrics - React-performancetimeline - React-rendererdebug - React-runtimeexecutor @@ -1430,7 +1511,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/telemetry (0.81.4): + - React-Fabric/telemetry (0.83.1): - boost - DoubleConversion - fast_float @@ -1455,7 +1536,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/templateprocessor (0.81.4): + - React-Fabric/templateprocessor (0.83.1): - boost - DoubleConversion - fast_float @@ -1480,7 +1561,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/uimanager (0.81.4): + - React-Fabric/uimanager (0.83.1): - boost - DoubleConversion - fast_float @@ -1494,7 +1575,7 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/uimanager/consistency (= 0.81.4) + - React-Fabric/uimanager/consistency (= 0.83.1) - React-featureflags - React-graphics - React-jsi @@ -1507,7 +1588,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/uimanager/consistency (0.81.4): + - React-Fabric/uimanager/consistency (0.83.1): - boost - DoubleConversion - fast_float @@ -1533,7 +1614,36 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-FabricComponents (0.81.4): + - React-FabricComponents (0.83.1): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-FabricComponents/components (= 0.83.1) + - React-FabricComponents/textlayoutmanager (= 0.83.1) + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-RCTFBReactNativeSpec + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga + - React-FabricComponents/components (0.83.1): - boost - DoubleConversion - fast_float @@ -1548,8 +1658,18 @@ PODS: - React-cxxreact - React-debug - React-Fabric - - React-FabricComponents/components (= 0.81.4) - - React-FabricComponents/textlayoutmanager (= 0.81.4) + - React-FabricComponents/components/inputaccessory (= 0.83.1) + - React-FabricComponents/components/iostextinput (= 0.83.1) + - React-FabricComponents/components/modal (= 0.83.1) + - React-FabricComponents/components/rncore (= 0.83.1) + - React-FabricComponents/components/safeareaview (= 0.83.1) + - React-FabricComponents/components/scrollview (= 0.83.1) + - React-FabricComponents/components/switch (= 0.83.1) + - React-FabricComponents/components/text (= 0.83.1) + - React-FabricComponents/components/textinput (= 0.83.1) + - React-FabricComponents/components/unimplementedview (= 0.83.1) + - React-FabricComponents/components/virtualview (= 0.83.1) + - React-FabricComponents/components/virtualviewexperimental (= 0.83.1) - React-featureflags - React-graphics - React-jsi @@ -1562,7 +1682,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components (0.81.4): + - React-FabricComponents/components/inputaccessory (0.83.1): - boost - DoubleConversion - fast_float @@ -1577,17 +1697,6 @@ PODS: - React-cxxreact - React-debug - React-Fabric - - React-FabricComponents/components/inputaccessory (= 0.81.4) - - React-FabricComponents/components/iostextinput (= 0.81.4) - - React-FabricComponents/components/modal (= 0.81.4) - - React-FabricComponents/components/rncore (= 0.81.4) - - React-FabricComponents/components/safeareaview (= 0.81.4) - - React-FabricComponents/components/scrollview (= 0.81.4) - - React-FabricComponents/components/switch (= 0.81.4) - - React-FabricComponents/components/text (= 0.81.4) - - React-FabricComponents/components/textinput (= 0.81.4) - - React-FabricComponents/components/unimplementedview (= 0.81.4) - - React-FabricComponents/components/virtualview (= 0.81.4) - React-featureflags - React-graphics - React-jsi @@ -1600,7 +1709,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/inputaccessory (0.81.4): + - React-FabricComponents/components/iostextinput (0.83.1): - boost - DoubleConversion - fast_float @@ -1627,7 +1736,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/iostextinput (0.81.4): + - React-FabricComponents/components/modal (0.83.1): - boost - DoubleConversion - fast_float @@ -1654,7 +1763,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/modal (0.81.4): + - React-FabricComponents/components/rncore (0.83.1): - boost - DoubleConversion - fast_float @@ -1681,7 +1790,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/rncore (0.81.4): + - React-FabricComponents/components/safeareaview (0.83.1): - boost - DoubleConversion - fast_float @@ -1708,7 +1817,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/safeareaview (0.81.4): + - React-FabricComponents/components/scrollview (0.83.1): - boost - DoubleConversion - fast_float @@ -1735,7 +1844,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/scrollview (0.81.4): + - React-FabricComponents/components/switch (0.83.1): - boost - DoubleConversion - fast_float @@ -1762,7 +1871,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/switch (0.81.4): + - React-FabricComponents/components/text (0.83.1): - boost - DoubleConversion - fast_float @@ -1789,7 +1898,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/text (0.81.4): + - React-FabricComponents/components/textinput (0.83.1): - boost - DoubleConversion - fast_float @@ -1816,7 +1925,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/textinput (0.81.4): + - React-FabricComponents/components/unimplementedview (0.83.1): - boost - DoubleConversion - fast_float @@ -1843,7 +1952,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/unimplementedview (0.81.4): + - React-FabricComponents/components/virtualview (0.83.1): - boost - DoubleConversion - fast_float @@ -1870,7 +1979,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/virtualview (0.81.4): + - React-FabricComponents/components/virtualviewexperimental (0.83.1): - boost - DoubleConversion - fast_float @@ -1897,7 +2006,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/textlayoutmanager (0.81.4): + - React-FabricComponents/textlayoutmanager (0.83.1): - boost - DoubleConversion - fast_float @@ -1924,7 +2033,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricImage (0.81.4): + - React-FabricImage (0.83.1): - boost - DoubleConversion - fast_float @@ -1933,21 +2042,21 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - RCTRequired (= 0.81.4) - - RCTTypeSafety (= 0.81.4) + - RCTRequired (= 0.83.1) + - RCTTypeSafety (= 0.83.1) - React-Fabric - React-featureflags - React-graphics - React-ImageManager - React-jsi - - React-jsiexecutor (= 0.81.4) + - React-jsiexecutor (= 0.83.1) - React-logger - React-rendererdebug - React-utils - ReactCommon - SocketRocket - Yoga - - React-featureflags (0.81.4): + - React-featureflags (0.83.1): - boost - DoubleConversion - fast_float @@ -1956,7 +2065,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - SocketRocket - - React-featureflagsnativemodule (0.81.4): + - React-featureflagsnativemodule (0.83.1): - boost - DoubleConversion - fast_float @@ -1971,7 +2080,7 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon/turbomodule/core - SocketRocket - - React-graphics (0.81.4): + - React-graphics (0.83.1): - boost - DoubleConversion - fast_float @@ -1984,7 +2093,7 @@ PODS: - React-jsiexecutor - React-utils - SocketRocket - - React-hermes (0.81.4): + - React-hermes (0.83.1): - boost - DoubleConversion - fast_float @@ -1993,16 +2102,17 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - React-cxxreact (= 0.81.4) + - React-cxxreact (= 0.83.1) - React-jsi - - React-jsiexecutor (= 0.81.4) + - React-jsiexecutor (= 0.83.1) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - - React-perflogger (= 0.81.4) + - React-oscompat + - React-perflogger (= 0.83.1) - React-runtimeexecutor - SocketRocket - - React-idlecallbacksnativemodule (0.81.4): + - React-idlecallbacksnativemodule (0.83.1): - boost - DoubleConversion - fast_float @@ -2018,7 +2128,7 @@ PODS: - React-runtimescheduler - ReactCommon/turbomodule/core - SocketRocket - - React-ImageManager (0.81.4): + - React-ImageManager (0.83.1): - boost - DoubleConversion - fast_float @@ -2033,7 +2143,28 @@ PODS: - React-rendererdebug - React-utils - SocketRocket - - React-jserrorhandler (0.81.4): + - React-intersectionobservernativemodule (0.83.1): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-cxxreact + - React-Fabric + - React-Fabric/bridging + - React-graphics + - React-jsi + - React-jsiexecutor + - React-RCTFBReactNativeSpec + - React-runtimeexecutor + - React-runtimescheduler + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga + - React-jserrorhandler (0.83.1): - boost - DoubleConversion - fast_float @@ -2048,7 +2179,7 @@ PODS: - React-jsi - ReactCommon/turbomodule/bridging - SocketRocket - - React-jsi (0.81.4): + - React-jsi (0.83.1): - boost - DoubleConversion - fast_float @@ -2058,7 +2189,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - SocketRocket - - React-jsiexecutor (0.81.4): + - React-jsiexecutor (0.83.1): - boost - DoubleConversion - fast_float @@ -2067,15 +2198,17 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - React-cxxreact (= 0.81.4) - - React-jsi (= 0.81.4) + - React-cxxreact + - React-debug + - React-jsi - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - - React-perflogger (= 0.81.4) + - React-perflogger - React-runtimeexecutor + - React-utils - SocketRocket - - React-jsinspector (0.81.4): + - React-jsinspector (0.83.1): - boost - DoubleConversion - fast_float @@ -2090,10 +2223,11 @@ PODS: - React-jsinspectornetwork - React-jsinspectortracing - React-oscompat - - React-perflogger (= 0.81.4) + - React-perflogger (= 0.83.1) - React-runtimeexecutor + - React-utils - SocketRocket - - React-jsinspectorcdp (0.81.4): + - React-jsinspectorcdp (0.83.1): - boost - DoubleConversion - fast_float @@ -2102,7 +2236,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - SocketRocket - - React-jsinspectornetwork (0.81.4): + - React-jsinspectornetwork (0.83.1): - boost - DoubleConversion - fast_float @@ -2110,23 +2244,23 @@ PODS: - glog - RCT-Folly - RCT-Folly/Fabric - - React-featureflags - React-jsinspectorcdp - - React-performancetimeline - - React-timing - SocketRocket - - React-jsinspectortracing (0.81.4): + - React-jsinspectortracing (0.83.1): - boost - DoubleConversion - fast_float - fmt - glog + - hermes-engine - RCT-Folly - RCT-Folly/Fabric + - React-jsi + - React-jsinspectornetwork - React-oscompat - React-timing - SocketRocket - - React-jsitooling (0.81.4): + - React-jsitooling (0.83.1): - boost - DoubleConversion - fast_float @@ -2134,16 +2268,18 @@ PODS: - glog - RCT-Folly - RCT-Folly/Fabric - - React-cxxreact (= 0.81.4) - - React-jsi (= 0.81.4) + - React-cxxreact (= 0.83.1) + - React-debug + - React-jsi (= 0.83.1) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - React-runtimeexecutor + - React-utils - SocketRocket - - React-jsitracing (0.81.4): + - React-jsitracing (0.83.1): - React-jsi - - React-logger (0.81.4): + - React-logger (0.83.1): - boost - DoubleConversion - fast_float @@ -2152,7 +2288,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - SocketRocket - - React-Mapbuffer (0.81.4): + - React-Mapbuffer (0.83.1): - boost - DoubleConversion - fast_float @@ -2162,7 +2298,7 @@ PODS: - RCT-Folly/Fabric - React-debug - SocketRocket - - React-microtasksnativemodule (0.81.4): + - React-microtasksnativemodule (0.83.1): - boost - DoubleConversion - fast_float @@ -2808,7 +2944,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-NativeModulesApple (0.81.4): + - React-NativeModulesApple (0.83.1): - boost - DoubleConversion - fast_float @@ -2820,6 +2956,7 @@ PODS: - React-callinvoker - React-Core - React-cxxreact + - React-debug - React-featureflags - React-jsi - React-jsinspector @@ -2828,8 +2965,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - SocketRocket - - React-oscompat (0.81.4) - - React-perflogger (0.81.4): + - React-networking (0.83.1): - boost - DoubleConversion - fast_float @@ -2837,8 +2973,37 @@ PODS: - glog - RCT-Folly - RCT-Folly/Fabric + - React-featureflags + - React-jsinspectornetwork + - React-jsinspectortracing + - React-performancetimeline + - React-timing - SocketRocket - - React-performancetimeline (0.81.4): + - React-oscompat (0.83.1) + - React-perflogger (0.83.1): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - SocketRocket + - React-performancecdpmetrics (0.83.1): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-jsi + - React-performancetimeline + - React-runtimeexecutor + - React-timing + - SocketRocket + - React-performancetimeline (0.83.1): - boost - DoubleConversion - fast_float @@ -2851,9 +3016,9 @@ PODS: - React-perflogger - React-timing - SocketRocket - - React-RCTActionSheet (0.81.4): - - React-Core/RCTActionSheetHeaders (= 0.81.4) - - React-RCTAnimation (0.81.4): + - React-RCTActionSheet (0.83.1): + - React-Core/RCTActionSheetHeaders (= 0.83.1) + - React-RCTAnimation (0.83.1): - boost - DoubleConversion - fast_float @@ -2869,7 +3034,7 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - SocketRocket - - React-RCTAppDelegate (0.81.4): + - React-RCTAppDelegate (0.83.1): - boost - DoubleConversion - fast_float @@ -2903,7 +3068,7 @@ PODS: - React-utils - ReactCommon - SocketRocket - - React-RCTBlob (0.81.4): + - React-RCTBlob (0.83.1): - boost - DoubleConversion - fast_float @@ -2922,7 +3087,7 @@ PODS: - React-RCTNetwork - ReactCommon - SocketRocket - - React-RCTFabric (0.81.4): + - React-RCTFabric (0.83.1): - boost - DoubleConversion - fast_float @@ -2931,6 +3096,7 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric + - RCTSwiftUIWrapper - React-Core - React-debug - React-Fabric @@ -2942,8 +3108,9 @@ PODS: - React-jsi - React-jsinspector - React-jsinspectorcdp - - React-jsinspectornetwork - React-jsinspectortracing + - React-networking + - React-performancecdpmetrics - React-performancetimeline - React-RCTAnimation - React-RCTFBReactNativeSpec @@ -2957,7 +3124,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-RCTFBReactNativeSpec (0.81.4): + - React-RCTFBReactNativeSpec (0.83.1): - boost - DoubleConversion - fast_float @@ -2971,10 +3138,10 @@ PODS: - React-Core - React-jsi - React-NativeModulesApple - - React-RCTFBReactNativeSpec/components (= 0.81.4) + - React-RCTFBReactNativeSpec/components (= 0.83.1) - ReactCommon - SocketRocket - - React-RCTFBReactNativeSpec/components (0.81.4): + - React-RCTFBReactNativeSpec/components (0.83.1): - boost - DoubleConversion - fast_float @@ -2997,7 +3164,7 @@ PODS: - ReactCommon - SocketRocket - Yoga - - React-RCTImage (0.81.4): + - React-RCTImage (0.83.1): - boost - DoubleConversion - fast_float @@ -3013,14 +3180,14 @@ PODS: - React-RCTNetwork - ReactCommon - SocketRocket - - React-RCTLinking (0.81.4): - - React-Core/RCTLinkingHeaders (= 0.81.4) - - React-jsi (= 0.81.4) + - React-RCTLinking (0.83.1): + - React-Core/RCTLinkingHeaders (= 0.83.1) + - React-jsi (= 0.83.1) - React-NativeModulesApple - React-RCTFBReactNativeSpec - ReactCommon - - ReactCommon/turbomodule/core (= 0.81.4) - - React-RCTNetwork (0.81.4): + - ReactCommon/turbomodule/core (= 0.83.1) + - React-RCTNetwork (0.83.1): - boost - DoubleConversion - fast_float @@ -3030,15 +3197,17 @@ PODS: - RCT-Folly/Fabric - RCTTypeSafety - React-Core/RCTNetworkHeaders + - React-debug - React-featureflags - React-jsi - React-jsinspectorcdp - React-jsinspectornetwork - React-NativeModulesApple + - React-networking - React-RCTFBReactNativeSpec - ReactCommon - SocketRocket - - React-RCTRuntime (0.81.4): + - React-RCTRuntime (0.83.1): - boost - DoubleConversion - fast_float @@ -3048,6 +3217,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - React-Core + - React-debug - React-jsi - React-jsinspector - React-jsinspectorcdp @@ -3057,8 +3227,9 @@ PODS: - React-RuntimeCore - React-runtimeexecutor - React-RuntimeHermes + - React-utils - SocketRocket - - React-RCTSettings (0.81.4): + - React-RCTSettings (0.83.1): - boost - DoubleConversion - fast_float @@ -3073,10 +3244,10 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - SocketRocket - - React-RCTText (0.81.4): - - React-Core/RCTTextHeaders (= 0.81.4) + - React-RCTText (0.83.1): + - React-Core/RCTTextHeaders (= 0.83.1) - Yoga - - React-RCTVibration (0.81.4): + - React-RCTVibration (0.83.1): - boost - DoubleConversion - fast_float @@ -3090,11 +3261,11 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - SocketRocket - - React-rendererconsistency (0.81.4) - - React-renderercss (0.81.4): + - React-rendererconsistency (0.83.1) + - React-renderercss (0.83.1): - React-debug - React-utils - - React-rendererdebug (0.81.4): + - React-rendererdebug (0.83.1): - boost - DoubleConversion - fast_float @@ -3104,7 +3275,7 @@ PODS: - RCT-Folly/Fabric - React-debug - SocketRocket - - React-RuntimeApple (0.81.4): + - React-RuntimeApple (0.83.1): - boost - DoubleConversion - fast_float @@ -3133,7 +3304,7 @@ PODS: - React-runtimescheduler - React-utils - SocketRocket - - React-RuntimeCore (0.81.4): + - React-RuntimeCore (0.83.1): - boost - DoubleConversion - fast_float @@ -3155,7 +3326,7 @@ PODS: - React-runtimescheduler - React-utils - SocketRocket - - React-runtimeexecutor (0.81.4): + - React-runtimeexecutor (0.83.1): - boost - DoubleConversion - fast_float @@ -3165,10 +3336,10 @@ PODS: - RCT-Folly/Fabric - React-debug - React-featureflags - - React-jsi (= 0.81.4) + - React-jsi (= 0.83.1) - React-utils - SocketRocket - - React-RuntimeHermes (0.81.4): + - React-RuntimeHermes (0.83.1): - boost - DoubleConversion - fast_float @@ -3189,7 +3360,7 @@ PODS: - React-runtimeexecutor - React-utils - SocketRocket - - React-runtimescheduler (0.81.4): + - React-runtimescheduler (0.83.1): - boost - DoubleConversion - fast_float @@ -3211,9 +3382,9 @@ PODS: - React-timing - React-utils - SocketRocket - - React-timing (0.81.4): + - React-timing (0.83.1): - React-debug - - React-utils (0.81.4): + - React-utils (0.83.1): - boost - DoubleConversion - fast_float @@ -3223,11 +3394,28 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - React-debug - - React-jsi (= 0.81.4) + - React-jsi (= 0.83.1) + - SocketRocket + - React-webperformancenativemodule (0.83.1): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-cxxreact + - React-jsi + - React-jsiexecutor + - React-performancetimeline + - React-RCTFBReactNativeSpec + - React-runtimeexecutor + - ReactCommon/turbomodule/core - SocketRocket - - ReactAppDependencyProvider (0.81.4): + - ReactAppDependencyProvider (0.83.1): - ReactCodegen - - ReactCodegen (0.81.4): + - ReactCodegen (0.83.1): - boost - DoubleConversion - fast_float @@ -3253,7 +3441,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - SocketRocket - - ReactCommon (0.81.4): + - ReactCommon (0.83.1): - boost - DoubleConversion - fast_float @@ -3261,9 +3449,9 @@ PODS: - glog - RCT-Folly - RCT-Folly/Fabric - - ReactCommon/turbomodule (= 0.81.4) + - ReactCommon/turbomodule (= 0.83.1) - SocketRocket - - ReactCommon/turbomodule (0.81.4): + - ReactCommon/turbomodule (0.83.1): - boost - DoubleConversion - fast_float @@ -3272,15 +3460,15 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - React-callinvoker (= 0.81.4) - - React-cxxreact (= 0.81.4) - - React-jsi (= 0.81.4) - - React-logger (= 0.81.4) - - React-perflogger (= 0.81.4) - - ReactCommon/turbomodule/bridging (= 0.81.4) - - ReactCommon/turbomodule/core (= 0.81.4) + - React-callinvoker (= 0.83.1) + - React-cxxreact (= 0.83.1) + - React-jsi (= 0.83.1) + - React-logger (= 0.83.1) + - React-perflogger (= 0.83.1) + - ReactCommon/turbomodule/bridging (= 0.83.1) + - ReactCommon/turbomodule/core (= 0.83.1) - SocketRocket - - ReactCommon/turbomodule/bridging (0.81.4): + - ReactCommon/turbomodule/bridging (0.83.1): - boost - DoubleConversion - fast_float @@ -3289,13 +3477,13 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - React-callinvoker (= 0.81.4) - - React-cxxreact (= 0.81.4) - - React-jsi (= 0.81.4) - - React-logger (= 0.81.4) - - React-perflogger (= 0.81.4) + - React-callinvoker (= 0.83.1) + - React-cxxreact (= 0.83.1) + - React-jsi (= 0.83.1) + - React-logger (= 0.83.1) + - React-perflogger (= 0.83.1) - SocketRocket - - ReactCommon/turbomodule/core (0.81.4): + - ReactCommon/turbomodule/core (0.83.1): - boost - DoubleConversion - fast_float @@ -3304,14 +3492,14 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - React-callinvoker (= 0.81.4) - - React-cxxreact (= 0.81.4) - - React-debug (= 0.81.4) - - React-featureflags (= 0.81.4) - - React-jsi (= 0.81.4) - - React-logger (= 0.81.4) - - React-perflogger (= 0.81.4) - - React-utils (= 0.81.4) + - React-callinvoker (= 0.83.1) + - React-cxxreact (= 0.83.1) + - React-debug (= 0.83.1) + - React-featureflags (= 0.83.1) + - React-jsi (= 0.83.1) + - React-logger (= 0.83.1) + - React-perflogger (= 0.83.1) + - React-utils (= 0.83.1) - SocketRocket - ReactNativeHybridApp (0.0.0): - boost @@ -4017,7 +4205,7 @@ PODS: - SwiftUIIntrospect (1.3.0) - Turf (2.8.0) - TweetNacl (1.0.2) - - UMAppLoader (6.0.8) + - UMAppLoader (55.0.2) - VisionCamera (4.7.2): - VisionCamera/Core (= 4.7.2) - VisionCamera/React (= 4.7.2) @@ -4032,22 +4220,24 @@ DEPENDENCIES: - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - EXConstants (from `../node_modules/expo-constants/ios`) - - EXImageLoader (from `../node_modules/expo-image-loader/ios`) - "expensify-react-native-background-task (from `../node_modules/@expensify/react-native-background-task`)" - "ExpensifyNitroUtils (from `../node_modules/@expensify/nitro-utils`)" - Expo (from `../node_modules/expo`) - ExpoAsset (from `../node_modules/expo-asset/ios`) - ExpoAudio (from `../node_modules/expo-audio/ios`) + - "ExpoDomWebView (from `../node_modules/@expo/dom-webview/ios`)" - ExpoFont (from `../node_modules/expo-font/ios`) - ExpoImage (from `../node_modules/expo-image/ios`) - ExpoImageManipulator (from `../node_modules/expo-image-manipulator/ios`) - ExpoLocation (from `../node_modules/expo-location/ios`) + - "ExpoLogBox (from `../node_modules/@expo/log-box`)" - ExpoModulesCore (from `../node_modules/expo-modules-core`) + - ExpoModulesJSI (from `../node_modules/expo-modules-core`) - ExpoSecureStore (from `../node_modules/expo-secure-store/ios`) - ExpoStoreReview (from `../node_modules/expo-store-review/ios`) + - ExpoTaskManager (from `../node_modules/expo-task-manager/ios`) - ExpoVideo (from `../node_modules/expo-video/ios`) - ExpoWebBrowser (from `../node_modules/expo-web-browser/ios`) - - EXTaskManager (from `../node_modules/expo-task-manager/ios`) - fast_float (from `../node_modules/react-native/third-party-podspecs/fast_float.podspec`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`) @@ -4064,6 +4254,8 @@ DEPENDENCIES: - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - RCTDeprecation (from `../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`) - RCTRequired (from `../node_modules/react-native/Libraries/Required`) + - RCTSwiftUI (from `../node_modules/react-native/ReactApple/RCTSwiftUI`) + - RCTSwiftUIWrapper (from `../node_modules/react-native/ReactApple/RCTSwiftUIWrapper`) - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) - React (from `../node_modules/react-native/`) - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) @@ -4083,6 +4275,7 @@ DEPENDENCIES: - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) - React-idlecallbacksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks`) - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`) + - React-intersectionobservernativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/intersectionobserver`) - 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`) @@ -4117,8 +4310,10 @@ DEPENDENCIES: - "react-native-wallet (from `../node_modules/@expensify/react-native-wallet`)" - react-native-webview (from `../node_modules/react-native-webview`) - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) + - React-networking (from `../node_modules/react-native/ReactCommon/react/networking`) - React-oscompat (from `../node_modules/react-native/ReactCommon/oscompat`) - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) + - React-performancecdpmetrics (from `../node_modules/react-native/ReactCommon/react/performance/cdpmetrics`) - React-performancetimeline (from `../node_modules/react-native/ReactCommon/react/performance/timeline`) - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) @@ -4143,8 +4338,9 @@ DEPENDENCIES: - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) - React-timing (from `../node_modules/react-native/ReactCommon/react/timing`) - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`) - - ReactAppDependencyProvider (from `build/generated/ios`) - - ReactCodegen (from `build/generated/ios`) + - React-webperformancenativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/webperformance`) + - ReactAppDependencyProvider (from `build/generated/ios/ReactAppDependencyProvider`) + - ReactCodegen (from `build/generated/ios/ReactCodegen`) - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) - "ReactNativeHybridApp (from `../node_modules/@expensify/react-native-hybrid-app`)" - "RNAppleAuthentication (from `../node_modules/@invertase/react-native-apple-authentication`)" @@ -4225,8 +4421,6 @@ EXTERNAL SOURCES: :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" EXConstants: :path: "../node_modules/expo-constants/ios" - EXImageLoader: - :path: "../node_modules/expo-image-loader/ios" expensify-react-native-background-task: :path: "../node_modules/@expensify/react-native-background-task" ExpensifyNitroUtils: @@ -4237,6 +4431,8 @@ EXTERNAL SOURCES: :path: "../node_modules/expo-asset/ios" ExpoAudio: :path: "../node_modules/expo-audio/ios" + ExpoDomWebView: + :path: "../node_modules/@expo/dom-webview/ios" ExpoFont: :path: "../node_modules/expo-font/ios" ExpoImage: @@ -4245,18 +4441,22 @@ EXTERNAL SOURCES: :path: "../node_modules/expo-image-manipulator/ios" ExpoLocation: :path: "../node_modules/expo-location/ios" + ExpoLogBox: + :path: "../node_modules/@expo/log-box" ExpoModulesCore: :path: "../node_modules/expo-modules-core" + ExpoModulesJSI: + :path: "../node_modules/expo-modules-core" ExpoSecureStore: :path: "../node_modules/expo-secure-store/ios" ExpoStoreReview: :path: "../node_modules/expo-store-review/ios" + ExpoTaskManager: + :path: "../node_modules/expo-task-manager/ios" ExpoVideo: :path: "../node_modules/expo-video/ios" ExpoWebBrowser: :path: "../node_modules/expo-web-browser/ios" - EXTaskManager: - :path: "../node_modules/expo-task-manager/ios" fast_float: :podspec: "../node_modules/react-native/third-party-podspecs/fast_float.podspec" FBLazyVector: @@ -4273,7 +4473,7 @@ EXTERNAL SOURCES: :path: "../node_modules/group-ib-fp" hermes-engine: :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" - :tag: hermes-2025-07-07-RNv0.81.0-e0fc67142ec0763c6b6153ca2bf96df815539782 + :tag: hermes-v0.14.0 lottie-react-native: :path: "../node_modules/lottie-react-native" NitroModules: @@ -4288,6 +4488,10 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation" RCTRequired: :path: "../node_modules/react-native/Libraries/Required" + RCTSwiftUI: + :path: "../node_modules/react-native/ReactApple/RCTSwiftUI" + RCTSwiftUIWrapper: + :path: "../node_modules/react-native/ReactApple/RCTSwiftUIWrapper" RCTTypeSafety: :path: "../node_modules/react-native/Libraries/TypeSafety" React: @@ -4324,6 +4528,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks" React-ImageManager: :path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios" + React-intersectionobservernativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/intersectionobserver" React-jserrorhandler: :path: "../node_modules/react-native/ReactCommon/jserrorhandler" React-jsi: @@ -4392,10 +4598,14 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-webview" React-NativeModulesApple: :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios" + React-networking: + :path: "../node_modules/react-native/ReactCommon/react/networking" React-oscompat: :path: "../node_modules/react-native/ReactCommon/oscompat" React-perflogger: :path: "../node_modules/react-native/ReactCommon/reactperflogger" + React-performancecdpmetrics: + :path: "../node_modules/react-native/ReactCommon/react/performance/cdpmetrics" React-performancetimeline: :path: "../node_modules/react-native/ReactCommon/react/performance/timeline" React-RCTActionSheet: @@ -4444,10 +4654,12 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/react/timing" React-utils: :path: "../node_modules/react-native/ReactCommon/react/utils" + React-webperformancenativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/webperformance" ReactAppDependencyProvider: - :path: build/generated/ios + :path: build/generated/ios/ReactAppDependencyProvider ReactCodegen: - :path: build/generated/ios + :path: build/generated/ios/ReactCodegen ReactCommon: :path: "../node_modules/react-native/ReactCommon" ReactNativeHybridApp: @@ -4511,27 +4723,29 @@ SPEC CHECKSUMS: AirshipServiceExtension: 50d11b2f62c4a490d4e81a1c36f70e2ecb70a27e AppAuth: d4f13a8fe0baf391b2108511793e4b479691fb73 AppLogs: 3bc4e9b141dbf265b9464409caaa40416a9ee0e0 - boost: 659a89341ea4ab3df8259733813b52f26d8be9a5 + boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90 DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb - EXConstants: fd688cef4e401dcf798a021cfb5d87c890c30ba3 - EXImageLoader: 4d3d3284141f1a45006cc4d0844061c182daf7ee + EXConstants: b3c63be5f8648e4ab8e6ff5099b62f629247f969 expensify-react-native-background-task: 03c640e1f5649692d058cba48c0a138f024a6dd3 ExpensifyNitroUtils: 86109fe1ab88351ed63ffe11b760d537c70019d7 - Expo: b2748512b0df06c1e569f93372b53c488f02ffe7 - ExpoAsset: 84810d6fed8179f04d4a7a4a6b37028bbd726e26 - ExpoAudio: e4cfe3a2f3317b8487460685385a9867a07fb4fb + Expo: 941aee686e1fcc486956cdeb5961d9244e9da0aa + ExpoAsset: afaa23466e93da462b918bff8d6a9fe15c646dc8 + ExpoAudio: 14c5909ec48267bfc514bb44c546fcf6fac93837 + ExpoDomWebView: f101fb3db4b6eec4163fca51f7507189b7e48661 ExpoFont: 86ceec09ffed1c99cfee36ceb79ba149074901b5 - ExpoImage: e88f500585913969b930e13a4be47277eb7c6de8 - ExpoImageManipulator: 7cb78b082bcc767b97867d833ce614ace424cd97 - ExpoLocation: 93d7faa0c2adbd5a04686af0c1a61bc6ed3ee2f7 - ExpoModulesCore: e1b5401a7af4c7dbf4fe26b535918a72c6ed8a7b + ExpoImage: 8f835720453ed5be7764d9650aa1efde8109abc7 + ExpoImageManipulator: ae244131e2c3da68a030332fcbd87287fbdd8f97 + ExpoLocation: fec7703a4922c4748b380723669f771376ffbd05 + ExpoLogBox: 89b634d5a8a64c4a6a7caad8f9985a28463c7002 + ExpoModulesCore: 1158e7941ddcff1677846dfdec27630e036e3904 + ExpoModulesJSI: 455acaa72cb963ceb247df889c8e8cce3e6bbfe6 ExpoSecureStore: 3f1b632d6d40bcc62b4983ef9199cd079592a50a ExpoStoreReview: 32bb43b6fae9c8db3e33cad69996dff3785eef5f - ExpoVideo: 6907c4872886dce2720d3af20782eb6ee7734110 + ExpoTaskManager: 23d8ea66d21da98ddcef977f258d1fd62359c2db + ExpoVideo: 17748c0ee95e746b6ec75d8522a714cb3e614fa1 ExpoWebBrowser: 17b064c621789e41d4816c95c93f429b84971f52 - EXTaskManager: 6f1a66e4c8cc6df6e24c3d90928704bc3013eae5 fast_float: b32c788ed9c6a8c584d114d0047beda9664e7cc6 - FBLazyVector: 941bef1c8eeabd9fe1f501e30a5220beee913886 + FBLazyVector: 309703e71d3f2f1ed7dc7889d58309c9d77a95a4 Firebase: 3435bc66b4d494c2f22c79fd3aae4c1db6662327 FirebaseAnalytics: 630349facf4a114a0977e5d7570e104261973287 FirebaseCore: c692c7f1c75305ab6aff2b367f25e11d73aa8bd0 @@ -4549,7 +4763,7 @@ SPEC CHECKSUMS: GTMAppAuth: f69bd07d68cd3b766125f7e072c45d7340dea0de GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6 GzipSwift: 893f3e48e597a1a4f62fafcb6514220fcf8287fa - hermes-engine: 35c763d57c9832d0eef764316ca1c4d043581394 + hermes-engine: 843645b51c329c98a1b61df2e32c10be463486fe libavif: 84bbb62fb232c3018d6f1bab79beea87e35de7b7 libdav1d: 23581a4d8ec811ff171ed5e2e05cd27bad64c39f libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8 @@ -4569,39 +4783,42 @@ SPEC CHECKSUMS: pusher-websocket-react-native: 31b5fdd632bfa6d417f9ad0bceefe403ab41825d PusherSwift: fa3d5f6587c20ad5790de87a5c9b150367b5f0f5 RCT-Folly: 846fda9475e61ec7bcbf8a3fe81edfcaeb090669 - RCTDeprecation: c0ed3249a97243002615517dff789bf4666cf585 - RCTRequired: 58719f5124f9267b5f9649c08bf23d9aea845b23 - RCTTypeSafety: 4aefa8328ab1f86da273f08517f1f6b343f6c2cc - React: 2073376f47c71b7e9a0af7535986a77522ce1049 - React-callinvoker: 751b6f2c83347a0486391c3f266f291f0f53b27e + RCTDeprecation: a41bbdd9af30bf2e5715796b313e44ec43eefff1 + RCTRequired: 7be34aabb0b77c3cefe644528df0fa0afad4e4d0 + RCTSwiftUI: a6c7271c39098bf00dbdad8f8ed997a59bbfbe44 + RCTSwiftUIWrapper: ff9098ccf7727e58218f2f8ea110349863f43438 + RCTTypeSafety: 27927d0ca04e419ed9467578b3e6297e37210b5c + React: 4bc1f928568ad4bcfd147260f907b4ea5873a03b + React-callinvoker: 87f8728235a0dc62e9dc19b3851c829d9347d015 React-Codegen: 4b8b4817cea7a54b83851d4c1f91f79aa73de30a - React-Core: aeebd9b37ac383279f610f1e53f66b9931686a41 - React-CoreModules: c0ae04452e4c5d30e06f8e94692a49107657f537 - React-cxxreact: 376fd672c95dfb64ad5cc246e6a1e9edb78dec4c - React-debug: d4955c86870792887ed695df6ebf0e94e39dc7e1 - React-defaultsnativemodule: bd2b805c6daa85d430d034aa748544b377ada152 - React-domnativemodule: b5c04a4a74ed9c3cb25adc72583b017868600464 - React-Fabric: 93a9ff378f1edf29e9a22a24ad55a1be061e7985 - React-FabricComponents: 83bd54366d4ecb8bec563aa1a78d49915763d503 - React-FabricImage: 8bcd88e553047d4ed5c7ea3def8d6c0e3dd88cfc - React-featureflags: 4ea691ab154d505277859416aa226ae32edeef5f - React-featureflagsnativemodule: b8f00b01436294a30dc62fb5e50b70aa3910309c - React-graphics: d6207795fe822668daeb9c6e1f1470a8500d9eec - React-hermes: fcbdc45ecf38259fe3b12642bd0757c52270a107 - React-idlecallbacksnativemodule: f390a518e1a862453f45f86a1bc248350634d858 - React-ImageManager: acb99e093632b7fc2953dd45f2abaeeea2d9588e - React-jserrorhandler: 958ab9afbe7acdbfe8ca225f7503313409b1319a - React-jsi: 59ec3190dd364cca86a58869e7755477d2468948 - React-jsiexecutor: b87d78a2e8dd7a6f56e9cdac038da45de98c944f - React-jsinspector: 9c33e0c4eeeb10a23b61c4501947b57977980e0e - React-jsinspectorcdp: d7b2c3feddd3669f0eaad2ac1e0f7afbc1d1cf18 - React-jsinspectornetwork: 696d0cf07016e69c053deffba30003fa448904a3 - React-jsinspectortracing: 05d49cd8795db15a279eab6f7604dfa9fe9622f1 - React-jsitooling: 0f9894c3656c3c13d4fcfe6e1dc964fd340acf49 - React-jsitracing: dc11027f9e4e829d32bf17626ec831581ea05223 - React-logger: a3cb5b29c32b8e447b5a96919340e89334062b48 - React-Mapbuffer: e4a65db5f4df53369f39558c0cf2f480f6d3d6c7 - React-microtasksnativemodule: 86334c5c06315e0bccb7b6e6f2c905e92f98b615 + React-Core: 76bed73b02821e5630e7f2cb2e82432ee964695d + React-CoreModules: 752dbfdaeb096658aa0adc4a03ba6214815a08df + React-cxxreact: b6798528aa601c6db66e6adc7e2da2b059c8be74 + React-debug: b2c9f60a9b7a81cefd737cb61e31c2bc39fdfe17 + React-defaultsnativemodule: d9eb6790253633d37bab0dfd46994d772968be51 + React-domnativemodule: eee0fbeb6828e86ad1d1a0f8d2d89bc604a62cc4 + React-Fabric: 5eec4db4e42bbb55308900ee2aeb395d641f63b1 + React-FabricComponents: 556077c756a43b0c0ab719b07a282bc0bb081fc6 + React-FabricImage: 2ebf436bfe52bc6d9d2ae37a3d643280c8266e4e + React-featureflags: d3a2bd36b3763547e7887a30257191192ee789e6 + React-featureflagsnativemodule: 9c06fad6d4f1def2dc7a45b56da2b96a0b7853a5 + React-graphics: b116d3926d6c159565ea9ee96504d8c1d9cfbcdc + React-hermes: 32fc9c231c1aa5c2fcfe851b0d19ee9269f88f4c + React-idlecallbacksnativemodule: d8034c2adb86c8ff3c03be505cb9a20c8ced1737 + React-ImageManager: 6c5cd273187a1f3ccf68f6d6bf57e06647baf50e + React-intersectionobservernativemodule: 1d8f1fe45ab8d45a82b08562ff412b6f128d41d3 + React-jserrorhandler: c1455b7243cf6fed0a8fd82bfbb2ef7637372304 + React-jsi: adf8527fec197ad9d0480cc5b8945eb56de627f0 + React-jsiexecutor: 315fa2f879b43e3a9ca08f5f4b733472f7e4e8a4 + React-jsinspector: 31fa81ccb390c1369acd545c3710ab6169ee77ff + React-jsinspectorcdp: 2d80f6c2d69b9b1809c272d999730dcc5b21a973 + React-jsinspectornetwork: 3aed0076638835994bfce74ea3f05a901d3ab110 + React-jsinspectortracing: 9f5ff99c584ae25d71ba158f852219e62dba8afc + React-jsitooling: 4e41ef5710527621ab85f2ee5a9c8ea05791aeee + React-jsitracing: f7f0e13dfa856460817b7f74f36c883dd0eb89b6 + React-logger: b8483fa08e0d62e430c76d864309d90576ca2f68 + React-Mapbuffer: d0c5f3793332ebec11bfbbbd962ea526ee85efff + React-microtasksnativemodule: 1a7d806e2ec20df1c6d88b29e72787fb48aeab70 react-native-advanced-input-mask: 9c2b52e8d7b09d5df6a6d0f6aafaa46926e39df5 react-native-airship: 9968fae5afb9b18aa9e01e96c8c77a9a7ad7d1e7 react-native-app-logs: 8609315e85ebedb9da47120e5c0bcea5bd6e9d75 @@ -4623,36 +4840,39 @@ SPEC CHECKSUMS: react-native-view-shot: 28aca10c6c6e5331959ba4b6cb2fced572f88af3 react-native-wallet: 4e3cc1f48ca653ad4a96df8da7e6bd9c8987b3e3 react-native-webview: cdce419e8022d0ef6f07db21890631258e7a9e6e - React-NativeModulesApple: 8c7eb6057b00c191a11ad5ced41826ec5a0e4d78 - React-oscompat: 93b5535ea7f7dff46aaee4f78309a70979bdde9d - React-perflogger: e7dcbfcb796d346be7936b75740c3e27a4bb3977 - React-performancetimeline: c6c9393c1a0453a51e1852e3531defe60790b36c - React-RCTActionSheet: 42195ae666e6d79b4af2346770f765b7c29435b9 - React-RCTAnimation: fa103ccc3503b1ed8dedca7e62e7823937748843 - React-RCTAppDelegate: 665d4baf19424cef08276e9ac0d8771eec4519f9 - React-RCTBlob: 0fa9530c255644db095f2c4fd8d89738d9d9ecc0 - React-RCTFabric: 95eb4a92c5c166e21bae07231d327174e56f202d - React-RCTFBReactNativeSpec: fd66225b71f902a8bfa939fb5f7ec743958298df - React-RCTImage: ba824e61ce2e920a239a65d130b83c3a1d426dff - React-RCTLinking: d2dc199c37e71e6f505d9eca3e5c33be930014d4 - React-RCTNetwork: 87137d4b9bd77e5068f854dd5c1f30d4b072faf6 - React-RCTRuntime: b10bd5e5506af0d6205c4101dd1560fe7beead95 - React-RCTSettings: 71f5c7fd7b5f4e725a4e2114a4b4373d0e46048f - React-RCTText: b94d4699b49285bee22b8ebf768924d607eccee3 - React-RCTVibration: 6e3993c4f6c36a3899059f9a9ead560ddaf5a7d7 - React-rendererconsistency: bef28690433e2b4bb00c2f884b22b86e61a430f2 - React-renderercss: e5c2c3b84976f7a587cde8423c671db07a6a77da - React-rendererdebug: cc7a6131733605b8897754f72c0c35c79f77da9e - React-RuntimeApple: 3f96102fc1ebf738d36719cdce5422a5769293fb - React-RuntimeCore: f05563107927f155180dfa008fed2ac1316a6aec - React-runtimeexecutor: dd3ec3b76761b43e7b37d07a70de91fc1dd24e7e - React-RuntimeHermes: 7fcb384acc111ea21bcffe2e4a15f31b58bb702e - React-runtimescheduler: 7d2eaa4e7d652a391f47df7ff510260413429bd9 - React-timing: f5d4ba74be96a24b9b2a1a910142ed14e03013d9 - React-utils: eb92d1db56a9bb5911b2c77fb4c2e8d331c8b9dd - ReactAppDependencyProvider: 433ddfb4536948630aadd5bd925aff8a632d2fe3 - ReactCodegen: 2cfa890e84ecf7f3a708f1ed9c0f2c0b22a23c9a - ReactCommon: e9ab32f1d1482d207867b4fdd139361302b9dcc6 + React-NativeModulesApple: e554252d69442010807867cc7d70c0008048ad20 + React-networking: 669cb54cc7e5b65d7dafeeb36970a1421adc8bb3 + React-oscompat: 80166b66da22e7af7fad94474e9997bd52d4c8c6 + React-perflogger: d6797918d2b1031e91a9d8f5e7fdd2c8728fb390 + React-performancecdpmetrics: 7706707d5dd49d708518a91abe456dcb585a5865 + React-performancetimeline: c9807b559901c4298a92f6bcb069f49f518b7020 + React-RCTActionSheet: 3bd5f5db9f983cf38d51bb9a7a198e2ebea94821 + React-RCTAnimation: 46a9978f27dc434dbeed16afa7b82619b690a9af + React-RCTAppDelegate: 62ecd60a2b2a8cae26ce6a066bfa59cfde97af01 + React-RCTBlob: 8285c859513023ee3cc8c806d9b59d4da078c4ba + React-RCTFabric: ab7096fa22eea969efe8947c6296d3c5e03bf51a + React-RCTFBReactNativeSpec: 7bddf0751b44174a60921dc680fa6396a0873de1 + React-RCTImage: a5364d0f098692cfbf5bef1e8a63e7712ecb14b7 + React-RCTLinking: 34b63b0aa0e92d30f5d7aa2c255a8f95fa75ee8f + React-RCTNetwork: 1ef88b7a5310b8f915d3556b5b247def113191ed + React-RCTRuntime: 5217917c3c456268a029c09af419b3c6d93bf6d4 + React-RCTSettings: 2c45623d6c0f30851a123f621eb9d32298bcbb0c + React-RCTText: 0ee70f5dc18004b4d81b2c214267c6cbec058587 + React-RCTVibration: 88557e21e7cc3fe76b5b174cba28ff45c6def997 + React-rendererconsistency: ac8a9e9ee3eb299458cc848944133ff4be46cc41 + React-renderercss: f04cbe3b06ee071c6ca724f41a3c3aa31332601e + React-rendererdebug: 2a2e4f7d42abcbec2047e989a1afda5d62905679 + React-RuntimeApple: ce2ae0ea88316a7c708be1e6601e4ec5f6febdce + React-RuntimeCore: 55b3dcac1c0e7acf98aaebb9b4c6a793bdc332e0 + React-runtimeexecutor: e4bf693c55393af5c4c62ac775c7212552ccde7a + React-RuntimeHermes: a9e2538786653648830a0efb278d51237c1a8c27 + React-runtimescheduler: 0142588a3aad9a8607f0de743330d6e459f604b8 + React-timing: 95d4939cbcd64d05c94d7c18b9cfba7c931340fd + React-utils: 28158276c67b375d1b7546a342571cfffbea9770 + React-webperformancenativemodule: 3aa0693c4d19898831317e17b005fad3444d2c99 + ReactAppDependencyProvider: 0eb286cc274abb059ee601b862ebddac2e681d01 + ReactCodegen: d663254bf59e57e5ed7c65638bd45f358a373bba + ReactCommon: 15e1e727fa34f760beb7dd52928687fda8edf8dc ReactNativeHybridApp: 16ebccf5382436fcb9303ab5f4b50d9942bccf5c RNAppleAuthentication: 9027af8aa92b4719ef1b6030a8e954d37079473a RNCClipboard: e560338bf6cc4656a09ff90610b62ddc0dbdad65 @@ -4661,20 +4881,20 @@ SPEC CHECKSUMS: RNFBAnalytics: 2f451df50833a890974d55a93557da878a85b29e RNFBApp: db9c2e6d36fe579ab19b82c0a4a417ff7569db7e RNFS: 89de7d7f4c0f6bafa05343c578f61118c8282ed8 - RNGestureHandler: b8d2e75c2e88fc2a1f6be3b3beeeed80b88fa37d + RNGestureHandler: 4db26426b6098e3d87bd26d8c9a9afa3b6674123 RNGoogleSignin: 89877c73f0fbf6af2038fbdb7b73b5a25b8330cc - RNLiveMarkdown: 60621617bc0504ac39669e3a8d1e9cadf1ada34f + RNLiveMarkdown: 589e31da57c2cb6d98b37ac68ae8b0b256247172 RNLocalize: 05e367a873223683f0e268d0af9a8a8e6aed3b26 rnmapbox-maps: 392ac61c42a9ff01a51d4c2f6775d9131b5951fb RNNitroSQLite: fb251387cfbee73b100cd484a3c886fda681b3b5 RNPermissions: 518f0a0c439acc74e2b9937e0e7d29e5031ae949 RNReactNativeHapticFeedback: 5f1542065f0b24c9252bd8cf3e83bc9c548182e4 - RNReanimated: e79d7f42b76ba026e7dc5fb3e3f81991c590d3af + RNReanimated: fbcb7fd8da5b0b088401542c58fb5d266388f1cf RNScreens: 4f2aed147a2775017923789d8a0a2d377712ec2e RNSentry: f73f4da92e4c20841ab16e1fa22fc289bc2f9f4e RNShare: 1c1fde2c4134b9cf220ffebbd6df9c414036d382 - RNSVG: 94a1be05fab4043354bcf7104f0f9b0e2231ef05 - RNWorklets: 5dd32e6d649594b9a938cdd75673dffb2266e119 + RNSVG: 74eb75bd44d62ba9969941e80d8f9832971c681f + RNWorklets: 01efdd402d236a13651ea5ea5437ca85a44e7afa SDWebImage: 16309af6d214ba3f77a7c6f6fdda888cb313a50a SDWebImageAVIFCoder: afe194a084e851f70228e4be35ef651df0fc5c57 SDWebImageSVGCoder: 15a300a97ec1c8ac958f009c02220ac0402e936c @@ -4684,9 +4904,9 @@ SPEC CHECKSUMS: SwiftUIIntrospect: fee9aa07293ee280373a591e1824e8ddc869ba5d Turf: aa2ede4298009639d10db36aba1a7ebaad072a5e TweetNacl: 3abf4d1d2082b0114e7a67410e300892448951e6 - UMAppLoader: 145337733539f9af9b3dd97eeaa7f3bd97cacb23 + UMAppLoader: 71b50bcc31d86495e52c0b4cd17e2708bf297be3 VisionCamera: 30b358b807324c692064f78385e9a732ce1bebfe - Yoga: 9b30b783a17681321b52ac507a37219d7d795ace + Yoga: 33b53536a0500d039f2cd78caf1d5d68712d3af7 PODFILE CHECKSUM: 7b7e42d39b30be7ca4c68c5272e2cbf2a740695b diff --git a/jest/setup.ts b/jest/setup.ts index 2f7c5a52a5983..e30e2b55d06cd 100644 --- a/jest/setup.ts +++ b/jest/setup.ts @@ -11,6 +11,7 @@ import type * as RNKeyboardController from 'react-native-keyboard-controller'; import mockStorage from 'react-native-onyx/dist/storage/__mocks__'; import type Animated from 'react-native-reanimated'; import 'setimmediate'; +import {TextDecoder, TextEncoder} from 'util'; import * as MockedSecureStore from '@src/libs/MultifactorAuthentication/Biometrics/SecureStore/index.web'; import '@src/polyfills/PromiseWithResolvers'; import mockFSLibrary from './setupMockFullstoryLib'; @@ -25,6 +26,8 @@ if (!('GITHUB_REPOSITORY' in process.env)) { setupMockImages(); mockFSLibrary(); +Object.assign(global, {TextDecoder, TextEncoder}); + // This mock is required as per setup instructions for react-navigation testing // https://reactnavigation.org/docs/testing/#mocking-native-modules jest.mock('react-native/src/private/animated/NativeAnimatedHelper'); diff --git a/modules/group-ib-fp/android/build.gradle b/modules/group-ib-fp/android/build.gradle index 1119cd102f397..be9a8243a32cc 100644 --- a/modules/group-ib-fp/android/build.gradle +++ b/modules/group-ib-fp/android/build.gradle @@ -2,7 +2,6 @@ buildscript { repositories { google() mavenCentral() - jcenter() } dependencies { diff --git a/modules/group-ib-fp/android/gradle/wrapper/gradle-wrapper.jar b/modules/group-ib-fp/android/gradle/wrapper/gradle-wrapper.jar index 7454180f2ae88..8bdaf60c75ab8 100644 Binary files a/modules/group-ib-fp/android/gradle/wrapper/gradle-wrapper.jar and b/modules/group-ib-fp/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/modules/group-ib-fp/android/gradle/wrapper/gradle-wrapper.properties b/modules/group-ib-fp/android/gradle/wrapper/gradle-wrapper.properties index 69a9715077f4f..d30212c04be10 100644 --- a/modules/group-ib-fp/android/gradle/wrapper/gradle-wrapper.properties +++ b/modules/group-ib-fp/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/modules/group-ib-fp/ios/FPEventEmitter.swift b/modules/group-ib-fp/ios/FPEventEmitter.swift index 779da3f195a42..588a985275395 100644 --- a/modules/group-ib-fp/ios/FPEventEmitter.swift +++ b/modules/group-ib-fp/ios/FPEventEmitter.swift @@ -4,6 +4,7 @@ import GIBMobileSdk @objc(FPEventEmitter) class FPEventEmitter: RCTEventEmitter, GIBSessionListener { static var shared: FPEventEmitter? + private var hasListeners = false override init() { super.init() @@ -19,15 +20,25 @@ class FPEventEmitter: RCTEventEmitter, GIBSessionListener { return [Constants.onSessionOpened, Constants.onReceiveSession] } + override func startObserving() { + hasListeners = true + } + + override func stopObserving() { + hasListeners = false + } + func sessionDidOpen(withID sessionId: String) { DispatchQueue.main.async { [weak self] in - self?.sendEvent(withName: Constants.onSessionOpened, body: sessionId) + guard let self, self.hasListeners else { return } + self.sendEvent(withName: Constants.onSessionOpened, body: sessionId) } } - + func sessionDidGetId(_ sessionId: String) { DispatchQueue.main.async { [weak self] in - self?.sendEvent(withName: Constants.onReceiveSession, body: sessionId) + guard let self, self.hasListeners else { return } + self.sendEvent(withName: Constants.onReceiveSession, body: sessionId) } } } diff --git a/package-lock.json b/package-lock.json index 6c0a98568c268..b1a90198eca30 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "@expensify/react-native-hybrid-app": "file:./modules/hybrid-app", "@expensify/react-native-live-markdown": "0.1.324", "@expensify/react-native-wallet": "0.1.11", - "@expo/metro-runtime": "^6.0.2", + "@expo/metro-runtime": "55.0.6", "@formatjs/intl-listformat": "^7.5.7", "@formatjs/intl-locale": "^4.0.0", "@formatjs/intl-numberformat": "^8.10.3", @@ -61,18 +61,18 @@ "dom-serializer": "^0.2.2", "domhandler": "^5.0.3", "expensify-common": "2.0.175", - "expo": "54.0.22", - "expo-asset": "12.0.8", - "expo-audio": "1.1.1", + "expo": "55.0.0", + "expo-asset": "55.0.2", + "expo-audio": "55.0.4", "expo-font": "14.0.8", - "expo-image": "3.0.8", - "expo-image-manipulator": "^13.1.5", - "expo-location": "^19.0.7", - "expo-modules-core": "3.0.24", + "expo-image": "55.0.3", + "expo-image-manipulator": "55.0.2", + "expo-location": "55.0.3", + "expo-modules-core": "55.0.4", "expo-secure-store": "~14.2.4", "expo-store-review": "~9.0.8", - "expo-task-manager": "~14.0.9", - "expo-video": "3.0.12", + "expo-task-manager": "55.0.2", + "expo-video": "55.0.3", "expo-web-browser": "15.0.10", "fast-equals": "^5.2.2", "focus-trap-react": "^11.0.3", @@ -88,15 +88,15 @@ "pako": "^2.1.0", "process": "^0.11.10", "pusher-js": "8.3.0", - "react": "19.1.0", + "react": "19.2.0", "react-collapse": "^5.1.0", "react-content-loader": "^7.0.0", - "react-dom": "19.1.0", + "react-dom": "19.2.0", "react-error-boundary": "^4.0.11", "react-fast-pdf": "^1.0.29", "react-is": "^18.3.1", "react-map-gl": "^7.1.3", - "react-native": "0.81.4", + "react-native": "0.83.1", "react-native-advanced-input-mask": "1.4.6", "react-native-app-logs": "0.3.1", "react-native-blob-util": "0.22.2", @@ -175,8 +175,9 @@ "@react-native-community/cli": "20.0.0", "@react-native-community/cli-platform-android": "20.0.0", "@react-native-community/cli-platform-ios": "20.0.0", - "@react-native/babel-preset": "0.81.4", - "@react-native/metro-config": "0.81.4", + "@react-native/babel-preset": "0.83.1", + "@react-native/metro-config": "0.83.1", + "@react-navigation/core": "7.10.0", "@react-navigation/devtools": "^6.0.10", "@rock-js/platform-android": "0.12.10", "@rock-js/platform-ios": "0.12.10", @@ -206,11 +207,11 @@ "@types/node": "^20.11.5", "@types/pako": "^2.0.3", "@types/pusher-js": "^5.1.0", - "@types/react": "^19.1.0", + "@types/react": "^19.2.0", "@types/react-collapse": "^5.0.1", - "@types/react-dom": "^19.1.0", + "@types/react-dom": "^19.2.0", "@types/react-is": "^18.3.0", - "@types/react-native-web": "^0.0.0", + "@types/react-native-web": "0.19.2", "@types/react-test-renderer": "^19.1.0", "@types/semver": "^7.5.4", "@types/setimmediate": "^1.0.2", @@ -256,7 +257,7 @@ "jest-circus": "29.7.0", "jest-cli": "29.7.0", "jest-environment-jsdom": "^29.7.0", - "jest-expo": "54.0.16", + "jest-expo": "55.0.6", "jest-transformer-svg": "^2.0.1", "jest-when": "^3.5.2", "link": "^2.1.1", @@ -272,7 +273,7 @@ "react-compiler-healthcheck": "^19.0.0-beta-8a03594-20241020", "react-native-clean-project": "^4.0.0-alpha4.0", "react-refresh": "^0.14.2", - "react-test-renderer": "19.1.0", + "react-test-renderer": "19.2.0", "reassure": "^1.0.0", "rock": "0.12.10", "semver": "7.5.2", @@ -334,20 +335,6 @@ "version": "0.0.0", "license": "UNLICENSED" }, - "node_modules/@0no-co/graphql.web": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@0no-co/graphql.web/-/graphql.web-1.2.0.tgz", - "integrity": "sha512-/1iHy9TTr63gE1YcR5idjx8UREz1s0kFhydf3bBLCXyqjhkIc6igAzTOx3zPifCwFR87tsh/4Pa9cNts6d2otw==", - "license": "MIT", - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" - }, - "peerDependenciesMeta": { - "graphql": { - "optional": true - } - } - }, "node_modules/@actions/core": { "version": "1.10.0", "dev": true, @@ -1688,9 +1675,9 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", - "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", @@ -1775,13 +1762,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.6.tgz", - "integrity": "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -2124,6 +2111,8 @@ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.9.tgz", "integrity": "sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "chalk": "^2.4.2", @@ -2135,12 +2124,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz", - "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", "license": "MIT", "dependencies": { - "@babel/types": "^7.28.6" + "@babel/types": "^7.29.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -2239,14 +2228,14 @@ } }, "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.28.0.tgz", - "integrity": "sha512-zOiZqvANjWDUaUS9xMxbMcK/Zccztbe/6ikvUXaG9nsPH3w6qh5UaPGAnirI/WhIbZ8m3OHU0ReyPrknG+ZKeg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.29.0.tgz", + "integrity": "sha512-CVBVv3VY/XRMxRYq5dwr2DS7/MvqPm23cOCjbwNnVrfOqcWlnefua1uUs0sjdKOGjvPUG633o07uWzJq4oI6dA==", "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-syntax-decorators": "^7.27.1" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-syntax-decorators": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -2361,12 +2350,12 @@ } }, "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.27.1.tgz", - "integrity": "sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.28.6.tgz", + "integrity": "sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -3792,17 +3781,17 @@ } }, "node_modules/@babel/traverse": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.6.tgz", - "integrity": "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.28.6", - "@babel/generator": "^7.28.6", + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.6", + "@babel/parser": "^7.29.0", "@babel/template": "^7.28.6", - "@babel/types": "^7.28.6", + "@babel/types": "^7.29.0", "debug": "^4.3.1" }, "engines": { @@ -3811,25 +3800,27 @@ }, "node_modules/@babel/traverse--for-generate-function-map": { "name": "@babel/traverse", - "version": "7.25.7", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.7", - "@babel/generator": "^7.25.7", - "@babel/parser": "^7.25.7", - "@babel/template": "^7.25.7", - "@babel/types": "^7.25.7", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz", - "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", @@ -5677,34 +5668,31 @@ } }, "node_modules/@expo/code-signing-certificates": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.5.tgz", - "integrity": "sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==", + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.6.tgz", + "integrity": "sha512-iNe0puxwBNEcuua9gmTGzq+SuMDa0iATai1FlFTMHJ/vUmKvN/V//drXoLJkVb5i5H3iE/n/qIJxyoBnXouD0w==", "license": "MIT", "dependencies": { - "node-forge": "^1.2.1", - "nullthrows": "^1.1.1" + "node-forge": "^1.3.3" } }, "node_modules/@expo/config": { - "version": "12.0.13", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-12.0.13.tgz", - "integrity": "sha512-Cu52arBa4vSaupIWsF0h7F/Cg//N374nYb7HAxV0I4KceKA7x2UXpYaHOL7EEYYvp7tZdThBjvGpVmr8ScIvaQ==", + "version": "55.0.8", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-55.0.8.tgz", + "integrity": "sha512-D7RYYHfErCgEllGxNwdYdkgzLna7zkzUECBV3snbUpf7RvIpB5l1LpCgzuVoc5KVew5h7N1Tn4LnT/tBSUZsQg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "~7.10.4", - "@expo/config-plugins": "~54.0.4", - "@expo/config-types": "^54.0.10", - "@expo/json-file": "^10.0.8", + "@expo/config-plugins": "~55.0.6", + "@expo/config-types": "^55.0.5", + "@expo/json-file": "^10.0.12", + "@expo/require-utils": "^55.0.2", "deepmerge": "^4.3.1", "getenv": "^2.0.0", "glob": "^13.0.0", - "require-from-string": "^2.0.2", "resolve-from": "^5.0.0", "resolve-workspace-root": "^2.0.0", "semver": "^7.6.0", - "slugify": "^1.3.4", - "sucrase": "~3.35.1" + "slugify": "^1.3.4" } }, "node_modules/@expo/config-plugins": { @@ -5872,29 +5860,20 @@ } }, "node_modules/@expo/config-types": { - "version": "54.0.10", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-54.0.10.tgz", - "integrity": "sha512-/J16SC2an1LdtCZ67xhSkGXpALYUVUNyZws7v+PVsFZxClYehDSoKLqyRaGkpHlYrCc08bS0RF5E0JV6g50psA==", + "version": "55.0.5", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-55.0.5.tgz", + "integrity": "sha512-sCmSUZG4mZ/ySXvfyyBdhjivz8Q539X1NondwDdYG7s3SBsk+wsgPJzYsqgAG/P9+l0xWjUD2F+kQ1cAJ6NNLg==", "license": "MIT" }, - "node_modules/@expo/config/node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, "node_modules/@expo/config/node_modules/@expo/config-plugins": { - "version": "54.0.4", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-54.0.4.tgz", - "integrity": "sha512-g2yXGICdoOw5i3LkQSDxl2Q5AlQCrG7oniu0pCPPO+UxGb7He4AFqSvPSy8HpRUj55io17hT62FTjYRD+d6j3Q==", + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.6.tgz", + "integrity": "sha512-cIox6FjZlFaaX40rbQ3DvP9e87S5X85H9uw+BAxJE5timkMhuByy3GAlOsj1h96EyzSiol7Q6YIGgY1Jiz4M+A==", "license": "MIT", "dependencies": { - "@expo/config-types": "^54.0.10", - "@expo/json-file": "~10.0.8", - "@expo/plist": "^0.4.8", + "@expo/config-types": "^55.0.5", + "@expo/json-file": "~10.0.12", + "@expo/plist": "^0.5.2", "@expo/sdk-runtime-versions": "^1.0.0", "chalk": "^4.1.2", "debug": "^4.3.5", @@ -5902,7 +5881,6 @@ "glob": "^13.0.0", "resolve-from": "^5.0.0", "semver": "^7.5.4", - "slash": "^3.0.0", "slugify": "^1.6.6", "xcode": "^3.0.1", "xml2js": "0.6.0" @@ -5923,6 +5901,27 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/@expo/config/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@expo/config/node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/@expo/config/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -5958,17 +5957,17 @@ "license": "MIT" }, "node_modules/@expo/config/node_modules/glob": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", - "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.1.1", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -5984,49 +5983,49 @@ } }, "node_modules/@expo/config/node_modules/lru-cache": { - "version": "11.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", - "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" } }, "node_modules/@expo/config/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@expo/config/node_modules/path-scurry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", - "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@expo/config/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -6067,9 +6066,9 @@ } }, "node_modules/@expo/devtools": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/@expo/devtools/-/devtools-0.1.7.tgz", - "integrity": "sha512-dfIa9qMyXN+0RfU6SN4rKeXZyzKWsnz6xBSDccjL4IRiE+fQ0t84zg0yxgN4t/WK2JU5v6v4fby7W7Crv9gJvA==", + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/@expo/devtools/-/devtools-55.0.2.tgz", + "integrity": "sha512-4VsFn9MUriocyuhyA+ycJP3TJhUsOFHDc270l9h3LhNpXMf6wvIdGcA0QzXkZtORXmlDybWXRP2KT1k36HcQkA==", "license": "MIT", "dependencies": { "chalk": "^4.1.2" @@ -6157,21 +6156,35 @@ "node": ">=8" } }, + "node_modules/@expo/dom-webview": { + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/@expo/dom-webview/-/dom-webview-55.0.3.tgz", + "integrity": "sha512-bY4/rfcZ0f43DvOtMn8/kmPlmo01tex5hRoc5hKbwBwQjqWQuQt0ACwu7akR9IHI4j0WNG48eL6cZB6dZUFrzg==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, "node_modules/@expo/env": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@expo/env/-/env-2.0.7.tgz", - "integrity": "sha512-BNETbLEohk3HQ2LxwwezpG8pq+h7Fs7/vAMP3eAtFT1BCpprLYoBBFZH7gW4aqGfqOcVP4Lc91j014verrYNGg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@expo/env/-/env-2.1.1.tgz", + "integrity": "sha512-rVvHC4I6xlPcg+mAO09ydUi2Wjv1ZytpLmHOSzvXzBAz9mMrJggqCe4s4dubjJvi/Ino/xQCLhbaLCnTtLpikg==", "license": "MIT", "dependencies": { "chalk": "^4.0.0", "debug": "^4.3.4", - "dotenv": "~16.4.5", - "dotenv-expand": "~11.0.6", "getenv": "^2.0.0" + }, + "engines": { + "node": ">=20.12.0" } }, "node_modules/@expo/env/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==", "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -6185,6 +6198,8 @@ }, "node_modules/@expo/env/node_modules/chalk": { "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", @@ -6199,6 +6214,8 @@ }, "node_modules/@expo/env/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==", "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -6209,10 +6226,14 @@ }, "node_modules/@expo/env/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" }, "node_modules/@expo/env/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" @@ -6220,6 +6241,8 @@ }, "node_modules/@expo/env/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==", "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -6229,20 +6252,20 @@ } }, "node_modules/@expo/fingerprint": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.15.3.tgz", - "integrity": "sha512-8YPJpEYlmV171fi+t+cSLMX1nC5ngY9j2FiN70dHldLpd6Ct6ouGhk96svJ4BQZwsqwII2pokwzrDAwqo4Z0FQ==", + "version": "0.16.5", + "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.16.5.tgz", + "integrity": "sha512-mLrcymtgkW9IJ/G1e8MH1Xt2VIb1MOS86ePY0ePcnV3nVyJqm7gfa/AXD1Hk+eZXvf8XhioYz6QZaamBdEzR3A==", "license": "MIT", "dependencies": { + "@expo/env": "^2.0.11", "@expo/spawn-async": "^1.7.2", "arg": "^5.0.2", "chalk": "^4.1.2", "debug": "^4.3.4", "getenv": "^2.0.0", - "glob": "^10.4.2", + "glob": "^13.0.0", "ignore": "^5.3.1", - "minimatch": "^9.0.0", - "p-limit": "^3.1.0", + "minimatch": "^10.2.2", "resolve-from": "^5.0.0", "semver": "^7.6.0" }, @@ -6271,13 +6294,25 @@ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", "license": "MIT" }, + "node_modules/@expo/fingerprint/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/@expo/fingerprint/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/@expo/fingerprint/node_modules/chalk": { @@ -6314,6 +6349,23 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, + "node_modules/@expo/fingerprint/node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "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", @@ -6323,16 +6375,41 @@ "node": ">=8" } }, + "node_modules/@expo/fingerprint/node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, "node_modules/@expo/fingerprint/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "license": "ISC", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.2" + "brace-expansion": "^5.0.2" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/fingerprint/node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -6469,70 +6546,148 @@ "json5": "^2.2.3" } }, - "node_modules/@expo/mcp-tunnel": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@expo/mcp-tunnel/-/mcp-tunnel-0.1.0.tgz", - "integrity": "sha512-rJ6hl0GnIZj9+ssaJvFsC7fwyrmndcGz+RGFzu+0gnlm78X01957yjtHgjcmnQAgL5hWEOR6pkT0ijY5nU5AWw==", + "node_modules/@expo/local-build-cache-provider": { + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/@expo/local-build-cache-provider/-/local-build-cache-provider-55.0.6.tgz", + "integrity": "sha512-4kfdv48sKzokijMqi07fINYA9/XprshmPgSLf8i69XgzIv2YdRyBbb70SzrufB7PDneFoltz8N83icW8gOOj1g==", + "license": "MIT", + "dependencies": { + "@expo/config": "~55.0.8", + "chalk": "^4.1.2" + } + }, + "node_modules/@expo/local-build-cache-provider/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==", "license": "MIT", "dependencies": { - "ws": "^8.18.3", - "zod": "^3.25.76", - "zod-to-json-schema": "^3.24.6" + "color-convert": "^2.0.1" }, - "peerDependencies": { - "@modelcontextprotocol/sdk": "^1.13.2" + "engines": { + "node": ">=8" }, - "peerDependenciesMeta": { - "@modelcontextprotocol/sdk": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/local-build-cache-provider/node_modules/chalk": { + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@expo/local-build-cache-provider/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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/local-build-cache-provider/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" + }, + "node_modules/@expo/local-build-cache-provider/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" + } + }, + "node_modules/@expo/local-build-cache-provider/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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/log-box": { + "version": "55.0.7", + "resolved": "https://registry.npmjs.org/@expo/log-box/-/log-box-55.0.7.tgz", + "integrity": "sha512-m7V1k2vlMp4NOj3fopjOg4zl/ANXyTRF3HMTMep2GZAKsPiDzgOQ41nm8CaU50/HlDIGXlCObss07gOn20UpHQ==", + "license": "MIT", + "dependencies": { + "@expo/dom-webview": "^55.0.3", + "anser": "^1.4.9", + "stacktrace-parser": "^0.1.10" + }, + "peerDependencies": { + "@expo/dom-webview": "^55.0.3", + "expo": "*", + "react": "*", + "react-native": "*" } }, "node_modules/@expo/metro": { - "version": "54.1.0", - "resolved": "https://registry.npmjs.org/@expo/metro/-/metro-54.1.0.tgz", - "integrity": "sha512-MgdeRNT/LH0v1wcO0TZp9Qn8zEF0X2ACI0wliPtv5kXVbXWI+yK9GyrstwLAiTXlULKVIg3HVSCCvmLu0M3tnw==", + "version": "54.2.0", + "resolved": "https://registry.npmjs.org/@expo/metro/-/metro-54.2.0.tgz", + "integrity": "sha512-h68TNZPGsk6swMmLm9nRSnE2UXm48rWwgcbtAHVMikXvbxdS41NDHHeqg1rcQ9AbznDRp6SQVC2MVpDnsRKU1w==", "license": "MIT", "dependencies": { - "metro": "0.83.2", - "metro-babel-transformer": "0.83.2", - "metro-cache": "0.83.2", - "metro-cache-key": "0.83.2", - "metro-config": "0.83.2", - "metro-core": "0.83.2", - "metro-file-map": "0.83.2", - "metro-resolver": "0.83.2", - "metro-runtime": "0.83.2", - "metro-source-map": "0.83.2", - "metro-transform-plugins": "0.83.2", - "metro-transform-worker": "0.83.2" + "metro": "0.83.3", + "metro-babel-transformer": "0.83.3", + "metro-cache": "0.83.3", + "metro-cache-key": "0.83.3", + "metro-config": "0.83.3", + "metro-core": "0.83.3", + "metro-file-map": "0.83.3", + "metro-minify-terser": "0.83.3", + "metro-resolver": "0.83.3", + "metro-runtime": "0.83.3", + "metro-source-map": "0.83.3", + "metro-symbolicate": "0.83.3", + "metro-transform-plugins": "0.83.3", + "metro-transform-worker": "0.83.3" } }, "node_modules/@expo/metro-config": { - "version": "54.0.8", - "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-54.0.8.tgz", - "integrity": "sha512-rCkDQ8IT6sgcGNy48O2cTE4NlazCAgAIsD5qBsNPJLZSS0XbaILvAgGsFt/4nrx0GMGj6iQcOn5ifwV4NssTmw==", + "version": "55.0.8", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-55.0.8.tgz", + "integrity": "sha512-rlWMzBcRKAcYhEogGZuv8iPHPdErH9h1rchCEFZMOmGX+aZS2q+VqqRo4Zm6oktX6KEqhuNbtcvCelV4aicnUQ==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.20.0", "@babel/core": "^7.20.0", "@babel/generator": "^7.20.5", - "@expo/config": "~12.0.10", - "@expo/env": "~2.0.7", - "@expo/json-file": "~10.0.7", - "@expo/metro": "~54.1.0", + "@expo/config": "~55.0.8", + "@expo/env": "~2.1.1", + "@expo/json-file": "~10.0.12", + "@expo/metro": "~54.2.0", "@expo/spawn-async": "^1.7.2", "browserslist": "^4.25.0", "chalk": "^4.1.0", "debug": "^4.3.2", - "dotenv": "~16.4.5", - "dotenv-expand": "~11.0.6", "getenv": "^2.0.0", - "glob": "^10.4.2", + "glob": "^13.0.0", "hermes-parser": "^0.29.1", "jsc-safe-url": "^0.2.4", "lightningcss": "^1.30.1", - "minimatch": "^9.0.0", + "picomatch": "^4.0.3", "postcss": "~8.4.32", "resolve-from": "^5.0.0" }, @@ -6560,13 +6715,25 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/@expo/metro-config/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/@expo/metro-config/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/@expo/metro-config/node_modules/chalk": { @@ -6603,6 +6770,23 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, + "node_modules/@expo/metro-config/node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "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", @@ -6627,21 +6811,58 @@ "hermes-estree": "0.29.1" } }, + "node_modules/@expo/metro-config/node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, "node_modules/@expo/metro-config/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "license": "ISC", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.2" + "brace-expansion": "^5.0.2" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/metro-config/node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@expo/metro-config/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/@expo/metro-config/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -6655,11 +6876,12 @@ } }, "node_modules/@expo/metro-runtime": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-6.1.2.tgz", - "integrity": "sha512-nvM+Qv45QH7pmYvP8JB1G8JpScrWND3KrMA6ZKe62cwwNiX/BjHU28Ear0v/4bQWXlOY0mv6B8CDIm8JxXde9g==", + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-55.0.6.tgz", + "integrity": "sha512-l8VvgKN9md+URjeQDB+DnHVmvpcWI6zFLH6yv7GTv4sfRDKyaZ5zDXYjTP1phYdgW6ea2NrRtCGNIxylWhsgtg==", "license": "MIT", "dependencies": { + "@expo/log-box": "55.0.7", "anser": "^1.4.9", "pretty-format": "^29.7.0", "stacktrace-parser": "^0.1.10", @@ -6677,6 +6899,38 @@ } } }, + "node_modules/@expo/metro/node_modules/metro-config": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.3.tgz", + "integrity": "sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==", + "license": "MIT", + "dependencies": { + "connect": "^3.6.5", + "flow-enums-runtime": "^0.0.6", + "jest-validate": "^29.7.0", + "metro": "0.83.3", + "metro-cache": "0.83.3", + "metro-core": "0.83.3", + "metro-runtime": "0.83.3", + "yaml": "^2.6.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/@expo/metro/node_modules/metro-runtime": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.3.tgz", + "integrity": "sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.0", + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, "node_modules/@expo/osascript": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.4.2.tgz", @@ -6994,28 +7248,28 @@ } }, "node_modules/@expo/plist": { - "version": "0.4.8", - "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.4.8.tgz", - "integrity": "sha512-pfNtErGGzzRwHP+5+RqswzPDKkZrx+Cli0mzjQaus1ZWFsog5ibL+nVT3NcporW51o8ggnt7x813vtRbPiyOrQ==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.5.2.tgz", + "integrity": "sha512-o4xdVdBpe4aTl3sPMZ2u3fJH4iG1I768EIRk1xRZP+GaFI93MaR3JvoFibYqxeTmLQ1p1kNEVqylfUjezxx45g==", "license": "MIT", "dependencies": { "@xmldom/xmldom": "^0.8.8", - "base64-js": "^1.2.3", + "base64-js": "^1.5.1", "xmlbuilder": "^15.1.1" } }, "node_modules/@expo/prebuild-config": { - "version": "54.0.8", - "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-54.0.8.tgz", - "integrity": "sha512-EA7N4dloty2t5Rde+HP0IEE+nkAQiu4A/+QGZGT9mFnZ5KKjPPkqSyYcRvP5bhQE10D+tvz6X0ngZpulbMdbsg==", + "version": "55.0.8", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-55.0.8.tgz", + "integrity": "sha512-VJNJiOmmZgyDnR7JMmc3B8Z0ZepZ17I8Wtw+wAH/2+UCUsFg588XU+bwgYcFGw+is28kwGjY46z43kfufpxOnA==", "license": "MIT", "dependencies": { - "@expo/config": "~12.0.13", - "@expo/config-plugins": "~54.0.4", - "@expo/config-types": "^54.0.10", - "@expo/image-utils": "^0.8.8", - "@expo/json-file": "^10.0.8", - "@react-native/normalize-colors": "0.81.5", + "@expo/config": "~55.0.8", + "@expo/config-plugins": "~55.0.6", + "@expo/config-types": "^55.0.5", + "@expo/image-utils": "^0.8.12", + "@expo/json-file": "^10.0.12", + "@react-native/normalize-colors": "0.83.2", "debug": "^4.3.1", "resolve-from": "^5.0.0", "semver": "^7.6.0", @@ -7026,14 +7280,14 @@ } }, "node_modules/@expo/prebuild-config/node_modules/@expo/config-plugins": { - "version": "54.0.4", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-54.0.4.tgz", - "integrity": "sha512-g2yXGICdoOw5i3LkQSDxl2Q5AlQCrG7oniu0pCPPO+UxGb7He4AFqSvPSy8HpRUj55io17hT62FTjYRD+d6j3Q==", + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.6.tgz", + "integrity": "sha512-cIox6FjZlFaaX40rbQ3DvP9e87S5X85H9uw+BAxJE5timkMhuByy3GAlOsj1h96EyzSiol7Q6YIGgY1Jiz4M+A==", "license": "MIT", "dependencies": { - "@expo/config-types": "^54.0.10", - "@expo/json-file": "~10.0.8", - "@expo/plist": "^0.4.8", + "@expo/config-types": "^55.0.5", + "@expo/json-file": "~10.0.12", + "@expo/plist": "^0.5.2", "@expo/sdk-runtime-versions": "^1.0.0", "chalk": "^4.1.2", "debug": "^4.3.5", @@ -7041,16 +7295,15 @@ "glob": "^13.0.0", "resolve-from": "^5.0.0", "semver": "^7.5.4", - "slash": "^3.0.0", "slugify": "^1.6.6", "xcode": "^3.0.1", "xml2js": "0.6.0" } }, "node_modules/@expo/prebuild-config/node_modules/@react-native/normalize-colors": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.81.5.tgz", - "integrity": "sha512-0HuJ8YtqlTVRXGZuGeBejLE04wSQsibpTI+RGOyVqxZvgtlLLC/Ssw0UmbHhT4lYMp2fhdtvKZSs5emWB1zR/g==", + "version": "0.83.2", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.83.2.tgz", + "integrity": "sha512-gkZAb9LoVVzNuYzzOviH7DiPTXQoZPHuiTH2+O2+VWNtOkiznjgvqpwYAhg58a5zfRq5GXlbBdf5mzRj5+3Y5Q==", "license": "MIT" }, "node_modules/@expo/prebuild-config/node_modules/ansi-styles": { @@ -7078,9 +7331,9 @@ } }, "node_modules/@expo/prebuild-config/node_modules/brace-expansion": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", - "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", "license": "MIT", "dependencies": { "balanced-match": "^4.0.2" @@ -7213,10 +7466,29 @@ "node": ">=8" } }, + "node_modules/@expo/require-utils": { + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/@expo/require-utils/-/require-utils-55.0.2.tgz", + "integrity": "sha512-dV5oCShQ1umKBKagMMT4B/N+SREsQe3lU4Zgmko5AO0rxKV0tynZT6xXs+e2JxuqT4Rz997atg7pki0BnZb4uw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.20.0", + "@babel/core": "^7.25.2", + "@babel/plugin-transform-modules-commonjs": "^7.24.8" + }, + "peerDependencies": { + "typescript": "^5.0.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/@expo/schema-utils": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@expo/schema-utils/-/schema-utils-0.1.8.tgz", - "integrity": "sha512-9I6ZqvnAvKKDiO+ZF8BpQQFYWXOJvTAL5L/227RUbWG1OVZDInFifzCBiqAZ3b67NRfeAgpgvbA7rejsqhY62A==", + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/@expo/schema-utils/-/schema-utils-55.0.2.tgz", + "integrity": "sha512-QZ5WKbJOWkCrMq0/kfhV9ry8te/OaS34YgLVpG8u9y2gix96TlpRTbxM/YATjNcUR2s4fiQmPCOxkGtog4i37g==", "license": "MIT" }, "node_modules/@expo/sdk-runtime-versions": { @@ -8846,27 +9118,6 @@ "node": ">=14" } }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "license": "ISC", @@ -8951,6 +9202,7 @@ }, "node_modules/@isaacs/fs-minipass": { "version": "4.0.1", + "dev": true, "license": "ISC", "dependencies": { "minipass": "^7.0.4" @@ -8961,6 +9213,8 @@ }, "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==", "license": "ISC", "engines": { "node": ">=12" @@ -11849,32 +12103,32 @@ } }, "node_modules/@react-native/assets-registry": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.81.4.tgz", - "integrity": "sha512-AMcDadefBIjD10BRqkWw+W/VdvXEomR6aEZ0fhQRAv7igrBzb4PTn4vHKYg+sUK0e3wa74kcMy2DLc/HtnGcMA==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.83.1.tgz", + "integrity": "sha512-AT7/T6UwQqO39bt/4UL5EXvidmrddXrt0yJa7ENXndAv+8yBzMsZn6fyiax6+ERMt9GLzAECikv3lj22cn2wJA==", "license": "MIT", "engines": { "node": ">= 20.19.4" } }, "node_modules/@react-native/babel-plugin-codegen": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.81.4.tgz", - "integrity": "sha512-6ztXf2Tl2iWznyI/Da/N2Eqymt0Mnn69GCLnEFxFbNdk0HxHPZBNWU9shTXhsLWOL7HATSqwg/bB1+3kY1q+mA==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.83.1.tgz", + "integrity": "sha512-VPj8O3pG1ESjZho9WVKxqiuryrotAECPHGF5mx46zLUYNTWR5u9OMUXYk7LeLy+JLWdGEZ2Gn3KoXeFZbuqE+g==", "devOptional": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.25.3", - "@react-native/codegen": "0.81.4" + "@react-native/codegen": "0.83.1" }, "engines": { "node": ">= 20.19.4" } }, "node_modules/@react-native/babel-preset": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.81.4.tgz", - "integrity": "sha512-VYj0c/cTjQJn/RJ5G6P0L9wuYSbU9yGbPYDHCKstlQZQWkk+L9V8ZDbxdJBTIei9Xl3KPQ1odQ4QaeW+4v+AZg==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.83.1.tgz", + "integrity": "sha512-xI+tbsD4fXcI6PVU4sauRCh0a5fuLQC849SINmU2J5wP8kzKu4Ye0YkGjUW3mfGrjaZcjkWmF6s33jpyd3gdTw==", "devOptional": true, "license": "MIT", "dependencies": { @@ -11919,8 +12173,8 @@ "@babel/plugin-transform-typescript": "^7.25.2", "@babel/plugin-transform-unicode-regex": "^7.24.7", "@babel/template": "^7.25.0", - "@react-native/babel-plugin-codegen": "0.81.4", - "babel-plugin-syntax-hermes-parser": "0.29.1", + "@react-native/babel-plugin-codegen": "0.83.1", + "babel-plugin-syntax-hermes-parser": "0.32.0", "babel-plugin-transform-flow-enums": "^0.0.2", "react-refresh": "^0.14.0" }, @@ -11932,15 +12186,15 @@ } }, "node_modules/@react-native/codegen": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.81.4.tgz", - "integrity": "sha512-LWTGUTzFu+qOQnvkzBP52B90Ym3stZT8IFCzzUrppz8Iwglg83FCtDZAR4yLHI29VY/x/+pkcWAMCl3739XHdw==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.83.1.tgz", + "integrity": "sha512-FpRxenonwH+c2a5X5DZMKUD7sCudHxB3eSQPgV9R+uxd28QWslyAWrpnJM/Az96AEksHnymDzEmzq2HLX5nb+g==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", "@babel/parser": "^7.25.3", "glob": "^7.1.1", - "hermes-parser": "0.29.1", + "hermes-parser": "0.32.0", "invariant": "^2.2.4", "nullthrows": "^1.1.1", "yargs": "^17.6.2" @@ -11956,7 +12210,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -11973,33 +12227,18 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@react-native/codegen/node_modules/hermes-estree": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", - "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", - "license": "MIT" - }, - "node_modules/@react-native/codegen/node_modules/hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", - "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", - "license": "MIT", - "dependencies": { - "hermes-estree": "0.29.1" - } - }, "node_modules/@react-native/community-cli-plugin": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.81.4.tgz", - "integrity": "sha512-8mpnvfcLcnVh+t1ok6V9eozWo8Ut+TZhz8ylJ6gF9d6q9EGDQX6s8jenan5Yv/pzN4vQEKI4ib2pTf/FELw+SA==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.83.1.tgz", + "integrity": "sha512-FqR1ftydr08PYlRbrDF06eRiiiGOK/hNmz5husv19sK6iN5nHj1SMaCIVjkH/a5vryxEddyFhU6PzO/uf4kOHg==", "license": "MIT", "dependencies": { - "@react-native/dev-middleware": "0.81.4", + "@react-native/dev-middleware": "0.83.1", "debug": "^4.4.0", "invariant": "^2.2.4", - "metro": "^0.83.1", - "metro-config": "^0.83.1", - "metro-core": "^0.83.1", + "metro": "^0.83.3", + "metro-config": "^0.83.3", + "metro-core": "^0.83.3", "semver": "^7.1.3" }, "engines": { @@ -12019,22 +12258,36 @@ } }, "node_modules/@react-native/debugger-frontend": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.81.4.tgz", - "integrity": "sha512-SU05w1wD0nKdQFcuNC9D6De0ITnINCi8MEnx9RsTD2e4wN83ukoC7FpXaPCYyP6+VjFt5tUKDPgP1O7iaNXCqg==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.83.1.tgz", + "integrity": "sha512-01Rn3goubFvPjHXONooLmsW0FLxJDKIUJNOlOS0cPtmmTIx9YIjxhe/DxwHXGk7OnULd7yl3aYy7WlBsEd5Xmg==", "license": "BSD-3-Clause", "engines": { "node": ">= 20.19.4" } }, + "node_modules/@react-native/debugger-shell": { + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.83.1.tgz", + "integrity": "sha512-d+0w446Hxth5OP/cBHSSxOEpbj13p2zToUy6e5e3tTERNJ8ueGlW7iGwGTrSymNDgXXFjErX+dY4P4/3WokPIQ==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.6", + "fb-dotslash": "0.5.8" + }, + "engines": { + "node": ">= 20.19.4" + } + }, "node_modules/@react-native/dev-middleware": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.81.4.tgz", - "integrity": "sha512-hu1Wu5R28FT7nHXs2wWXvQ++7W7zq5GPY83llajgPlYKznyPLAY/7bArc5rAzNB7b0kwnlaoPQKlvD/VP9LZug==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.83.1.tgz", + "integrity": "sha512-QJaSfNRzj3Lp7MmlCRgSBlt1XZ38xaBNXypXAp/3H3OdFifnTZOeYOpFmcpjcXYnDqkxetuwZg8VL65SQhB8dg==", "license": "MIT", "dependencies": { "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.81.4", + "@react-native/debugger-frontend": "0.83.1", + "@react-native/debugger-shell": "0.83.1", "chrome-launcher": "^0.15.2", "chromium-edge-launcher": "^0.2.0", "connect": "^3.6.5", @@ -12043,7 +12296,7 @@ "nullthrows": "^1.1.1", "open": "^7.0.3", "serve-static": "^1.16.2", - "ws": "^6.2.3" + "ws": "^7.5.10" }, "engines": { "node": ">= 20.19.4" @@ -12059,48 +12312,48 @@ } }, "node_modules/@react-native/dev-middleware/node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", "license": "MIT", "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.19.0" + "send": "~0.19.1" }, "engines": { "node": ">= 0.8.0" } }, "node_modules/@react-native/gradle-plugin": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.81.4.tgz", - "integrity": "sha512-T7fPcQvDDCSusZFVSg6H1oVDKb/NnVYLnsqkcHsAF2C2KGXyo3J7slH/tJAwNfj/7EOA2OgcWxfC1frgn9TQvw==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.83.1.tgz", + "integrity": "sha512-6ESDnwevp1CdvvxHNgXluil5OkqbjkJAkVy7SlpFsMGmVhrSxNAgD09SSRxMNdKsnLtzIvMsFCzyHLsU/S4PtQ==", "license": "MIT", "engines": { "node": ">= 20.19.4" } }, "node_modules/@react-native/js-polyfills": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.81.4.tgz", - "integrity": "sha512-sr42FaypKXJHMVHhgSbu2f/ZJfrLzgaoQ+HdpRvKEiEh2mhFf6XzZwecyLBvWqf2pMPZa+CpPfNPiejXjKEy8w==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.83.1.tgz", + "integrity": "sha512-qgPpdWn/c5laA+3WoJ6Fak8uOm7CG50nBsLlPsF8kbT7rUHIVB9WaP6+GPsoKV/H15koW7jKuLRoNVT7c3Ht3w==", "license": "MIT", "engines": { "node": ">= 20.19.4" } }, "node_modules/@react-native/metro-babel-transformer": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.81.4.tgz", - "integrity": "sha512-AahgamQ9kZV4B1x8I/LpTZBgbT+j9i1pQoM3KDkECPIOF1JUwNFUukEjpkq4kRSdzudLocnfASFg+eWzIgPcCA==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.83.1.tgz", + "integrity": "sha512-fqt6DHWX1GBGDKa5WJOjDtPPy2M9lkYVLn59fBeFQ0GXhBRzNbUh8JzWWI/Q2CLDZ2tgKCcwaiXJ1OHWVd2BCQ==", "devOptional": true, "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", - "@react-native/babel-preset": "0.81.4", - "hermes-parser": "0.29.1", + "@react-native/babel-preset": "0.83.1", + "hermes-parser": "0.32.0", "nullthrows": "^1.1.1" }, "engines": { @@ -12110,34 +12363,17 @@ "@babel/core": "*" } }, - "node_modules/@react-native/metro-babel-transformer/node_modules/hermes-estree": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", - "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@react-native/metro-babel-transformer/node_modules/hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", - "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "hermes-estree": "0.29.1" - } - }, "node_modules/@react-native/metro-config": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.81.4.tgz", - "integrity": "sha512-aEXhRMsz6yN5X63Zk+cdKByQ0j3dsKv+ETRP9lLARdZ82fBOCMuK6IfmZMwK3A/3bI7gSvt2MFPn3QHy3WnByw==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.83.1.tgz", + "integrity": "sha512-1rjYZf62fCm6QAinHmRAKnJxIypX0VF/zBPd0qWvWABMZugrS0eACuIbk9Wk0StBod4yL8KnwEJyg77ak8xYzQ==", "devOptional": true, "license": "MIT", "dependencies": { - "@react-native/js-polyfills": "0.81.4", - "@react-native/metro-babel-transformer": "0.81.4", - "metro-config": "^0.83.1", - "metro-runtime": "^0.83.1" + "@react-native/js-polyfills": "0.83.1", + "@react-native/metro-babel-transformer": "0.83.1", + "metro-config": "^0.83.3", + "metro-runtime": "^0.83.3" }, "engines": { "node": ">= 20.19.4" @@ -12152,9 +12388,9 @@ "license": "MIT" }, "node_modules/@react-native/virtualized-lists": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.81.4.tgz", - "integrity": "sha512-hBM+rMyL6Wm1Q4f/WpqGsaCojKSNUBqAXLABNGoWm1vabZ7cSnARMxBvA/2vo3hLcoR4v7zDK8tkKm9+O0LjVA==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.83.1.tgz", + "integrity": "sha512-MdmoAbQUTOdicCocm5XAFDJWsswxk7hxa6ALnm6Y88p01HFML0W593hAn6qOt9q6IM1KbAcebtH6oOd4gcQy8w==", "license": "MIT", "dependencies": { "invariant": "^2.2.4", @@ -12164,7 +12400,7 @@ "node": ">= 20.19.4" }, "peerDependencies": { - "@types/react": "^19.1.0", + "@types/react": "^19.2.0", "react": "*", "react-native": "*" }, @@ -12778,16 +13014,6 @@ "semver": "^7.5.2" } }, - "node_modules/@rock-js/plugin-metro/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, "node_modules/@rock-js/plugin-metro/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -12821,13 +13047,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@rock-js/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==", - "dev": true, - "license": "MIT" - }, "node_modules/@rock-js/plugin-metro/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -12858,20 +13077,6 @@ "node": ">=8" } }, - "node_modules/@rock-js/plugin-metro/node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/@rock-js/plugin-metro/node_modules/is-wsl": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", @@ -12882,138 +13087,6 @@ "node": ">=4" } }, - "node_modules/@rock-js/plugin-metro/node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@rock-js/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/metro": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro/-/metro-0.83.3.tgz", - "integrity": "sha512-+rP+/GieOzkt97hSJ0MrPOuAH/jpaS21ZDvL9DJ35QYRDlQcwzcvUlGUf79AnQxq/2NPiS/AULhhM4TKutIt8Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.3", - "@babel/types": "^7.25.2", - "accepts": "^1.3.7", - "chalk": "^4.0.0", - "ci-info": "^2.0.0", - "connect": "^3.6.5", - "debug": "^4.4.0", - "error-stack-parser": "^2.0.6", - "flow-enums-runtime": "^0.0.6", - "graceful-fs": "^4.2.4", - "hermes-parser": "0.32.0", - "image-size": "^1.0.2", - "invariant": "^2.2.4", - "jest-worker": "^29.7.0", - "jsc-safe-url": "^0.2.2", - "lodash.throttle": "^4.1.1", - "metro-babel-transformer": "0.83.3", - "metro-cache": "0.83.3", - "metro-cache-key": "0.83.3", - "metro-config": "0.83.3", - "metro-core": "0.83.3", - "metro-file-map": "0.83.3", - "metro-resolver": "0.83.3", - "metro-runtime": "0.83.3", - "metro-source-map": "0.83.3", - "metro-symbolicate": "0.83.3", - "metro-transform-plugins": "0.83.3", - "metro-transform-worker": "0.83.3", - "mime-types": "^2.1.27", - "nullthrows": "^1.1.1", - "serialize-error": "^2.1.0", - "source-map": "^0.5.6", - "throat": "^5.0.0", - "ws": "^7.5.10", - "yargs": "^17.6.2" - }, - "bin": { - "metro": "src/cli.js" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/metro-babel-transformer": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.83.3.tgz", - "integrity": "sha512-1vxlvj2yY24ES1O5RsSIvg4a4WeL7PFXgKOHvXTXiW0deLvQr28ExXj6LjwCCDZ4YZLhq6HddLpZnX4dEdSq5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.25.2", - "flow-enums-runtime": "^0.0.6", - "hermes-parser": "0.32.0", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/metro-cache": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.83.3.tgz", - "integrity": "sha512-3jo65X515mQJvKqK3vWRblxDEcgY55Sk3w4xa6LlfEXgQ9g1WgMh9m4qVZVwgcHoLy0a2HENTPCCX4Pk6s8c8Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "exponential-backoff": "^3.1.1", - "flow-enums-runtime": "^0.0.6", - "https-proxy-agent": "^7.0.5", - "metro-core": "0.83.3" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/metro-cache-key": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.83.3.tgz", - "integrity": "sha512-59ZO049jKzSmvBmG/B5bZ6/dztP0ilp0o988nc6dpaDsU05Cl1c/lRf+yx8m9WW/JVgbmfO5MziBU559XjI5Zw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flow-enums-runtime": "^0.0.6" - }, - "engines": { - "node": ">=20.19.4" - } - }, "node_modules/@rock-js/plugin-metro/node_modules/metro-config": { "version": "0.83.3", "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.3.tgz", @@ -13034,69 +13107,6 @@ "node": ">=20.19.4" } }, - "node_modules/@rock-js/plugin-metro/node_modules/metro-core": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.83.3.tgz", - "integrity": "sha512-M+X59lm7oBmJZamc96usuF1kusd5YimqG/q97g4Ac7slnJ3YiGglW5CsOlicTR5EWf8MQFxxjDoB6ytTqRe8Hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flow-enums-runtime": "^0.0.6", - "lodash.throttle": "^4.1.1", - "metro-resolver": "0.83.3" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/metro-file-map": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.83.3.tgz", - "integrity": "sha512-jg5AcyE0Q9Xbbu/4NAwwZkmQn7doJCKGW0SLeSJmzNB9Z24jBe0AL2PHNMy4eu0JiKtNWHz9IiONGZWq7hjVTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "fb-watchman": "^2.0.0", - "flow-enums-runtime": "^0.0.6", - "graceful-fs": "^4.2.4", - "invariant": "^2.2.4", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "nullthrows": "^1.1.1", - "walker": "^1.0.7" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/metro-minify-terser": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.83.3.tgz", - "integrity": "sha512-O2BmfWj6FSfzBLrNCXt/rr2VYZdX5i6444QJU0fFoc7Ljg+Q+iqebwE3K0eTvkI6TRjELsXk1cjU+fXwAR4OjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "flow-enums-runtime": "^0.0.6", - "terser": "^5.15.0" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/metro-resolver": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.83.3.tgz", - "integrity": "sha512-0js+zwI5flFxb1ktmR///bxHYg7OLpRpWZlBBruYG8OKYxeMP7SV0xQ/o/hUelrEMdK4LJzqVtHAhBm25LVfAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "flow-enums-runtime": "^0.0.6" - }, - "engines": { - "node": ">=20.19.4" - } - }, "node_modules/@rock-js/plugin-metro/node_modules/metro-runtime": { "version": "0.83.3", "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.3.tgz", @@ -13111,105 +13121,6 @@ "node": ">=20.19.4" } }, - "node_modules/@rock-js/plugin-metro/node_modules/metro-source-map": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.83.3.tgz", - "integrity": "sha512-xkC3qwUBh2psVZgVavo8+r2C9Igkk3DibiOXSAht1aYRRcztEZNFtAMtfSB7sdO2iFMx2Mlyu++cBxz/fhdzQg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.3", - "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3", - "@babel/types": "^7.25.2", - "flow-enums-runtime": "^0.0.6", - "invariant": "^2.2.4", - "metro-symbolicate": "0.83.3", - "nullthrows": "^1.1.1", - "ob1": "0.83.3", - "source-map": "^0.5.6", - "vlq": "^1.0.0" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/metro-symbolicate": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.83.3.tgz", - "integrity": "sha512-F/YChgKd6KbFK3eUR5HdUsfBqVsanf5lNTwFd4Ca7uuxnHgBC3kR/Hba/RGkenR3pZaGNp5Bu9ZqqP52Wyhomw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flow-enums-runtime": "^0.0.6", - "invariant": "^2.2.4", - "metro-source-map": "0.83.3", - "nullthrows": "^1.1.1", - "source-map": "^0.5.6", - "vlq": "^1.0.0" - }, - "bin": { - "metro-symbolicate": "src/index.js" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/metro-transform-plugins": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.83.3.tgz", - "integrity": "sha512-eRGoKJU6jmqOakBMH5kUB7VitEWiNrDzBHpYbkBXW7C5fUGeOd2CyqrosEzbMK5VMiZYyOcNFEphvxk3OXey2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.3", - "flow-enums-runtime": "^0.0.6", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/metro-transform-worker": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.83.3.tgz", - "integrity": "sha512-Ztekew9t/gOIMZX1tvJOgX7KlSLL5kWykl0Iwu2cL2vKMKVALRl1hysyhUw0vjpAvLFx+Kfq9VLjnHIkW32fPA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", - "@babel/types": "^7.25.2", - "flow-enums-runtime": "^0.0.6", - "metro": "0.83.3", - "metro-babel-transformer": "0.83.3", - "metro-cache": "0.83.3", - "metro-cache-key": "0.83.3", - "metro-minify-terser": "0.83.3", - "metro-source-map": "0.83.3", - "metro-transform-plugins": "0.83.3", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=20.19.4" - } - }, - "node_modules/@rock-js/plugin-metro/node_modules/ob1": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.83.3.tgz", - "integrity": "sha512-egUxXCDwoWG06NGCS5s5AdcpnumHKJlfd3HH06P3m9TEMwwScfcY35wpQxbm9oHof+dM/lVH9Rfyu1elTVelSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "flow-enums-runtime": "^0.0.6" - }, - "engines": { - "node": ">=20.19.4" - } - }, "node_modules/@rock-js/plugin-metro/node_modules/open": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", @@ -13223,26 +13134,6 @@ "node": ">=8" } }, - "node_modules/@rock-js/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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@rock-js/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==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@rock-js/plugin-metro/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -16618,10 +16509,12 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "19.1.2", + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", "license": "MIT", "dependencies": { - "csstype": "^3.0.2" + "csstype": "^3.2.2" } }, "node_modules/@types/react-collapse": { @@ -16633,10 +16526,12 @@ } }, "node_modules/@types/react-dom": { - "version": "19.1.2", + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", "license": "MIT", "peerDependencies": { - "@types/react": "^19.0.0" + "@types/react": "^19.2.0" } }, "node_modules/@types/react-is": { @@ -16659,7 +16554,9 @@ } }, "node_modules/@types/react-native-web": { - "version": "0.0.0", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@types/react-native-web/-/react-native-web-0.19.2.tgz", + "integrity": "sha512-TAgyUi1XcYYUM5j3IwBDufPUD0NaOJiz8ftld6oJPtuIT5lc+uRZZmTcTdflpsVzCtiZ6AjSyLFZ/xD0OtCfJA==", "dev": true, "license": "MIT", "dependencies": { @@ -17272,29 +17169,6 @@ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", "license": "ISC" }, - "node_modules/@urql/core": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@urql/core/-/core-5.2.0.tgz", - "integrity": "sha512-/n0ieD0mvvDnVAXEQgX/7qJiVcvYvNkOHeBvkwtylfjydar123caCXcl58PXFY11oU1oquJocVXHxLAbtv4x1A==", - "license": "MIT", - "dependencies": { - "@0no-co/graphql.web": "^1.0.13", - "wonka": "^6.3.2" - } - }, - "node_modules/@urql/exchange-retry": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@urql/exchange-retry/-/exchange-retry-1.3.2.tgz", - "integrity": "sha512-TQMCz2pFJMfpNxmSfX1VSfTjwUIFx/mL+p1bnfM1xjjdla7Z+KnGMW/EhFbpckp3LyWAH4PgOsMwOMnIN+MBFg==", - "license": "MIT", - "dependencies": { - "@urql/core": "^5.1.2", - "wonka": "^6.3.2" - }, - "peerDependencies": { - "@urql/core": "^5.0.0" - } - }, "node_modules/@vercel/ncc": { "version": "0.38.1", "dev": true, @@ -17921,6 +17795,7 @@ }, "node_modules/ansi-styles": { "version": "3.2.1", + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^1.9.0" @@ -18521,27 +18396,12 @@ "license": "MIT" }, "node_modules/babel-plugin-syntax-hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.29.1.tgz", - "integrity": "sha512-2WFYnoWGdmih1I1J5eIqxATOeycOqRwYxAQBu3cUu/rhwInwHUg7k60AFNbuGjSDL8tje5GDrAnxzRLcu2pYcA==", - "license": "MIT", - "dependencies": { - "hermes-parser": "0.29.1" - } - }, - "node_modules/babel-plugin-syntax-hermes-parser/node_modules/hermes-estree": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", - "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", - "license": "MIT" - }, - "node_modules/babel-plugin-syntax-hermes-parser/node_modules/hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", - "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.32.0.tgz", + "integrity": "sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==", "license": "MIT", "dependencies": { - "hermes-estree": "0.29.1" + "hermes-parser": "0.32.0" } }, "node_modules/babel-plugin-transform-flow-enums": { @@ -18601,11 +18461,12 @@ } }, "node_modules/babel-preset-expo": { - "version": "54.0.6", - "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-54.0.6.tgz", - "integrity": "sha512-GxJfwnuOPQJbzDe5WASJZdNQiukLw7i9z+Lh6JQWkUHXsShHyQrqgiKE55MD/KaP9VqJ70yZm7bYqOu8zwcWqQ==", + "version": "55.0.10", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-55.0.10.tgz", + "integrity": "sha512-aRtW7qJKohGU2V0LUJ6IeP7py3+kVUo9zcc8+v1Kix8jGGuIvqvpo9S6W1Fmn9VFP2DBwkFDLiyzkCZS85urVA==", "license": "MIT", "dependencies": { + "@babel/generator": "^7.20.5", "@babel/helper-module-imports": "^7.25.9", "@babel/plugin-proposal-decorators": "^7.12.9", "@babel/plugin-proposal-export-default-from": "^7.24.7", @@ -18621,10 +18482,10 @@ "@babel/plugin-transform-runtime": "^7.24.7", "@babel/preset-react": "^7.22.15", "@babel/preset-typescript": "^7.23.0", - "@react-native/babel-preset": "0.81.5", + "@react-native/babel-preset": "0.83.2", "babel-plugin-react-compiler": "^1.0.0", "babel-plugin-react-native-web": "~0.21.0", - "babel-plugin-syntax-hermes-parser": "^0.29.1", + "babel-plugin-syntax-hermes-parser": "^0.32.0", "babel-plugin-transform-flow-enums": "^0.0.2", "debug": "^4.3.4", "resolve-from": "^5.0.0" @@ -18632,6 +18493,7 @@ "peerDependencies": { "@babel/runtime": "^7.20.0", "expo": "*", + "expo-widgets": "^55.0.2", "react-refresh": ">=0.14.0 <1.0.0" }, "peerDependenciesMeta": { @@ -18640,26 +18502,29 @@ }, "expo": { "optional": true + }, + "expo-widgets": { + "optional": true } } }, "node_modules/babel-preset-expo/node_modules/@react-native/babel-plugin-codegen": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.81.5.tgz", - "integrity": "sha512-oF71cIH6je3fSLi6VPjjC3Sgyyn57JLHXs+mHWc9MoCiJJcM4nqsS5J38zv1XQ8d3zOW2JtHro+LF0tagj2bfQ==", + "version": "0.83.2", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.83.2.tgz", + "integrity": "sha512-XbcN/BEa64pVlb0Hb/E/Ph2SepjVN/FcNKrJcQvtaKZA6mBSO8pW8Eircdlr61/KBH94LihHbQoQDzkQFpeaTg==", "license": "MIT", "dependencies": { "@babel/traverse": "^7.25.3", - "@react-native/codegen": "0.81.5" + "@react-native/codegen": "0.83.2" }, "engines": { "node": ">= 20.19.4" } }, "node_modules/babel-preset-expo/node_modules/@react-native/babel-preset": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.81.5.tgz", - "integrity": "sha512-UoI/x/5tCmi+pZ3c1+Ypr1DaRMDLI3y+Q70pVLLVgrnC3DHsHRIbHcCHIeG/IJvoeFqFM2sTdhSOLJrf8lOPrA==", + "version": "0.83.2", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.83.2.tgz", + "integrity": "sha512-X/RAXDfe6W+om/Fw1i6htTxQXFhBJ2jgNOWx3WpI3KbjeIWbq7ib6vrpTeIAW2NUMg+K3mML1NzgD4dpZeqdjA==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", @@ -18703,8 +18568,8 @@ "@babel/plugin-transform-typescript": "^7.25.2", "@babel/plugin-transform-unicode-regex": "^7.24.7", "@babel/template": "^7.25.0", - "@react-native/babel-plugin-codegen": "0.81.5", - "babel-plugin-syntax-hermes-parser": "0.29.1", + "@react-native/babel-plugin-codegen": "0.83.2", + "babel-plugin-syntax-hermes-parser": "0.32.0", "babel-plugin-transform-flow-enums": "^0.0.2", "react-refresh": "^0.14.0" }, @@ -18716,15 +18581,15 @@ } }, "node_modules/babel-preset-expo/node_modules/@react-native/codegen": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.81.5.tgz", - "integrity": "sha512-a2TDA03Up8lpSa9sh5VRGCQDXgCTOyDOFH+aqyinxp1HChG8uk89/G+nkJ9FPd0rqgi25eCTR16TWdS3b+fA6g==", + "version": "0.83.2", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.83.2.tgz", + "integrity": "sha512-9uK6X1miCXqtL4c759l74N/XbQeneWeQVjoV7SD2CGJuW7ZefxaoYenwGPs7rMoCdtS6wuIyR3hXQ+uWEBGYXA==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", "@babel/parser": "^7.25.3", "glob": "^7.1.1", - "hermes-parser": "0.29.1", + "hermes-parser": "0.32.0", "invariant": "^2.2.4", "nullthrows": "^1.1.1", "yargs": "^17.6.2" @@ -18746,7 +18611,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -18763,21 +18628,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/babel-preset-expo/node_modules/hermes-estree": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", - "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", - "license": "MIT" - }, - "node_modules/babel-preset-expo/node_modules/hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", - "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", - "license": "MIT", - "dependencies": { - "hermes-estree": "0.29.1" - } - }, "node_modules/babel-preset-jest": { "version": "29.6.3", "license": "MIT", @@ -19374,6 +19224,7 @@ }, "node_modules/chalk": { "version": "2.4.2", + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", @@ -19415,6 +19266,7 @@ }, "node_modules/chalk/node_modules/escape-string-regexp": { "version": "1.0.5", + "devOptional": true, "license": "MIT", "engines": { "node": ">=0.8.0" @@ -19488,6 +19340,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": ">=18" @@ -19495,6 +19348,8 @@ }, "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==", "license": "Apache-2.0", "dependencies": { "@types/node": "*", @@ -19518,6 +19373,8 @@ }, "node_modules/chromium-edge-launcher": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-0.2.0.tgz", + "integrity": "sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==", "license": "Apache-2.0", "dependencies": { "@types/node": "*", @@ -19845,6 +19702,7 @@ }, "node_modules/color-convert": { "version": "1.9.3", + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "1.1.3" @@ -21035,7 +20893,9 @@ "license": "MIT" }, "node_modules/csstype": { - "version": "3.1.1", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "license": "MIT" }, "node_modules/csv-parse": { @@ -21415,6 +21275,7 @@ "node_modules/deep-extend": { "version": "0.6.0", "license": "MIT", + "optional": true, "engines": { "node": ">=4.0.0" } @@ -21719,6 +21580,12 @@ "node": ">=6" } }, + "node_modules/dnssd-advertise": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dnssd-advertise/-/dnssd-advertise-1.1.3.tgz", + "integrity": "sha512-XENsHi3MBzWOCAXif3yZvU1Ah0l+nhJj1sjWL6TnOAYKvGiFhbTx32xHN7+wLMLUOCj7Nr0evADWG4R8JtqCDA==", + "license": "MIT" + }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -21853,19 +21720,6 @@ "url": "https://dotenvx.com" } }, - "node_modules/dotenv-expand": { - "version": "11.0.6", - "license": "BSD-2-Clause", - "dependencies": { - "dotenv": "^16.4.4" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, "node_modules/dunder-proto": { "version": "1.0.1", "license": "MIT", @@ -21988,15 +21842,6 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/env-editor": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz", - "integrity": "sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/env-paths": { "version": "2.2.1", "devOptional": true, @@ -22485,19 +22330,6 @@ "underscore": "^1.13.6" } }, - "node_modules/eslint-config-expensify/node_modules/globals": { - "version": "15.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", - "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/eslint-config-prettier": { "version": "9.1.0", "dev": true, @@ -23535,32 +23367,34 @@ } }, "node_modules/expo": { - "version": "54.0.22", - "resolved": "https://registry.npmjs.org/expo/-/expo-54.0.22.tgz", - "integrity": "sha512-w8J89M9BdVwo6urwvPeV4nAUwykv9si1UHUfZvSVWQ/b2aGs0Ci/a5RZ550rdEBgJXZAapIAhdW2M28Ojw+oGg==", + "version": "55.0.0", + "resolved": "https://registry.npmjs.org/expo/-/expo-55.0.0.tgz", + "integrity": "sha512-7/vIhW/gEa23r+BWMe81e2HnNFOp/gNhkkP7sFOoRhG7llcl85GJXgyxmvaapTTlzXY5u5RWqTKyXH5v6YD0QQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.0", - "@expo/cli": "54.0.15", - "@expo/config": "~12.0.10", - "@expo/config-plugins": "~54.0.2", - "@expo/devtools": "0.1.7", - "@expo/fingerprint": "0.15.3", - "@expo/metro": "~54.1.0", - "@expo/metro-config": "54.0.8", - "@expo/vector-icons": "^15.0.3", + "@expo/cli": "55.0.11", + "@expo/config": "~55.0.8", + "@expo/config-plugins": "~55.0.6", + "@expo/devtools": "55.0.2", + "@expo/fingerprint": "0.16.5", + "@expo/local-build-cache-provider": "55.0.6", + "@expo/log-box": "55.0.7", + "@expo/metro": "~54.2.0", + "@expo/metro-config": "55.0.8", + "@expo/vector-icons": "^15.0.2", "@ungap/structured-clone": "^1.3.0", - "babel-preset-expo": "~54.0.6", - "expo-asset": "~12.0.9", - "expo-constants": "~18.0.10", - "expo-file-system": "~19.0.17", - "expo-font": "~14.0.9", - "expo-keep-awake": "~15.0.7", - "expo-modules-autolinking": "3.0.20", - "expo-modules-core": "3.0.24", + "babel-preset-expo": "~55.0.7", + "expo-asset": "~55.0.7", + "expo-constants": "~55.0.7", + "expo-file-system": "~55.0.9", + "expo-font": "~55.0.4", + "expo-keep-awake": "~55.0.4", + "expo-modules-autolinking": "55.0.8", + "expo-modules-core": "55.0.11", "pretty-format": "^29.7.0", "react-refresh": "^0.14.2", - "whatwg-url-without-unicode": "8.0.0-3" + "whatwg-url-minimum": "^0.1.1" }, "bin": { "expo": "bin/cli", @@ -23587,13 +23421,13 @@ } }, "node_modules/expo-asset": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-12.0.8.tgz", - "integrity": "sha512-jj2U8zw9+7orST2rlQGULYiqPoECOuUyffs2NguGrq84bYbkM041T7TOMXH2raPVJnM9lEAP54ezI6XL+GVYqw==", + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-55.0.2.tgz", + "integrity": "sha512-6GNPOGG8q+oqgbsGMDjBuXcfa4UlviNihpICgVonIaanREhd3f7QFKBmYyN7gTLIfEJ610qpLckAC0+al5lx0w==", "license": "MIT", "dependencies": { - "@expo/image-utils": "^0.8.7", - "expo-constants": "~18.0.8" + "@expo/image-utils": "^0.8.11", + "expo-constants": "~55.0.2" }, "peerDependencies": { "expo": "*", @@ -23602,9 +23436,9 @@ } }, "node_modules/expo-audio": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/expo-audio/-/expo-audio-1.1.1.tgz", - "integrity": "sha512-CPCpJ+0AEHdzWROc0f00Zh6e+irLSl2ALos/LPvxEeIcJw1APfBa4DuHPkL4CQCWsVe7EnUjFpdwpqsEUWcP0g==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/expo-audio/-/expo-audio-55.0.4.tgz", + "integrity": "sha512-NFGHyj78G0iS4AsnPm4REKbQ+ms6SndJlFDAsNaydwf+8LY0xH2XGOlR0WSHql7njX4KAPT2I6sHfyPeUPAYUA==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -23614,13 +23448,13 @@ } }, "node_modules/expo-constants": { - "version": "18.0.10", - "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-18.0.10.tgz", - "integrity": "sha512-Rhtv+X974k0Cahmvx6p7ER5+pNhBC0XbP1lRviL2J1Xl4sT2FBaIuIxF/0I0CbhOsySf0ksqc5caFweAy9Ewiw==", + "version": "55.0.7", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-55.0.7.tgz", + "integrity": "sha512-kdcO4TsQRRqt0USvjaY5vgQMO9H52K3kBZ/ejC7F6rz70mv08GoowrZ1CYOr5O4JpPDRlIpQfZJUucaS/c+KWQ==", "license": "MIT", "dependencies": { - "@expo/config": "~12.0.10", - "@expo/env": "~2.0.7" + "@expo/config": "~55.0.8", + "@expo/env": "~2.1.1" }, "peerDependencies": { "expo": "*", @@ -23628,9 +23462,9 @@ } }, "node_modules/expo-file-system": { - "version": "19.0.21", - "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-19.0.21.tgz", - "integrity": "sha512-s3DlrDdiscBHtab/6W1osrjGL+C2bvoInPJD7sOwmxfJ5Woynv2oc+Fz1/xVXaE/V7HE/+xrHC/H45tu6lZzzg==", + "version": "55.0.10", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-55.0.10.tgz", + "integrity": "sha512-ysFdVdUgtfj2ApY0Cn+pBg+yK4xp+SNwcaH8j2B91JJQ4OXJmnyCSmrNZYz7J4mdYVuv2GzxIP+N/IGlHQG3Yw==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -23652,10 +23486,13 @@ } }, "node_modules/expo-image": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-3.0.8.tgz", - "integrity": "sha512-L83fTHVjvE5hACxUXPk3dpABteI/IypeqxKMeOAAcT2eB/jbqT53ddsYKEvKAP86eoByQ7+TCtw9AOUizEtaTQ==", + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-55.0.3.tgz", + "integrity": "sha512-u/Mz/5lrzx+Qoo5yklJkPgMSXTEwB5oorhutucE8KSVBaKZMTdU7Tlmiw+hkiA2FSIADT4h2wA2wn6H43vdHxA==", "license": "MIT", + "dependencies": { + "sf-symbols-typescript": "^2.2.0" + }, "peerDependencies": { "expo": "*", "react": "*", @@ -23669,26 +23506,30 @@ } }, "node_modules/expo-image-loader": { - "version": "5.1.0", + "version": "55.0.0", + "resolved": "https://registry.npmjs.org/expo-image-loader/-/expo-image-loader-55.0.0.tgz", + "integrity": "sha512-NOjp56wDrfuA5aiNAybBIjqIn1IxKeGJ8CECWZncQ/GzjZfyTYAHTCyeApYkdKkMBLHINzI4BbTGSlbCa0fXXQ==", "license": "MIT", "peerDependencies": { "expo": "*" } }, "node_modules/expo-image-manipulator": { - "version": "13.1.5", + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/expo-image-manipulator/-/expo-image-manipulator-55.0.2.tgz", + "integrity": "sha512-IHcki4GdoaipKulw4X7W1XSTdpmsg6NN6Ijt0ZkuDOPDiCRyQoYEsX09wGDkgZZFymSQ5PUcMwUDOMBMSkNWzQ==", "license": "MIT", "dependencies": { - "expo-image-loader": "~5.1.0" + "expo-image-loader": "~55.0.0" }, "peerDependencies": { "expo": "*" } }, "node_modules/expo-keep-awake": { - "version": "15.0.7", - "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-15.0.7.tgz", - "integrity": "sha512-CgBNcWVPnrIVII5G54QDqoE125l+zmqR4HR8q+MQaCfHet+dYpS5vX5zii/RMayzGN4jPgA4XYIQ28ePKFjHoA==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-55.0.4.tgz", + "integrity": "sha512-vwfdMtMS5Fxaon8gC0AiE70SpxTsHJ+rjeoVJl8kdfdbxczF7OIaVmfjFJ5Gfigd/WZiLqxhfZk34VAkXF4PNg==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -23696,25 +23537,27 @@ } }, "node_modules/expo-location": { - "version": "19.0.7", - "resolved": "https://registry.npmjs.org/expo-location/-/expo-location-19.0.7.tgz", - "integrity": "sha512-YNkh4r9E6ECbPkBCAMG5A5yHDgS0pw+Rzyd0l2ZQlCtjkhlODB55nMCKr5CZnUI0mXTkaSm8CwfoCO8n2MpYfg==", + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-location/-/expo-location-55.0.3.tgz", + "integrity": "sha512-jzmSCZLQTpIGOUiq+3KAGP7H+ZwJaY/2bcSjtfF3vYvuB1RCNcapfCRtDKBmb5K1qWb0DXJm6PqNFs8tTQhJxw==", "license": "MIT", + "dependencies": { + "@expo/image-utils": "^0.8.11" + }, "peerDependencies": { "expo": "*" } }, "node_modules/expo-modules-autolinking": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-3.0.20.tgz", - "integrity": "sha512-W4XFE/A2ijrqvXYrwXug+cUQl6ALYKtsrGnd+xdnoZ+yC7HZag45CJ9mXR0qfLpwXxuBu0HDFh/a+a1MD0Ppdg==", + "version": "55.0.8", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-55.0.8.tgz", + "integrity": "sha512-nrWB1pkNp7bR8ECUTgYUiJ2Pyh6AvxCBXZ+lyPlfl1TzEIGhwU1Yqr+d78eJDueXaW+9zKeE0HqrTZoLS3ve4A==", "license": "MIT", "dependencies": { + "@expo/require-utils": "^55.0.2", "@expo/spawn-async": "^1.7.2", "chalk": "^4.1.0", - "commander": "^7.2.0", - "require-from-string": "^2.0.2", - "resolve-from": "^5.0.0" + "commander": "^7.2.0" }, "bin": { "expo-modules-autolinking": "bin/expo-modules-autolinking.js" @@ -23800,9 +23643,9 @@ } }, "node_modules/expo-modules-core": { - "version": "3.0.24", - "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-3.0.24.tgz", - "integrity": "sha512-wmL0R3WVM2WEs0UJcq/rF1FKXbSrPmXozgzhCUujrb+crkW8p7Y/qKyPBAQwdwcqipuWYaFOgO49AdQ36jmvkA==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-55.0.4.tgz", + "integrity": "sha512-H2tm1YSsdyOtcJ6gueE7mAWmcqlHYcrrAZOVOIKvNLAeuTnT7RkFnkvDCAIohzbM9dBTNs23F5KyPOoVDZUNGg==", "license": "MIT", "dependencies": { "invariant": "^2.2.4" @@ -23822,9 +23665,9 @@ } }, "node_modules/expo-server": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/expo-server/-/expo-server-1.0.5.tgz", - "integrity": "sha512-IGR++flYH70rhLyeXF0Phle56/k4cee87WeQ4mamS+MkVAVP+dDlOHf2nN06Z9Y2KhU0Gp1k+y61KkghF7HdhA==", + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/expo-server/-/expo-server-55.0.6.tgz", + "integrity": "sha512-xI72FTm469FfuuBL2R5aNtthgH+GR7ygOpsx/KcPS0K8AZaZd7VjtEExbzn9/qyyYkWW3T+3dAmCDKOMX8gdmQ==", "license": "MIT", "engines": { "node": ">=20.16.0" @@ -23841,12 +23684,12 @@ } }, "node_modules/expo-task-manager": { - "version": "14.0.9", - "resolved": "https://registry.npmjs.org/expo-task-manager/-/expo-task-manager-14.0.9.tgz", - "integrity": "sha512-GKWtXrkedr4XChHfTm5IyTcSfMtCPxzx89y4CMVqKfyfROATibrE/8UI5j7UC/pUOfFoYlQvulQEvECMreYuUA==", + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/expo-task-manager/-/expo-task-manager-55.0.2.tgz", + "integrity": "sha512-cF98rpnn8DQsUbBgPJuU3S5hzHZ72MK4B+6VRXSYoMKVCOYDUfs6dgbzf+jZX3F6LlLRznVhg5cSN+PZPI65jg==", "license": "MIT", "dependencies": { - "unimodules-app-loader": "~6.0.8" + "unimodules-app-loader": "~55.0.2" }, "peerDependencies": { "expo": "*", @@ -23854,9 +23697,9 @@ } }, "node_modules/expo-video": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/expo-video/-/expo-video-3.0.12.tgz", - "integrity": "sha512-L+E+zmNp3RxUBk2ugMSjxVposP70uIgGCZio5PiiUXme2KQ1eAEta2vcUPWrf4a+udrp6Xzr7bO1H9vkUXF3pg==", + "version": "55.0.3", + "resolved": "https://registry.npmjs.org/expo-video/-/expo-video-55.0.3.tgz", + "integrity": "sha512-i6cMDyk/se+eBgl3aZrZpoVy+4TTBQwte0fUBbCZLbx4oi8uRftYvloDCybGfvDAWvt1H1v3kfmIOpcfwcI+Ug==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -23875,33 +23718,32 @@ } }, "node_modules/expo/node_modules/@expo/cli": { - "version": "54.0.15", - "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-54.0.15.tgz", - "integrity": "sha512-tgaKFeYNRjZssPueZMm1+2cRek6mxEsthPoBX6NzQeDlzIzYBBpnAR6xH95UO6A7r0vduBeL2acIAV1Y5aSGJQ==", - "license": "MIT", - "dependencies": { - "@0no-co/graphql.web": "^1.0.8", - "@expo/code-signing-certificates": "^0.0.5", - "@expo/config": "~12.0.10", - "@expo/config-plugins": "~54.0.2", - "@expo/devcert": "^1.1.2", - "@expo/env": "~2.0.7", - "@expo/image-utils": "^0.8.7", - "@expo/json-file": "^10.0.7", - "@expo/mcp-tunnel": "~0.1.0", - "@expo/metro": "~54.1.0", - "@expo/metro-config": "~54.0.8", - "@expo/osascript": "^2.3.7", - "@expo/package-manager": "^1.9.8", - "@expo/plist": "^0.4.7", - "@expo/prebuild-config": "^54.0.6", - "@expo/schema-utils": "^0.1.7", + "version": "55.0.11", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-55.0.11.tgz", + "integrity": "sha512-tSUQtJ1dr9G+N2+CS2ahP+JhYHuteoqfAzVJxCaRvMM6tuK13UWPfCCCY9X5fkkNs8EyUEGZ9bkpgeHaTt3rsA==", + "license": "MIT", + "dependencies": { + "@expo/code-signing-certificates": "^0.0.6", + "@expo/config": "~55.0.8", + "@expo/config-plugins": "~55.0.6", + "@expo/devcert": "^1.2.1", + "@expo/env": "~2.1.1", + "@expo/image-utils": "^0.8.12", + "@expo/json-file": "^10.0.12", + "@expo/log-box": "55.0.7", + "@expo/metro": "~54.2.0", + "@expo/metro-config": "~55.0.8", + "@expo/osascript": "^2.4.2", + "@expo/package-manager": "^1.10.3", + "@expo/plist": "^0.5.2", + "@expo/prebuild-config": "^55.0.7", + "@expo/require-utils": "^55.0.2", + "@expo/router-server": "^55.0.8", + "@expo/schema-utils": "^55.0.2", "@expo/spawn-async": "^1.7.2", "@expo/ws-tunnel": "^1.0.1", - "@expo/xcpretty": "^4.3.0", - "@react-native/dev-middleware": "0.81.5", - "@urql/core": "^5.0.6", - "@urql/exchange-retry": "^1.3.0", + "@expo/xcpretty": "^4.4.0", + "@react-native/dev-middleware": "0.83.2", "accepts": "^1.3.8", "arg": "^5.0.2", "better-opn": "~3.0.2", @@ -23912,38 +23754,32 @@ "compression": "^1.7.4", "connect": "^3.7.0", "debug": "^4.3.4", - "env-editor": "^0.4.1", - "expo-server": "^1.0.4", - "freeport-async": "^2.0.0", + "dnssd-advertise": "^1.1.3", + "expo-server": "^55.0.5", + "fetch-nodeshim": "^0.4.6", "getenv": "^2.0.0", - "glob": "^10.4.2", - "lan-network": "^0.1.6", - "minimatch": "^9.0.0", - "node-forge": "^1.3.1", + "glob": "^13.0.0", + "lan-network": "^0.2.0", + "multitars": "^0.2.3", + "node-forge": "^1.3.3", "npm-package-arg": "^11.0.0", "ora": "^3.4.0", - "picomatch": "^3.0.1", - "pretty-bytes": "^5.6.0", + "picomatch": "^4.0.3", "pretty-format": "^29.7.0", "progress": "^2.0.3", "prompts": "^2.3.2", - "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.3", "semver": "^7.6.0", "send": "^0.19.0", "slugify": "^1.3.4", "source-map-support": "~0.5.21", "stacktrace-parser": "^0.1.10", "structured-headers": "^0.4.1", - "tar": "^7.4.3", "terminal-link": "^2.1.1", - "undici": "^6.18.2", + "toqr": "^0.1.1", "wrap-ansi": "^7.0.0", - "ws": "^8.12.1" + "ws": "^8.12.1", + "zod": "^3.25.76" }, "bin": { "expo-internal": "build/bin/cli" @@ -23963,14 +23799,14 @@ } }, "node_modules/expo/node_modules/@expo/config-plugins": { - "version": "54.0.4", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-54.0.4.tgz", - "integrity": "sha512-g2yXGICdoOw5i3LkQSDxl2Q5AlQCrG7oniu0pCPPO+UxGb7He4AFqSvPSy8HpRUj55io17hT62FTjYRD+d6j3Q==", + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-55.0.6.tgz", + "integrity": "sha512-cIox6FjZlFaaX40rbQ3DvP9e87S5X85H9uw+BAxJE5timkMhuByy3GAlOsj1h96EyzSiol7Q6YIGgY1Jiz4M+A==", "license": "MIT", "dependencies": { - "@expo/config-types": "^54.0.10", - "@expo/json-file": "~10.0.8", - "@expo/plist": "^0.4.8", + "@expo/config-types": "^55.0.5", + "@expo/json-file": "~10.0.12", + "@expo/plist": "^0.5.2", "@expo/sdk-runtime-versions": "^1.0.0", "chalk": "^4.1.2", "debug": "^4.3.5", @@ -23978,82 +23814,76 @@ "glob": "^13.0.0", "resolve-from": "^5.0.0", "semver": "^7.5.4", - "slash": "^3.0.0", "slugify": "^1.6.6", "xcode": "^3.0.1", "xml2js": "0.6.0" } }, - "node_modules/expo/node_modules/@expo/config-plugins/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/expo/node_modules/@expo/config-plugins/node_modules/brace-expansion": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", - "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "node_modules/expo/node_modules/@expo/router-server": { + "version": "55.0.9", + "resolved": "https://registry.npmjs.org/@expo/router-server/-/router-server-55.0.9.tgz", + "integrity": "sha512-LcCFi+P1qfZOsw0DO4JwNKRxtWt4u2bjTYj0PUe4WVf9NVG/NfUetAXYRbBS6P+gupfM6SC+/bdzdqCWQh7j8g==", "license": "MIT", "dependencies": { - "balanced-match": "^4.0.2" + "debug": "^4.3.4" }, - "engines": { - "node": "18 || 20 || >=22" + "peerDependencies": { + "@expo/metro-runtime": "^55.0.6", + "expo": "*", + "expo-constants": "^55.0.7", + "expo-font": "^55.0.4", + "expo-router": "*", + "expo-server": "^55.0.6", + "react": "*", + "react-dom": "*", + "react-server-dom-webpack": "~19.0.1 || ~19.1.2 || ~19.2.1" + }, + "peerDependenciesMeta": { + "@expo/metro-runtime": { + "optional": true + }, + "expo-router": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "react-server-dom-webpack": { + "optional": true + } } }, - "node_modules/expo/node_modules/@expo/config-plugins/node_modules/glob": { - "version": "13.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", - "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.2.2", - "minipass": "^7.1.3", - "path-scurry": "^2.0.2" - }, + "node_modules/expo/node_modules/@react-native/debugger-frontend": { + "version": "0.83.2", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.83.2.tgz", + "integrity": "sha512-t4fYfa7xopbUF5S4+ihNEwgaq4wLZLKLY0Ms8z72lkMteVd3bOX2Foxa8E2wTfRvdhPOkSpOsTeNDmD8ON4DoQ==", + "license": "BSD-3-Clause", "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 20.19.4" } }, - "node_modules/expo/node_modules/@expo/config-plugins/node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", - "license": "BlueOak-1.0.0", + "node_modules/expo/node_modules/@react-native/debugger-shell": { + "version": "0.83.2", + "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.83.2.tgz", + "integrity": "sha512-z9go6NJMsLSDJT5MW6VGugRsZHjYvUTwxtsVc3uLt4U9W6T3J6FWI2wHpXIzd2dUkXRfAiRQ3Zi8ZQQ8fRFg9A==", + "license": "MIT", "dependencies": { - "brace-expansion": "^5.0.2" + "cross-spawn": "^7.0.6", + "fb-dotslash": "0.5.8" }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/expo/node_modules/@react-native/debugger-frontend": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.81.5.tgz", - "integrity": "sha512-bnd9FSdWKx2ncklOetCgrlwqSGhMHP2zOxObJbOWXoj7GHEmih4MKarBo5/a8gX8EfA1EwRATdfNBQ81DY+h+w==", - "license": "BSD-3-Clause", "engines": { "node": ">= 20.19.4" } }, "node_modules/expo/node_modules/@react-native/dev-middleware": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.81.5.tgz", - "integrity": "sha512-WfPfZzboYgo/TUtysuD5xyANzzfka8Ebni6RIb2wDxhb56ERi7qDrE4xGhtPsjCL4pQBXSVxyIlCy0d8I6EgGA==", + "version": "0.83.2", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.83.2.tgz", + "integrity": "sha512-Zi4EVaAm28+icD19NN07Gh8Pqg/84QQu+jn4patfWKNkcToRFP5vPEbbp0eLOGWS+BVB1d1Fn5lvMrJsBbFcOg==", "license": "MIT", "dependencies": { "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.81.5", + "@react-native/debugger-frontend": "0.83.2", + "@react-native/debugger-shell": "0.83.2", "chrome-launcher": "^0.15.2", "chromium-edge-launcher": "^0.2.0", "connect": "^3.6.5", @@ -24062,7 +23892,7 @@ "nullthrows": "^1.1.1", "open": "^7.0.3", "serve-static": "^1.16.2", - "ws": "^6.2.3" + "ws": "^7.5.10" }, "engines": { "node": ">= 20.19.4" @@ -24089,13 +23919,25 @@ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", "license": "MIT" }, + "node_modules/expo/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/expo/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/expo/node_modules/chalk": { @@ -24163,13 +24005,13 @@ } }, "node_modules/expo/node_modules/expo-asset": { - "version": "12.0.9", - "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-12.0.9.tgz", - "integrity": "sha512-vrdRoyhGhBmd0nJcssTSk1Ypx3Mbn/eXaaBCQVkL0MJ8IOZpAObAjfD5CTy8+8RofcHEQdh3wwZVCs7crvfOeg==", + "version": "55.0.8", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-55.0.8.tgz", + "integrity": "sha512-yEz2svDX67R0yiW2skx6dJmcE0q7sj9ECpGMcxBExMCbctc+nMoZCnjUuhzPl5vhClUsO5HFFXS5vIGmf1bgHQ==", "license": "MIT", "dependencies": { - "@expo/image-utils": "^0.8.7", - "expo-constants": "~18.0.9" + "@expo/image-utils": "^0.8.12", + "expo-constants": "~55.0.7" }, "peerDependencies": { "expo": "*", @@ -24178,9 +24020,9 @@ } }, "node_modules/expo/node_modules/expo-font": { - "version": "14.0.11", - "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-14.0.11.tgz", - "integrity": "sha512-ga0q61ny4s/kr4k8JX9hVH69exVSIfcIc19+qZ7gt71Mqtm7xy2c6kwsPTCyhBW2Ro5yXTT8EaZOpuRi35rHbg==", + "version": "55.0.4", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-55.0.4.tgz", + "integrity": "sha512-ZKeGTFffPygvY5dM/9ATM2p7QDkhsaHopH7wFAWgP2lKzqUMS9B/RxCvw5CaObr9Ro7x9YptyeRKX2HmgmMfrg==", "license": "MIT", "dependencies": { "fontfaceobserver": "^2.1.0" @@ -24192,9 +24034,9 @@ } }, "node_modules/expo/node_modules/expo-modules-core": { - "version": "3.0.24", - "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-3.0.24.tgz", - "integrity": "sha512-wmL0R3WVM2WEs0UJcq/rF1FKXbSrPmXozgzhCUujrb+crkW8p7Y/qKyPBAQwdwcqipuWYaFOgO49AdQ36jmvkA==", + "version": "55.0.11", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-55.0.11.tgz", + "integrity": "sha512-dD/Ea298aDX/Dk81XiD+VFMFU9tjcARgzfcvbFPvTvbGcimpM2sqNK3+ZiTweXYEgcx63CKKdo9pBZuPUypDXw==", "license": "MIT", "dependencies": { "invariant": "^2.2.4" @@ -24204,6 +24046,23 @@ "react-native": "*" } }, + "node_modules/expo/node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/expo/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -24306,15 +24165,15 @@ } }, "node_modules/expo/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "license": "ISC", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.2" + "brace-expansion": "^5.0.2" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -24428,12 +24287,12 @@ } }, "node_modules/expo/node_modules/picomatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", - "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -24721,6 +24580,18 @@ "node": ">=0.8.0" } }, + "node_modules/fb-dotslash": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/fb-dotslash/-/fb-dotslash-0.5.8.tgz", + "integrity": "sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==", + "license": "(MIT OR Apache-2.0)", + "bin": { + "dotslash": "bin/dotslash" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/fb-watchman": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", @@ -24747,6 +24618,12 @@ "version": "1.0.2", "license": "MIT" }, + "node_modules/fetch-nodeshim": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/fetch-nodeshim/-/fetch-nodeshim-0.4.9.tgz", + "integrity": "sha512-XIQWlB2A4RZ7NebXWGxS0uDMdvRHkiUDTghBVJKFg9yEOd45w/PP8cZANuPf2H08W6Cor3+2n7Q6TTZgAS3Fkw==", + "license": "MIT" + }, "node_modules/fflate": { "version": "0.8.2", "license": "MIT" @@ -25392,15 +25269,6 @@ "url": "https://github.com/sponsors/rawify" } }, - "node_modules/freeport-async": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz", - "integrity": "sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/fresh": { "version": "0.5.2", "license": "MIT", @@ -25846,10 +25714,16 @@ } }, "node_modules/globals": { - "version": "11.12.0", + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/globalthis": { @@ -26032,6 +25906,7 @@ }, "node_modules/has-flag": { "version": "3.0.0", + "devOptional": true, "license": "MIT", "engines": { "node": ">=4" @@ -26109,6 +25984,12 @@ "integrity": "sha512-ptlhtnvVjhUu0aXhmp1Ic0iD7dFRGVGplwXu17odLogd1O+zFSvmMRMKKzAobYqMpkVXwbA1AlY+ZN49O3FJkQ==", "license": "LGPL-3.0" }, + "node_modules/hermes-compiler": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-0.14.0.tgz", + "integrity": "sha512-clxa193o+GYYwykWVFfpHduCATz8fR5jvU7ngXpfKHj+E9hr9vjLNtdLSEe8MUbObvVexV3wcyxQ00xTPIrB1Q==", + "license": "MIT" + }, "node_modules/hermes-estree": { "version": "0.32.0", "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.32.0.tgz", @@ -26704,7 +26585,8 @@ }, "node_modules/ini": { "version": "1.3.8", - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/inline-style-prefixer": { "version": "7.0.1", @@ -28366,14 +28248,14 @@ } }, "node_modules/jest-expo": { - "version": "54.0.16", - "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-54.0.16.tgz", - "integrity": "sha512-wPV5dddlNMORNSA7ZjEjePA+ztks3G5iKCOHLIauURnKQPTscnaat5juXPboK1Bv2I+c/RDfkt4uZtAmXdlu/g==", + "version": "55.0.6", + "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-55.0.6.tgz", + "integrity": "sha512-/s3VF8OcXe7ij5NTBszXIWhZEiiyFV+sju9GhPJvVSRMffTsuHj7G4g/lUVeBY5vFx6bOk75rlfVtlf+2PaqzA==", "dev": true, "license": "MIT", "dependencies": { - "@expo/config": "~12.0.12", - "@expo/json-file": "^10.0.8", + "@expo/config": "~55.0.4", + "@expo/json-file": "^10.0.12", "@jest/create-cache-key-function": "^29.2.1", "@jest/globals": "^29.2.1", "babel-jest": "^29.2.1", @@ -28383,7 +28265,7 @@ "jest-watch-typeahead": "2.2.1", "json5": "^2.2.3", "lodash": "^4.17.19", - "react-test-renderer": "19.1.0", + "react-test-renderer": "19.2.0", "server-only": "^0.0.1", "stacktrace-js": "^2.0.2" }, @@ -28393,7 +28275,7 @@ "peerDependencies": { "expo": "*", "react-native": "*", - "react-server-dom-webpack": "~19.0.3 || ~19.1.4 || ~19.2.3" + "react-server-dom-webpack": "~19.0.4 || ~19.1.5 || ~19.2.4" }, "peerDependenciesMeta": { "react-server-dom-webpack": { @@ -28401,18 +28283,6 @@ } } }, - "node_modules/jest-expo/node_modules/@types/jsdom": { - "version": "20.0.1", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", - "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" - } - }, "node_modules/jest-expo/node_modules/ansi-regex": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.0.tgz", @@ -28489,54 +28359,6 @@ "dev": true, "license": "MIT" }, - "node_modules/jest-expo/node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-expo/node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-expo/node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/jest-expo/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/jest-expo/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -28547,49 +28369,6 @@ "node": ">=8" } }, - "node_modules/jest-expo/node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-expo/node_modules/jest-environment-jsdom": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", - "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/jsdom": "^20.0.0", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0", - "jsdom": "^20.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, "node_modules/jest-expo/node_modules/jest-watch-typeahead": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-2.2.1.tgz", @@ -28671,65 +28450,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/jest-expo/node_modules/jsdom": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", - "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jest-expo/node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "entities": "^6.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, "node_modules/jest-expo/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -28743,92 +28463,6 @@ "node": ">=8" } }, - "node_modules/jest-expo/node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-expo/node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/jest-expo/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/jest-expo/node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/jest-expo/node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/jest-expo/node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/jest-expo/node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12" - } - }, "node_modules/jest-get-type": { "version": "29.6.3", "license": "MIT", @@ -30303,9 +29937,9 @@ } }, "node_modules/lan-network": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/lan-network/-/lan-network-0.1.7.tgz", - "integrity": "sha512-mnIlAEMu4OyEvUNdzco9xpuB9YVcPkQec+QsgycBCtPZvEqWPCDPfbAE4OJMdBBWpZWtpCn1xw9jJYlwjWI5zQ==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/lan-network/-/lan-network-0.2.0.tgz", + "integrity": "sha512-EZgbsXMrGS+oK+Ta12mCjzBFse+SIewGdwrSTr5g+MSymnjpox2x05ceI20PQejJOFvOgzcXrfDk/SdY7dSCtw==", "license": "MIT", "bin": { "lan-network": "dist/lan-network-cli.js" @@ -30370,6 +30004,8 @@ }, "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==", "license": "Apache-2.0", "dependencies": { "debug": "^2.6.9", @@ -30378,6 +30014,8 @@ }, "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==", "license": "MIT", "dependencies": { "ms": "2.0.0" @@ -30385,6 +30023,8 @@ }, "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==", "license": "MIT" }, "node_modules/lightningcss": { @@ -30617,6 +30257,7 @@ }, "node_modules/lines-and-columns": { "version": "1.2.4", + "devOptional": true, "license": "MIT" }, "node_modules/link": { @@ -31000,7 +30641,9 @@ } }, "node_modules/marky": { - "version": "1.2.5", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.3.0.tgz", + "integrity": "sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==", "license": "Apache-2.0" }, "node_modules/matcher": { @@ -31159,9 +30802,9 @@ } }, "node_modules/metro": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro/-/metro-0.83.2.tgz", - "integrity": "sha512-HQgs9H1FyVbRptNSMy/ImchTTE5vS2MSqLoOo7hbDoBq6hPPZokwJvBMwrYSxdjQZmLXz2JFZtdvS+ZfgTc9yw==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.83.3.tgz", + "integrity": "sha512-+rP+/GieOzkt97hSJ0MrPOuAH/jpaS21ZDvL9DJ35QYRDlQcwzcvUlGUf79AnQxq/2NPiS/AULhhM4TKutIt8Q==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.7", @@ -31185,18 +30828,18 @@ "jest-worker": "^29.7.0", "jsc-safe-url": "^0.2.2", "lodash.throttle": "^4.1.1", - "metro-babel-transformer": "0.83.2", - "metro-cache": "0.83.2", - "metro-cache-key": "0.83.2", - "metro-config": "0.83.2", - "metro-core": "0.83.2", - "metro-file-map": "0.83.2", - "metro-resolver": "0.83.2", - "metro-runtime": "0.83.2", - "metro-source-map": "0.83.2", - "metro-symbolicate": "0.83.2", - "metro-transform-plugins": "0.83.2", - "metro-transform-worker": "0.83.2", + "metro-babel-transformer": "0.83.3", + "metro-cache": "0.83.3", + "metro-cache-key": "0.83.3", + "metro-config": "0.83.3", + "metro-core": "0.83.3", + "metro-file-map": "0.83.3", + "metro-resolver": "0.83.3", + "metro-runtime": "0.83.3", + "metro-source-map": "0.83.3", + "metro-symbolicate": "0.83.3", + "metro-transform-plugins": "0.83.3", + "metro-transform-worker": "0.83.3", "mime-types": "^2.1.27", "nullthrows": "^1.1.1", "serialize-error": "^2.1.0", @@ -31213,9 +30856,9 @@ } }, "node_modules/metro-babel-transformer": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.83.2.tgz", - "integrity": "sha512-rirY1QMFlA1uxH3ZiNauBninwTioOgwChnRdDcbB4tgRZ+bGX9DiXoh9QdpppiaVKXdJsII932OwWXGGV4+Nlw==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.83.3.tgz", + "integrity": "sha512-1vxlvj2yY24ES1O5RsSIvg4a4WeL7PFXgKOHvXTXiW0deLvQr28ExXj6LjwCCDZ4YZLhq6HddLpZnX4dEdSq5g==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", @@ -31228,24 +30871,24 @@ } }, "node_modules/metro-cache": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.83.2.tgz", - "integrity": "sha512-Z43IodutUZeIS7OTH+yQFjc59QlFJ6s5OvM8p2AP9alr0+F8UKr8ADzFzoGKoHefZSKGa4bJx7MZJLF6GwPDHQ==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.83.3.tgz", + "integrity": "sha512-3jo65X515mQJvKqK3vWRblxDEcgY55Sk3w4xa6LlfEXgQ9g1WgMh9m4qVZVwgcHoLy0a2HENTPCCX4Pk6s8c8Q==", "license": "MIT", "dependencies": { "exponential-backoff": "^3.1.1", "flow-enums-runtime": "^0.0.6", "https-proxy-agent": "^7.0.5", - "metro-core": "0.83.2" + "metro-core": "0.83.3" }, "engines": { "node": ">=20.19.4" } }, "node_modules/metro-cache-key": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.83.2.tgz", - "integrity": "sha512-3EMG/GkGKYoTaf5RqguGLSWRqGTwO7NQ0qXKmNBjr0y6qD9s3VBXYlwB+MszGtmOKsqE9q3FPrE5Nd9Ipv7rZw==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.83.3.tgz", + "integrity": "sha512-59ZO049jKzSmvBmG/B5bZ6/dztP0ilp0o988nc6dpaDsU05Cl1c/lRf+yx8m9WW/JVgbmfO5MziBU559XjI5Zw==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6" @@ -31277,42 +30920,498 @@ } }, "node_modules/metro-config": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.2.tgz", - "integrity": "sha512-1FjCcdBe3e3D08gSSiU9u3Vtxd7alGH3x/DNFqWDFf5NouX4kLgbVloDDClr1UrLz62c0fHh2Vfr9ecmrOZp+g==", + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.5.tgz", + "integrity": "sha512-JQ/PAASXH7yczgV6OCUSRhZYME+NU8NYjI2RcaG5ga4QfQ3T/XdiLzpSb3awWZYlDCcQb36l4Vl7i0Zw7/Tf9w==", "license": "MIT", "dependencies": { "connect": "^3.6.5", "flow-enums-runtime": "^0.0.6", "jest-validate": "^29.7.0", - "metro": "0.83.2", - "metro-cache": "0.83.2", - "metro-core": "0.83.2", - "metro-runtime": "0.83.2", + "metro": "0.83.5", + "metro-cache": "0.83.5", + "metro-core": "0.83.5", + "metro-runtime": "0.83.5", "yaml": "^2.6.1" }, "engines": { "node": ">=20.19.4" } }, + "node_modules/metro-config/node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/metro-config/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/metro-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/metro-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "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-config/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==", + "license": "MIT" + }, + "node_modules/metro-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/metro-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/metro-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/metro-config/node_modules/hermes-estree": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.33.3.tgz", + "integrity": "sha512-6kzYZHCk8Fy1Uc+t3HGYyJn3OL4aeqKLTyina4UFtWl8I0kSL7OmKThaiX+Uh2f8nGw3mo4Ifxg0M5Zk3/Oeqg==", + "license": "MIT" + }, + "node_modules/metro-config/node_modules/hermes-parser": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.33.3.tgz", + "integrity": "sha512-Yg3HgaG4CqgyowtYjX/FsnPAuZdHOqSMtnbpylbptsQ9nwwSKsy6uRWcGO5RK0EqiX12q8HvDWKgeAVajRO5DA==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.33.3" + } + }, + "node_modules/metro-config/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/metro-config/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/metro-config/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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/metro-config/node_modules/metro": { + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.83.5.tgz", + "integrity": "sha512-BgsXevY1MBac/3ZYv/RfNFf/4iuW9X7f4H8ZNkiH+r667HD9sVujxcmu4jvEzGCAm4/WyKdZCuyhAcyhTHOucQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/core": "^7.25.2", + "@babel/generator": "^7.29.1", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "accepts": "^2.0.0", + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "connect": "^3.6.5", + "debug": "^4.4.0", + "error-stack-parser": "^2.0.6", + "flow-enums-runtime": "^0.0.6", + "graceful-fs": "^4.2.4", + "hermes-parser": "0.33.3", + "image-size": "^1.0.2", + "invariant": "^2.2.4", + "jest-worker": "^29.7.0", + "jsc-safe-url": "^0.2.2", + "lodash.throttle": "^4.1.1", + "metro-babel-transformer": "0.83.5", + "metro-cache": "0.83.5", + "metro-cache-key": "0.83.5", + "metro-config": "0.83.5", + "metro-core": "0.83.5", + "metro-file-map": "0.83.5", + "metro-resolver": "0.83.5", + "metro-runtime": "0.83.5", + "metro-source-map": "0.83.5", + "metro-symbolicate": "0.83.5", + "metro-transform-plugins": "0.83.5", + "metro-transform-worker": "0.83.5", + "mime-types": "^3.0.1", + "nullthrows": "^1.1.1", + "serialize-error": "^2.1.0", + "source-map": "^0.5.6", + "throat": "^5.0.0", + "ws": "^7.5.10", + "yargs": "^17.6.2" + }, + "bin": { + "metro": "src/cli.js" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config/node_modules/metro-babel-transformer": { + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.83.5.tgz", + "integrity": "sha512-d9FfmgUEVejTiSb7bkQeLRGl6aeno2UpuPm3bo3rCYwxewj03ymvOn8s8vnS4fBqAPQ+cE9iQM40wh7nGXR+eA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "flow-enums-runtime": "^0.0.6", + "hermes-parser": "0.33.3", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config/node_modules/metro-cache": { + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.83.5.tgz", + "integrity": "sha512-oH+s4U+IfZyg8J42bne2Skc90rcuESIYf86dYittcdWQtPfcaFXWpByPyTuWk3rR1Zz3Eh5HOrcVImfEhhJLng==", + "license": "MIT", + "dependencies": { + "exponential-backoff": "^3.1.1", + "flow-enums-runtime": "^0.0.6", + "https-proxy-agent": "^7.0.5", + "metro-core": "0.83.5" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config/node_modules/metro-cache-key": { + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.83.5.tgz", + "integrity": "sha512-Ycl8PBajB7bhbAI7Rt0xEyiF8oJ0RWX8EKkolV1KfCUlC++V/GStMSGpPLwnnBZXZWkCC5edBPzv1Hz1Yi0Euw==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config/node_modules/metro-core": { + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.83.5.tgz", + "integrity": "sha512-YcVcLCrf0ed4mdLa82Qob0VxYqfhmlRxUS8+TO4gosZo/gLwSvtdeOjc/Vt0pe/lvMNrBap9LlmvZM8FIsMgJQ==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "lodash.throttle": "^4.1.1", + "metro-resolver": "0.83.5" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config/node_modules/metro-file-map": { + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.83.5.tgz", + "integrity": "sha512-ZEt8s3a1cnYbn40nyCD+CsZdYSlwtFh2kFym4lo+uvfM+UMMH+r/BsrC6rbNClSrt+B7rU9T+Te/sh/NL8ZZKQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "fb-watchman": "^2.0.0", + "flow-enums-runtime": "^0.0.6", + "graceful-fs": "^4.2.4", + "invariant": "^2.2.4", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "nullthrows": "^1.1.1", + "walker": "^1.0.7" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config/node_modules/metro-minify-terser": { + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.83.5.tgz", + "integrity": "sha512-Toe4Md1wS1PBqbvB0cFxBzKEVyyuYTUb0sgifAZh/mSvLH84qA1NAWik9sISWatzvfWf3rOGoUoO5E3f193a3Q==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "terser": "^5.15.0" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config/node_modules/metro-resolver": { + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.83.5.tgz", + "integrity": "sha512-7p3GtzVUpbAweJeCcUJihJeOQl1bDuimO5ueo1K0BUpUtR41q5EilbQ3klt16UTPPMpA+tISWBtsrqU556mY1A==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config/node_modules/metro-source-map": { + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.83.5.tgz", + "integrity": "sha512-VT9bb2KO2/4tWY9Z2yeZqTUao7CicKAOps9LUg2aQzsz+04QyuXL3qgf1cLUVRjA/D6G5u1RJAlN1w9VNHtODQ==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "metro-symbolicate": "0.83.5", + "nullthrows": "^1.1.1", + "ob1": "0.83.5", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config/node_modules/metro-symbolicate": { + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.83.5.tgz", + "integrity": "sha512-EMIkrjNRz/hF+p0RDdxoE60+dkaTLPN3vaaGkFmX5lvFdO6HPfHA/Ywznzkev+za0VhPQ5KSdz49/MALBRteHA==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "metro-source-map": "0.83.5", + "nullthrows": "^1.1.1", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "bin": { + "metro-symbolicate": "src/index.js" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config/node_modules/metro-transform-plugins": { + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.83.5.tgz", + "integrity": "sha512-KxYKzZL+lt3Os5H2nx7YkbkWVduLZL5kPrE/Yq+Prm/DE1VLhpfnO6HtPs8vimYFKOa58ncl60GpoX0h7Wm0Vw==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/generator": "^7.29.1", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "flow-enums-runtime": "^0.0.6", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config/node_modules/metro-transform-worker": { + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.83.5.tgz", + "integrity": "sha512-8N4pjkNXc6ytlP9oAM6MwqkvUepNSW39LKYl9NjUMpRDazBQ7oBpQDc8Sz4aI8jnH6AGhF7s1m/ayxkN1t04yA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/generator": "^7.29.1", + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "flow-enums-runtime": "^0.0.6", + "metro": "0.83.5", + "metro-babel-transformer": "0.83.5", + "metro-cache": "0.83.5", + "metro-cache-key": "0.83.5", + "metro-minify-terser": "0.83.5", + "metro-source-map": "0.83.5", + "metro-transform-plugins": "0.83.5", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/metro-config/node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/metro-config/node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/metro-config/node_modules/ob1": { + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.83.5.tgz", + "integrity": "sha512-vNKPYC8L5ycVANANpF/S+WZHpfnRWKx/F3AYP4QMn6ZJTh+l2HOrId0clNkEmua58NB9vmI9Qh7YOoV/4folYg==", + "license": "MIT", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro-config/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==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro-config/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==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/metro-core": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.83.2.tgz", - "integrity": "sha512-8DRb0O82Br0IW77cNgKMLYWUkx48lWxUkvNUxVISyMkcNwE/9ywf1MYQUE88HaKwSrqne6kFgCSA/UWZoUT0Iw==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.83.3.tgz", + "integrity": "sha512-M+X59lm7oBmJZamc96usuF1kusd5YimqG/q97g4Ac7slnJ3YiGglW5CsOlicTR5EWf8MQFxxjDoB6ytTqRe8Hw==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6", "lodash.throttle": "^4.1.1", - "metro-resolver": "0.83.2" + "metro-resolver": "0.83.3" }, "engines": { "node": ">=20.19.4" } }, "node_modules/metro-file-map": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.83.2.tgz", - "integrity": "sha512-cMSWnEqZrp/dzZIEd7DEDdk72PXz6w5NOKriJoDN9p1TDQ5nAYrY2lHi8d6mwbcGLoSlWmpPyny9HZYFfPWcGQ==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.83.3.tgz", + "integrity": "sha512-jg5AcyE0Q9Xbbu/4NAwwZkmQn7doJCKGW0SLeSJmzNB9Z24jBe0AL2PHNMy4eu0JiKtNWHz9IiONGZWq7hjVTA==", "license": "MIT", "dependencies": { "debug": "^4.4.0", @@ -31369,9 +31468,9 @@ } }, "node_modules/metro-minify-terser": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.83.2.tgz", - "integrity": "sha512-zvIxnh7U0JQ7vT4quasKsijId3dOAWgq+ip2jF/8TMrPUqQabGrs04L2dd0haQJ+PA+d4VvK/bPOY8X/vL2PWw==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.83.3.tgz", + "integrity": "sha512-O2BmfWj6FSfzBLrNCXt/rr2VYZdX5i6444QJU0fFoc7Ljg+Q+iqebwE3K0eTvkI6TRjELsXk1cjU+fXwAR4OjQ==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6", @@ -31382,9 +31481,9 @@ } }, "node_modules/metro-resolver": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.83.2.tgz", - "integrity": "sha512-Yf5mjyuiRE/Y+KvqfsZxrbHDA15NZxyfg8pIk0qg47LfAJhpMVEX+36e6ZRBq7KVBqy6VDX5Sq55iHGM4xSm7Q==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.83.3.tgz", + "integrity": "sha512-0js+zwI5flFxb1ktmR///bxHYg7OLpRpWZlBBruYG8OKYxeMP7SV0xQ/o/hUelrEMdK4LJzqVtHAhBm25LVfAQ==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6" @@ -31394,9 +31493,9 @@ } }, "node_modules/metro-runtime": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.2.tgz", - "integrity": "sha512-nnsPtgRvFbNKwemqs0FuyFDzXLl+ezuFsUXDbX8o0SXOfsOPijqiQrf3kuafO1Zx1aUWf4NOrKJMAQP5EEHg9A==", + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.5.tgz", + "integrity": "sha512-f+b3ue9AWTVlZe2Xrki6TAoFtKIqw30jwfk7GQ1rDUBQaE0ZQ+NkiMEtb9uwH7uAjJ87U7Tdx1Jg1OJqUfEVlA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.25.0", @@ -31407,9 +31506,9 @@ } }, "node_modules/metro-source-map": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.83.2.tgz", - "integrity": "sha512-5FL/6BSQvshIKjXOennt9upFngq2lFvDakZn5LfauIVq8+L4sxXewIlSTcxAtzbtjAIaXeOSVMtCJ5DdfCt9AA==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.83.3.tgz", + "integrity": "sha512-xkC3qwUBh2psVZgVavo8+r2C9Igkk3DibiOXSAht1aYRRcztEZNFtAMtfSB7sdO2iFMx2Mlyu++cBxz/fhdzQg==", "license": "MIT", "dependencies": { "@babel/traverse": "^7.25.3", @@ -31417,9 +31516,9 @@ "@babel/types": "^7.25.2", "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", - "metro-symbolicate": "0.83.2", + "metro-symbolicate": "0.83.3", "nullthrows": "^1.1.1", - "ob1": "0.83.2", + "ob1": "0.83.3", "source-map": "^0.5.6", "vlq": "^1.0.0" }, @@ -31437,14 +31536,14 @@ } }, "node_modules/metro-symbolicate": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.83.2.tgz", - "integrity": "sha512-KoU9BLwxxED6n33KYuQQuc5bXkIxF3fSwlc3ouxrrdLWwhu64muYZNQrukkWzhVKRNFIXW7X2iM8JXpi2heIPw==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.83.3.tgz", + "integrity": "sha512-F/YChgKd6KbFK3eUR5HdUsfBqVsanf5lNTwFd4Ca7uuxnHgBC3kR/Hba/RGkenR3pZaGNp5Bu9ZqqP52Wyhomw==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", - "metro-source-map": "0.83.2", + "metro-source-map": "0.83.3", "nullthrows": "^1.1.1", "source-map": "^0.5.6", "vlq": "^1.0.0" @@ -31466,9 +31565,9 @@ } }, "node_modules/metro-transform-plugins": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.83.2.tgz", - "integrity": "sha512-5WlW25WKPkiJk2yA9d8bMuZrgW7vfA4f4MBb9ZeHbTB3eIAoNN8vS8NENgG/X/90vpTB06X66OBvxhT3nHwP6A==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.83.3.tgz", + "integrity": "sha512-eRGoKJU6jmqOakBMH5kUB7VitEWiNrDzBHpYbkBXW7C5fUGeOd2CyqrosEzbMK5VMiZYyOcNFEphvxk3OXey2A==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", @@ -31483,9 +31582,9 @@ } }, "node_modules/metro-transform-worker": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.83.2.tgz", - "integrity": "sha512-G5DsIg+cMZ2KNfrdLnWMvtppb3+Rp1GMyj7Bvd9GgYc/8gRmvq1XVEF9XuO87Shhb03kFhGqMTgZerz3hZ1v4Q==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.83.3.tgz", + "integrity": "sha512-Ztekew9t/gOIMZX1tvJOgX7KlSLL5kWykl0Iwu2cL2vKMKVALRl1hysyhUw0vjpAvLFx+Kfq9VLjnHIkW32fPA==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", @@ -31493,13 +31592,13 @@ "@babel/parser": "^7.25.3", "@babel/types": "^7.25.2", "flow-enums-runtime": "^0.0.6", - "metro": "0.83.2", - "metro-babel-transformer": "0.83.2", - "metro-cache": "0.83.2", - "metro-cache-key": "0.83.2", - "metro-minify-terser": "0.83.2", - "metro-source-map": "0.83.2", - "metro-transform-plugins": "0.83.2", + "metro": "0.83.3", + "metro-babel-transformer": "0.83.3", + "metro-cache": "0.83.3", + "metro-cache-key": "0.83.3", + "metro-minify-terser": "0.83.3", + "metro-source-map": "0.83.3", + "metro-transform-plugins": "0.83.3", "nullthrows": "^1.1.1" }, "engines": { @@ -31600,6 +31699,38 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/metro/node_modules/metro-config": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.3.tgz", + "integrity": "sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==", + "license": "MIT", + "dependencies": { + "connect": "^3.6.5", + "flow-enums-runtime": "^0.0.6", + "jest-validate": "^29.7.0", + "metro": "0.83.3", + "metro-cache": "0.83.3", + "metro-core": "0.83.3", + "metro-runtime": "0.83.3", + "yaml": "^2.6.1" + }, + "engines": { + "node": ">=20.19.4" + } + }, + "node_modules/metro/node_modules/metro-runtime": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.3.tgz", + "integrity": "sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.0", + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=20.19.4" + } + }, "node_modules/metro/node_modules/serialize-error": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", @@ -31761,6 +31892,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "dev": true, "license": "MIT", "dependencies": { "minipass": "^7.1.2" @@ -31771,6 +31903,8 @@ }, "node_modules/mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" @@ -31808,6 +31942,12 @@ "multicast-dns": "cli.js" } }, + "node_modules/multitars": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/multitars/-/multitars-0.2.4.tgz", + "integrity": "sha512-XgLbg1HHchFauMCQPRwMj6MSyDd5koPlTA1hM3rUFkeXzGpjU/I9fP3to7yrObE9jcN8ChIOQGrM0tV0kUZaKg==", + "license": "MIT" + }, "node_modules/murmurhash-js": { "version": "1.0.0", "license": "MIT" @@ -31881,12 +32021,6 @@ "version": "2.6.2", "license": "MIT" }, - "node_modules/nested-error-stacks": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz", - "integrity": "sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==", - "license": "MIT" - }, "node_modules/nitrogen": { "version": "0.29.4", "resolved": "https://registry.npmjs.org/nitrogen/-/nitrogen-0.29.4.tgz", @@ -31997,7 +32131,9 @@ } }, "node_modules/node-forge": { - "version": "1.3.1", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz", + "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==", "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" @@ -32082,9 +32218,9 @@ "license": "MIT" }, "node_modules/ob1": { - "version": "0.83.2", - "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.83.2.tgz", - "integrity": "sha512-XlK3w4M+dwd1g1gvHzVbxiXEbUllRONEgcF2uEO0zm4nxa0eKlh41c6N65q1xbiDOeKKda1tvNOAD33fNjyvCg==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.83.3.tgz", + "integrity": "sha512-egUxXCDwoWG06NGCS5s5AdcpnumHKJlfd3HH06P3m9TEMwwScfcY35wpQxbm9oHof+dM/lVH9Rfyu1elTVelSA==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6" @@ -32523,6 +32659,7 @@ }, "node_modules/p-limit": { "version": "3.1.0", + "devOptional": true, "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" @@ -33400,18 +33537,6 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/pretty-error": { "version": "4.0.0", "dev": true, @@ -33614,14 +33739,6 @@ "node": ">=10.13.0" } }, - "node_modules/qrcode-terminal": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz", - "integrity": "sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==", - "bin": { - "qrcode-terminal": "bin/qrcode-terminal.js" - } - }, "node_modules/qs": { "version": "6.13.0", "devOptional": true, @@ -33762,6 +33879,7 @@ "node_modules/rc": { "version": "1.2.8", "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "optional": true, "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -33775,14 +33893,15 @@ "node_modules/rc/node_modules/strip-json-comments": { "version": "2.0.1", "license": "MIT", + "optional": true, "engines": { "node": ">=0.10.0" } }, "node_modules/react": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", - "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", + "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -33946,15 +34065,15 @@ } }, "node_modules/react-dom": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", - "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", + "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", "license": "MIT", "dependencies": { - "scheduler": "^0.26.0" + "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.1.0" + "react": "^19.2.0" } }, "node_modules/react-error-boundary": { @@ -34028,44 +34147,45 @@ } }, "node_modules/react-native": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.81.4.tgz", - "integrity": "sha512-bt5bz3A/+Cv46KcjV0VQa+fo7MKxs17RCcpzjftINlen4ZDUl0I6Ut+brQ2FToa5oD0IB0xvQHfmsg2EDqsZdQ==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.83.1.tgz", + "integrity": "sha512-mL1q5HPq5cWseVhWRLl+Fwvi5z1UO+3vGOpjr+sHFwcUletPRZ5Kv+d0tUfqHmvi73/53NjlQqX1Pyn4GguUfA==", "license": "MIT", "dependencies": { "@jest/create-cache-key-function": "^29.7.0", - "@react-native/assets-registry": "0.81.4", - "@react-native/codegen": "0.81.4", - "@react-native/community-cli-plugin": "0.81.4", - "@react-native/gradle-plugin": "0.81.4", - "@react-native/js-polyfills": "0.81.4", - "@react-native/normalize-colors": "0.81.4", - "@react-native/virtualized-lists": "0.81.4", + "@react-native/assets-registry": "0.83.1", + "@react-native/codegen": "0.83.1", + "@react-native/community-cli-plugin": "0.83.1", + "@react-native/gradle-plugin": "0.83.1", + "@react-native/js-polyfills": "0.83.1", + "@react-native/normalize-colors": "0.83.1", + "@react-native/virtualized-lists": "0.83.1", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", "babel-jest": "^29.7.0", - "babel-plugin-syntax-hermes-parser": "0.29.1", + "babel-plugin-syntax-hermes-parser": "0.32.0", "base64-js": "^1.5.1", "commander": "^12.0.0", "flow-enums-runtime": "^0.0.6", "glob": "^7.1.1", + "hermes-compiler": "0.14.0", "invariant": "^2.2.4", "jest-environment-node": "^29.7.0", "memoize-one": "^5.0.0", - "metro-runtime": "^0.83.1", - "metro-source-map": "^0.83.1", + "metro-runtime": "^0.83.3", + "metro-source-map": "^0.83.3", "nullthrows": "^1.1.1", "pretty-format": "^29.7.0", "promise": "^8.3.0", "react-devtools-core": "^6.1.5", "react-refresh": "^0.14.0", "regenerator-runtime": "^0.13.2", - "scheduler": "0.26.0", + "scheduler": "0.27.0", "semver": "^7.1.3", "stacktrace-parser": "^0.1.10", "whatwg-fetch": "^3.0.0", - "ws": "^6.2.3", + "ws": "^7.5.10", "yargs": "^17.6.2" }, "bin": { @@ -34075,8 +34195,8 @@ "node": ">= 20.19.4" }, "peerDependencies": { - "@types/react": "^19.1.0", - "react": "^19.1.0" + "@types/react": "^19.1.1", + "react": "^19.2.0" }, "peerDependenciesMeta": { "@types/react": { @@ -35003,9 +35123,9 @@ } }, "node_modules/react-native/node_modules/@react-native/normalize-colors": { - "version": "0.81.4", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.81.4.tgz", - "integrity": "sha512-9nRRHO1H+tcFqjb9gAM105Urtgcanbta2tuqCVY0NATHeFPDEAB7gPyiLxCHKMi1NbhP6TH0kxgSWXKZl1cyRg==", + "version": "0.83.1", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.83.1.tgz", + "integrity": "sha512-84feABbmeWo1kg81726UOlMKAhcQyFXYz2SjRKYkS78QmfhVDhJ2o/ps1VjhFfBz0i/scDwT1XNv9GwmRIghkg==", "license": "MIT" }, "node_modules/react-native/node_modules/ansi-regex": { @@ -35116,21 +35236,23 @@ } }, "node_modules/react-test-renderer": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.1.0.tgz", - "integrity": "sha512-jXkSl3CpvPYEF+p/eGDLB4sPoDX8pKkYvRl9+rR8HxLY0X04vW7hCm1/0zHoUSjPZ3bDa+wXWNTDVIw/R8aDVw==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.2.0.tgz", + "integrity": "sha512-zLCFMHFE9vy/w3AxO0zNxy6aAupnCuLSVOJYDe/Tp+ayGI1f2PLQsFVPANSD42gdSbmYx5oN+1VWDhcXtq7hAQ==", "dev": true, "license": "MIT", "dependencies": { - "react-is": "^19.1.0", - "scheduler": "^0.26.0" + "react-is": "^19.2.0", + "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.1.0" + "react": "^19.2.0" } }, "node_modules/react-test-renderer/node_modules/react-is": { - "version": "19.1.0", + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.4.tgz", + "integrity": "sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==", "dev": true, "license": "MIT" }, @@ -35470,28 +35592,6 @@ "node": ">=0.10.0" } }, - "node_modules/requireg": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/requireg/-/requireg-0.2.2.tgz", - "integrity": "sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==", - "dependencies": { - "nested-error-stacks": "~2.0.1", - "rc": "~1.2.7", - "resolve": "~1.7.1" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/requireg/node_modules/resolve": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", - "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", - "license": "MIT", - "dependencies": { - "path-parse": "^1.0.5" - } - }, "node_modules/requires-port": { "version": "1.0.0", "dev": true, @@ -35553,13 +35653,14 @@ } }, "node_modules/resolve-workspace-root": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-workspace-root/-/resolve-workspace-root-2.0.0.tgz", - "integrity": "sha512-IsaBUZETJD5WsI11Wt8PKHwaIe45or6pwNc8yflvLJ4DWtImK9kuLoH5kUva/2Mmx/RdIyr4aONNSa2v9LTJsw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/resolve-workspace-root/-/resolve-workspace-root-2.0.1.tgz", + "integrity": "sha512-nR23LHAvaI6aHtMg6RWoaHpdR4D881Nydkzi2CixINyg9T00KgaJdJI6Vwty+Ps8WLxZHuxsS0BseWjxSA4C+w==", "license": "MIT" }, "node_modules/resolve.exports": { "version": "2.0.3", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -35791,9 +35892,9 @@ } }, "node_modules/scheduler": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", - "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "license": "MIT" }, "node_modules/schema-utils": { @@ -36146,6 +36247,15 @@ "version": "1.2.0", "license": "ISC" }, + "node_modules/sf-symbols-typescript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/sf-symbols-typescript/-/sf-symbols-typescript-2.2.0.tgz", + "integrity": "sha512-TPbeg0b7ylrswdGCji8FRGFAKuqbpQlLbL8SOle3j1iHSs5Ob5mhvMAxWN2UItOjgALAB5Zp3fmMfj8mbWvXKw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/sha.js": { "version": "2.4.11", "license": "(MIT AND BSD-3-Clause)", @@ -37152,47 +37262,6 @@ "version": "0.1.3", "license": "MIT" }, - "node_modules/sucrase": { - "version": "3.35.1", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", - "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "tinyglobby": "^0.2.11", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/sucrase/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/sucrase/node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, "node_modules/supercluster": { "version": "8.0.1", "license": "ISC", @@ -37209,6 +37278,7 @@ }, "node_modules/supports-color": { "version": "5.5.0", + "devOptional": true, "license": "MIT", "dependencies": { "has-flag": "^3.0.0" @@ -37351,6 +37421,7 @@ "version": "7.5.6", "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.6.tgz", "integrity": "sha512-xqUeu2JAIJpXyvskvU3uvQW8PAmHrtXp2KDuMJwQqW8Sqq0CaZBAQ+dKS3RBXVhU4wC5NjAdKrmh84241gO9cA==", + "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/fs-minipass": "^4.0.0", @@ -37411,6 +37482,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": ">=18" @@ -37736,6 +37808,7 @@ "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.5.0", @@ -37752,6 +37825,7 @@ "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12.0.0" @@ -37769,6 +37843,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -37822,6 +37897,12 @@ "node": ">=0.6" } }, + "node_modules/toqr": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/toqr/-/toqr-0.1.1.tgz", + "integrity": "sha512-FWAPzCIHZHnrE/5/w9MPk0kK25hSQSH2IKhYh9PyjS3SG/+IEMvlwIHbhz+oF7xl54I+ueZlVnMjyzdSwLmAwA==", + "license": "MIT" + }, "node_modules/totalist": { "version": "3.0.1", "dev": true, @@ -37850,12 +37931,6 @@ "node": ">=6.10" } }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "license": "Apache-2.0" - }, "node_modules/ts-jest": { "version": "29.4.1", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.1.tgz", @@ -38302,9 +38377,9 @@ "license": "MIT" }, "node_modules/undici": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz", - "integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==", + "version": "6.24.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.24.0.tgz", + "integrity": "sha512-lVLNosgqo5EkGqh5XUDhGfsMSoO8K0BAN0TyJLvwNRSl4xWGZlCVYsAIpa/OpA3TvmnM01GWcoKmc3ZWo5wKKA==", "license": "MIT", "engines": { "node": ">=18.17" @@ -38347,9 +38422,9 @@ } }, "node_modules/unimodules-app-loader": { - "version": "6.0.8", - "resolved": "https://registry.npmjs.org/unimodules-app-loader/-/unimodules-app-loader-6.0.8.tgz", - "integrity": "sha512-fqS8QwT/MC/HAmw1NKCHdzsPA6WaLm0dNmoC5Pz6lL+cDGYeYCNdHMO9fy08aL2ZD7cVkNM0pSR/AoNRe+rslA==", + "version": "55.0.2", + "resolved": "https://registry.npmjs.org/unimodules-app-loader/-/unimodules-app-loader-55.0.2.tgz", + "integrity": "sha512-SarK/0fxceV3mpP26+0mlwDbHOn98OkHEMAifrRU0+uhAnAuZkEJKNPL/QKBFhwNCaeQGiL9s3XAQ9ZMtkJ47g==", "license": "MIT" }, "node_modules/union": { @@ -38598,6 +38673,8 @@ }, "node_modules/vlq": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", + "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", "license": "MIT" }, "node_modules/vscode-languageserver-textdocument": { @@ -39188,6 +39265,12 @@ "webidl-conversions": "^3.0.0" } }, + "node_modules/whatwg-url-minimum": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/whatwg-url-minimum/-/whatwg-url-minimum-0.1.1.tgz", + "integrity": "sha512-u2FNVjFVFZhdjb502KzXy1gKn1mEisQRJssmSJT8CPhZdZa0AP6VCbWlXERKyGu0l09t0k50FiDiralpGhBxgA==", + "license": "MIT" + }, "node_modules/whatwg-url-without-unicode": { "version": "8.0.0-3", "license": "MIT", @@ -39323,12 +39406,6 @@ "node": ">=0.8" } }, - "node_modules/wonka": { - "version": "6.3.5", - "resolved": "https://registry.npmjs.org/wonka/-/wonka-6.3.5.tgz", - "integrity": "sha512-SSil+ecw6B4/Dm7Pf2sAshKQ5hWFvfyGlfPbEd6A14dOH6VDjrmbY86u6nZvy9omGwwIPFR8V41+of1EezgoUw==", - "license": "MIT" - }, "node_modules/word": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", @@ -39673,6 +39750,7 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", + "devOptional": true, "license": "MIT", "engines": { "node": ">=10" @@ -39690,15 +39768,6 @@ "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/zod-to-json-schema": { - "version": "3.25.1", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.1.tgz", - "integrity": "sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==", - "license": "ISC", - "peerDependencies": { - "zod": "^3.25 || ^4" - } - }, "node_modules/zod-validation-error": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-3.5.3.tgz", diff --git a/package.json b/package.json index 742cea8b35937..cb3288a62316d 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,7 @@ "@expensify/react-native-hybrid-app": "file:./modules/hybrid-app", "@expensify/react-native-live-markdown": "0.1.324", "@expensify/react-native-wallet": "0.1.11", - "@expo/metro-runtime": "^6.0.2", + "@expo/metro-runtime": "55.0.6", "@formatjs/intl-listformat": "^7.5.7", "@formatjs/intl-locale": "^4.0.0", "@formatjs/intl-numberformat": "^8.10.3", @@ -125,18 +125,18 @@ "dom-serializer": "^0.2.2", "domhandler": "^5.0.3", "expensify-common": "2.0.175", - "expo": "54.0.22", - "expo-asset": "12.0.8", - "expo-audio": "1.1.1", + "expo": "55.0.0", + "expo-asset": "55.0.2", + "expo-audio": "55.0.4", "expo-font": "14.0.8", - "expo-image": "3.0.8", - "expo-image-manipulator": "^13.1.5", - "expo-location": "^19.0.7", - "expo-modules-core": "3.0.24", + "expo-image": "55.0.3", + "expo-image-manipulator": "55.0.2", + "expo-location": "55.0.3", + "expo-modules-core": "55.0.4", "expo-secure-store": "~14.2.4", "expo-store-review": "~9.0.8", - "expo-task-manager": "~14.0.9", - "expo-video": "3.0.12", + "expo-task-manager": "55.0.2", + "expo-video": "55.0.3", "expo-web-browser": "15.0.10", "fast-equals": "^5.2.2", "focus-trap-react": "^11.0.3", @@ -152,15 +152,15 @@ "pako": "^2.1.0", "process": "^0.11.10", "pusher-js": "8.3.0", - "react": "19.1.0", + "react": "19.2.0", "react-collapse": "^5.1.0", "react-content-loader": "^7.0.0", - "react-dom": "19.1.0", + "react-dom": "19.2.0", "react-error-boundary": "^4.0.11", "react-fast-pdf": "^1.0.29", "react-is": "^18.3.1", "react-map-gl": "^7.1.3", - "react-native": "0.81.4", + "react-native": "0.83.1", "react-native-advanced-input-mask": "1.4.6", "react-native-app-logs": "0.3.1", "react-native-blob-util": "0.22.2", @@ -239,8 +239,9 @@ "@react-native-community/cli": "20.0.0", "@react-native-community/cli-platform-android": "20.0.0", "@react-native-community/cli-platform-ios": "20.0.0", - "@react-native/babel-preset": "0.81.4", - "@react-native/metro-config": "0.81.4", + "@react-native/babel-preset": "0.83.1", + "@react-native/metro-config": "0.83.1", + "@react-navigation/core": "7.10.0", "@react-navigation/devtools": "^6.0.10", "@rock-js/platform-android": "0.12.10", "@rock-js/platform-ios": "0.12.10", @@ -270,11 +271,11 @@ "@types/node": "^20.11.5", "@types/pako": "^2.0.3", "@types/pusher-js": "^5.1.0", - "@types/react": "^19.1.0", + "@types/react": "^19.2.0", "@types/react-collapse": "^5.0.1", - "@types/react-dom": "^19.1.0", + "@types/react-dom": "^19.2.0", "@types/react-is": "^18.3.0", - "@types/react-native-web": "^0.0.0", + "@types/react-native-web": "0.19.2", "@types/react-test-renderer": "^19.1.0", "@types/semver": "^7.5.4", "@types/setimmediate": "^1.0.2", @@ -320,7 +321,7 @@ "jest-circus": "29.7.0", "jest-cli": "29.7.0", "jest-environment-jsdom": "^29.7.0", - "jest-expo": "54.0.16", + "jest-expo": "55.0.6", "jest-transformer-svg": "^2.0.1", "jest-when": "^3.5.2", "link": "^2.1.1", @@ -336,7 +337,7 @@ "react-compiler-healthcheck": "^19.0.0-beta-8a03594-20241020", "react-native-clean-project": "^4.0.0-alpha4.0", "react-refresh": "^0.14.2", - "react-test-renderer": "19.1.0", + "react-test-renderer": "19.2.0", "reassure": "^1.0.0", "rock": "0.12.10", "semver": "7.5.2", @@ -380,8 +381,8 @@ "path-to-regexp": "0.1.10", "send": "0.19.0", "regexpu-core": "5.3.2", - "react": "19.1.0", - "react-dom": "19.1.0", + "react": "19.2.0", + "react-dom": "19.2.0", "eslint-config-airbnb-typescript": { "@typescript-eslint/eslint-plugin": "^8.45.0", "@typescript-eslint/parser": "^8.45.0", @@ -392,7 +393,25 @@ "eslint": "^9.36.0" }, "node-abi": "^3.78.0", - "lightningcss": "1.30.1" + "lightningcss": "1.30.1", + "@fullstory/react-native": { + "expo": "55.0.0" + }, + "@react-native-firebase/app": { + "expo": "55.0.0" + }, + "@react-native-firebase/perf": { + "expo": "55.0.0" + }, + "@react-native-google-signin/google-signin": { + "expo": "55.0.0" + }, + "@rnmapbox/maps": { + "expo": "55.0.0" + }, + "@sentry/react-native": { + "expo": "55.0.0" + } }, "expo": { "autolinking": { diff --git a/patches/@react-native/virtualized-lists/@react-native+virtualized-lists+0.81.4+001+osr-improvement.patch b/patches/@react-native/virtualized-lists/@react-native+virtualized-lists+0.83.1+001+osr-improvement.patch similarity index 100% rename from patches/@react-native/virtualized-lists/@react-native+virtualized-lists+0.81.4+001+osr-improvement.patch rename to patches/@react-native/virtualized-lists/@react-native+virtualized-lists+0.83.1+001+osr-improvement.patch diff --git a/patches/@react-native/virtualized-lists/details.md b/patches/@react-native/virtualized-lists/details.md index 241d8a2b78af5..60666219e7983 100644 --- a/patches/@react-native/virtualized-lists/details.md +++ b/patches/@react-native/virtualized-lists/details.md @@ -1,7 +1,7 @@ # `@react-native/virtualized-lists` patches -### [@react-native+virtualized-lists+0.81.4+001+osr-improvement.patch](@react-native+virtualized-lists+0.81.4+001+osr-improvement.patch) +### [@react-native+virtualized-lists+0.83.1+001+osr-improvement.patch](@react-native+virtualized-lists+0.83.1+001+osr-improvement.patch) - Reason: diff --git a/patches/@types/react-native-web/@types+react-native-web+0.19.2+001+align-with-RN-types.patch b/patches/@types/react-native-web/@types+react-native-web+0.19.2+001+align-with-RN-types.patch new file mode 100644 index 0000000000000..d90d452e51c90 --- /dev/null +++ b/patches/@types/react-native-web/@types+react-native-web+0.19.2+001+align-with-RN-types.patch @@ -0,0 +1,55 @@ +diff --git a/node_modules/@types/react-native-web/index.d.ts b/node_modules/@types/react-native-web/index.d.ts +index dd91bb1..d97ca3c 100644 +--- a/node_modules/@types/react-native-web/index.d.ts ++++ b/node_modules/@types/react-native-web/index.d.ts +@@ -1389,14 +1389,36 @@ declare module "react-native" { + | AriaRole; + // @deprecated + accessibilityRole?: ++ | "none" + | "button" +- | "header" +- | "heading" +- | "label" ++ | "togglebutton" + | "link" +- | "listitem" +- | "none" +- | "text"; ++ | "search" ++ | "image" ++ | "keyboardkey" ++ | "text" ++ | "adjustable" ++ | "imagebutton" ++ | "header" ++ | "summary" ++ | "alert" ++ | "checkbox" ++ | "combobox" ++ | "menu" ++ | "menubar" ++ | "menuitem" ++ | "progressbar" ++ | "radio" ++ | "radiogroup" ++ | "scrollbar" ++ | "spinbutton" ++ | "switch" ++ | "tab" ++ | "tabbar" ++ | "tablist" ++ | "timer" ++ | "list" ++ | "toolbar"; + } + + /** +@@ -1481,6 +1503,7 @@ declare module "react-native" { + paddingRight?: CSSProperties["paddingRight"] | DimensionValue | undefined; + paddingBottom?: CSSProperties["paddingBottom"] | DimensionValue | undefined; + paddingLeft?: CSSProperties["paddingLeft"] | DimensionValue | undefined; ++ userSelect?: CSSProperties["userSelect"] | 'contain' | undefined; + } + + interface TextStyle extends WebStyle { diff --git a/patches/@types/react-native-web/details.md b/patches/@types/react-native-web/details.md new file mode 100644 index 0000000000000..1d6983e0b4843 --- /dev/null +++ b/patches/@types/react-native-web/details.md @@ -0,0 +1,15 @@ +# `@types/react-native-web` patches + +### [@types+react-native-web+0.19.2+001+align-with-RN-types.patch](@types+react-native-web+0.19.2+001+align-with-RN-types.patch) + +- Reason: + + ``` + Aligns @types/react-native-web type definitions with React Native 0.83 types. + 1. Extends `accessibilityRole` to include all roles defined in RN 0.83 (e.g. checkbox, switch, radio, menu, tab, etc.) instead of the limited subset (button, header, heading, label, link, listitem, none, text). + 2. Adds `userSelect` with 'contain' value support to `WebStyle`, matching the web implementation of React Native's style system. + ``` + +- Upstream PR/issue: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/74673 +- E/App issue: https://github.com/Expensify/App/issues/75120 +- PR introducing patch: https://github.com/Expensify/App/pull/79962 diff --git a/patches/expo-asset/details.md b/patches/expo-asset/details.md index e509f3733e4cd..f1ed3715d7bba 100644 --- a/patches/expo-asset/details.md +++ b/patches/expo-asset/details.md @@ -1,6 +1,6 @@ # `expo-asset` patches -### [expo-asset+12.0.8+001+make-storybook-work.patch](expo-asset+12.0.8+001+make-storybook-work.patch) +### [expo-asset+55.0.2+001+make-storybook-work.patch](expo-asset+55.0.2+001+make-storybook-work.patch) - Reason: diff --git a/patches/expo-asset/expo-asset+12.0.8+001+make-storybook-work.patch b/patches/expo-asset/expo-asset+55.0.2+001+make-storybook-work.patch similarity index 100% rename from patches/expo-asset/expo-asset+12.0.8+001+make-storybook-work.patch rename to patches/expo-asset/expo-asset+55.0.2+001+make-storybook-work.patch diff --git a/patches/expo-audio/details.md b/patches/expo-audio/details.md index 51596155b8270..ac638cb8481f2 100644 --- a/patches/expo-audio/details.md +++ b/patches/expo-audio/details.md @@ -1,6 +1,6 @@ # `expo-audio` patches -### [expo-audio+1.1.1.patch](expo-audio+1.1.1.patch) +### [expo-audio+55.0.4+001+playsInSilentMode.patch](expo-audio+55.0.4+001+playsInSilentMode.patch) - Reason: `playsInSilentMode` was only supported on iOS. On Android, the property was filtered out in `setAudioModeAsync` and had no effect. This patch adds Android support so apps can respect the device's silent/vibrate mode. - Upstream PR: https://github.com/expo/expo/pull/43117 diff --git a/patches/expo-audio/expo-audio+1.1.1.patch b/patches/expo-audio/expo-audio+55.0.4+001+playsInSilentMode.patch similarity index 94% rename from patches/expo-audio/expo-audio+1.1.1.patch rename to patches/expo-audio/expo-audio+55.0.4+001+playsInSilentMode.patch index 598b69ee317b1..b461f2add3c87 100644 --- a/patches/expo-audio/expo-audio+1.1.1.patch +++ b/patches/expo-audio/expo-audio+55.0.4+001+playsInSilentMode.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/expo-audio/android/src/main/java/expo/modules/audio/AudioModule.kt b/node_modules/expo-audio/android/src/main/java/expo/modules/audio/AudioModule.kt -index 49a53af..98b690d 100644 +index 7df93cf..ebcad0c 100644 --- a/node_modules/expo-audio/android/src/main/java/expo/modules/audio/AudioModule.kt +++ b/node_modules/expo-audio/android/src/main/java/expo/modules/audio/AudioModule.kt @@ -57,6 +57,7 @@ class AudioModule : Module() { @@ -12,13 +12,13 @@ index 49a53af..98b690d 100644 private val audioFocusChangeListener = AudioManager.OnAudioFocusChangeListener { focusChange -> @@ -184,6 +185,7 @@ class AudioModule : Module() { AsyncFunction("setAudioModeAsync") { mode: AudioMode -> - staysActiveInBackground = mode.shouldPlayInBackground + shouldPlayInBackground = mode.shouldPlayInBackground interruptionMode = mode.interruptionMode + playsInSilentMode = mode.playsInSilentMode updatePlaySoundThroughEarpiece(mode.shouldRouteThroughEarpiece ?: false) allowsBackgroundRecording = mode.allowsBackgroundRecording -@@ -390,6 +392,9 @@ class AudioModule : Module() { +@@ -391,6 +393,9 @@ class AudioModule : Module() { Log.e(TAG, "Audio has been disabled. Re-enable to start playing") return@Function } diff --git a/patches/expo-image-manipulator/details.md b/patches/expo-image-manipulator/details.md index 7b59e1581d5d1..df46565eefdc9 100644 --- a/patches/expo-image-manipulator/details.md +++ b/patches/expo-image-manipulator/details.md @@ -1,6 +1,6 @@ # `expo-image-manipulator` patches -### [expo-image-manipulator+13.1.5+001+adjust-ios-canvas-size.patch](expo-image-manipulator+13.1.5+001+adjust-ios-canvas-size.patch) +### [expo-image-manipulator+55.0.2+001+adjust-ios-canvas-size.patch](expo-image-manipulator+55.0.2+001+adjust-ios-canvas-size.patch) - Reason: @@ -10,4 +10,4 @@ - Upstream PR/issue: 🛑, there's no upstream PR/issue found. There's a related comment from App PR https://github.com/Expensify/App/pull/45448#issuecomment-2263252274 - E/App issue: https://github.com/Expensify/App/issues/44084 -- PR introducing patch: https://github.com/Expensify/App/pull/45448 \ No newline at end of file +- PR introducing patch: https://github.com/Expensify/App/pull/45448 diff --git a/patches/expo-image-manipulator/expo-image-manipulator+13.1.5+001+adjust-ios-canvas-size.patch b/patches/expo-image-manipulator/expo-image-manipulator+55.0.2+001+adjust-ios-canvas-size.patch similarity index 100% rename from patches/expo-image-manipulator/expo-image-manipulator+13.1.5+001+adjust-ios-canvas-size.patch rename to patches/expo-image-manipulator/expo-image-manipulator+55.0.2+001+adjust-ios-canvas-size.patch diff --git a/patches/expo-image/details.md b/patches/expo-image/details.md deleted file mode 100644 index a554f6c1a1fbd..0000000000000 --- a/patches/expo-image/details.md +++ /dev/null @@ -1,14 +0,0 @@ -# `expo-image-manipulator` patches - -### [expo-image+3.0.8+001+make-expo-53-compatible.patch](expo-image+3.0.8+001+make-expo-53-compatible.patch) - -- Reason: - - ``` - The expo-image 3.0.8 doesn't support expo-modules-core of version < 3 which is required for expo 53. - We need expo-image 3.0.8+ for android 16kb pages compatibility - ``` - -- Upstream PR/issue: 🛑, commented in the App PR https://github.com/Expensify/App/issues/63871 -- E/App issue: https://github.com/Expensify/App/issues/63871 -- PR introducing patch: https://github.com/Expensify/App/pull/71774 \ No newline at end of file diff --git a/patches/expo-image/expo-image+3.0.8+001+make-expo-53-compatible.patch b/patches/expo-image/expo-image+3.0.8+001+make-expo-53-compatible.patch deleted file mode 100644 index 16fc2bdf6a8e3..0000000000000 --- a/patches/expo-image/expo-image+3.0.8+001+make-expo-53-compatible.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/node_modules/expo-image/android/src/main/java/expo/modules/image/ResourceIdHelper.kt b/node_modules/expo-image/android/src/main/java/expo/modules/image/ResourceIdHelper.kt -index b1085fe..aac94db 100644 ---- a/node_modules/expo-image/android/src/main/java/expo/modules/image/ResourceIdHelper.kt -+++ b/node_modules/expo-image/android/src/main/java/expo/modules/image/ResourceIdHelper.kt -@@ -32,7 +32,7 @@ object ResourceIdHelper { - } - - fun getResourceUri(context: Context, name: String): Uri? { -- val drawableUri = ResourceDrawableIdHelper.getResourceDrawableUri(context, name) -+ val drawableUri = ResourceDrawableIdHelper.instance.getResourceDrawableUri(context, name) - if (drawableUri != Uri.EMPTY) { - return drawableUri - } diff --git a/patches/expo-modules-core/details.md b/patches/expo-modules-core/details.md index 0d2117e96c1b1..797db6b6c17cf 100644 --- a/patches/expo-modules-core/details.md +++ b/patches/expo-modules-core/details.md @@ -1,6 +1,6 @@ # `expo-modules-core` patches -### [expo-modules-core+3.0.24+001+disableViewRecycling.patch](expo-modules-core+3.0.24+001+disableViewRecycling.patch) +### [expo-modules-core+55.0.4+001+disableViewRecycling.patch](expo-modules-core+55.0.4+001+disableViewRecycling.patch) - Reason: Opt-out from RN Fabric view recycling - Upstream PR/issue: https://expo.canny.io/feature-requests/p/opt-out-of-react-native-fabric-view-recycling-for-expofabricviewobjc diff --git a/patches/expo-modules-core/expo-modules-core+3.0.24+001+disableViewRecycling.patch b/patches/expo-modules-core/expo-modules-core+55.0.4+001+disableViewRecycling.patch similarity index 77% rename from patches/expo-modules-core/expo-modules-core+3.0.24+001+disableViewRecycling.patch rename to patches/expo-modules-core/expo-modules-core+55.0.4+001+disableViewRecycling.patch index 949236b4636f6..185ef82d0754f 100644 --- a/patches/expo-modules-core/expo-modules-core+3.0.24+001+disableViewRecycling.patch +++ b/patches/expo-modules-core/expo-modules-core+55.0.4+001+disableViewRecycling.patch @@ -1,8 +1,8 @@ diff --git a/node_modules/expo-modules-core/ios/Fabric/ExpoFabricViewObjC.mm b/node_modules/expo-modules-core/ios/Fabric/ExpoFabricViewObjC.mm -index 2eacddf..346bbb9 100644 +index 5dd4ba7..04396bb 100644 --- a/node_modules/expo-modules-core/ios/Fabric/ExpoFabricViewObjC.mm +++ b/node_modules/expo-modules-core/ios/Fabric/ExpoFabricViewObjC.mm -@@ -138,6 +138,11 @@ - (void)finalizeUpdates:(RNComponentViewUpdateMask)updateMask +@@ -140,6 +140,11 @@ static std::unordered_map _com } } diff --git a/patches/expo-video/details.md b/patches/expo-video/details.md deleted file mode 100644 index ede6026ad2a92..0000000000000 --- a/patches/expo-video/details.md +++ /dev/null @@ -1,13 +0,0 @@ -# `expo-video` patches - -### [expo-video+3.0.12+001+prevent_double_pause.patch](expo-video+3.0.12+001+prevent_double_pause.patch) - -- Reason: - - ``` - This patch edits the onPause eventListener in expo-video's videoPlayer. It still pauses all mounted videos, but now excludes the video that invoked the listener, preventing it from being paused twice. - ``` - -- Upstream PR/issue: https://github.com/expo/expo/issues/40743 -- E/App issue: 🛑 -- PR Introducing Patch: https://github.com/Expensify/App/pull/66793 diff --git a/patches/expo-video/expo-video+3.0.12+001+prevent_double_pause.patch b/patches/expo-video/expo-video+3.0.12+001+prevent_double_pause.patch deleted file mode 100644 index d1a996d780519..0000000000000 --- a/patches/expo-video/expo-video+3.0.12+001+prevent_double_pause.patch +++ /dev/null @@ -1,24 +0,0 @@ - -diff --git a/node_modules/expo-video/build/VideoPlayer.web.js b/node_modules/expo-video/build/VideoPlayer.web.js -index 2c7224a..16df18b 100644 ---- a/node_modules/expo-video/build/VideoPlayer.web.js -+++ b/node_modules/expo-video/build/VideoPlayer.web.js -@@ -305,14 +305,16 @@ export default class VideoPlayerWeb extends globalThis.expo.SharedObject { - mountedVideo.play(); - }); - }; -- video.onpause = () => { -+ video.onpause = (e) => { - this._emitOnce(video, 'playingChange', { - isPlaying: false, - oldIsPlaying: this.playing, - }); - this.playing = false; - this._mountedVideos.forEach((mountedVideo) => { -- mountedVideo.pause(); -+ if (e.target !== mountedVideo) { -+ mountedVideo.pause(); -+ } - }); - }; - video.onvolumechange = () => { diff --git a/patches/expo/details.md b/patches/expo/details.md index c0f90e05d7cbc..deb303d5da081 100644 --- a/patches/expo/details.md +++ b/patches/expo/details.md @@ -1,14 +1,18 @@ # `expo` patches -### [expo+54.0.22+001+fix-missing-blob-variable-error.patch](expo+54.0.22+001+fix-missing-blob-variable-error.patch) +### [expo+55.0.0+001+fix-hmrclient-race-condition.patch](expo+55.0.0+001+fix-hmrclient-race-condition.patch) - Reason: ``` - This patch fixes error when submitting receipt to smart scan. Expo has a bug that caued issues when sending receipt - in the request - `Property 'blob' doesn't exist` + On native platforms, HMRClient.setup() is called asynchronously from native code (DevServerHelper.cpp), + but registerBundle() can be called synchronously during module loading when a dynamic import() triggers. + This race condition causes a crash: "Expected HMRClient.setup() call at startup." + The fix queues entry points in pendingEntryPoints when hmrClient is not yet initialized, + matching the existing pattern used by the log() method. Queued entry points are processed + when setup() eventually calls registerBundleEntryPoints(). ``` -- Upstream PR/issue: https://github.com/expo/expo/issues/40059 -- E/App issue: -- PR introducing patch: https://github.com/Expensify/App/pull/69535 +- Upstream PR/issue: https://github.com/expo/expo/pull/43864 +- E/App issue: https://github.com/Expensify/App/issues/75120 +- PR introducing patch: https://github.com/Expensify/App/pull/79962 diff --git a/patches/expo/expo+54.0.22+001+fix-missing-blob-variable-error.patch b/patches/expo/expo+54.0.22+001+fix-missing-blob-variable-error.patch deleted file mode 100644 index 530546ac13c13..0000000000000 --- a/patches/expo/expo+54.0.22+001+fix-missing-blob-variable-error.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/node_modules/expo/src/winter/FormData.ts b/node_modules/expo/src/winter/FormData.ts -index 8f86d9c..2df9be4 100644 ---- a/node_modules/expo/src/winter/FormData.ts -+++ b/node_modules/expo/src/winter/FormData.ts -@@ -74,7 +74,7 @@ function normalizeArgs( - ): [string, File | string] { - if (value instanceof Blob) { - // @ts-expect-error: `Blob.data.blobId` is react-native's proprietary property. -- value.name = blobFilename ?? blob.name ?? 'blob'; -+ value.name = blobFilename ?? value.name ?? 'blob'; - } else if (typeof value !== 'object') { - value = String(value); - } diff --git a/patches/expo/expo+55.0.0+001+fix-hmrclient-race-condition.patch b/patches/expo/expo+55.0.0+001+fix-hmrclient-race-condition.patch new file mode 100644 index 0000000000000..76df688308236 --- /dev/null +++ b/patches/expo/expo+55.0.0+001+fix-hmrclient-race-condition.patch @@ -0,0 +1,19 @@ +diff --git a/node_modules/expo/src/async-require/hmr.ts b/node_modules/expo/src/async-require/hmr.ts +index c0ea71e..811f667 100644 +--- a/node_modules/expo/src/async-require/hmr.ts ++++ b/node_modules/expo/src/async-require/hmr.ts +@@ -92,9 +92,12 @@ const HMRClient = { + }, + + registerBundle(requestUrl: string) { +- assert(hmrClient, 'Expected HMRClient.setup() call at startup.'); + pendingEntryPoints.push(requestUrl); +- registerBundleEntryPoints(hmrClient); ++ if (hmrClient) { ++ registerBundleEntryPoints(hmrClient); ++ } ++ // If hmrClient is not yet initialized, entry points will be ++ // processed when setup() calls registerBundleEntryPoints(). + }, + + log(level: LogLevel, data: any[]) { diff --git a/patches/lottie-react-native/details.md b/patches/lottie-react-native/details.md index 6fdb1dbce8504..dac52c20c3e59 100644 --- a/patches/lottie-react-native/details.md +++ b/patches/lottie-react-native/details.md @@ -47,3 +47,15 @@ - Upstream PR/issue: https://github.com/lottie-react-native/lottie-react-native/pull/1351 - E/App issue: - PR introducing patch: https://github.com/Expensify/App/pull/69535 + +### [lottie-react-native+6.5.1+005+support-RN-83.patch](lottie-react-native+6.5.1+005+support-RN-83.patch) + +- Reason: + + ``` + React Native v0.83.0 support + ``` + +- Upstream PR/issue: https://github.com/lottie-react-native/lottie-react-native/pull/1374 +- E/App issue: +- PR introducing patch: https://github.com/Expensify/App/pull/79962 diff --git a/patches/lottie-react-native/lottie-react-native+6.5.1+005+support-RN-83.patch b/patches/lottie-react-native/lottie-react-native+6.5.1+005+support-RN-83.patch new file mode 100644 index 0000000000000..fa44c987ca558 --- /dev/null +++ b/patches/lottie-react-native/lottie-react-native+6.5.1+005+support-RN-83.patch @@ -0,0 +1,13 @@ +diff --git a/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/LottieAnimationViewPropertyManager.kt b/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/LottieAnimationViewPropertyManager.kt +index 08e0ae9..f60d7e3 100644 +--- a/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/LottieAnimationViewPropertyManager.kt ++++ b/node_modules/lottie-react-native/android/src/main/java/com/airbnb/android/react/lottie/LottieAnimationViewPropertyManager.kt +@@ -19,7 +19,7 @@ import com.facebook.react.bridge.ReadableArray + import com.facebook.react.bridge.ReadableMap + import com.facebook.react.bridge.ReadableType + import com.facebook.react.views.text.ReactFontManager +-import com.facebook.react.views.text.TextAttributeProps.UNSET ++import com.facebook.react.common.ReactConstants.UNSET + import com.facebook.react.util.RNLog + import java.lang.ref.WeakReference + import java.util.regex.Pattern diff --git a/patches/react-native/details.md b/patches/react-native/details.md index a869464f06849..08dc2291949eb 100644 --- a/patches/react-native/details.md +++ b/patches/react-native/details.md @@ -1,13 +1,13 @@ # `react-native` patches -### [react-native+0.81.4+001+initial.patch](react-native+0.81.4+001+initial.patch) +### [react-native+0.83.1+001+initial.patch](react-native+0.83.1+001+initial.patch) - Reason: Fixes keyboard flickering issue when opening/closing modals. When an input is blurred and a modal is opened, the `rootView` becomes the `firstResponder`, causing the system to retain an incorrect keyboard state. This leads to keyboard flickering when the modal is closed. The patch adds code to resign the `rootView`'s `firstResponder` status before presenting the modal to prevent this issue. - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: https://github.com/Expensify/App/pull/23994 -### [react-native+0.81.4+002+fixMVCPAndroid.patch](react-native+0.81.4+002+fixMVCPAndroid.patch) +### [react-native+0.83.1+002+fixMVCPAndroid.patch](react-native+0.83.1+002+fixMVCPAndroid.patch) - Reason: Fixes content jumping issues with `MaintainVisibleContentPosition` on Android, particularly in bidirectional pagination scenarios. The patch makes two key improvements: 1. Changes when the first visible view is calculated - now happens on scroll events instead of during Fabric's willMountItems lifecycle, which was causing incorrect updates @@ -16,63 +16,63 @@ - E/App issue: 🛑 - PR Introducing Patch: https://github.com/Expensify/App/pull/46315 (introduced), https://github.com/Expensify/App/pull/45289 (refactored) -### [react-native+0.81.4+003+disableTextInputRecycling.patch](react-native+0.81.4+003+disableTextInputRecycling.patch) +### [react-native+0.83.1+003+disableTextInputRecycling.patch](react-native+0.83.1+003+disableTextInputRecycling.patch) - Reason: Disables text input recycling to prevent issues with state of recycled component - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: https://github.com/Expensify/App/pull/13767 -### [react-native+0.81.4+004+iOSFontResolution.patch](react-native+0.81.4+004+iOSFontResolution.patch) +### [react-native+0.83.1+004+iOSFontResolution.patch](react-native+0.83.1+004+iOSFontResolution.patch) - Reason: Fixes font resolution issues on iOS by properly preserving font properties when loading fonts by name. When a font is loaded by its name, the patch now correctly extracts and uses its actual weight and style properties instead of ignoring them. - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: https://github.com/Expensify/App/pull/13767 -### [react-native+0.81.4+005+resetAutoresizingOnView.patch](react-native+0.81.4+005+resetAutoresizingOnView.patch) +### [react-native+0.83.1+005+resetAutoresizingOnView.patch](react-native+0.83.1+005+resetAutoresizingOnView.patch) - Reason: This is a workaround fix for an issue with `UIPageViewController` and Fabric's view recycling system. The problem occurs because pager-view was incorrectly using a Fabric-provided view as its content-view. This is problematic because `UIPageViewController` modifies its content view, and when Fabric later recycles this modified view, it can lead to unexpected layout issues. The patch addresses this by resetting the autoresizing mask on the view to prevent layout corruption when views are recycled. The root cause should be addressed in react-native-pager-view: https://github.com/callstack/react-native-pager-view/issues/819 - Upstream PR/issue: https://github.com/facebook/react-native/issues/42732 - E/App issue: 🛑 - PR Introducing Patch: https://github.com/Expensify/App/pull/13767 -### [react-native+0.81.4+006+disableNonTranslucentStatusBar.patch](react-native+0.81.4+006+disableNonTranslucentStatusBar.patch) +### [react-native+0.83.1+006+disableNonTranslucentStatusBar.patch](react-native+0.83.1+006+disableNonTranslucentStatusBar.patch) - Reason: Disables non-translucent status bar to fix UI issues - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.81.4+007+TextInput.patch](react-native+0.81.4+007+TextInput.patch) +### [react-native+0.83.1+007+TextInput.patch](react-native+0.83.1+007+TextInput.patch) - Reason: Fixes TextInput component issues - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.81.4+008+iOSCoreAnimationBorderRendering.patch](react-native+0.81.4+008+iOSCoreAnimationBorderRendering.patch) +### [react-native+0.83.1+008+iOSCoreAnimationBorderRendering.patch](react-native+0.83.1+008+iOSCoreAnimationBorderRendering.patch) - Reason: Fixes border rendering issues with Core Animation on iOS - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.81.4+009+copyStateOnClone.patch](react-native+0.81.4+009+copyStateOnClone.patch) +### [react-native+0.83.1+009+copyStateOnClone.patch](react-native+0.83.1+009+copyStateOnClone.patch) - Reason: Ensures state is properly copied when cloning components - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.81.4+010+textinput-clear-command.patch](react-native+0.81.4+010+textinput-clear-command.patch) +### [react-native+0.83.1+010+textinput-clear-command.patch](react-native+0.83.1+010+textinput-clear-command.patch) - Reason: Adds clear command functionality to TextInput - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.81.4+011+Add-onPaste-to-TextInput.patch](react-native+0.81.4+011+Add-onPaste-to-TextInput.patch) +### [react-native+0.83.1+011+Add-onPaste-to-TextInput.patch](react-native+0.83.1+011+Add-onPaste-to-TextInput.patch) - Reasons: - Adds `onPaste` callback to `TextInput` to support image pasting on native @@ -88,84 +88,77 @@ - https://github.com/Expensify/App/issues/75991 - PR Introducing Patch: [#47203](https://github.com/Expensify/App/pull/47203) -### [react-native+0.81.4+012+alert-style.patch](react-native+0.81.4+012+alert-style.patch) +### [react-native+0.83.1+012+alert-style.patch](react-native+0.83.1+012+alert-style.patch) - Reason: Fixes alert styling issues - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.81.4+013+fixNavigationAnimations.patch](react-native+0.81.4+013+fixNavigationAnimations.patch) +### [react-native+0.83.1+013+fixNavigationAnimations.patch](react-native+0.83.1+013+fixNavigationAnimations.patch) - Reason: Fixes navigation animation issues - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.81.4+014+fixScrollViewState.patch](react-native+0.81.4+014+fixScrollViewState.patch) +### [react-native+0.83.1+014+fixScrollViewState.patch](react-native+0.83.1+014+fixScrollViewState.patch) - Reason: Fixes ScrollView state management issues - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.81.4+015+android-keyboard-avoiding-view.patch](react-native+0.81.4+015+android-keyboard-avoiding-view.patch) +### [react-native+0.83.1+015+android-keyboard-avoiding-view.patch](react-native+0.83.1+015+android-keyboard-avoiding-view.patch) - Reason: Fixes keyboard avoiding view behavior on Android - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.81.4+016+fix-mask-persisting-recycling.patch](react-native+0.81.4+016+fix-mask-persisting-recycling.patch) +### [react-native+0.83.1+016+fix-mask-persisting-recycling.patch](react-native+0.83.1+016+fix-mask-persisting-recycling.patch) - Reason: Fixes mask persisting and recycling issues - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.81.4+017+fix-text-selecting-on-change.patch](react-native+0.81.4+017+fix-text-selecting-on-change.patch) +### [react-native+0.83.1+017+fix-text-selecting-on-change.patch](react-native+0.83.1+017+fix-text-selecting-on-change.patch) - Reason: Fixes text selection issues during onChange events - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.81.4+018+fix-dropping-mutations-in-transactions.patch](react-native+0.81.4+018+fix-dropping-mutations-in-transactions.patch) +### [react-native+0.83.1+018+fix-dropping-mutations-in-transactions.patch](react-native+0.83.1+018+fix-dropping-mutations-in-transactions.patch) - Reason: Fixes issues with dropping mutations in transactions - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.81.4+019+fix-crash-when-deleting-expense.patch](react-native+0.81.4+019+fix-crash-when-deleting-expense.patch) +### [react-native+0.83.1+019+fix-crash-when-deleting-expense.patch](react-native+0.83.1+019+fix-crash-when-deleting-expense.patch) - Reason: Fixes crash when deleting expenses - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: 🛑 -### [react-native+0.81.4+020+fix-surface-stopped-before-started.patch](react-native+0.81.4+020+fix-surface-stopped-before-started.patch) - -- Reason: Fixes surface lifecycle issues where surface is stopped before being started -- Upstream PR/issue: 🛑 -- E/App issue: 🛑 -- PR Introducing Patch: 🛑 - -### [react-native+0.81.4+021+publish-gradle.patch](react-native+0.81.4+021+publish-gradle.patch) +### [react-native+0.83.1+020+publish-gradle.patch](react-native+0.83.1+020+publish-gradle.patch) - Reason: This patch customizes the Gradle publishing script to allow publishing our custom React Native artifacts to GitHub Packages. - Upstream PR/issue: 🛑 - E/App issue: 🛑 - PR Introducing Patch: https://github.com/Expensify/App/pull/59738 -### [react-native+0.81.4+022+fix-display-contents-not-updating-nodes.patch](react-native+0.81.4+022+fix-display-contents-not-updating-nodes.patch) +### [react-native+0.83.1+021+fix-display-contents-not-updating-nodes.patch](react-native+0.83.1+021+fix-display-contents-not-updating-nodes.patch) - Reason: This patch updates Yoga to correctly update the subtrees of `display: contents` nodes so that they are in sync with their React Native counterparts. - Upstream PR/issue: https://github.com/facebook/react-native/pull/52530 - E/App issue: https://github.com/Expensify/App/issues/65268 - PR introducing patch: [#65925](https://github.com/Expensify/App/pull/65925) -### [react-native+0.81.4+023+textinput-prevent-focus-on-first-responder.patch](react-native+0.81.4+023+textinput-prevent-focus-on-first-responder.patch) +### [react-native+0.83.1+022+textinput-prevent-focus-on-first-responder.patch](react-native+0.83.1+022+textinput-prevent-focus-on-first-responder.patch) - Reason: On iOS, a text input automatically becomes the "first responder" in UIKit's "UIResponder" chain. Once a text input becomes the first responder, it will be automatically focused. (This also causes the keyboard to open) - This is not handled by React or React Native, but is rather a native iOS/UIKit behaviour. This patch adds an additional `TextInput` prop (`preventFocusOnFirstResponder`) and a ref method (`preventFocusOnFirstResponderOnce`) to bypass the focus on first responder. @@ -174,14 +167,14 @@ - E/App issue: [#54813](https://github.com/Expensify/App/issues/54813) - PR Introducing Patch: [#61492](https://github.com/Expensify/App/pull/61492) -### [react-native+0.81.4+024+fix-modal-transparent-navigation-bar.patch](react-native+0.81.4+024+fix-modal-transparent-navigation-bar.patch) +### [react-native+0.83.1+023+fix-modal-transparent-navigation-bar.patch](react-native+0.83.1+023+fix-modal-transparent-navigation-bar.patch) - Reason: This patch fixes an issue where it is not possible to enable a transparent navigation bar on Android - Upstream PR/issue: 🛑 - E/App issue: [#69005](https://github.com/Expensify/App/issues/69005) - PR introducing patch: [#69004](https://github.com/Expensify/App/pull/69004) -### [react-native+0.81.4+025+restore-interaction-manager.patch](react-native+0.81.4+025+restore-interaction-manager.patch) +### [react-native+0.83.1+024+restore-interaction-manager.patch](react-native+0.83.1+024+restore-interaction-manager.patch) - Reason: @@ -197,30 +190,51 @@ - E/App issue: https://github.com/Expensify/App/issues/71913 - PR introducing patch: https://github.com/Expensify/App/pull/69535 -### [react-native+0.81.4+026+perf-increase-initial-heap-size.patch](react-native+0.81.4+026+perf-increase-initial-heap-size.patch) +### [react-native+0.83.1+025+perf-increase-initial-heap-size.patch](react-native+0.83.1+025+perf-increase-initial-heap-size.patch) - Reason: This patch increases the initial heap size of the Hermes runtime. This allows us to disable Hermes Young-Gen Garbage Collection (GC) in a separate patch, which improves initial TTI and app startup time. - Upstream PR/issue: This is not intended to be upstreamed, since this is a low-level fix very specific to the Expensify app's requirements. - E/App issue: [#76859](https://github.com/Expensify/App/issues/76859) - PR introducing patch: [#76154](https://github.com/Expensify/App/pull/76154) -### [react-native+0.81.4+027+perf-disable-hermes-young-gc-before-tti-reached.patch](react-native+0.81.4+027+perf-disable-hermes-young-gc-before-tti-reached.patch) +### [react-native+0.83.1+026+perf-disable-hermes-young-gc-before-tti-reached.patch](react-native+0.83.1+026+perf-disable-hermes-young-gc-before-tti-reached.patch) -- Reason: This patch disables Hermes Young-Gen Garbage Collection (GC), which improves initial TTI and app startup time, by delaying GC for early allocated memory to the first Old-Gen GC run. +- Reason: This patch disables Hermes Young-Gen Garbage Collection (GC), which improves initial TTI and app startup time, by delaying GC for early allocated memory to the first Old-Gen GC run. - Upstream PR/issue: This is not intended to be upstreamed, since this is a low-level fix very specific to the Expensify app's requirements. - E/App issue: [#76859](https://github.com/Expensify/App/issues/76859) - PR introducing patch: [#76154](https://github.com/Expensify/App/pull/76154) -### [react-native+0.81.4+028+strip-hermes-debug-info.patch](react-native+0.81.4+028+strip-hermes-debug-info.patch) +### [react-native+0.83.1+027+strip-hermes-debug-info.patch](react-native+0.83.1+027+strip-hermes-debug-info.patch) - Reason: Always pass `-output-source-map` to `hermesc` for production iOS builds, stripping ~13.4MB of debug metadata from the Hermes bytecode. Previously this flag was only passed when `SOURCEMAP_FILE` was set; if the build environment didn't propagate that variable, debug info remained in the shipped bundle. - Upstream PR/issue: This should ideally be the default behavior upstream, but no PR has been filed yet. - E/App issue: [#83000](https://github.com/Expensify/App/issues/83000) - PR introducing patch: [#83256](https://github.com/Expensify/App/pull/83256) -### [react-native+0.81.4+029+log-soft-exception-if-viewState-not-found.patch](react-native+0.81.4+029+log-soft-exception-if-viewState-not-found.patch) +### [react-native+0.83.1+028+log-soft-exception-if-viewState-not-found.patch](react-native+0.83.1+028+log-soft-exception-if-viewState-not-found.patch) - Reason: This patch prevents app crashes by soft-logging the exception when JS try to send events to native views even if they are removed from view hierarchy. The approach follows existing patterns in the same file where similar events are already handled this way and is based on suggestions from other developers in upstream discussions. - Upstream PR/issue: [#49077](https://github.com/facebook/react-native/issues/49077) [#7493](https://github.com/software-mansion/react-native-reanimated/issues/7493) - E/App issue: [#82611](https://github.com/Expensify/App/issues/82611) - PR introducing patch: [#84303](https://github.com/Expensify/App/pull/84303) + +### [react-native+0.83.1+029+fix-fetching-files-android.patch](react-native+0.83.1+029+fix-fetching-files-android.patch) + +- Reason: Fixes fetching files (blobs, file URIs) on Android +- Upstream PR/issue: https://github.com/facebook/react-native/pull/55706 +- E/App issue: https://github.com/Expensify/App/issues/75120 +- PR Introducing Patch: https://github.com/Expensify/App/pull/79962 + +### [react-native+0.83.1+030+fix-view-stealing-first-responder.patch](react-native+0.83.1+030+fix-view-stealing-first-responder.patch) + +- Reason: In RN 0.83, `RCTViewComponentView.canBecomeFirstResponder` unconditionally returns `YES` (added for the `enableImperativeFocus` feature). This causes UIKit to promote parent views to first responder after navigation transitions complete (`_promoteSelfOrDescendantToFirstResponderIfNecessary`), stealing focus from text inputs and triggering an immediate focus→blur cycle. The fix gates `canBecomeFirstResponder` behind the `enableImperativeFocus` feature flag, which defaults to `false`. +- Upstream PR/issue: https://github.com/facebook/react-native/pull/55908 +- E/App issue: https://github.com/Expensify/App/issues/75120 +- PR Introducing Patch: https://github.com/Expensify/App/pull/79962 + +### [react-native+0.83.1+031+fix-exif-orientation.patch](react-native+0.83.1+031+fix-exif-orientation.patch) + +- Reason: In RN 0.83, PR [#54127](https://github.com/facebook/react-native/pull/54127) changed `RCTDecodeImageWithData` to use `CGImageSourceCreateImageAtIndex` instead of `CGImageSourceCreateThumbnailAtIndex` for full-size images (to fix memory crashes with large images). However, `CGImageSourceCreateImageAtIndex` does NOT apply EXIF orientation transform to pixels, unlike the previous thumbnail API which used `kCGImageSourceCreateThumbnailWithTransform`. The code still hardcodes `UIImageOrientationUp`, so EXIF orientation is silently lost. This causes camera-captured images (which have EXIF orientation metadata) to appear rotated when processed by `expo-image-manipulator`. The fix reads the EXIF orientation from image properties and passes it to `UIImage` for the full-size code path. +- Upstream PR/issue: https://github.com/facebook/react-native/pull/55934 +- E/App issue: https://github.com/Expensify/App/issues/75120 +- PR Introducing Patch: https://github.com/Expensify/App/pull/79962 diff --git a/patches/react-native/react-native+0.81.4+014+fixScrollViewState.patch b/patches/react-native/react-native+0.81.4+014+fixScrollViewState.patch deleted file mode 100644 index 8f96c909630f6..0000000000000 --- a/patches/react-native/react-native+0.81.4+014+fixScrollViewState.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt -index 55e4d53..bd4ad5c 100644 ---- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt -+++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt -@@ -564,7 +564,7 @@ public object ReactScrollViewHelper { - /** Get the padding on the top for nav bar */ - public var scrollAwayPaddingTop: Int = 0 - /** Get the Fabric state of last scroll position */ -- public val lastStateUpdateScroll: Point = Point(-1, -1) -+ public val lastStateUpdateScroll: Point = Point(0, 0) - /** Get true if the previous animation was canceled */ - public var isCanceled: Boolean = false - /** Get true if previous animation was finished */ diff --git a/patches/react-native/react-native+0.81.4+020+fix-surface-stopped-before-started.patch b/patches/react-native/react-native+0.81.4+020+fix-surface-stopped-before-started.patch deleted file mode 100644 index ed59645c62a84..0000000000000 --- a/patches/react-native/react-native+0.81.4+020+fix-surface-stopped-before-started.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/node_modules/react-native/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm b/node_modules/react-native/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm -index b796713..5142307 100644 ---- a/node_modules/react-native/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm -+++ b/node_modules/react-native/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm -@@ -254,7 +254,9 @@ class RCTHostHostTargetDelegate : public facebook::react::jsinspector_modern::Ho - surface.surfaceHandler.setDisplayMode(displayMode); - [self _attachSurface:surface]; - -- [_instance callFunctionOnBufferedRuntimeExecutor:[surface](facebook::jsi::Runtime &_) { [surface start]; }]; -+ __weak RCTFabricSurface *weakSurface = surface; -+ // Use the BufferedRuntimeExecutor to start the surface after the main JS bundle was fully executed. -+ [_instance callFunctionOnBufferedRuntimeExecutor:[weakSurface](facebook::jsi::Runtime &_) { [weakSurface start]; }]; - return surface; - } - diff --git a/patches/react-native/react-native+0.81.4+025+restore-interaction-manager.patch b/patches/react-native/react-native+0.81.4+025+restore-interaction-manager.patch deleted file mode 100644 index 2a43803e94906..0000000000000 --- a/patches/react-native/react-native+0.81.4+025+restore-interaction-manager.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/node_modules/react-native/Libraries/Interaction/InteractionManager.js b/node_modules/react-native/Libraries/Interaction/InteractionManager.js -index 70fc3d7..016ba4e 100644 ---- a/node_modules/react-native/Libraries/Interaction/InteractionManager.js -+++ b/node_modules/react-native/Libraries/Interaction/InteractionManager.js -@@ -227,11 +227,6 @@ function _processUpdate() { - * - * @deprecated - */ --const InteractionManager = ( -- ReactNativeFeatureFlags.disableInteractionManager() -- ? // $FlowFixMe[incompatible-variance] -- require('./InteractionManagerStub').default -- : InteractionManagerImpl --) as typeof InteractionManagerImpl; -+const InteractionManager = InteractionManagerImpl; - - export default InteractionManager; diff --git a/patches/react-native/react-native+0.81.4+001+initial.patch b/patches/react-native/react-native+0.83.1+001+initial.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+001+initial.patch rename to patches/react-native/react-native+0.83.1+001+initial.patch diff --git a/patches/react-native/react-native+0.81.4+002+fixMVCPAndroid.patch b/patches/react-native/react-native+0.83.1+002+fixMVCPAndroid.patch similarity index 87% rename from patches/react-native/react-native+0.81.4+002+fixMVCPAndroid.patch rename to patches/react-native/react-native+0.83.1+002+fixMVCPAndroid.patch index 35ee843c9cbec..834bffe499e57 100644 --- a/patches/react-native/react-native+0.81.4+002+fixMVCPAndroid.patch +++ b/patches/react-native/react-native+0.83.1+002+fixMVCPAndroid.patch @@ -1,8 +1,8 @@ diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.kt b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.kt -index 6813434..2dde13e 100644 +index 20e998d..55893fd 100644 --- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.kt +++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.kt -@@ -78,6 +78,7 @@ internal class MaintainVisibleScrollPositionHelper( +@@ -80,6 +80,7 @@ internal class MaintainVisibleScrollPositionHelper( return } isListening = false @@ -10,7 +10,7 @@ index 6813434..2dde13e 100644 uIManager.removeUIManagerEventListener(this) } -@@ -85,15 +86,14 @@ internal class MaintainVisibleScrollPositionHelper( +@@ -87,15 +88,14 @@ internal class MaintainVisibleScrollPositionHelper( * Update the scroll position of the managed ScrollView. This should be called after layout has * been updated. */ @@ -30,7 +30,7 @@ index 6813434..2dde13e 100644 val config = config ?: return val firstVisibleViewRef = firstVisibleViewRef ?: return val prevFirstVisibleFrame = prevFirstVisibleFrame ?: return -@@ -126,12 +126,18 @@ internal class MaintainVisibleScrollPositionHelper( +@@ -128,12 +128,18 @@ internal class MaintainVisibleScrollPositionHelper( } } @@ -50,7 +50,7 @@ index 6813434..2dde13e 100644 for (i in config.minIndexForVisible until contentView.childCount) { val child = contentView.getChildAt(i) -@@ -139,27 +145,49 @@ internal class MaintainVisibleScrollPositionHelper( +@@ -141,27 +147,49 @@ internal class MaintainVisibleScrollPositionHelper( val position = if (horizontal) child.x + child.width else child.y + child.height // If the child is partially visible or this is the last child, select it as the anchor. @@ -64,8 +64,8 @@ index 6813434..2dde13e 100644 + (firstVisibleView == null && i == contentView.getChildCount() - 1)) { + firstVisibleView = child + firstVisibleViewPosition = position -+ } -+ } + } + } + firstVisibleViewRef = WeakReference(firstVisibleView) + } + @@ -81,8 +81,8 @@ index 6813434..2dde13e 100644 + // There are cases where it is possible for this to still be null so just bail out. + if (firstVisibleView == null) { + return - } - } ++ } ++ } + val frame = Rect() + firstVisibleView.getHitRect(frame) + if (frame.width() > 0 || frame.height() > 0) { @@ -110,20 +110,21 @@ index 6813434..2dde13e 100644 override fun didDispatchMountItems(uiManager: UIManager) { diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java -index 2a462c4..f7424db 100644 +index f4896af..c88c77a 100644 --- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java -@@ -544,6 +544,9 @@ public class ReactHorizontalScrollView extends HorizontalScrollView - mOnScrollDispatchHelper.getXFlingVelocity(), - mOnScrollDispatchHelper.getYFlingVelocity()); +@@ -634,7 +634,9 @@ public class ReactHorizontalScrollView extends HorizontalScrollView + mVirtualViewContainerState.updateState(); + } } +- + if (mMaintainVisibleContentPositionHelper != null) { -+ mMaintainVisibleContentPositionHelper.onScroll(); ++ mMaintainVisibleContentPositionHelper.onScroll(); + } } finally { Systrace.endSection(Systrace.TRACE_TAG_REACT); } -@@ -1500,7 +1503,7 @@ public class ReactHorizontalScrollView extends HorizontalScrollView +@@ -1623,7 +1625,7 @@ public class ReactHorizontalScrollView extends HorizontalScrollView if (v.getLayoutDirection() == LAYOUT_DIRECTION_RTL) { adjustPositionForContentChangeRTL(left, right, oldLeft, oldRight); } else if (mMaintainVisibleContentPositionHelper != null) { @@ -133,12 +134,12 @@ index 2a462c4..f7424db 100644 ReactScrollViewHelper.emitLayoutChangeEvent(this); } diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java -index f708543..04bd30b 100644 +index b0f6203..35cd66c 100644 --- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java -@@ -476,6 +476,9 @@ public class ReactScrollView extends ScrollView - mOnScrollDispatchHelper.getXFlingVelocity(), - mOnScrollDispatchHelper.getYFlingVelocity()); +@@ -584,6 +584,9 @@ public class ReactScrollView extends ScrollView + mVirtualViewContainerState.updateState(); + } } + if (mMaintainVisibleContentPositionHelper != null) { + mMaintainVisibleContentPositionHelper.onScroll(); @@ -146,7 +147,7 @@ index f708543..04bd30b 100644 } finally { Systrace.endSection(Systrace.TRACE_TAG_REACT); } -@@ -1287,7 +1290,7 @@ public class ReactScrollView extends ScrollView +@@ -1422,7 +1425,7 @@ public class ReactScrollView extends ScrollView } if (mMaintainVisibleContentPositionHelper != null) { diff --git a/patches/react-native/react-native+0.81.4+003+disableTextInputRecycling.patch b/patches/react-native/react-native+0.83.1+003+disableTextInputRecycling.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+003+disableTextInputRecycling.patch rename to patches/react-native/react-native+0.83.1+003+disableTextInputRecycling.patch diff --git a/patches/react-native/react-native+0.81.4+004+iOSFontResolution.patch b/patches/react-native/react-native+0.83.1+004+iOSFontResolution.patch similarity index 81% rename from patches/react-native/react-native+0.81.4+004+iOSFontResolution.patch rename to patches/react-native/react-native+0.83.1+004+iOSFontResolution.patch index 20296b89b40bf..3d37febb94ad3 100644 --- a/patches/react-native/react-native+0.81.4+004+iOSFontResolution.patch +++ b/patches/react-native/react-native+0.83.1+004+iOSFontResolution.patch @@ -1,10 +1,10 @@ diff --git a/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm b/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm -index 39093ef..36cb558 100644 +index 9b04cad..407ef5d 100644 --- a/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm +++ b/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm -@@ -38,9 +38,6 @@ static RCTFontProperties RCTResolveFontProperties( +@@ -40,9 +40,6 @@ static RCTFontProperties RCTResolveFontProperties( { - fontProperties.family = fontProperties.family.length ? fontProperties.family : baseFontProperties.family; + fontProperties.family = (fontProperties.family.length != 0u) ? fontProperties.family : baseFontProperties.family; fontProperties.size = !isnan(fontProperties.size) ? fontProperties.size : baseFontProperties.size; - fontProperties.weight = !isnan(fontProperties.weight) ? fontProperties.weight : baseFontProperties.weight; - fontProperties.style = @@ -12,7 +12,7 @@ index 39093ef..36cb558 100644 fontProperties.variant = fontProperties.variant != RCTFontVariantUndefined ? fontProperties.variant : baseFontProperties.variant; return fontProperties; -@@ -319,10 +316,14 @@ UIFont *RCTFontWithFontProperties(RCTFontProperties fontProperties) +@@ -350,10 +347,14 @@ UIFont *RCTFontWithFontProperties(RCTFontProperties fontProperties) } else if ([fontProperties.family isEqualToString:defaultFontProperties.family]) { // Handle system font as special case. This ensures that we preserve // the specific metrics of the standard system font as closely as possible. @@ -27,13 +27,13 @@ index 39093ef..36cb558 100644 if (fontNames.count == 0) { // Gracefully handle being given a font name rather than font family, for -@@ -335,15 +336,18 @@ UIFont *RCTFontWithFontProperties(RCTFontProperties fontProperties) +@@ -366,15 +367,18 @@ UIFont *RCTFontWithFontProperties(RCTFontProperties fontProperties) // Failback to system font. - font = [UIFont systemFontOfSize:effectiveFontSize weight:fontProperties.weight]; + font = RCTDefaultFontWithFontProperties(fontProperties); } + fontNames = [UIFont fontNamesForFamilyName:font.familyName]; -+ fontWeight = isnan(fontWeight) ? RCTGetFontWeight(font) : fontWeight; -+ fontStyle = fontStyle == RCTFontStyleUndefined ? RCTGetFontStyle(font) : fontStyle; ++ fontWeight = isnan(fontWeight) ? RCTGetFontWeight(font) : fontWeight; ++ fontStyle = fontStyle == RCTFontStyleUndefined ? RCTGetFontStyle(font) : fontStyle; } - if (fontNames.count > 0) { diff --git a/patches/react-native/react-native+0.81.4+005+resetAutoresizingOnView.patch b/patches/react-native/react-native+0.83.1+005+resetAutoresizingOnView.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+005+resetAutoresizingOnView.patch rename to patches/react-native/react-native+0.83.1+005+resetAutoresizingOnView.patch diff --git a/patches/react-native/react-native+0.81.4+006+disableNonTranslucentStatusBar.patch b/patches/react-native/react-native+0.83.1+006+disableNonTranslucentStatusBar.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+006+disableNonTranslucentStatusBar.patch rename to patches/react-native/react-native+0.83.1+006+disableNonTranslucentStatusBar.patch diff --git a/patches/react-native/react-native+0.81.4+007+TextInput.patch b/patches/react-native/react-native+0.83.1+007+TextInput.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+007+TextInput.patch rename to patches/react-native/react-native+0.83.1+007+TextInput.patch diff --git a/patches/react-native/react-native+0.81.4+008+iOSCoreAnimationBorderRendering.patch b/patches/react-native/react-native+0.83.1+008+iOSCoreAnimationBorderRendering.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+008+iOSCoreAnimationBorderRendering.patch rename to patches/react-native/react-native+0.83.1+008+iOSCoreAnimationBorderRendering.patch diff --git a/patches/react-native/react-native+0.81.4+009+copyStateOnClone.patch b/patches/react-native/react-native+0.83.1+009+copyStateOnClone.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+009+copyStateOnClone.patch rename to patches/react-native/react-native+0.83.1+009+copyStateOnClone.patch diff --git a/patches/react-native/react-native+0.81.4+010+textinput-clear-command.patch b/patches/react-native/react-native+0.83.1+010+textinput-clear-command.patch similarity index 91% rename from patches/react-native/react-native+0.81.4+010+textinput-clear-command.patch rename to patches/react-native/react-native+0.83.1+010+textinput-clear-command.patch index a929a62177a02..16571dce620a4 100644 --- a/patches/react-native/react-native+0.81.4+010+textinput-clear-command.patch +++ b/patches/react-native/react-native+0.83.1+010+textinput-clear-command.patch @@ -57,10 +57,10 @@ index 05bddcb..27752b7 100644 onSelectionChange: true, onContentSizeChange: 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 b3ca156..f441831 100644 +index 25c8142..87cb310 100644 --- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts +++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts -@@ -818,6 +818,13 @@ export interface TextInputProps +@@ -815,6 +815,13 @@ export interface TextInputProps */ onBlur?: ((e: BlurEvent) => void) | undefined; @@ -75,10 +75,10 @@ index b3ca156..f441831 100644 * Callback that is called when the text input's text changes. */ diff --git a/node_modules/react-native/Libraries/Components/TextInput/TextInput.js b/node_modules/react-native/Libraries/Components/TextInput/TextInput.js -index 8bd86cc..2fc2715 100644 +index 5cebe10..5d05624 100644 --- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.js +++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.js -@@ -524,6 +524,11 @@ function InternalTextInput(props: TextInputProps): React.Node { +@@ -530,6 +530,11 @@ function InternalTextInput(props: TextInputProps): React.Node { }); }; @@ -90,7 +90,7 @@ index 8bd86cc..2fc2715 100644 const _onFocus = (event: FocusEvent) => { TextInputState.focusInput(inputRef.current); if (props.onFocus) { -@@ -691,6 +696,7 @@ function InternalTextInput(props: TextInputProps): React.Node { +@@ -705,6 +710,7 @@ function InternalTextInput(props: TextInputProps): React.Node { nativeID={id ?? props.nativeID} numberOfLines={props.rows ?? props.numberOfLines} onBlur={_onBlur} @@ -98,7 +98,7 @@ index 8bd86cc..2fc2715 100644 onChange={_onChange} onContentSizeChange={props.onContentSizeChange} onFocus={_onFocus} -@@ -758,6 +764,7 @@ function InternalTextInput(props: TextInputProps): React.Node { +@@ -778,6 +784,7 @@ function InternalTextInput(props: TextInputProps): React.Node { nativeID={id ?? props.nativeID} numberOfLines={props.rows ?? props.numberOfLines} onBlur={_onBlur} @@ -107,10 +107,10 @@ index 8bd86cc..2fc2715 100644 onFocus={_onFocus} /* $FlowFixMe[prop-missing] the types for AndroidTextInput don't match diff --git a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm -index 47adc53..407d46e 100644 +index 3503ccf..5d3a675 100644 --- a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm +++ b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm -@@ -67,6 +67,7 @@ RCT_EXPORT_VIEW_PROPERTY(acceptDragAndDropTypes, NSArray) +@@ -69,6 +69,7 @@ RCT_EXPORT_VIEW_PROPERTY(acceptDragAndDropTypes, NSArray) RCT_EXPORT_VIEW_PROPERTY(onChange, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onKeyPressSync, RCTDirectEventBlock) @@ -119,10 +119,10 @@ index 47adc53..407d46e 100644 RCT_EXPORT_VIEW_PROPERTY(onSelectionChange, RCTDirectEventBlock) RCT_EXPORT_VIEW_PROPERTY(onScroll, RCTDirectEventBlock) diff --git a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm -index b5d7242..3f6c980 100644 +index 32d8ed4..92ce922 100644 --- a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +++ b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm -@@ -555,6 +555,19 @@ static NSSet *returnKeyTypesSet; +@@ -564,6 +564,19 @@ static NSSet *returnKeyTypesSet; [_backedTextInputView resignFirstResponder]; } @@ -233,10 +233,10 @@ index 0000000..0c142a0 + } +} diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt -index 42c13a1..35cd70f 100644 +index 21244cd..dda54f7 100644 --- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt +++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt -@@ -13,6 +13,7 @@ import android.graphics.BlendModeColorFilter +@@ -15,6 +15,7 @@ import android.graphics.BlendModeColorFilter import android.graphics.Paint import android.graphics.PorterDuff import android.os.Build @@ -244,7 +244,7 @@ index 42c13a1..35cd70f 100644 import android.text.InputFilter import android.text.InputFilter.LengthFilter import android.text.InputType -@@ -48,6 +49,8 @@ import com.facebook.react.uimanager.ReactStylesDiffMap +@@ -50,6 +51,8 @@ import com.facebook.react.uimanager.ReactStylesDiffMap import com.facebook.react.uimanager.StateWrapper import com.facebook.react.uimanager.ThemedReactContext import com.facebook.react.uimanager.UIManagerHelper @@ -253,16 +253,16 @@ index 42c13a1..35cd70f 100644 import com.facebook.react.uimanager.ViewDefaults import com.facebook.react.uimanager.ViewProps import com.facebook.react.uimanager.annotations.ReactProp -@@ -133,6 +136,8 @@ public open class ReactTextInputManager public constructor() : - val eventTypeConstants = baseEventTypeConstants ?: mutableMapOf() +@@ -144,6 +147,8 @@ public open class ReactTextInputManager public constructor() : eventTypeConstants.putAll( - mapOf(getJSEventName(ScrollEventType.SCROLL) to mapOf("registrationName" to "onScroll"))) + mapOf(getJSEventName(ScrollEventType.SCROLL) to mapOf("registrationName" to "onScroll")) + ) + eventTypeConstants.putAll( + mapOf(ReactTextClearEvent.EVENT_NAME to mapOf("registrationName" to "onClear"))) return eventTypeConstants } -@@ -175,6 +180,26 @@ public open class ReactTextInputManager public constructor() : +@@ -186,6 +191,26 @@ public open class ReactTextInputManager public constructor() : } reactEditText.maybeSetSelection(mostRecentEventCount, start, end) } @@ -305,14 +305,14 @@ index a9bc219..42c445b 100644 dispatchTextInputEvent("change", textInputMetrics); } diff --git a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/TextInputEventEmitter.h b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/TextInputEventEmitter.h -index dbce575..968c93c 100644 +index a3f2e01..f88919c 100644 --- a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/TextInputEventEmitter.h +++ b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/TextInputEventEmitter.h @@ -37,6 +37,7 @@ class TextInputEventEmitter : public ViewEventEmitter { - void onFocus(const Metrics& textInputMetrics) const; - void onBlur(const Metrics& textInputMetrics) const; -+ void onClear(const Metrics& textInputMetrics) const; - void onChange(const Metrics& textInputMetrics) const; - void onContentSizeChange(const Metrics& textInputMetrics) const; - void onSelectionChange(const Metrics& textInputMetrics) const; + void onFocus(const Metrics &textInputMetrics) const; + void onBlur(const Metrics &textInputMetrics) const; ++ void onClear(const Metrics &textInputMetrics) const; + void onChange(const Metrics &textInputMetrics) const; + void onContentSizeChange(const Metrics &textInputMetrics) const; + void onSelectionChange(const Metrics &textInputMetrics) const; diff --git a/patches/react-native/react-native+0.81.4+011+Add-onPaste-to-TextInput.patch b/patches/react-native/react-native+0.83.1+011+Add-onPaste-to-TextInput.patch similarity index 93% rename from patches/react-native/react-native+0.81.4+011+Add-onPaste-to-TextInput.patch rename to patches/react-native/react-native+0.83.1+011+Add-onPaste-to-TextInput.patch index 6138c636d0da0..2144d6aa53b51 100644 --- a/patches/react-native/react-native+0.81.4+011+Add-onPaste-to-TextInput.patch +++ b/patches/react-native/react-native+0.83.1+011+Add-onPaste-to-TextInput.patch @@ -65,10 +65,10 @@ index 27752b7..9143695 100644 onKeyPressSync: 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 f441831..3ea6d67 100644 +index 87cb310..03262de 100644 --- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts +++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts -@@ -565,6 +565,16 @@ export interface TextInputSubmitEditingEventData { +@@ -562,6 +562,16 @@ export interface TextInputSubmitEditingEventData { export type TextInputSubmitEditingEvent = NativeSyntheticEvent; @@ -85,7 +85,7 @@ index f441831..3ea6d67 100644 /** * @see https://reactnative.dev/docs/textinput#props */ -@@ -903,6 +913,14 @@ export interface TextInputProps +@@ -900,6 +910,14 @@ export interface TextInputProps */ onKeyPress?: ((e: TextInputKeyPressEvent) => void) | undefined; @@ -101,10 +101,10 @@ index f441831..3ea6d67 100644 * The string that will be rendered before text input has been entered */ 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 5fa8811..ad2bf61 100644 +index c78ce40..ede5607 100644 --- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js +++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js -@@ -137,6 +137,18 @@ export type TextInputSubmitEditingEvent = +@@ -138,6 +138,18 @@ export type TextInputSubmitEditingEvent = export type TextInputEditingEvent = NativeSyntheticEvent; @@ -123,7 +123,7 @@ index 5fa8811..ad2bf61 100644 type DataDetectorTypesType = | 'phoneNumber' | 'link' -@@ -884,6 +896,11 @@ type TextInputBaseProps = $ReadOnly<{ +@@ -885,6 +897,11 @@ type TextInputBaseProps = $ReadOnly<{ */ onScroll?: ?(e: ScrollEvent) => mixed, @@ -136,7 +136,7 @@ index 5fa8811..ad2bf61 100644 * The string that will be rendered before text input has been entered. */ diff --git a/node_modules/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm b/node_modules/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm -index 6e9c384..2c509eb 100644 +index 6e9c384..9c94442 100644 --- a/node_modules/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm +++ b/node_modules/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm @@ -13,6 +13,10 @@ @@ -256,10 +256,10 @@ index 82d9a79..8cc48ec 100644 - (void)textViewProbablyDidChangeSelection diff --git a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.h b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.h -index 4804624..90b7081 100644 +index 228d9ca..b807146 100644 --- a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.h +++ b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.h -@@ -37,6 +37,7 @@ NS_ASSUME_NONNULL_BEGIN +@@ -40,6 +40,7 @@ __attribute__((deprecated("This API will be removed along with the legacy archit @property (nonatomic, copy, nullable) RCTDirectEventBlock onChange; @property (nonatomic, copy, nullable) RCTDirectEventBlock onChangeSync; @property (nonatomic, copy, nullable) RCTDirectEventBlock onScroll; @@ -268,10 +268,10 @@ index 4804624..90b7081 100644 @property (nonatomic, assign) NSInteger mostRecentEventCount; @property (nonatomic, assign, readonly) NSInteger nativeEventCount; diff --git a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.mm b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.mm -index 6a2d4f8..b6e6060 100644 +index c916ce8..f4e19f9 100644 --- a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.mm +++ b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.mm -@@ -599,6 +599,26 @@ RCT_NOT_IMPLEMENTED(-(instancetype)initWithFrame : (CGRect)frame) +@@ -601,6 +601,26 @@ RCT_NOT_IMPLEMENTED(-(instancetype)initWithFrame : (CGRect)frame) }); } @@ -299,10 +299,10 @@ index 6a2d4f8..b6e6060 100644 { [self enforceTextAttributesIfNeeded]; diff --git a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm -index 407d46e..0a5b412 100644 +index 5d3a675..a92904d 100644 --- a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm +++ b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm -@@ -71,6 +71,7 @@ RCT_EXPORT_VIEW_PROPERTY(onClear, RCTDirectEventBlock) +@@ -73,6 +73,7 @@ RCT_EXPORT_VIEW_PROPERTY(onClear, RCTDirectEventBlock) RCT_EXPORT_VIEW_PROPERTY(onChangeSync, RCTDirectEventBlock) RCT_EXPORT_VIEW_PROPERTY(onSelectionChange, RCTDirectEventBlock) RCT_EXPORT_VIEW_PROPERTY(onScroll, RCTDirectEventBlock) @@ -311,7 +311,7 @@ index 407d46e..0a5b412 100644 RCT_EXPORT_SHADOW_PROPERTY(text, NSString) RCT_EXPORT_SHADOW_PROPERTY(placeholder, NSString) diff --git a/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.mm b/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.mm -index 377f41e..b8f48e6 100644 +index 377f41e..b54adeb 100644 --- a/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.mm +++ b/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.mm @@ -12,6 +12,10 @@ @@ -370,10 +370,10 @@ index 377f41e..b8f48e6 100644 #pragma mark - Layout diff --git a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm -index 44c8737..0efbbe7 100644 +index 92ce922..d30983f 100644 --- a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +++ b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm -@@ -520,6 +520,13 @@ static NSSet *returnKeyTypesSet; +@@ -524,6 +524,13 @@ static NSSet *returnKeyTypesSet; } } @@ -389,7 +389,7 @@ index 44c8737..0efbbe7 100644 - (void)scrollViewDidScroll:(UIScrollView *)scrollView diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/PasteWatcher.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/PasteWatcher.java new file mode 100644 -index 0000000..bfb5819 +index 0000000..a0cc12d --- /dev/null +++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/PasteWatcher.java @@ -0,0 +1,17 @@ @@ -411,7 +411,7 @@ index 0000000..bfb5819 + public void onPaste(String type, String data); +} diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.kt b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.kt -index 42f6e03..ffba031 100644 +index fb8f4b1..b2bfdaa 100644 --- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.kt +++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.kt @@ -8,6 +8,10 @@ @@ -434,7 +434,7 @@ index 42f6e03..ffba031 100644 import android.os.Build import android.os.Bundle import android.text.Editable -@@ -128,6 +133,7 @@ public open class ReactEditText public constructor(context: Context) : AppCompat +@@ -127,6 +133,7 @@ public open class ReactEditText public constructor(context: Context) : AppCompat private var selectionWatcher: SelectionWatcher? = null private var contentSizeWatcher: ContentSizeWatcher? = null private var scrollWatcher: ScrollWatcher? @@ -442,7 +442,7 @@ index 42f6e03..ffba031 100644 private var keyListener: InternalKeyListener? = null private var detectScrollMovement = false private var onKeyPress = false -@@ -212,6 +219,7 @@ public open class ReactEditText public constructor(context: Context) : AppCompat +@@ -211,6 +218,7 @@ public open class ReactEditText public constructor(context: Context) : AppCompat keyListener = InternalKeyListener() } scrollWatcher = null @@ -450,13 +450,14 @@ index 42f6e03..ffba031 100644 textAttributes = TextAttributes() applyTextAttributes() -@@ -356,9 +364,50 @@ public open class ReactEditText public constructor(context: Context) : AppCompat +@@ -367,10 +375,50 @@ public open class ReactEditText public constructor(context: Context) : AppCompat * Called when a context menu option for the text view is selected. * React Native replaces copy (as rich text) with copy as plain text. */ - override fun onTextContextMenuItem(id: Int): Boolean = - super.onTextContextMenuItem( -- if (id == android.R.id.paste) android.R.id.pasteAsPlainText else id) +- if (id == android.R.id.paste) android.R.id.pasteAsPlainText else id +- ) + override fun onTextContextMenuItem(id: Int): Boolean { + val modifiedId = if (id == android.R.id.paste || id == android.R.id.pasteAsPlainText) { + android.R.id.pasteAsPlainText @@ -504,7 +505,7 @@ index 42f6e03..ffba031 100644 internal fun clearFocusAndMaybeRefocus() { if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P || !isInTouchMode) { -@@ -421,6 +470,10 @@ public open class ReactEditText public constructor(context: Context) : AppCompat +@@ -433,6 +481,10 @@ public open class ReactEditText public constructor(context: Context) : AppCompat this.scrollWatcher = scrollWatcher } @@ -516,19 +517,19 @@ index 42f6e03..ffba031 100644 * Attempt to set a selection or fail silently. Intentionally meant to handle bad inputs. * EventCounter is the same one used as with text. diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt -index f47c87a..3588df6 100644 +index dda54f7..bf7a1c1 100644 --- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt +++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt -@@ -135,6 +135,8 @@ public open class ReactTextInputManager public constructor() : - mapOf(getJSEventName(ScrollEventType.SCROLL) to mapOf("registrationName" to "onScroll"))) +@@ -149,6 +149,8 @@ public open class ReactTextInputManager public constructor() : + ) eventTypeConstants.putAll( mapOf(ReactTextClearEvent.EVENT_NAME to mapOf("registrationName" to "onClear"))) + eventTypeConstants.putAll( -+ mapOf("topPaste" to mapOf("registrationName" to "onPaste"))) ++ mapOf("topPaste" to mapOf("registrationName" to "onPaste"))) return eventTypeConstants } -@@ -349,6 +351,15 @@ public open class ReactTextInputManager public constructor() : +@@ -376,6 +378,15 @@ public open class ReactTextInputManager public constructor() : } } @@ -544,7 +545,7 @@ index f47c87a..3588df6 100644 @ReactProp(name = "onKeyPress", defaultBoolean = false) public fun setOnKeyPress(view: ReactEditText, onKeyPress: Boolean) { view.setOnKeyPress(onKeyPress) -@@ -966,6 +977,24 @@ public open class ReactTextInputManager public constructor() : +@@ -1011,6 +1022,24 @@ public open class ReactTextInputManager public constructor() : } } @@ -571,7 +572,7 @@ index f47c87a..3588df6 100644 "AutoCapitalizationType" to diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputPasteEvent.kt b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputPasteEvent.kt new file mode 100644 -index 0000000..98bb63f +index 0000000..6f5b10b --- /dev/null +++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputPasteEvent.kt @@ -0,0 +1,61 @@ @@ -661,14 +662,14 @@ index 42c445b..22ff2d9 100644 const std::string& name, const Metrics& textInputMetrics, diff --git a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/TextInputEventEmitter.h b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/TextInputEventEmitter.h -index 968c93c..4396346 100644 +index f88919c..c1118e3 100644 --- a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/TextInputEventEmitter.h +++ b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/TextInputEventEmitter.h @@ -45,6 +45,7 @@ class TextInputEventEmitter : public ViewEventEmitter { - void onSubmitEditing(const Metrics& textInputMetrics) const; - void onKeyPress(const KeyPressMetrics& keyPressMetrics) const; - void onScroll(const Metrics& textInputMetrics) const; -+ void onPaste(const std::string& type, const std::string& data) const; + void onSubmitEditing(const Metrics &textInputMetrics) const; + void onKeyPress(const KeyPressMetrics &keyPressMetrics) const; + void onScroll(const Metrics &textInputMetrics) const; ++ void onPaste(const std::string &type, const std::string &data) const; private: void dispatchTextInputEvent( diff --git a/patches/react-native/react-native+0.81.4+012+alert-style.patch b/patches/react-native/react-native+0.83.1+012+alert-style.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+012+alert-style.patch rename to patches/react-native/react-native+0.83.1+012+alert-style.patch diff --git a/patches/react-native/react-native+0.81.4+013+fixNavigationAnimations.patch b/patches/react-native/react-native+0.83.1+013+fixNavigationAnimations.patch similarity index 67% rename from patches/react-native/react-native+0.81.4+013+fixNavigationAnimations.patch rename to patches/react-native/react-native+0.83.1+013+fixNavigationAnimations.patch index a3d53a186b6d4..36d0ef38e3b25 100644 --- a/patches/react-native/react-native+0.81.4+013+fixNavigationAnimations.patch +++ b/patches/react-native/react-native+0.83.1+013+fixNavigationAnimations.patch @@ -1,29 +1,29 @@ diff --git a/node_modules/react-native/Libraries/Animated/nodes/AnimatedProps.js b/node_modules/react-native/Libraries/Animated/nodes/AnimatedProps.js -index 750569f..d458d7a 100644 +index af89f0d..aed96ca 100644 --- a/node_modules/react-native/Libraries/Animated/nodes/AnimatedProps.js +++ b/node_modules/react-native/Libraries/Animated/nodes/AnimatedProps.js @@ -97,6 +97,7 @@ export default class AnimatedProps extends AnimatedNode { - #nodes: $ReadOnlyArray; - #props: {[string]: mixed}; - #target: ?TargetView = null; -+ #connectedToView: boolean; + _nodes: $ReadOnlyArray; + _props: {[string]: mixed}; + _target: ?TargetView = null; ++ _connectedToView: boolean; constructor( inputProps: {[string]: mixed}, @@ -110,6 +111,7 @@ export default class AnimatedProps extends AnimatedNode { - this.#nodes = nodes; - this.#props = props; - this.#callback = callback; -+ this.#connectedToView = false; + this._nodes = nodes; + this._props = props; + this._callback = callback; ++ this._connectedToView = false; } __getValue(): Object { @@ -248,6 +250,8 @@ export default class AnimatedProps extends AnimatedNode { - if (this.#target != null) { - this.#connectAnimatedView(this.#target); -+ } else if (!this.#connectedToView && this._animatedView) { -+ this.#connectAnimatedView(this.#target); + if (this._target != null) { + this.#connectAnimatedView(this._target); ++ } else if (!this._connectedToView && this._animatedView) { ++ this.#connectAnimatedView(this._target); } } } @@ -31,7 +31,7 @@ index 750569f..d458d7a 100644 throw new Error('Unable to locate attached view in the native tree'); } } -+ this.#connectedToView = true; ++ this._connectedToView = true; NativeAnimatedHelper.API.connectAnimatedNodeToView( this.__getNativeTag(), viewTag, @@ -39,7 +39,7 @@ index 750569f..d458d7a 100644 if (viewTag == null) { return; } -+ this.#connectedToView = false; ++ this._connectedToView = false; NativeAnimatedHelper.API.disconnectAnimatedNodeFromView( this.__getNativeTag(), viewTag, diff --git a/patches/react-native/react-native+0.83.1+014+fixScrollViewState.patch b/patches/react-native/react-native+0.83.1+014+fixScrollViewState.patch new file mode 100644 index 0000000000000..164dcb069fd24 --- /dev/null +++ b/patches/react-native/react-native+0.83.1+014+fixScrollViewState.patch @@ -0,0 +1,13 @@ +diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt +index 7e86543..595acb9 100644 +--- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt ++++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt +@@ -630,7 +630,7 @@ public object ReactScrollViewHelper { + /** Get the padding on the top for nav bar */ + var scrollAwayPaddingTop: Int = 0, + /** Get the Fabric state of last scroll position */ +- val lastStateUpdateScroll: Point = Point(-1, -1), ++ val lastStateUpdateScroll: Point = Point(0, 0), + /** Get true if the previous animation was canceled */ + var isCanceled: Boolean = false, + /** Get true if previous animation was finished */ diff --git a/patches/react-native/react-native+0.81.4+015+android-keyboard-avoiding-view.patch b/patches/react-native/react-native+0.83.1+015+android-keyboard-avoiding-view.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+015+android-keyboard-avoiding-view.patch rename to patches/react-native/react-native+0.83.1+015+android-keyboard-avoiding-view.patch diff --git a/patches/react-native/react-native+0.81.4+016+fix-mask-persisting-recycling.patch b/patches/react-native/react-native+0.83.1+016+fix-mask-persisting-recycling.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+016+fix-mask-persisting-recycling.patch rename to patches/react-native/react-native+0.83.1+016+fix-mask-persisting-recycling.patch diff --git a/patches/react-native/react-native+0.81.4+017+fix-text-selecting-on-change.patch b/patches/react-native/react-native+0.83.1+017+fix-text-selecting-on-change.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+017+fix-text-selecting-on-change.patch rename to patches/react-native/react-native+0.83.1+017+fix-text-selecting-on-change.patch diff --git a/patches/react-native/react-native+0.81.4+018+fix-dropping-mutations-in-transactions.patch b/patches/react-native/react-native+0.83.1+018+fix-dropping-mutations-in-transactions.patch similarity index 90% rename from patches/react-native/react-native+0.81.4+018+fix-dropping-mutations-in-transactions.patch rename to patches/react-native/react-native+0.83.1+018+fix-dropping-mutations-in-transactions.patch index cf53e6ab29dbc..d8ac4fdb1826b 100644 --- a/patches/react-native/react-native+0.81.4+018+fix-dropping-mutations-in-transactions.patch +++ b/patches/react-native/react-native+0.83.1+018+fix-dropping-mutations-in-transactions.patch @@ -1,8 +1,8 @@ diff --git a/node_modules/react-native/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp b/node_modules/react-native/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp -index 3ccff28..3cc20c3 100644 +index 801c8f1..005a00f 100644 --- a/node_modules/react-native/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp +++ b/node_modules/react-native/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp -@@ -611,7 +611,7 @@ void FabricUIManagerBinding::schedulerDidFinishTransaction( +@@ -615,7 +615,7 @@ void FabricUIManagerBinding::schedulerDidFinishTransaction( mountingTransaction->getSurfaceId(); }); @@ -47,12 +47,12 @@ index d7dd1bc..d95d779 100644 + } // namespace facebook::react diff --git a/node_modules/react-native/ReactCommon/react/renderer/mounting/MountingTransaction.h b/node_modules/react-native/ReactCommon/react/renderer/mounting/MountingTransaction.h -index 277e9f4..38629db 100644 +index 7841b5a..4e91679 100644 --- a/node_modules/react-native/ReactCommon/react/renderer/mounting/MountingTransaction.h +++ b/node_modules/react-native/ReactCommon/react/renderer/mounting/MountingTransaction.h -@@ -85,6 +85,14 @@ class MountingTransaction final { +@@ -83,6 +83,14 @@ class MountingTransaction final { */ - void mergeWith(MountingTransaction&& transaction); + void mergeWith(MountingTransaction &&transaction); + /* + * Checks whether the two transactions can be safely merged. Due to @@ -60,7 +60,7 @@ index 277e9f4..38629db 100644 + * REMOVE -> DELETE | CREATE -> INSERT (2 transactions) may get changed to + * INSERT -> REMOVE -> DELETE and the state will diverge from there. + */ -+ bool canMergeWith(MountingTransaction& transaction); ++ bool canMergeWith(MountingTransaction &transaction); + private: SurfaceId surfaceId_; diff --git a/patches/react-native/react-native+0.81.4+019+fix-crash-when-deleting-expense.patch b/patches/react-native/react-native+0.83.1+019+fix-crash-when-deleting-expense.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+019+fix-crash-when-deleting-expense.patch rename to patches/react-native/react-native+0.83.1+019+fix-crash-when-deleting-expense.patch diff --git a/patches/react-native/react-native+0.81.4+021+publish-gradle.patch b/patches/react-native/react-native+0.83.1+020+publish-gradle.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+021+publish-gradle.patch rename to patches/react-native/react-native+0.83.1+020+publish-gradle.patch diff --git a/patches/react-native/react-native+0.81.4+022+fix-display-contents-not-updating-nodes.patch b/patches/react-native/react-native+0.83.1+021+fix-display-contents-not-updating-nodes.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+022+fix-display-contents-not-updating-nodes.patch rename to patches/react-native/react-native+0.83.1+021+fix-display-contents-not-updating-nodes.patch diff --git a/patches/react-native/react-native+0.81.4+023+textinput-prevent-focus-on-first-responder.patch b/patches/react-native/react-native+0.83.1+022+textinput-prevent-focus-on-first-responder.patch similarity index 91% rename from patches/react-native/react-native+0.81.4+023+textinput-prevent-focus-on-first-responder.patch rename to patches/react-native/react-native+0.83.1+022+textinput-prevent-focus-on-first-responder.patch index b7ed06816bab2..17a9f8a965a6c 100644 --- a/patches/react-native/react-native+0.81.4+023+textinput-prevent-focus-on-first-responder.patch +++ b/patches/react-native/react-native+0.83.1+022+textinput-prevent-focus-on-first-responder.patch @@ -37,10 +37,10 @@ index 9143695..046b753 100644 onClear: true, onChange: 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 3ea6d67..61309ef 100644 +index 03262de..3b7f6fb 100644 --- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts +++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts -@@ -820,6 +820,11 @@ export interface TextInputProps +@@ -817,6 +817,11 @@ export interface TextInputProps */ multiline?: boolean | undefined; @@ -52,7 +52,7 @@ index 3ea6d67..61309ef 100644 /** * Callback that is called when the text input is blurred * -@@ -1077,4 +1082,9 @@ export class TextInput extends TextInputBase { +@@ -1074,4 +1079,9 @@ export class TextInput extends TextInputBase { * Sets the start and end positions of text selection. */ setSelection: (start: number, end: number) => void; @@ -63,22 +63,22 @@ index 3ea6d67..61309ef 100644 + preventFocusOnFirstResponderOnce: () => void; } 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 ad2bf61..2ca6e97 100644 +index ede5607..6d1e2a4 100644 --- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js +++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js -@@ -1059,6 +1059,7 @@ export interface TextInputInstance extends HostInstance { - +isFocused: () => boolean; - +getNativeRef: () => ?HostInstance; - +setSelection: (start: number, end: number) => void; -+ +preventFocusOnFirstResponderOnce: () => void; +@@ -1064,6 +1064,7 @@ declare class _TextInputInstance extends ReactNativeElement { + isFocused(): boolean; + getNativeRef(): ?ReactNativeElement; + setSelection(start: number, end: number): void; ++ preventFocusOnFirstResponderOnce(): void; } - /** + export type TextInputInstance = _TextInputInstance; diff --git a/node_modules/react-native/Libraries/Components/TextInput/TextInput.js b/node_modules/react-native/Libraries/Components/TextInput/TextInput.js -index fb29328..90fc6f2 100644 +index 5d05624..bbb6465 100644 --- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.js +++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.js -@@ -481,6 +481,11 @@ function InternalTextInput(props: TextInputProps): React.Node { +@@ -487,6 +487,11 @@ function InternalTextInput(props: TextInputProps): React.Node { ); } }, @@ -106,7 +106,7 @@ index 9da8899..bf87ffd 100644 export default supportedCommands; diff --git a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm -index 9f4863a..18980d7 100644 +index d30983f..eb57eb8 100644 --- a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +++ b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm @@ -76,6 +76,16 @@ static NSSet *returnKeyTypesSet; @@ -137,7 +137,7 @@ index 9f4863a..18980d7 100644 if (newTextInputProps.acceptDragAndDropTypes != oldTextInputProps.acceptDragAndDropTypes) { if (!newTextInputProps.acceptDragAndDropTypes.has_value()) { _backedTextInputView.acceptDragAndDropTypes = nil; -@@ -390,6 +404,15 @@ static NSSet *returnKeyTypesSet; +@@ -393,6 +407,15 @@ static NSSet *returnKeyTypesSet; - (BOOL)textInputShouldBeginEditing { @@ -153,7 +153,7 @@ index 9f4863a..18980d7 100644 return YES; } -@@ -613,6 +636,16 @@ static NSSet *returnKeyTypesSet; +@@ -616,6 +639,16 @@ static NSSet *returnKeyTypesSet; _comingFromJS = NO; } @@ -203,10 +203,10 @@ index f674d98..6ad10ec 100644 RCTLogError(@"%@ received command %@, which is not a supported command.", @"TextInput", commandName); #endif diff --git a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.cpp b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.cpp -index 6273740..211be13 100644 +index ac3adc4..5a84c01 100644 --- a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.cpp +++ b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.cpp -@@ -127,6 +127,12 @@ BaseTextInputProps::BaseTextInputProps( +@@ -123,6 +123,12 @@ BaseTextInputProps::BaseTextInputProps( "multiline", sourceProps.multiline, {false})), @@ -219,7 +219,7 @@ index 6273740..211be13 100644 disableKeyboardShortcuts(convertRawProp( context, rawProps, -@@ -228,6 +234,7 @@ void BaseTextInputProps::setProp( +@@ -224,6 +230,7 @@ void BaseTextInputProps::setProp( RAW_SET_PROP_SWITCH_CASE_BASIC(multiline); RAW_SET_PROP_SWITCH_CASE_BASIC(disableKeyboardShortcuts); RAW_SET_PROP_SWITCH_CASE_BASIC(acceptDragAndDropTypes); @@ -228,10 +228,10 @@ index 6273740..211be13 100644 } diff --git a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.h b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.h -index 5802350..b3f34cc 100644 +index 8994a42..332b3d1 100644 --- a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.h +++ b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.h -@@ -80,6 +80,8 @@ class BaseTextInputProps : public ViewProps, public BaseTextProps { +@@ -77,6 +77,8 @@ class BaseTextInputProps : public ViewProps, public BaseTextProps { bool multiline{false}; diff --git a/patches/react-native/react-native+0.81.4+024+fix-modal-transparent-navigation-bar.patch b/patches/react-native/react-native+0.83.1+023+fix-modal-transparent-navigation-bar.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+024+fix-modal-transparent-navigation-bar.patch rename to patches/react-native/react-native+0.83.1+023+fix-modal-transparent-navigation-bar.patch diff --git a/patches/react-native/react-native+0.83.1+024+restore-interaction-manager.patch b/patches/react-native/react-native+0.83.1+024+restore-interaction-manager.patch new file mode 100644 index 0000000000000..67d7ceb057542 --- /dev/null +++ b/patches/react-native/react-native+0.83.1+024+restore-interaction-manager.patch @@ -0,0 +1,518 @@ +diff --git a/node_modules/react-native/Libraries/Interaction/InteractionManager.js b/node_modules/react-native/Libraries/Interaction/InteractionManager.js +index 410dfe3..d36fb18 100644 +--- a/node_modules/react-native/Libraries/Interaction/InteractionManager.js ++++ b/node_modules/react-native/Libraries/Interaction/InteractionManager.js +@@ -10,28 +10,45 @@ + + import type {EventSubscription} from '../vendor/emitter/EventEmitter'; + +-const invariant = require('invariant'); +- + export type SimpleTask = { +- name: string, +- run: () => void, ++ name: string, ++ run: () => void, + }; + export type PromiseTask = { +- name: string, +- gen: () => Promise, ++ name: string, ++ gen: () => Promise, + }; +-export type Task = SimpleTask | PromiseTask | (() => void); + + export type Handle = number; + + // NOTE: The original implementation of `InteractionManager` never rejected + // the returned promise. This preserves that behavior in the stub. + function reject(error: Error): void { +- setTimeout(() => { +- throw error; +- }, 0); ++ setTimeout(() => { ++ throw error; ++ }, 0); + } + ++import type {Task} from './TaskQueue'; ++ ++import EventEmitter from '../vendor/emitter/EventEmitter'; ++ ++const BatchedBridge = require('../BatchedBridge/BatchedBridge').default; ++const TaskQueue = require('./TaskQueue').default; ++const invariant = require('invariant'); ++ ++export type {Task, SimpleTask, PromiseTask} from './TaskQueue'; ++ ++export type Handle = number; ++ ++const _emitter = new EventEmitter<{ ++ interactionComplete: [], ++ interactionStart: [], ++}>(); ++ ++const DEBUG_DELAY: 0 = 0; ++const DEBUG: false = false; ++ + /** + * InteractionManager allows long-running work to be scheduled after any + * interactions/animations have completed. In particular, this allows JavaScript +@@ -83,106 +100,154 @@ function reject(error: Error): void { + * + * @deprecated + */ +-const InteractionManagerStub = { +- Events: { +- interactionStart: 'interactionStart', +- interactionComplete: 'interactionComplete', +- }, +- +- /** +- * Schedule a function to run after all interactions have completed. Returns a cancellable +- * "promise". +- * +- * @deprecated +- */ +- runAfterInteractions(task: ?Task): { +- then: ( +- onFulfill?: ?(void) => ?(Promise | U), +- onReject?: ?(error: mixed) => ?(Promise | U), +- ) => Promise, +- cancel: () => void, +- ... +- } { +- let immediateID: ?$FlowFixMe; +- const promise = new Promise(resolve => { +- immediateID = setImmediate(() => { +- if (typeof task === 'object' && task !== null) { +- if (typeof task.gen === 'function') { +- task.gen().then(resolve, reject); +- } else if (typeof task.run === 'function') { +- try { +- task.run(); +- resolve(); +- } catch (error) { +- reject(error); ++const InteractionManagerImpl = { ++ Events: { ++ interactionStart: 'interactionStart', ++ interactionComplete: 'interactionComplete', ++ }, ++ ++ /** ++ * Schedule a function to run after all interactions have completed. Returns a cancellable ++ * "promise". ++ */ ++ runAfterInteractions(task: ?Task): { ++ then: ( ++ onFulfill?: ?(void) => ?(Promise | U), ++ onReject?: ?(error: mixed) => ?(Promise | U), ++ ) => Promise, ++ cancel: () => void, ++ ... ++ } { ++ const tasks: Array = []; ++ const promise = new Promise((resolve: () => void) => { ++ _scheduleUpdate(); ++ if (task) { ++ tasks.push(task); + } +- } else { +- reject(new TypeError(`Task "${task.name}" missing gen or run.`)); +- } +- } else if (typeof task === 'function') { +- try { +- task(); +- resolve(); +- } catch (error) { +- reject(error); +- } ++ tasks.push({ ++ run: resolve, ++ name: 'resolve ' + ((task && task.name) || '?'), ++ }); ++ _taskQueue.enqueueTasks(tasks); ++ }); ++ return { ++ // $FlowFixMe[method-unbinding] added when improving typing for this parameters ++ then: promise.then.bind(promise), ++ cancel: function () { ++ _taskQueue.cancelTasks(tasks); ++ }, ++ }; ++ }, ++ ++ /** ++ * Notify manager that an interaction has started. ++ */ ++ createInteractionHandle(): Handle { ++ /* $FlowFixMe[constant-condition] Error discovered during Constant ++ * Condition roll out. See https://fburl.com/workplace/1v97vimq. */ ++ DEBUG && console.log('InteractionManager: create interaction handle'); ++ _scheduleUpdate(); ++ const handle = ++_inc; ++ _addInteractionSet.add(handle); ++ return handle; ++ }, ++ ++ /** ++ * Notify manager that an interaction has completed. ++ */ ++ clearInteractionHandle(handle: Handle) { ++ /* $FlowFixMe[constant-condition] Error discovered during Constant ++ * Condition roll out. See https://fburl.com/workplace/1v97vimq. */ ++ DEBUG && console.log('InteractionManager: clear interaction handle'); ++ invariant(!!handle, 'InteractionManager: Must provide a handle to clear.'); ++ _scheduleUpdate(); ++ _addInteractionSet.delete(handle); ++ _deleteInteractionSet.add(handle); ++ }, ++ ++ // $FlowFixMe[unclear-type] unclear type of _emitter ++ // $FlowFixMe[method-unbinding] added when improving typing for this parameters ++ addListener: _emitter.addListener.bind(_emitter) as ( ++ eventType: string, ++ // $FlowFixMe[unclear-type] unclear type of arguments ++ listener: (...args: any) => mixed, ++ context: mixed, ++ ) => EventSubscription, ++ ++ /** ++ * A positive number will use setTimeout to schedule any tasks after the ++ * eventLoopRunningTime hits the deadline value, otherwise all tasks will be ++ * executed in one setImmediate batch (default). ++ */ ++ setDeadline(deadline: number) { ++ _deadline = deadline; ++ }, ++}; ++ ++const _interactionSet = new Set(); ++const _addInteractionSet = new Set(); ++const _deleteInteractionSet = new Set(); ++const _taskQueue = new TaskQueue({onMoreTasks: _scheduleUpdate}); ++let _nextUpdateHandle: $FlowFixMe | TimeoutID = 0; ++let _inc = 0; ++let _deadline = -1; ++ ++/** ++ * Schedule an asynchronous update to the interaction state. ++ */ ++function _scheduleUpdate() { ++ if (!_nextUpdateHandle) { ++ if (_deadline > 0) { ++ _nextUpdateHandle = setTimeout(_processUpdate, 0 + DEBUG_DELAY); + } else { +- reject(new TypeError('Invalid task of type: ' + typeof task)); ++ _nextUpdateHandle = setImmediate(_processUpdate); + } +- }); +- }); +- +- return { +- // $FlowFixMe[method-unbinding] added when improving typing for this parameters +- then: promise.then.bind(promise), +- cancel() { +- clearImmediate(immediateID); +- }, +- }; +- }, +- +- /** +- * Notify manager that an interaction has started. +- * +- * @deprecated +- */ +- createInteractionHandle(): Handle { +- return -1; +- }, +- +- /** +- * Notify manager that an interaction has completed. +- * +- * @deprecated +- */ +- clearInteractionHandle(handle: Handle) { +- invariant(!!handle, 'InteractionManager: Must provide a handle to clear.'); +- }, +- +- /** +- * @deprecated +- */ +- addListener( +- eventType: string, +- // $FlowFixMe[unclear-type] +- listener: (...args: any) => mixed, +- context: mixed, +- ): EventSubscription { +- return { +- remove() {}, +- }; +- }, +- +- /** +- * A positive number will use setTimeout to schedule any tasks after the +- * eventLoopRunningTime hits the deadline value, otherwise all tasks will be +- * executed in one setImmediate batch (default). +- * +- * @deprecated +- */ +- setDeadline(deadline: number) { +- // Do nothing. +- }, +-}; ++ } ++} ++ ++/** ++ * Notify listeners, process queue, etc ++ */ ++function _processUpdate() { ++ _nextUpdateHandle = 0; ++ ++ const interactionCount = _interactionSet.size; ++ _addInteractionSet.forEach(handle => _interactionSet.add(handle)); ++ _deleteInteractionSet.forEach(handle => _interactionSet.delete(handle)); ++ const nextInteractionCount = _interactionSet.size; ++ ++ if (interactionCount !== 0 && nextInteractionCount === 0) { ++ // transition from 1+ --> 0 interactions ++ /* $FlowFixMe[prop-missing] Natural Inference rollout. See ++ * https://fburl.com/workplace/6291gfvu */ ++ /* $FlowFixMe[invalid-computed-prop] Natural Inference rollout. See ++ * https://fburl.com/workplace/6291gfvu */ ++ _emitter.emit(InteractionManagerImpl.Events.interactionComplete); ++ } else if (interactionCount === 0 && nextInteractionCount !== 0) { ++ // transition from 0 --> 1+ interactions ++ /* $FlowFixMe[prop-missing] Natural Inference rollout. See ++ * https://fburl.com/workplace/6291gfvu */ ++ /* $FlowFixMe[invalid-computed-prop] Natural Inference rollout. See ++ * https://fburl.com/workplace/6291gfvu */ ++ _emitter.emit(InteractionManagerImpl.Events.interactionStart); ++ } ++ ++ // process the queue regardless of a transition ++ if (nextInteractionCount === 0) { ++ while (_taskQueue.hasTasksToProcess()) { ++ _taskQueue.processNext(); ++ if ( ++ _deadline > 0 && ++ BatchedBridge.getEventLoopRunningTime() >= _deadline ++ ) { ++ // Hit deadline before processing all tasks, so process more later. ++ _scheduleUpdate(); ++ break; ++ } ++ } ++ } ++ _addInteractionSet.clear(); ++ _deleteInteractionSet.clear(); ++} + +-export default InteractionManagerStub; ++export default InteractionManagerImpl; +diff --git a/node_modules/react-native/Libraries/Interaction/TaskQueue.js b/node_modules/react-native/Libraries/Interaction/TaskQueue.js +new file mode 100644 +index 0000000..70e6314 +--- /dev/null ++++ b/node_modules/react-native/Libraries/Interaction/TaskQueue.js +@@ -0,0 +1,198 @@ ++/** ++ * 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. ++ * ++ * @flow strict ++ * @format ++ */ ++ ++'use strict'; ++ ++const invariant = require('invariant'); ++ ++export type SimpleTask = { ++ name: string, ++ run: () => void, ++}; ++export type PromiseTask = { ++ name: string, ++ gen: () => Promise, ++}; ++export type Task = SimpleTask | PromiseTask | (() => void); ++ ++const DEBUG: false = false; ++ ++/** ++ * TaskQueue - A system for queueing and executing a mix of simple callbacks and ++ * trees of dependent tasks based on Promises. No tasks are executed unless ++ * `processNext` is called. ++ * ++ * `enqueue` takes a Task object with either a simple `run` callback, or a ++ * `gen` function that returns a `Promise` and puts it in the queue. If a gen ++ * function is supplied, then the promise it returns will block execution of ++ * tasks already in the queue until it resolves. This can be used to make sure ++ * the first task is fully resolved (including asynchronous dependencies that ++ * also schedule more tasks via `enqueue`) before starting on the next task. ++ * The `onMoreTasks` constructor argument is used to inform the owner that an ++ * async task has resolved and that the queue should be processed again. ++ * ++ * Note: Tasks are only actually executed with explicit calls to `processNext`. ++ */ ++class TaskQueue { ++ /** ++ * TaskQueue instances are self contained and independent, so multiple tasks ++ * of varying semantics and priority can operate together. ++ * ++ * `onMoreTasks` is invoked when `PromiseTask`s resolve if there are more ++ * tasks to process. ++ */ ++ constructor({ onMoreTasks }: { onMoreTasks: () => void, ... }) { ++ this._onMoreTasks = onMoreTasks; ++ this._queueStack = [{ tasks: [], popable: false }]; ++ } ++ ++ /** ++ * Add a task to the queue. It is recommended to name your tasks for easier ++ * async debugging. Tasks will not be executed until `processNext` is called ++ * explicitly. ++ */ ++ enqueue(task: Task): void { ++ this._getCurrentQueue().push(task); ++ } ++ ++ enqueueTasks(tasks: Array): void { ++ tasks.forEach(task => this.enqueue(task)); ++ } ++ ++ cancelTasks(tasksToCancel: Array): void { ++ // search through all tasks and remove them. ++ this._queueStack = this._queueStack ++ .map(queue => ({ ++ ...queue, ++ tasks: queue.tasks.filter(task => tasksToCancel.indexOf(task) === -1), ++ })) ++ .filter((queue, idx) => queue.tasks.length > 0 || idx === 0); ++ } ++ ++ /** ++ * Check to see if `processNext` should be called. ++ * ++ * @returns {boolean} Returns true if there are tasks that are ready to be ++ * processed with `processNext`, or returns false if there are no more tasks ++ * to be processed right now, although there may be tasks in the queue that ++ * are blocked by earlier `PromiseTask`s that haven't resolved yet. ++ * `onMoreTasks` will be called after each `PromiseTask` resolves if there are ++ * tasks ready to run at that point. ++ */ ++ hasTasksToProcess(): boolean { ++ return this._getCurrentQueue().length > 0; ++ } ++ ++ /** ++ * Executes the next task in the queue. ++ */ ++ processNext(): void { ++ const queue = this._getCurrentQueue(); ++ if (queue.length) { ++ const task = queue.shift(); ++ try { ++ if (typeof task === 'object' && task.gen) { ++ /* $FlowFixMe[constant-condition] Error discovered during Constant ++ * Condition roll out. See https://fburl.com/workplace/1v97vimq. */ ++ DEBUG && console.log('TaskQueue: genPromise for task ' + task.name); ++ this._genPromise(task); ++ } else if (typeof task === 'object' && task.run) { ++ /* $FlowFixMe[constant-condition] Error discovered during Constant ++ * Condition roll out. See https://fburl.com/workplace/1v97vimq. */ ++ DEBUG && console.log('TaskQueue: run task ' + task.name); ++ task.run(); ++ } else { ++ invariant( ++ typeof task === 'function', ++ 'Expected Function, SimpleTask, or PromiseTask, but got:\n' + ++ JSON.stringify(task, null, 2), ++ ); ++ /* $FlowFixMe[constant-condition] Error discovered during Constant ++ * Condition roll out. See https://fburl.com/workplace/1v97vimq. */ ++ DEBUG && console.log('TaskQueue: run anonymous task'); ++ task(); ++ } ++ } catch (e) { ++ e.message = ++ // $FlowFixMe[incompatible-type] ++ // $FlowFixMe[incompatible-use] ++ 'TaskQueue: Error with task ' + (task.name || '') + ': ' + e.message; ++ throw e; ++ } ++ } ++ } ++ ++ _queueStack: Array<{ ++ tasks: Array, ++ popable: boolean, ++ ... ++ }>; ++ _onMoreTasks: () => void; ++ ++ _getCurrentQueue(): Array { ++ const stackIdx = this._queueStack.length - 1; ++ const queue = this._queueStack[stackIdx]; ++ if ( ++ queue.popable && ++ queue.tasks.length === 0 && ++ this._queueStack.length > 1 ++ ) { ++ this._queueStack.pop(); ++ /* $FlowFixMe[constant-condition] Error discovered during Constant ++ * Condition roll out. See https://fburl.com/workplace/1v97vimq. */ ++ DEBUG && ++ console.log('TaskQueue: popped queue: ', { ++ stackIdx, ++ queueStackSize: this._queueStack.length, ++ }); ++ return this._getCurrentQueue(); ++ } else { ++ return queue.tasks; ++ } ++ } ++ ++ _genPromise(task: PromiseTask) { ++ // Each async task pushes it's own queue onto the queue stack. This ++ // effectively defers execution of previously queued tasks until the promise ++ // resolves, at which point we allow the new queue to be popped, which ++ // happens once it is fully processed. ++ this._queueStack.push({ tasks: [], popable: false }); ++ const stackIdx = this._queueStack.length - 1; ++ const stackItem = this._queueStack[stackIdx]; ++ /* $FlowFixMe[constant-condition] Error discovered during Constant ++ * Condition roll out. See https://fburl.com/workplace/1v97vimq. */ ++ DEBUG && console.log('TaskQueue: push new queue: ', { stackIdx }); ++ /* $FlowFixMe[constant-condition] Error discovered during Constant ++ * Condition roll out. See https://fburl.com/workplace/1v97vimq. */ ++ DEBUG && console.log('TaskQueue: exec gen task ' + task.name); ++ task ++ .gen() ++ .then(() => { ++ /* $FlowFixMe[constant-condition] Error discovered during Constant ++ * Condition roll out. See https://fburl.com/workplace/1v97vimq. */ ++ DEBUG && ++ console.log('TaskQueue: onThen for gen task ' + task.name, { ++ stackIdx, ++ queueStackSize: this._queueStack.length, ++ }); ++ stackItem.popable = true; ++ this.hasTasksToProcess() && this._onMoreTasks(); ++ }) ++ .catch(ex => { ++ setTimeout(() => { ++ ex.message = `TaskQueue: Error resolving Promise in task ${task.name}: ${ex.message}`; ++ throw ex; ++ }, 0); ++ }); ++ } ++} ++ ++export default TaskQueue; ++ diff --git a/patches/react-native/react-native+0.81.4+026+perf-increase-initial-heap-size.patch b/patches/react-native/react-native+0.83.1+025+perf-increase-initial-heap-size.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+026+perf-increase-initial-heap-size.patch rename to patches/react-native/react-native+0.83.1+025+perf-increase-initial-heap-size.patch diff --git a/patches/react-native/react-native+0.81.4+027+perf-disable-hermes-young-gc-before-tti-reached.patch b/patches/react-native/react-native+0.83.1+026+perf-disable-hermes-young-gc-before-tti-reached.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+027+perf-disable-hermes-young-gc-before-tti-reached.patch rename to patches/react-native/react-native+0.83.1+026+perf-disable-hermes-young-gc-before-tti-reached.patch diff --git a/patches/react-native/react-native+0.81.4+028+strip-hermes-debug-info.patch b/patches/react-native/react-native+0.83.1+027+strip-hermes-debug-info.patch similarity index 100% rename from patches/react-native/react-native+0.81.4+028+strip-hermes-debug-info.patch rename to patches/react-native/react-native+0.83.1+027+strip-hermes-debug-info.patch diff --git a/patches/react-native/react-native+0.81.4+029+log-soft-exception-if-viewState-not-found.patch b/patches/react-native/react-native+0.83.1+028+log-soft-exception-if-viewState-not-found.patch similarity index 80% rename from patches/react-native/react-native+0.81.4+029+log-soft-exception-if-viewState-not-found.patch rename to patches/react-native/react-native+0.83.1+028+log-soft-exception-if-viewState-not-found.patch index 6a39a1946748c..4b6276f42b28b 100644 --- a/patches/react-native/react-native+0.81.4+029+log-soft-exception-if-viewState-not-found.patch +++ b/patches/react-native/react-native+0.83.1+028+log-soft-exception-if-viewState-not-found.patch @@ -1,8 +1,8 @@ diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java -index cdcd812..03e09d4 100644 +index 3c0b281..30ba711 100644 --- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java +++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java -@@ -685,7 +685,14 @@ public class SurfaceMountingManager { +@@ -786,7 +786,14 @@ public class SurfaceMountingManager { return; } @@ -15,6 +15,6 @@ index cdcd812..03e09d4 100644 + "Unable to find viewState for tag: " + reactTag + " for updateProps")); + return; + } - viewState.mCurrentProps = new ReactStylesDiffMap(props); - View view = viewState.mView; + if (ReactNativeFeatureFlags.overrideBySynchronousMountPropsAtMountingAndroid() + && !shouldSkipSynchronousMountPropsOverride diff --git a/patches/react-native/react-native+0.83.1+029+fix-fetching-files-android.patch b/patches/react-native/react-native+0.83.1+029+fix-fetching-files-android.patch new file mode 100644 index 0000000000000..7a8c2bc1060dd --- /dev/null +++ b/patches/react-native/react-native+0.83.1+029+fix-fetching-files-android.patch @@ -0,0 +1,158 @@ +diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobModule.kt b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobModule.kt +index 3718d04..ead0540 100644 +--- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobModule.kt ++++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobModule.kt +@@ -63,7 +63,7 @@ public class BlobModule(reactContext: ReactApplicationContext) : + } + } + +- private val networkingUriHandler = ++ internal val networkingUriHandler = + object : NetworkingModule.UriHandler { + override fun supports(uri: Uri, responseType: String): Boolean { + val scheme = uri.scheme +diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt +index 2b4dee4..13fb374 100644 +--- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt ++++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt +@@ -19,9 +19,7 @@ import com.facebook.react.common.build.ReactBuildConfig + import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags + import java.net.SocketTimeoutException + import okhttp3.Headers +-import okhttp3.Protocol + import okhttp3.Request +-import okhttp3.Response + + /** + * Utility class for reporting network lifecycle events to JavaScript and InspectorNetworkReporter. +@@ -206,11 +204,12 @@ internal object NetworkEventUtil { + requestId: Int, + devToolsRequestId: String, + requestUrl: String?, +- response: Response, ++ statusCode: Int, ++ headers: Map, ++ contentLength: Long, + ) { +- val headersMap = okHttpHeadersToMap(response.headers()) + val headersBundle = Bundle() +- for ((headerName, headerValue) in headersMap) { ++ for ((headerName, headerValue) in headers) { + headersBundle.putString(headerName, headerValue) + } + +@@ -218,59 +217,23 @@ internal object NetworkEventUtil { + InspectorNetworkReporter.reportResponseStart( + devToolsRequestId, + requestUrl.orEmpty(), +- response.code(), +- headersMap, +- response.body()?.contentLength() ?: 0, ++ statusCode, ++ headers, ++ contentLength, + ) + } + reactContext?.emitDeviceEvent( + "didReceiveNetworkResponse", + Arguments.createArray().apply { + pushInt(requestId) +- pushInt(response.code()) ++ pushInt(statusCode) + pushMap(Arguments.fromBundle(headersBundle)) + pushString(requestUrl) + }, + ) + } + +- @Deprecated("Compatibility overload") +- @JvmStatic +- fun onResponseReceived( +- reactContext: ReactApplicationContext?, +- requestId: Int, +- devToolsRequestId: String, +- statusCode: Int, +- headers: WritableMap?, +- url: String?, +- ) { +- val headersBuilder = Headers.Builder() +- headers?.let { map -> +- val iterator = map.keySetIterator() +- while (iterator.hasNextKey()) { +- val key = iterator.nextKey() +- val value = map.getString(key) +- if (value != null) { +- headersBuilder.add(key, value) +- } +- } +- } +- onResponseReceived( +- reactContext, +- requestId, +- devToolsRequestId, +- url, +- Response.Builder() +- .protocol(Protocol.HTTP_1_1) +- .request(Request.Builder().url(url.orEmpty()).build()) +- .headers(headersBuilder.build()) +- .code(statusCode) +- .message("") +- .build(), +- ) +- } +- +- private fun okHttpHeadersToMap(headers: Headers): Map { ++ internal fun okHttpHeadersToMap(headers: Headers): Map { + val responseHeaders = mutableMapOf() + for (i in 0 until headers.size()) { + val headerName = headers.name(i) +diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.kt b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.kt +index a762999..e4204b5 100644 +--- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.kt ++++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.kt +@@ -36,7 +36,6 @@ import okhttp3.JavaNetCookieJar + import okhttp3.MediaType + import okhttp3.MultipartBody + import okhttp3.OkHttpClient +-import okhttp3.Protocol + import okhttp3.Request + import okhttp3.RequestBody + import okhttp3.Response +@@ -310,21 +309,14 @@ public class NetworkingModule( + if (handler.supports(uri, responseType)) { + val (res, rawBody) = handler.fetch(uri) + val encodedDataLength = res.toString().toByteArray().size +- // fix: UriHandlers which are not using file:// scheme fail in whatwg-fetch at this line +- // https://github.com/JakeChampion/fetch/blob/main/fetch.js#L547 +- val response = +- Response.Builder() +- .protocol(Protocol.HTTP_1_1) +- .request(Request.Builder().url(url.orEmpty()).build()) +- .code(200) +- .message("OK") +- .build() + NetworkEventUtil.onResponseReceived( + reactApplicationContext, + requestId, + devToolsRequestId, + url, +- response, ++ 200, ++ emptyMap(), ++ encodedDataLength.toLong(), + ) + NetworkEventUtil.onDataReceived( + reactApplicationContext, +@@ -644,8 +636,10 @@ public class NetworkingModule( + reactApplicationContext, + requestId, + devToolsRequestId, +- url, +- response, ++ response.request().url().toString(), ++ response.code(), ++ NetworkEventUtil.okHttpHeadersToMap(response.headers()), ++ response.body()?.contentLength() ?: 0L, + ) + + try { diff --git a/patches/react-native/react-native+0.83.1+030+fix-view-stealing-first-responder.patch b/patches/react-native/react-native+0.83.1+030+fix-view-stealing-first-responder.patch new file mode 100644 index 0000000000000..377917351e52c --- /dev/null +++ b/patches/react-native/react-native+0.83.1+030+fix-view-stealing-first-responder.patch @@ -0,0 +1,13 @@ +diff --git a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +index 0b26c95..b898492 100644 +--- a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm ++++ b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +@@ -1617,7 +1617,7 @@ static NSString *RCTRecursiveAccessibilityLabel(UIView *view) + + - (BOOL)canBecomeFirstResponder + { +- return YES; ++ return ReactNativeFeatureFlags::enableImperativeFocus(); + } + + - (void)handleCommand:(const NSString *)commandName args:(const NSArray *)args diff --git a/patches/react-native/react-native+0.83.1+031+fix-exif-orientation.patch b/patches/react-native/react-native+0.83.1+031+fix-exif-orientation.patch new file mode 100644 index 0000000000000..c809e9cc8b1f3 --- /dev/null +++ b/patches/react-native/react-native+0.83.1+031+fix-exif-orientation.patch @@ -0,0 +1,57 @@ +diff --git a/node_modules/react-native/Libraries/Image/RCTImageUtils.mm b/node_modules/react-native/Libraries/Image/RCTImageUtils.mm +index d41a26f..5c19949 100644 +--- a/node_modules/react-native/Libraries/Image/RCTImageUtils.mm ++++ b/node_modules/react-native/Libraries/Image/RCTImageUtils.mm +@@ -55,6 +55,30 @@ static CGImagePropertyOrientation CGImagePropertyOrientationFromUIImageOrientati + } + } + ++static UIImageOrientation UIImageOrientationFromCGImagePropertyOrientation(CGImagePropertyOrientation cgOrientation) ++{ ++ switch (cgOrientation) { ++ case kCGImagePropertyOrientationUp: ++ return UIImageOrientationUp; ++ case kCGImagePropertyOrientationDown: ++ return UIImageOrientationDown; ++ case kCGImagePropertyOrientationLeft: ++ return UIImageOrientationLeft; ++ case kCGImagePropertyOrientationRight: ++ return UIImageOrientationRight; ++ case kCGImagePropertyOrientationUpMirrored: ++ return UIImageOrientationUpMirrored; ++ case kCGImagePropertyOrientationDownMirrored: ++ return UIImageOrientationDownMirrored; ++ case kCGImagePropertyOrientationLeftMirrored: ++ return UIImageOrientationLeftMirrored; ++ case kCGImagePropertyOrientationRightMirrored: ++ return UIImageOrientationRightMirrored; ++ default: ++ return UIImageOrientationUp; ++ } ++} ++ + CGRect RCTTargetRect(CGSize sourceSize, CGSize destSize, CGFloat destScale, RCTResizeMode resizeMode) + { + if (CGSizeEqualToSize(destSize, CGSizeZero)) { +@@ -270,6 +294,8 @@ UIImage *__nullable RCTDecodeImageWithData(NSData *data, CGSize destSize, CGFloa + NSNumber *width = (NSNumber *)CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelWidth); + NSNumber *height = (NSNumber *)CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelHeight); + CGSize sourceSize = {width.doubleValue, height.doubleValue}; ++ NSNumber *exifOrientation = (NSNumber *)CFDictionaryGetValue(imageProperties, kCGImagePropertyOrientation); ++ CGImagePropertyOrientation cgOrientation = exifOrientation ? (CGImagePropertyOrientation)[exifOrientation integerValue] : kCGImagePropertyOrientationUp; + CFRelease(imageProperties); + + if (CGSizeEqualToSize(destSize, CGSizeZero)) { +@@ -321,7 +347,11 @@ UIImage *__nullable RCTDecodeImageWithData(NSData *data, CGSize destSize, CGFloa + } + + // Return image +- UIImage *image = [UIImage imageWithCGImage:imageRef scale:destScale orientation:UIImageOrientationUp]; ++ // For thumbnails, kCGImageSourceCreateThumbnailWithTransform already rotates pixels, so use Up. ++ // For full-size images, CGImageSourceCreateImageAtIndex does NOT apply EXIF transform, ++ // so we must preserve the original EXIF orientation for correct display. ++ UIImageOrientation orientation = createThumbnail ? UIImageOrientationUp : UIImageOrientationFromCGImagePropertyOrientation(cgOrientation); ++ UIImage *image = [UIImage imageWithCGImage:imageRef scale:destScale orientation:orientation]; + CGImageRelease(imageRef); + return image; + } diff --git a/src/components/AddressSearch/isCurrentTargetInsideContainer.ts b/src/components/AddressSearch/isCurrentTargetInsideContainer.ts index a50eb747b4008..ffb82b3aac3e4 100644 --- a/src/components/AddressSearch/isCurrentTargetInsideContainer.ts +++ b/src/components/AddressSearch/isCurrentTargetInsideContainer.ts @@ -1,3 +1,4 @@ +import type {ReadOnlyNode} from 'react-native'; import type {IsCurrentTargetInsideContainerType} from './types'; const isCurrentTargetInsideContainer: IsCurrentTargetInsideContainerType = (event, containerRef) => { @@ -8,7 +9,7 @@ const isCurrentTargetInsideContainer: IsCurrentTargetInsideContainerType = (even return false; } - return !!containerRef.current.contains(event.relatedTarget as Node); + return !!containerRef.current.contains(event.relatedTarget as Node & ReadOnlyNode); }; export default isCurrentTargetInsideContainer; diff --git a/src/components/Image/BaseImage.native.tsx b/src/components/Image/BaseImage.native.tsx index 7d2c4e716dbdc..fd9a161847cf4 100644 --- a/src/components/Image/BaseImage.native.tsx +++ b/src/components/Image/BaseImage.native.tsx @@ -1,12 +1,12 @@ import {Image as ExpoImage} from 'expo-image'; -import type {ImageLoadEventData} from 'expo-image'; +import type {ImageProps as ExpoImageProps, ImageLoadEventData} from 'expo-image'; import {useCallback, useContext, useEffect, useRef} from 'react'; import type {AttachmentSource} from '@components/Attachments/types'; import getImageRecyclingKey from '@libs/getImageRecyclingKey'; import {AttachmentStateContext} from '@pages/media/AttachmentModalScreen/AttachmentModalBaseContent/AttachmentStateContextProvider'; import type {BaseImageProps} from './types'; -function BaseImage({onLoad, source, ...props}: BaseImageProps) { +function BaseImage({onLoad, source, style, ...props}: BaseImageProps) { const isLoadedRef = useRef(false); const attachmentContext = useContext(AttachmentStateContext); const {setAttachmentLoaded, isAttachmentLoaded} = attachmentContext || {}; @@ -48,6 +48,7 @@ function BaseImage({onLoad, source, ...props}: BaseImageProps) { onLoad={onLoad ? imageLoadedSuccessfully : undefined} source={source} recyclingKey={getImageRecyclingKey(source)} + style={style as ExpoImageProps['style']} // eslint-disable-next-line react/jsx-props-no-spreading {...props} /> diff --git a/src/components/Image/BaseImage.tsx b/src/components/Image/BaseImage.tsx index b8324912afef8..2818ec3934bc7 100644 --- a/src/components/Image/BaseImage.tsx +++ b/src/components/Image/BaseImage.tsx @@ -1,5 +1,5 @@ import {Image as ExpoImage} from 'expo-image'; -import type {ImageLoadEventData} from 'expo-image'; +import type {ImageProps as ExpoImageProps, ImageLoadEventData} from 'expo-image'; import React, {useCallback, useContext, useEffect} from 'react'; import type {AttachmentSource} from '@components/Attachments/types'; import useCachedImageSource from '@hooks/useCachedImageSource'; @@ -7,7 +7,7 @@ import getImageRecyclingKey from '@libs/getImageRecyclingKey'; import {AttachmentStateContext} from '@pages/media/AttachmentModalScreen/AttachmentModalBaseContent/AttachmentStateContextProvider'; import type {BaseImageProps} from './types'; -function BaseImage({onLoad, onLoadStart, source, ...props}: BaseImageProps) { +function BaseImage({onLoad, onLoadStart, source, style, ...props}: BaseImageProps) { const cachedSource = useCachedImageSource(typeof source === 'object' && !Array.isArray(source) ? source : undefined); const resolvedSource = cachedSource !== undefined ? cachedSource : source; @@ -49,6 +49,7 @@ function BaseImage({onLoad, onLoadStart, source, ...props}: BaseImageProps) { onLoad={onLoad ? imageLoadedSuccessfully : undefined} source={resolvedSource} recyclingKey={getImageRecyclingKey(source)} + style={style as ExpoImageProps['style']} // eslint-disable-next-line react/jsx-props-no-spreading {...props} /> diff --git a/src/components/ImageSVG/index.android.tsx b/src/components/ImageSVG/index.android.tsx index 616329f7b8a02..2da1574797226 100644 --- a/src/components/ImageSVG/index.android.tsx +++ b/src/components/ImageSVG/index.android.tsx @@ -1,4 +1,5 @@ import {Image} from 'expo-image'; +import type {ImageProps as ExpoImageProps} from 'expo-image'; import React, {useEffect} from 'react'; import getImageRecyclingKey from '@libs/getImageRecyclingKey'; import type ImageSVGProps from './types'; @@ -58,7 +59,7 @@ function ImageSVG({src, width = '100%', height = '100%', fill, contentFit = 'cov contentFit={contentFit} source={src} recyclingKey={getImageRecyclingKey(src)} - style={[{width, height}, style]} + style={[{width, height}, style as ExpoImageProps['style']]} // eslint-disable-next-line react/jsx-props-no-spreading {...tintColorProp} /> diff --git a/src/components/ImageSVG/index.ios.tsx b/src/components/ImageSVG/index.ios.tsx index eb059574dd54a..eef2a0ec17c56 100644 --- a/src/components/ImageSVG/index.ios.tsx +++ b/src/components/ImageSVG/index.ios.tsx @@ -1,4 +1,5 @@ import {Image} from 'expo-image'; +import type {ImageProps as ExpoImageProps} from 'expo-image'; import React, {useEffect} from 'react'; import getImageRecyclingKey from '@libs/getImageRecyclingKey'; import type ImageSVGProps from './types'; @@ -45,7 +46,7 @@ function ImageSVG({src, width = '100%', height = '100%', fill, contentFit = 'cov contentFit={contentFit} source={src} recyclingKey={getImageRecyclingKey(src)} - style={[{width, height}, style]} + style={[{width, height}, style as ExpoImageProps['style']]} // eslint-disable-next-line react/jsx-props-no-spreading {...tintColorProp} /> diff --git a/src/components/Picker/types.ts b/src/components/Picker/types.ts index 1ca1de570f7f1..5286ee233935e 100644 --- a/src/components/Picker/types.ts +++ b/src/components/Picker/types.ts @@ -1,9 +1,9 @@ -import type {ChangeEvent, Component, ForwardedRef, ReactElement} from 'react'; -import type {MeasureLayoutOnSuccessCallback, NativeMethods, StyleProp, ViewStyle} from 'react-native'; +import type {ChangeEvent, ForwardedRef, ReactElement} from 'react'; +import type {MeasureLayoutOnSuccessCallback, ReactNativeElement, StyleProp, ViewStyle} from 'react-native'; type MeasureLayoutOnFailCallback = () => void; -type RelativeToNativeComponentRef = (Component & Readonly) | number; +type RelativeToNativeComponentRef = ReactNativeElement | number; type BasePickerHandle = { focus: () => void; diff --git a/src/components/PopoverProvider/index.tsx b/src/components/PopoverProvider/index.tsx index ba5331029f70f..1d26af6b51604 100644 --- a/src/components/PopoverProvider/index.tsx +++ b/src/components/PopoverProvider/index.tsx @@ -1,7 +1,7 @@ import type {RefObject} from 'react'; import React, {createContext, useCallback, useContext, useEffect, useMemo, useRef, useState} from 'react'; // eslint-disable-next-line no-restricted-imports -import type {Text, View} from 'react-native'; +import type {ReadOnlyNode, Text, View} from 'react-native'; import type {AnchorRef, PopoverContextProps} from './types'; type PopoverStateContextType = { @@ -31,7 +31,7 @@ const PopoverStateContext = createContext({ const PopoverActionsContext = createContext(defaultPopoverActionsContext); function elementContains(ref: RefObject | undefined, target: EventTarget | null) { - if (ref?.current && 'contains' in ref.current && ref?.current?.contains(target as Node)) { + if (ref?.current && 'contains' in ref.current && ref?.current?.contains(target as Node & ReadOnlyNode)) { return true; } return false; diff --git a/src/components/VideoPlayer/BaseVideoPlayer.tsx b/src/components/VideoPlayer/BaseVideoPlayer.tsx index 9ad7006f0c0a1..4941ba798246b 100644 --- a/src/components/VideoPlayer/BaseVideoPlayer.tsx +++ b/src/components/VideoPlayer/BaseVideoPlayer.tsx @@ -447,7 +447,10 @@ function BaseVideoPlayer({ if (!shouldUseSharedVideoElement) { if (newParentRef && 'childNodes' in newParentRef && newParentRef.childNodes[0]) { - newParentRef.childNodes[0]?.remove(); + const child = newParentRef.childNodes[0]; + if (child && 'remove' in child) { + child.remove(); + } } return; } @@ -480,7 +483,10 @@ function BaseVideoPlayer({ if (mountedVideoPlayersCurrentRef.current.filter((u) => u === url).length > 0) { return; } - newParentRef.childNodes[0]?.remove(); + const child = newParentRef.childNodes[0]; + if (child && 'remove' in child) { + child.remove(); + } }; }, [currentVideoPlayerRef, currentVideoViewRef, currentlyPlayingURL, isFullScreenRef, mountedVideoPlayersRef, originalParent, reportID, sharedElement, shouldUseSharedVideoElement, url]); @@ -554,8 +560,7 @@ function BaseVideoPlayer({ }} > { return; } // eslint-disable-next-line no-param-reassign - input.scrollTop = input.scrollHeight; + (input as HTMLInputElement).scrollTop = input.scrollHeight; }; const scrollToRight: ScrollInput = (input) => { @@ -14,7 +14,7 @@ const scrollToRight: ScrollInput = (input) => { } // Scroll to the far right // eslint-disable-next-line no-param-reassign - input.scrollLeft = input.scrollWidth; + (input as HTMLInputElement).scrollLeft = input.scrollWidth; }; const moveSelectionToEnd: MoveSelectionToEnd = (input) => { diff --git a/src/libs/Navigation/AppNavigator/createRootStackNavigator/GetStateForActionHandlers.ts b/src/libs/Navigation/AppNavigator/createRootStackNavigator/GetStateForActionHandlers.ts index a439ecf76528c..86dada6bdf362 100644 --- a/src/libs/Navigation/AppNavigator/createRootStackNavigator/GetStateForActionHandlers.ts +++ b/src/libs/Navigation/AppNavigator/createRootStackNavigator/GetStateForActionHandlers.ts @@ -123,6 +123,20 @@ function handleOpenDomainSplitAction( return prepareStateUnderWorkspaceOrDomainNavigator(state, configOptions, stackRouter, actionToPushDomainSplitNavigator, NAVIGATORS.DOMAIN_SPLIT_NAVIGATOR); } +/** + * Filters preloaded routes when navigating to a central screen of a split navigator on narrow layout. + * This removes the sidebar screen from the state so only the central screen is shown. + */ +function getStateWithFilteredPreloadedRoutes(state: StackNavigationState, navigatorName: string, targetScreen?: string) { + const shouldFilterPreloadedRoutes = + getIsNarrowLayout() && + isSplitNavigatorName(navigatorName) && + targetScreen !== SPLIT_TO_SIDEBAR[navigatorName] && + state.preloadedRoutes?.some((preloadedRoute) => preloadedRoute.name === navigatorName); + + return shouldFilterPreloadedRoutes ? {...state, preloadedRoutes: state.preloadedRoutes.filter((preloadedRoute) => preloadedRoute.name !== navigatorName)} : state; +} + function handlePushFullscreenAction( state: StackNavigationState, action: PushActionType, @@ -131,15 +145,7 @@ function handlePushFullscreenAction( ) { const targetScreen = action.payload?.params && 'screen' in action.payload.params ? (action.payload?.params?.screen as string) : undefined; const navigatorName = action.payload.name; - - // If we navigate to the central screen of the split navigator, we need to filter this navigator from preloadedRoutes to remove a sidebar screen from the state - const shouldFilterPreloadedRoutes = - getIsNarrowLayout() && - isSplitNavigatorName(navigatorName) && - targetScreen !== SPLIT_TO_SIDEBAR[navigatorName] && - state.preloadedRoutes?.some((preloadedRoute) => preloadedRoute.name === navigatorName); - - const adjustedState = shouldFilterPreloadedRoutes ? {...state, preloadedRoutes: state.preloadedRoutes.filter((preloadedRoute) => preloadedRoute.name !== navigatorName)} : state; + const adjustedState = getStateWithFilteredPreloadedRoutes(state, navigatorName, targetScreen); const stateWithNavigator = stackRouter.getStateForAction(adjustedState, action, configOptions); if (!stateWithNavigator) { @@ -163,7 +169,10 @@ function handleReplaceReportsSplitNavigatorAction( configOptions: RouterConfigOptions, stackRouter: Router, CommonActions.Action | StackActionType>, ) { - const stateWithReportsSplitNavigator = stackRouter.getStateForAction(state, action, configOptions); + const targetScreen = action.payload?.params && 'screen' in action.payload.params ? (action.payload?.params?.screen as string) : undefined; + const navigatorName = action.payload.name; + const adjustedState = getStateWithFilteredPreloadedRoutes(state, navigatorName, targetScreen); + const stateWithReportsSplitNavigator = stackRouter.getStateForAction(adjustedState, action, configOptions); if (!stateWithReportsSplitNavigator) { Log.hmmm('[handleReplaceReportsSplitNavigatorAction] ReportsSplitNavigator has not been found in the navigation state.'); diff --git a/src/libs/SearchUIUtils.ts b/src/libs/SearchUIUtils.ts index 3ab317d789c77..de9550064bb54 100644 --- a/src/libs/SearchUIUtils.ts +++ b/src/libs/SearchUIUtils.ts @@ -3356,8 +3356,8 @@ function getSortedReportData( // When sorting by total, apply the backend logic: // IOU reports have positive amounts, expense reports have negative amounts if (sortingProperty === 'total' && typeof aValue === 'number' && typeof bValue === 'number') { - aValue = a.type === CONST.REPORT.TYPE.IOU ? aValue : -(aValue as number); - bValue = b.type === CONST.REPORT.TYPE.IOU ? bValue : -(bValue as number); + aValue = a.type === CONST.REPORT.TYPE.IOU ? aValue : -aValue; + bValue = b.type === CONST.REPORT.TYPE.IOU ? bValue : -bValue; } return compareValues(aValue, bValue, sortOrder, sortingProperty, localeCompare); diff --git a/src/pages/inbox/report/ReportActionCompose/ComposerWithSuggestions/ComposerWithSuggestions.tsx b/src/pages/inbox/report/ReportActionCompose/ComposerWithSuggestions/ComposerWithSuggestions.tsx index cc6f4c94989b5..5b957d6a45d3d 100644 --- a/src/pages/inbox/report/ReportActionCompose/ComposerWithSuggestions/ComposerWithSuggestions.tsx +++ b/src/pages/inbox/report/ReportActionCompose/ComposerWithSuggestions/ComposerWithSuggestions.tsx @@ -2,7 +2,16 @@ import {useIsFocused, useNavigation, useRoute} from '@react-navigation/native'; import lodashDebounce from 'lodash/debounce'; import type {Ref, RefObject} from 'react'; import React, {memo, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState} from 'react'; -import type {BlurEvent, LayoutChangeEvent, MeasureInWindowOnSuccessCallback, TextInput, TextInputContentSizeChangeEvent, TextInputKeyPressEvent, TextInputScrollEvent} from 'react-native'; +import type { + BlurEvent, + LayoutChangeEvent, + MeasureInWindowOnSuccessCallback, + NativeMethods, + TextInput, + TextInputContentSizeChangeEvent, + TextInputKeyPressEvent, + TextInputScrollEvent, +} from 'react-native'; import {DeviceEventEmitter, InteractionManager, NativeModules, StyleSheet, View} from 'react-native'; import {useFocusedInputHandler} from 'react-native-keyboard-controller'; import type {OnyxEntry} from 'react-native-onyx'; @@ -308,7 +317,7 @@ function ComposerWithSuggestions({ isTransitioningToPreExistingReport.current = false; }, []); - const animatedRef = useAnimatedRef(); + const animatedRef = useAnimatedRef(); /** * Set the TextInput Ref */ diff --git a/src/pages/iou/request/step/IOURequestStepScan/components/NavigationAwareCamera/WebCamera.tsx b/src/pages/iou/request/step/IOURequestStepScan/components/NavigationAwareCamera/WebCamera.tsx index 11b52e51d1106..6784664a8d5bc 100644 --- a/src/pages/iou/request/step/IOURequestStepScan/components/NavigationAwareCamera/WebCamera.tsx +++ b/src/pages/iou/request/step/IOURequestStepScan/components/NavigationAwareCamera/WebCamera.tsx @@ -22,7 +22,7 @@ function WebCamera({itemRef, ref, ...props}: NavigationAwareCameraProps) { setIsInitialized(true)} + onUserMedia={() => setIsInitialized(true)} ref={ref as unknown as ForwardedRef} /> diff --git a/src/pages/signin/SignInPageLayout/BackgroundImage/index.native.tsx b/src/pages/signin/SignInPageLayout/BackgroundImage/index.native.tsx index 5f8630a821863..a2c9099b6a2de 100644 --- a/src/pages/signin/SignInPageLayout/BackgroundImage/index.native.tsx +++ b/src/pages/signin/SignInPageLayout/BackgroundImage/index.native.tsx @@ -1,4 +1,5 @@ import {Image} from 'expo-image'; +import type {ImageProps as ExpoImageProps} from 'expo-image'; import React, {useEffect, useState} from 'react'; import {InteractionManager} from 'react-native'; import type {ImageSourcePropType} from 'react-native'; @@ -58,7 +59,7 @@ function BackgroundImage({width}: BackgroundImageProps) { source={MobileBackgroundImage as ImageSourcePropType} onLoadEnd={() => setOpacityAnimation()} pointerEvents="none" - style={[styles.signInBackground, StyleUtils.getWidthStyle(width)]} + style={[styles.signInBackground, StyleUtils.getWidthStyle(width) as ExpoImageProps['style']]} transition={CONST.BACKGROUND_IMAGE_TRANSITION_DURATION} /> diff --git a/src/styles/utils/generators/TooltipStyleUtils/isOverlappingAtTop/index.ts b/src/styles/utils/generators/TooltipStyleUtils/isOverlappingAtTop/index.ts index 081d1a0a693e0..49fd483bce00c 100644 --- a/src/styles/utils/generators/TooltipStyleUtils/isOverlappingAtTop/index.ts +++ b/src/styles/utils/generators/TooltipStyleUtils/isOverlappingAtTop/index.ts @@ -31,7 +31,7 @@ const isOverlappingAtTop: IsOverlappingAtTop = (tooltip, xOffset, yOffset, toolt const elementAtTargetCenterX = document.elementFromPoint(targetCenterX, yOffset); // Ensure it's not the already rendered element of this very tooltip, so the tooltip doesn't try to "avoid" itself - if (!elementAtTargetCenterX || ('contains' in tooltip && tooltip.contains(elementAtTargetCenterX))) { + if (!elementAtTargetCenterX || ('contains' in tooltip && (tooltip as HTMLDivElement).contains(elementAtTargetCenterX))) { return false; }