From dc45902530aac6ca32d8a2745da95a86a2735a08 Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Sun, 8 Mar 2026 23:09:50 +0000 Subject: [PATCH 1/7] chore: bumpt NitroModules and NitroSQLite --- package-lock.json | 815 ++++++++++++++-------------------------------- package.json | 6 +- 2 files changed, 239 insertions(+), 582 deletions(-) diff --git a/package-lock.json b/package-lock.json index ba179b10d3013..69267611b6ba1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -115,9 +115,9 @@ "react-native-keyboard-controller": "1.21.0-beta.1", "react-native-launch-arguments": "^4.1.0", "react-native-localize": "^3.5.4", - "react-native-nitro-modules": "0.29.4", - "react-native-nitro-sqlite": "9.2.0", "react-native-onyx": "3.0.42", + "react-native-nitro-modules": "0.35.0", + "react-native-nitro-sqlite": "9.6.0", "react-native-pager-view": "8.0.0", "react-native-pdf": "7.0.2", "react-native-permissions": "^5.4.0", @@ -262,7 +262,7 @@ "link": "^2.1.1", "memfs": "^4.6.0", "mini-css-extract-plugin": "^2.9.4", - "nitrogen": "0.29.4", + "nitrogen": "0.35.0", "onchange": "^7.1.0", "openai": "^6.16.0", "patch-package": "^8.1.0-canary.1", @@ -470,27 +470,6 @@ "node": ">=6.0.0" } }, - "node_modules/@asamuzakjp/css-color": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", - "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@csstools/css-calc": "^2.1.3", - "@csstools/css-color-parser": "^3.0.9", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "lru-cache": "^10.4.3" - } - }, - "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, "node_modules/@aws-crypto/crc32": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", @@ -4783,121 +4762,6 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@csstools/color-helpers": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", - "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT-0", - "engines": { - "node": ">=18" - } - }, - "node_modules/@csstools/css-calc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", - "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-color-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", - "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "dependencies": { - "@csstools/color-helpers": "^5.1.0", - "@csstools/css-calc": "^2.1.4" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", - "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-tokenizer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", - "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - } - }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", "dev": true, @@ -14774,6 +14638,8 @@ }, "node_modules/@sqltools/formatter": { "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.5.tgz", + "integrity": "sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==", "license": "MIT" }, "node_modules/@storybook/addon-a11y": { @@ -15857,32 +15723,51 @@ } }, "node_modules/@ts-morph/common": { - "version": "0.26.1", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.28.1.tgz", + "integrity": "sha512-W74iWf7ILp1ZKNYXY5qbddNaml7e9Sedv5lvU1V8lftlitkc9Pq1A+jlH23ltDgWYeZFFEqGCD1Ies9hqu3O+g==", "dev": true, "license": "MIT", "dependencies": { - "fast-glob": "^3.3.2", - "minimatch": "^9.0.4", - "path-browserify": "^1.0.1" + "minimatch": "^10.0.1", + "path-browserify": "^1.0.1", + "tinyglobby": "^0.2.14" + } + }, + "node_modules/@ts-morph/common/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==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/@ts-morph/common/node_modules/brace-expansion": { - "version": "2.0.1", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/@ts-morph/common/node_modules/minimatch": { - "version": "9.0.5", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^5.0.2" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -17873,6 +17758,15 @@ "node": ">=4" } }, + "node_modules/ansis": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-3.17.0.tgz", + "integrity": "sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==", + "license": "ISC", + "engines": { + "node": ">=14" + } + }, "node_modules/any-promise": { "version": "1.3.0", "license": "MIT" @@ -17890,6 +17784,8 @@ }, "node_modules/app-root-path": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz", + "integrity": "sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==", "license": "MIT", "engines": { "node": ">= 6.0.0" @@ -18120,10 +18016,6 @@ "version": "2.0.6", "license": "MIT" }, - "node_modules/ascii-table": { - "version": "0.0.9", - "license": "MIT" - }, "node_modules/assertion-error": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", @@ -19596,83 +19488,6 @@ "node": ">=8" } }, - "node_modules/cli-highlight": { - "version": "2.1.11", - "license": "ISC", - "dependencies": { - "chalk": "^4.0.0", - "highlight.js": "^10.7.1", - "mz": "^2.4.0", - "parse5": "^5.1.1", - "parse5-htmlparser2-tree-adapter": "^6.0.0", - "yargs": "^16.0.0" - }, - "bin": { - "highlight": "bin/highlight" - }, - "engines": { - "node": ">=8.0.0", - "npm": ">=5.0.0" - } - }, - "node_modules/cli-highlight/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/cli-highlight/node_modules/chalk": { - "version": "4.1.2", - "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/cli-highlight/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/cli-highlight/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/cli-highlight/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-highlight/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/cli-spinners": { "version": "2.9.2", "license": "MIT", @@ -19757,6 +19572,8 @@ }, "node_modules/code-block-writer": { "version": "13.0.3", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz", + "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==", "dev": true, "license": "MIT" }, @@ -20976,20 +20793,6 @@ "dev": true, "license": "MIT" }, - "node_modules/cssstyle": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", - "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@asamuzakjp/css-color": "^3.2.0", - "rrweb-cssom": "^0.8.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/csstype": { "version": "3.1.1", "license": "MIT" @@ -21198,47 +21001,6 @@ "dev": true, "license": "BSD-2-Clause" }, - "node_modules/data-urls": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", - "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/data-urls/node_modules/tr46": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", - "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/data-urls/node_modules/whatwg-url": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", - "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "^5.1.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/data-view-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", @@ -26117,13 +25879,6 @@ "hermes-estree": "0.32.0" } }, - "node_modules/highlight.js": { - "version": "10.7.3", - "license": "BSD-3-Clause", - "engines": { - "node": "*" - } - }, "node_modules/hoist-non-react-statics": { "version": "3.3.2", "license": "BSD-3-Clause", @@ -26366,30 +26121,6 @@ "node": ">=8.0.0" } }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/http-proxy-agent/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/http-proxy-middleware": { "version": "2.0.7", "dev": true, @@ -28220,6 +27951,21 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/jest-environment-jsdom/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-environment-jsdom/node_modules/jsdom": { "version": "20.0.3", "dev": true, @@ -28275,6 +28021,32 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/jest-environment-jsdom/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-environment-jsdom/node_modules/tough-cookie/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-environment-jsdom/node_modules/tr46": { "version": "3.0.0", "dev": true, @@ -28325,47 +28097,6 @@ "node": ">=12" } }, - "node_modules/jest-environment-jsdom/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-environment-jsdom/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-environment-jsdom/node_modules/tough-cookie/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-environment-node": { "version": "29.7.0", "license": "MIT", @@ -30705,18 +30436,10 @@ "version": "4.17.21", "license": "MIT" }, - "node_modules/lodash.bindall": { - "version": "4.4.0", - "license": "MIT" - }, "node_modules/lodash.camelcase": { "version": "4.3.0", "license": "MIT" }, - "node_modules/lodash.clone": { - "version": "4.5.0", - "license": "MIT" - }, "node_modules/lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -30743,18 +30466,10 @@ "dev": true, "license": "MIT" }, - "node_modules/lodash.pick": { - "version": "4.4.0", - "license": "MIT" - }, "node_modules/lodash.throttle": { "version": "4.1.1", "license": "MIT" }, - "node_modules/lodash.transform": { - "version": "4.6.0", - "license": "MIT" - }, "node_modules/log-symbols": { "version": "4.1.0", "devOptional": true, @@ -31914,17 +31629,16 @@ "license": "MIT" }, "node_modules/nitrogen": { - "version": "0.29.4", - "resolved": "https://registry.npmjs.org/nitrogen/-/nitrogen-0.29.4.tgz", - "integrity": "sha512-XtQyaWw12S8LpKD3muf+BXNXP2UAPONd4wC7oWK2+JoYVMSlYnMTnRxd6RRT7qH2j5KwFQeuRpwRPWSsxtCAXQ==", + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/nitrogen/-/nitrogen-0.35.0.tgz", + "integrity": "sha512-K8/4h9bCQahi3qEheWZx5joLFsAW3QjK0dVSC3gNLlQhlSJN42UFmffAouOZXYjg9rBDpVlrVo+Hsja45swsJQ==", "dev": true, - "hasInstallScript": true, "license": "MIT", "dependencies": { "chalk": "^5.3.0", - "react-native-nitro-modules": "^0.29.4", - "ts-morph": "^25.0.0", - "yargs": "^17.7.2", + "react-native-nitro-modules": "^0.35.0", + "ts-morph": "^27.0.0", + "yargs": "^18.0.0", "zod": "^4.0.5" }, "bin": { @@ -32680,21 +32394,6 @@ "dev": true, "license": "MIT" }, - "node_modules/parse5": { - "version": "5.1.1", - "license": "MIT" - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "license": "MIT", - "dependencies": { - "parse5": "^6.0.1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { - "version": "6.0.1", - "license": "MIT" - }, "node_modules/parseurl": { "version": "1.3.3", "license": "MIT", @@ -32848,6 +32547,8 @@ }, "node_modules/path-browserify": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", "dev": true, "license": "MIT" }, @@ -34360,10 +34061,9 @@ } }, "node_modules/react-native-nitro-modules": { - "version": "0.29.4", - "resolved": "https://registry.npmjs.org/react-native-nitro-modules/-/react-native-nitro-modules-0.29.4.tgz", - "integrity": "sha512-AfUMcwFtj9FuEDwDLN5eIVo0lBYTQqDaV7meiFzuoZyRmc8ywykFTKfyZwRN2t8Z/WtTlfCj9Y9yaET33IImsg==", - "hasInstallScript": true, + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/react-native-nitro-modules/-/react-native-nitro-modules-0.35.0.tgz", + "integrity": "sha512-Eho1yEcLbsteGpBFn2XZOp5FIptnEciWzuYBW49S0jo41Un2LeyesIO/MqYLY/c5o7D9Fw9th4pxGtV7OAb0+g==", "license": "MIT", "peerDependencies": { "react": "*", @@ -34371,34 +34071,23 @@ } }, "node_modules/react-native-nitro-sqlite": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/react-native-nitro-sqlite/-/react-native-nitro-sqlite-9.2.0.tgz", - "integrity": "sha512-ROWf5ZDiRoU0kF3uaQTY7UNA6gpPNaiNGiOZAMOdY5enAIxX2WpsGeHzO9IuPHdTXqr6QuAmFe7FpoC0+qSRyA==", + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/react-native-nitro-sqlite/-/react-native-nitro-sqlite-9.6.0.tgz", + "integrity": "sha512-a/N1yGhM8RvCCnaYhEHhh35YS+HDOAcGKeKFsp2ExCzIjP8vPXuzQtHylgLQLeAh7rUaism5q0QQFfogXm1SXA==", "license": "MIT", "dependencies": { - "typeorm": "0.3.20" + "typeorm": "0.3.27" }, "peerDependencies": { "react": ">=17.0.0", "react-native": ">=0.75.0", - "react-native-nitro-modules": ">=0.27.2" - } - }, - "node_modules/react-native-nitro-sqlite/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "react-native-nitro-modules": ">=0.35.0" } }, "node_modules/react-native-nitro-sqlite/node_modules/buffer": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "funding": [ { "type": "github", @@ -34419,83 +34108,52 @@ "ieee754": "^1.2.1" } }, - "node_modules/react-native-nitro-sqlite/node_modules/chalk": { - "version": "4.1.2", - "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/react-native-nitro-sqlite/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/react-native-nitro-sqlite/node_modules/dedent": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", + "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/react-native-nitro-sqlite/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/react-native-nitro-sqlite/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } } }, - "node_modules/react-native-nitro-sqlite/node_modules/mkdirp": { - "version": "2.1.6", - "license": "MIT", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, + "node_modules/react-native-nitro-sqlite/node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "license": "BSD-2-Clause", "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/react-native-nitro-sqlite/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "url": "https://dotenvx.com" } }, "node_modules/react-native-nitro-sqlite/node_modules/typeorm": { - "version": "0.3.20", + "version": "0.3.27", + "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.3.27.tgz", + "integrity": "sha512-pNV1bn+1n8qEe8tUNsNdD8ejuPcMAg47u2lUGnbsajiNUr3p2Js1XLKQjBMH0yMRMDfdX8T+fIRejFmIwy9x4A==", "license": "MIT", "dependencies": { "@sqltools/formatter": "^1.2.5", + "ansis": "^3.17.0", "app-root-path": "^3.1.0", "buffer": "^6.0.3", - "chalk": "^4.1.2", - "cli-highlight": "^2.1.11", - "dayjs": "^1.11.9", - "debug": "^4.3.4", - "dotenv": "^16.0.3", - "glob": "^10.3.10", - "mkdirp": "^2.1.3", - "reflect-metadata": "^0.2.1", - "sha.js": "^2.4.11", - "tslib": "^2.5.0", - "uuid": "^9.0.0", - "yargs": "^17.6.2" + "dayjs": "^1.11.13", + "debug": "^4.4.0", + "dedent": "^1.6.0", + "dotenv": "^16.4.7", + "glob": "^10.4.5", + "sha.js": "^2.4.12", + "sql-highlight": "^6.0.0", + "tslib": "^2.8.1", + "uuid": "^11.1.0", + "yargs": "^17.7.2" }, "bin": { "typeorm": "cli.js", @@ -34509,23 +34167,23 @@ "url": "https://opencollective.com/typeorm" }, "peerDependencies": { - "@google-cloud/spanner": "^5.18.0", - "@sap/hana-client": "^2.12.25", - "better-sqlite3": "^7.1.2 || ^8.0.0 || ^9.0.0", - "hdb-pool": "^0.1.6", + "@google-cloud/spanner": "^5.18.0 || ^6.0.0 || ^7.0.0", + "@sap/hana-client": "^2.14.22", + "better-sqlite3": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0", "ioredis": "^5.0.4", - "mongodb": "^5.8.0", - "mssql": "^9.1.1 || ^10.0.1", + "mongodb": "^5.8.0 || ^6.0.0", + "mssql": "^9.1.1 || ^10.0.1 || ^11.0.1", "mysql2": "^2.2.5 || ^3.0.1", "oracledb": "^6.3.0", "pg": "^8.5.1", "pg-native": "^3.0.0", "pg-query-stream": "^4.0.0", - "redis": "^3.1.1 || ^4.0.0", + "redis": "^3.1.1 || ^4.0.0 || ^5.0.14", + "reflect-metadata": "^0.1.14 || ^0.2.0", "sql.js": "^1.4.0", "sqlite3": "^5.0.3", "ts-node": "^10.7.0", - "typeorm-aurora-data-api-driver": "^2.0.0" + "typeorm-aurora-data-api-driver": "^2.0.0 || ^3.0.0" }, "peerDependenciesMeta": { "@google-cloud/spanner": { @@ -34537,9 +34195,6 @@ "better-sqlite3": { "optional": true }, - "hdb-pool": { - "optional": true - }, "ioredis": { "optional": true }, @@ -34582,14 +34237,16 @@ } }, "node_modules/react-native-nitro-sqlite/node_modules/uuid": { - "version": "9.0.1", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], "license": "MIT", "bin": { - "uuid": "dist/bin/uuid" + "uuid": "dist/esm/bin/uuid" } }, "node_modules/react-native-onyx": { @@ -34666,17 +34323,6 @@ "react-native-blob-util": ">=0.13.7" } }, - "node_modules/react-native-performance": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/react-native-performance/-/react-native-performance-6.0.0.tgz", - "integrity": "sha512-Sca75O8jhqXAnNbqvINnrw248Kv9cIwoGxToD8u2uX+BrkAxxXS+YhClEV5L3JdiOpdNCO1MJ5R9bgs2VkNpFg==", - "license": "MIT", - "optional": true, - "peer": true, - "peerDependencies": { - "react-native": "*" - } - }, "node_modules/react-native-permissions": { "version": "5.4.0", "license": "MIT", @@ -35306,7 +34952,10 @@ }, "node_modules/reflect-metadata": { "version": "0.2.2", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "license": "Apache-2.0", + "peer": true }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", @@ -35708,13 +35357,6 @@ "rock": "dist/src/bin.js" } }, - "node_modules/rrweb-cssom": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", - "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", - "dev": true, - "license": "MIT" - }, "node_modules/run-applescript": { "version": "7.0.0", "dev": true, @@ -36197,16 +35839,45 @@ "license": "ISC" }, "node_modules/sha.js": { - "version": "2.4.11", + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", + "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", "license": "(MIT AND BSD-3-Clause)", "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.0" }, "bin": { "sha.js": "bin.js" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/sha.js/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/shallow-clone": { "version": "3.0.1", "dev": true, @@ -36685,6 +36356,22 @@ "version": "1.0.3", "license": "BSD-3-Clause" }, + "node_modules/sql-highlight": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sql-highlight/-/sql-highlight-6.1.0.tgz", + "integrity": "sha512-ed7OK4e9ywpE7pgRMkMQmZDPKSVdm0oX5IEtZiKnFucSF0zu6c80GZBe38UqHuVhTWJ9xsKgSMjCG2bml86KvA==", + "funding": [ + "https://github.com/scriptcoded/sql-highlight?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/scriptcoded" + } + ], + "license": "MIT", + "engines": { + "node": ">=14" + } + }, "node_modules/ssf": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", @@ -37849,30 +37536,44 @@ "node": ">=14.0.0" } }, - "node_modules/tldts": { - "version": "6.1.86", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", - "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==", - "dev": true, + "node_modules/tmpl": { + "version": "1.0.5", + "license": "BSD-3-Clause" + }, + "node_modules/to-buffer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", + "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", "license": "MIT", "dependencies": { - "tldts-core": "^6.1.86" + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" }, - "bin": { - "tldts": "bin/cli.js" + "engines": { + "node": ">= 0.4" } }, - "node_modules/tldts-core": { - "version": "6.1.86", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz", - "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", - "dev": true, + "node_modules/to-buffer/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT" }, - "node_modules/tmpl": { - "version": "1.0.5", - "license": "BSD-3-Clause" - }, "node_modules/to-regex-range": { "version": "5.0.1", "license": "MIT", @@ -37898,19 +37599,6 @@ "node": ">=6" } }, - "node_modules/tough-cookie": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", - "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tldts": "^6.1.32" - }, - "engines": { - "node": ">=16" - } - }, "node_modules/tr46": { "version": "0.0.3", "license": "MIT" @@ -38025,11 +37713,13 @@ } }, "node_modules/ts-morph": { - "version": "25.0.1", + "version": "27.0.2", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-27.0.2.tgz", + "integrity": "sha512-fhUhgeljcrdZ+9DZND1De1029PrE+cMkIP7ooqkLRTrRLTqcki2AstsyJm0vRNbTbVCNJ0idGlbBrfqc7/nA8w==", "dev": true, "license": "MIT", "dependencies": { - "@ts-morph/common": "~0.26.0", + "@ts-morph/common": "~0.28.1", "code-block-writer": "^13.0.3" } }, @@ -38700,19 +38390,6 @@ "pbf": "^3.2.1" } }, - "node_modules/w3c-xmlserializer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", - "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/wait-port": { "version": "0.2.14", "dev": true, @@ -39270,16 +38947,6 @@ "version": "3.6.2", "license": "MIT" }, - "node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, "node_modules/whatwg-url": { "version": "5.0.0", "license": "MIT", @@ -39661,16 +39328,6 @@ "node": ">=0.8" } }, - "node_modules/xml-name-validator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", - "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18" - } - }, "node_modules/xml2js": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz", diff --git a/package.json b/package.json index 962251ccd38a0..5bdb4bf833485 100644 --- a/package.json +++ b/package.json @@ -179,9 +179,9 @@ "react-native-keyboard-controller": "1.21.0-beta.1", "react-native-launch-arguments": "^4.1.0", "react-native-localize": "^3.5.4", - "react-native-nitro-modules": "0.29.4", - "react-native-nitro-sqlite": "9.2.0", "react-native-onyx": "3.0.42", + "react-native-nitro-modules": "0.35.0", + "react-native-nitro-sqlite": "9.6.0", "react-native-pager-view": "8.0.0", "react-native-pdf": "7.0.2", "react-native-permissions": "^5.4.0", @@ -326,7 +326,7 @@ "link": "^2.1.1", "memfs": "^4.6.0", "mini-css-extract-plugin": "^2.9.4", - "nitrogen": "0.29.4", + "nitrogen": "0.35.0", "onchange": "^7.1.0", "openai": "^6.16.0", "patch-package": "^8.1.0-canary.1", From 614fab7df791355b20ab52aba2ca8d89486ad671 Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Sun, 8 Mar 2026 23:18:43 +0000 Subject: [PATCH 2/7] chore: bump nitrogen generated specs in ExpensifyNitroUtils --- .../ExpensifyNitroUtils+autolinking.cmake | 13 +- .../ExpensifyNitroUtils+autolinking.gradle | 2 +- .../android/ExpensifyNitroUtilsOnLoad.cpp | 68 +++++--- .../android/ExpensifyNitroUtilsOnLoad.hpp | 19 +- .../generated/android/c++/JContact.hpp | 14 +- .../generated/android/c++/JContactFields.hpp | 13 +- .../c++/JHybridAppStartTimeModuleSpec.cpp | 40 +++-- .../c++/JHybridAppStartTimeModuleSpec.hpp | 43 +++-- .../android/c++/JHybridContactsModuleSpec.cpp | 38 ++-- .../android/c++/JHybridContactsModuleSpec.hpp | 41 +++-- .../generated/android/c++/JStringHolder.hpp | 8 +- .../kotlin/com/margelo/nitro/utils/Contact.kt | 47 +++-- .../com/margelo/nitro/utils/ContactFields.kt | 4 +- .../nitro/utils/ExpensifyNitroUtilsOnLoad.kt | 2 +- .../utils/HybridAppStartTimeModuleSpec.kt | 36 ++-- .../nitro/utils/HybridContactsModuleSpec.kt | 35 ++-- .../com/margelo/nitro/utils/StringHolder.kt | 23 ++- .../ios/ExpensifyNitroUtils+autolinking.rb | 4 +- .../ExpensifyNitroUtils-Swift-Cxx-Bridge.cpp | 15 +- .../ExpensifyNitroUtils-Swift-Cxx-Bridge.hpp | 27 +-- ...ExpensifyNitroUtils-Swift-Cxx-Umbrella.hpp | 2 +- .../ios/ExpensifyNitroUtilsAutolinking.mm | 2 +- .../ios/ExpensifyNitroUtilsAutolinking.swift | 28 ++- .../c++/HybridAppStartTimeModuleSpecSwift.cpp | 2 +- .../c++/HybridAppStartTimeModuleSpecSwift.hpp | 18 +- .../ios/c++/HybridContactsModuleSpecSwift.cpp | 2 +- .../ios/c++/HybridContactsModuleSpecSwift.hpp | 11 +- .../generated/ios/swift/Contact.swift | 164 +++++------------- .../generated/ios/swift/ContactFields.swift | 2 +- .../swift/Func_void_std__exception_ptr.swift | 3 +- .../Func_void_std__vector_Contact_.swift | 3 +- .../swift/HybridAppStartTimeModuleSpec.swift | 16 +- .../HybridAppStartTimeModuleSpec_cxx.swift | 32 ++-- .../ios/swift/HybridContactsModuleSpec.swift | 14 +- .../swift/HybridContactsModuleSpec_cxx.swift | 21 ++- .../generated/ios/swift/StringHolder.swift | 12 +- .../nitrogen/generated/shared/c++/Contact.hpp | 50 ++++-- .../generated/shared/c++/ContactFields.hpp | 2 +- .../c++/HybridAppStartTimeModuleSpec.cpp | 3 +- .../c++/HybridAppStartTimeModuleSpec.hpp | 4 +- .../shared/c++/HybridContactsModuleSpec.cpp | 2 +- .../shared/c++/HybridContactsModuleSpec.hpp | 2 +- .../generated/shared/c++/StringHolder.hpp | 26 ++- 43 files changed, 485 insertions(+), 428 deletions(-) diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/android/ExpensifyNitroUtils+autolinking.cmake b/modules/ExpensifyNitroUtils/nitrogen/generated/android/ExpensifyNitroUtils+autolinking.cmake index 90c9d6cab0e42..b09226ad9a7f9 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/android/ExpensifyNitroUtils+autolinking.cmake +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/android/ExpensifyNitroUtils+autolinking.cmake @@ -2,7 +2,7 @@ # ExpensifyNitroUtils+autolinking.cmake # This file was generated by nitrogen. DO NOT MODIFY THIS FILE. # https://github.com/mrousavy/nitro -# Copyright © 2026 Marc Rousavy @ Margelo +# Copyright © Marc Rousavy @ Margelo # # This is a CMake file that adds all files generated by Nitrogen @@ -13,6 +13,12 @@ # include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/ExpensifyNitroUtils+autolinking.cmake) # ``` +# Define a flag to check if we are building properly +add_definitions(-DBUILDING_EXPENSIFYNITROUTILS_WITH_GENERATED_CMAKE_PROJECT) + +# Enable Raw Props parsing in react-native (for Nitro Views) +add_definitions(-DRN_SERIALIZABLE_STATE) + # Add all headers that were generated by Nitrogen include_directories( "../nitrogen/generated/shared/c++" @@ -34,12 +40,9 @@ target_sources( ../nitrogen/generated/android/c++/JHybridContactsModuleSpec.cpp ) -# Define a flag to check if we are building properly -add_definitions(-DBUILDING_EXPENSIFYNITROUTILS_WITH_GENERATED_CMAKE_PROJECT) - # From node_modules/react-native/ReactAndroid/cmake-utils/folly-flags.cmake # Used in node_modules/react-native/ReactAndroid/cmake-utils/ReactNative-application.cmake - target_compile_definitions( +target_compile_definitions( ExpensifyNitroUtils PRIVATE -DFOLLY_NO_CONFIG=1 -DFOLLY_HAVE_CLOCK_GETTIME=1 diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/android/ExpensifyNitroUtils+autolinking.gradle b/modules/ExpensifyNitroUtils/nitrogen/generated/android/ExpensifyNitroUtils+autolinking.gradle index f199d07129890..f65bb1cd4a6b8 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/android/ExpensifyNitroUtils+autolinking.gradle +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/android/ExpensifyNitroUtils+autolinking.gradle @@ -2,7 +2,7 @@ /// ExpensifyNitroUtils+autolinking.gradle /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// /// This is a Gradle file that adds all files generated by Nitrogen diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/android/ExpensifyNitroUtilsOnLoad.cpp b/modules/ExpensifyNitroUtils/nitrogen/generated/android/ExpensifyNitroUtilsOnLoad.cpp index 00c1e6a59825e..f328c82635bdf 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/android/ExpensifyNitroUtilsOnLoad.cpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/android/ExpensifyNitroUtilsOnLoad.cpp @@ -2,7 +2,7 @@ /// ExpensifyNitroUtilsOnLoad.cpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #ifndef BUILDING_EXPENSIFYNITROUTILS_WITH_GENERATED_CMAKE_PROJECT @@ -22,33 +22,49 @@ namespace margelo::nitro::utils { int initialize(JavaVM* vm) { + return facebook::jni::initialize(vm, []() { + ::margelo::nitro::utils::registerAllNatives(); + }); +} + +struct JHybridContactsModuleSpecImpl: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/utils/HybridContactsModule;"; + static std::shared_ptr create() { + static auto constructorFn = javaClassStatic()->getConstructor(); + jni::local_ref javaPart = javaClassStatic()->newObject(constructorFn); + return javaPart->getJHybridContactsModuleSpec(); + } +}; +struct JHybridAppStartTimeModuleSpecImpl: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/utils/HybridAppStartTimeModule;"; + static std::shared_ptr create() { + static auto constructorFn = javaClassStatic()->getConstructor(); + jni::local_ref javaPart = javaClassStatic()->newObject(constructorFn); + return javaPart->getJHybridAppStartTimeModuleSpec(); + } +}; + +void registerAllNatives() { using namespace margelo::nitro; using namespace margelo::nitro::utils; - using namespace facebook; - - return facebook::jni::initialize(vm, [] { - // Register native JNI methods - margelo::nitro::utils::JHybridAppStartTimeModuleSpec::registerNatives(); - margelo::nitro::utils::JHybridContactsModuleSpec::registerNatives(); - - // Register Nitro Hybrid Objects - HybridObjectRegistry::registerHybridObjectConstructor( - "ContactsModule", - []() -> std::shared_ptr { - static DefaultConstructableObject object("com/margelo/nitro/utils/HybridContactsModule"); - auto instance = object.create(); - return instance->cthis()->shared(); - } - ); - HybridObjectRegistry::registerHybridObjectConstructor( - "AppStartTimeModule", - []() -> std::shared_ptr { - static DefaultConstructableObject object("com/margelo/nitro/utils/HybridAppStartTimeModule"); - auto instance = object.create(); - return instance->cthis()->shared(); - } - ); - }); + + // Register native JNI methods + margelo::nitro::utils::JHybridAppStartTimeModuleSpec::CxxPart::registerNatives(); + margelo::nitro::utils::JHybridContactsModuleSpec::CxxPart::registerNatives(); + + // Register Nitro Hybrid Objects + HybridObjectRegistry::registerHybridObjectConstructor( + "ContactsModule", + []() -> std::shared_ptr { + return JHybridContactsModuleSpecImpl::create(); + } + ); + HybridObjectRegistry::registerHybridObjectConstructor( + "AppStartTimeModule", + []() -> std::shared_ptr { + return JHybridAppStartTimeModuleSpecImpl::create(); + } + ); } } // namespace margelo::nitro::utils diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/android/ExpensifyNitroUtilsOnLoad.hpp b/modules/ExpensifyNitroUtils/nitrogen/generated/android/ExpensifyNitroUtilsOnLoad.hpp index f6235b868cbb9..28c454ec157e7 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/android/ExpensifyNitroUtilsOnLoad.hpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/android/ExpensifyNitroUtilsOnLoad.hpp @@ -2,24 +2,33 @@ /// ExpensifyNitroUtilsOnLoad.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #include +#include #include namespace margelo::nitro::utils { + [[deprecated("Use registerNatives() instead.")]] + int initialize(JavaVM* vm); + /** - * Initializes the native (C++) part of ExpensifyNitroUtils, and autolinks all Hybrid Objects. - * Call this in your `JNI_OnLoad` function (probably inside `cpp-adapter.cpp`). + * Register the native (C++) part of ExpensifyNitroUtils, and autolinks all Hybrid Objects. + * Call this in your `JNI_OnLoad` function (probably inside `cpp-adapter.cpp`), + * inside a `facebook::jni::initialize(vm, ...)` call. * Example: * ```cpp (cpp-adapter.cpp) * JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) { - * return margelo::nitro::utils::initialize(vm); + * return facebook::jni::initialize(vm, []() { + * // register all ExpensifyNitroUtils HybridObjects + * margelo::nitro::utils::registerNatives(); + * // any other custom registrations go here. + * }); * } * ``` */ - int initialize(JavaVM* vm); + void registerAllNatives(); } // namespace margelo::nitro::utils diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JContact.hpp b/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JContact.hpp index 2789f76a1836d..2dccb42fa544e 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JContact.hpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JContact.hpp @@ -2,7 +2,7 @@ /// JContact.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once @@ -78,7 +78,11 @@ namespace margelo::nitro::utils { */ [[maybe_unused]] static jni::local_ref fromCpp(const Contact& value) { - return newInstance( + using JSignature = JContact(jni::alias_ref, jni::alias_ref, jni::alias_ref>, jni::alias_ref>, jni::alias_ref); + static const auto clazz = javaClassStatic(); + static const auto create = clazz->getStaticMethod("fromCpp"); + return create( + clazz, value.firstName.has_value() ? jni::make_jstring(value.firstName.value()) : nullptr, value.lastName.has_value() ? jni::make_jstring(value.lastName.value()) : nullptr, value.phoneNumbers.has_value() ? [&]() { @@ -86,7 +90,8 @@ namespace margelo::nitro::utils { jni::local_ref> __array = jni::JArrayClass::newArray(__size); for (size_t __i = 0; __i < __size; __i++) { const auto& __element = value.phoneNumbers.value()[__i]; - __array->setElement(__i, *JStringHolder::fromCpp(__element)); + auto __elementJni = JStringHolder::fromCpp(__element); + __array->setElement(__i, *__elementJni); } return __array; }() : nullptr, @@ -95,7 +100,8 @@ namespace margelo::nitro::utils { jni::local_ref> __array = jni::JArrayClass::newArray(__size); for (size_t __i = 0; __i < __size; __i++) { const auto& __element = value.emailAddresses.value()[__i]; - __array->setElement(__i, *JStringHolder::fromCpp(__element)); + auto __elementJni = JStringHolder::fromCpp(__element); + __array->setElement(__i, *__elementJni); } return __array; }() : nullptr, diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JContactFields.hpp b/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JContactFields.hpp index 2cf3d29547bf4..1ed3380932ce5 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JContactFields.hpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JContactFields.hpp @@ -2,7 +2,7 @@ /// JContactFields.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once @@ -41,22 +41,21 @@ namespace margelo::nitro::utils { [[maybe_unused]] static jni::alias_ref fromCpp(ContactFields value) { static const auto clazz = javaClassStatic(); - static const auto fieldFIRST_NAME = clazz->getStaticField("FIRST_NAME"); - static const auto fieldLAST_NAME = clazz->getStaticField("LAST_NAME"); - static const auto fieldPHONE_NUMBERS = clazz->getStaticField("PHONE_NUMBERS"); - static const auto fieldEMAIL_ADDRESSES = clazz->getStaticField("EMAIL_ADDRESSES"); - static const auto fieldIMAGE_DATA = clazz->getStaticField("IMAGE_DATA"); - switch (value) { case ContactFields::FIRST_NAME: + static const auto fieldFIRST_NAME = clazz->getStaticField("FIRST_NAME"); return clazz->getStaticFieldValue(fieldFIRST_NAME); case ContactFields::LAST_NAME: + static const auto fieldLAST_NAME = clazz->getStaticField("LAST_NAME"); return clazz->getStaticFieldValue(fieldLAST_NAME); case ContactFields::PHONE_NUMBERS: + static const auto fieldPHONE_NUMBERS = clazz->getStaticField("PHONE_NUMBERS"); return clazz->getStaticFieldValue(fieldPHONE_NUMBERS); case ContactFields::EMAIL_ADDRESSES: + static const auto fieldEMAIL_ADDRESSES = clazz->getStaticField("EMAIL_ADDRESSES"); return clazz->getStaticFieldValue(fieldEMAIL_ADDRESSES); case ContactFields::IMAGE_DATA: + static const auto fieldIMAGE_DATA = clazz->getStaticField("IMAGE_DATA"); return clazz->getStaticFieldValue(fieldIMAGE_DATA); default: std::string stringValue = std::to_string(static_cast(value)); diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JHybridAppStartTimeModuleSpec.cpp b/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JHybridAppStartTimeModuleSpec.cpp index b4eb2b05e7d77..3556e2cc22ef6 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JHybridAppStartTimeModuleSpec.cpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JHybridAppStartTimeModuleSpec.cpp @@ -2,7 +2,7 @@ /// JHybridAppStartTimeModuleSpec.cpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #include "JHybridAppStartTimeModuleSpec.hpp" @@ -13,37 +13,41 @@ namespace margelo::nitro::utils { - jni::local_ref JHybridAppStartTimeModuleSpec::initHybrid(jni::alias_ref jThis) { - return makeCxxInstance(jThis); + std::shared_ptr JHybridAppStartTimeModuleSpec::JavaPart::getJHybridAppStartTimeModuleSpec() { + auto hybridObject = JHybridObject::JavaPart::getJHybridObject(); + auto castHybridObject = std::dynamic_pointer_cast(hybridObject); + if (castHybridObject == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to downcast JHybridObject to JHybridAppStartTimeModuleSpec!"); + } + return castHybridObject; } - void JHybridAppStartTimeModuleSpec::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", JHybridAppStartTimeModuleSpec::initHybrid), - }); + jni::local_ref JHybridAppStartTimeModuleSpec::CxxPart::initHybrid(jni::alias_ref jThis) { + return makeCxxInstance(jThis); } - size_t JHybridAppStartTimeModuleSpec::getExternalMemorySize() noexcept { - static const auto method = javaClassStatic()->getMethod("getMemorySize"); - return method(_javaPart); + std::shared_ptr JHybridAppStartTimeModuleSpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { + auto castJavaPart = jni::dynamic_ref_cast(javaPart); + if (castJavaPart == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridAppStartTimeModuleSpec::JavaPart!"); + } + return std::make_shared(castJavaPart); } - void JHybridAppStartTimeModuleSpec::dispose() noexcept { - static const auto method = javaClassStatic()->getMethod("dispose"); - method(_javaPart); + void JHybridAppStartTimeModuleSpec::CxxPart::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", JHybridAppStartTimeModuleSpec::CxxPart::initHybrid), + }); } // Properties double JHybridAppStartTimeModuleSpec::getAppStartTime() { - static const auto method = javaClassStatic()->getMethod("getAppStartTime"); + static const auto method = _javaPart->javaClassStatic()->getMethod("getAppStartTime"); auto __result = method(_javaPart); return __result; } // Methods - void JHybridAppStartTimeModuleSpec::recordAppStartTime() { - static const auto method = javaClassStatic()->getMethod("recordAppStartTime"); - method(_javaPart); - } + } // namespace margelo::nitro::utils diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JHybridAppStartTimeModuleSpec.hpp b/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JHybridAppStartTimeModuleSpec.hpp index 135fb2db00d79..91fc411edbd00 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JHybridAppStartTimeModuleSpec.hpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JHybridAppStartTimeModuleSpec.hpp @@ -2,7 +2,7 @@ /// HybridAppStartTimeModuleSpec.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once @@ -18,32 +18,33 @@ namespace margelo::nitro::utils { using namespace facebook; - class JHybridAppStartTimeModuleSpec: public jni::HybridClass, - public virtual HybridAppStartTimeModuleSpec { + class JHybridAppStartTimeModuleSpec: public virtual HybridAppStartTimeModuleSpec, public virtual JHybridObject { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/utils/HybridAppStartTimeModuleSpec;"; - static jni::local_ref initHybrid(jni::alias_ref jThis); - static void registerNatives(); - - protected: - // C++ constructor (called from Java via `initHybrid()`) - explicit JHybridAppStartTimeModuleSpec(jni::alias_ref jThis) : - HybridObject(HybridAppStartTimeModuleSpec::TAG), - HybridBase(jThis), - _javaPart(jni::make_global(jThis)) {} + struct JavaPart: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/utils/HybridAppStartTimeModuleSpec;"; + std::shared_ptr getJHybridAppStartTimeModuleSpec(); + }; + struct CxxPart: public jni::HybridClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/utils/HybridAppStartTimeModuleSpec$CxxPart;"; + static jni::local_ref initHybrid(jni::alias_ref jThis); + static void registerNatives(); + using HybridBase::HybridBase; + protected: + std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; + }; public: + explicit JHybridAppStartTimeModuleSpec(const jni::local_ref& javaPart): + HybridObject(HybridAppStartTimeModuleSpec::TAG), + JHybridObject(javaPart), + _javaPart(jni::make_global(javaPart)) {} ~JHybridAppStartTimeModuleSpec() override { // Hermes GC can destroy JS objects on a non-JNI Thread. jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); }); } public: - size_t getExternalMemorySize() noexcept override; - void dispose() noexcept override; - - public: - inline const jni::global_ref& getJavaPart() const noexcept { + inline const jni::global_ref& getJavaPart() const noexcept { return _javaPart; } @@ -53,12 +54,10 @@ namespace margelo::nitro::utils { public: // Methods - void recordAppStartTime() override; + private: - friend HybridBase; - using HybridBase::HybridBase; - jni::global_ref _javaPart; + jni::global_ref _javaPart; }; } // namespace margelo::nitro::utils diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JHybridContactsModuleSpec.cpp b/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JHybridContactsModuleSpec.cpp index 17499137b22a1..812c363b0d360 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JHybridContactsModuleSpec.cpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JHybridContactsModuleSpec.cpp @@ -2,7 +2,7 @@ /// JHybridContactsModuleSpec.cpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #include "JHybridContactsModuleSpec.hpp" @@ -28,24 +28,31 @@ namespace margelo::nitro::utils { enum class ContactFields; } namespace margelo::nitro::utils { - jni::local_ref JHybridContactsModuleSpec::initHybrid(jni::alias_ref jThis) { - return makeCxxInstance(jThis); + std::shared_ptr JHybridContactsModuleSpec::JavaPart::getJHybridContactsModuleSpec() { + auto hybridObject = JHybridObject::JavaPart::getJHybridObject(); + auto castHybridObject = std::dynamic_pointer_cast(hybridObject); + if (castHybridObject == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to downcast JHybridObject to JHybridContactsModuleSpec!"); + } + return castHybridObject; } - void JHybridContactsModuleSpec::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", JHybridContactsModuleSpec::initHybrid), - }); + jni::local_ref JHybridContactsModuleSpec::CxxPart::initHybrid(jni::alias_ref jThis) { + return makeCxxInstance(jThis); } - size_t JHybridContactsModuleSpec::getExternalMemorySize() noexcept { - static const auto method = javaClassStatic()->getMethod("getMemorySize"); - return method(_javaPart); + std::shared_ptr JHybridContactsModuleSpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { + auto castJavaPart = jni::dynamic_ref_cast(javaPart); + if (castJavaPart == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridContactsModuleSpec::JavaPart!"); + } + return std::make_shared(castJavaPart); } - void JHybridContactsModuleSpec::dispose() noexcept { - static const auto method = javaClassStatic()->getMethod("dispose"); - method(_javaPart); + void JHybridContactsModuleSpec::CxxPart::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", JHybridContactsModuleSpec::CxxPart::initHybrid), + }); } // Properties @@ -53,13 +60,14 @@ namespace margelo::nitro::utils { // Methods std::shared_ptr>> JHybridContactsModuleSpec::getAll(const std::vector& keys) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref> /* keys */)>("getAll"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref> /* keys */)>("getAll"); auto __result = method(_javaPart, [&]() { size_t __size = keys.size(); jni::local_ref> __array = jni::JArrayClass::newArray(__size); for (size_t __i = 0; __i < __size; __i++) { const auto& __element = keys[__i]; - __array->setElement(__i, *JContactFields::fromCpp(__element)); + auto __elementJni = JContactFields::fromCpp(__element); + __array->setElement(__i, *__elementJni); } return __array; }()); diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JHybridContactsModuleSpec.hpp b/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JHybridContactsModuleSpec.hpp index c4977a2937c1f..b140e3c9f3768 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JHybridContactsModuleSpec.hpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JHybridContactsModuleSpec.hpp @@ -2,7 +2,7 @@ /// HybridContactsModuleSpec.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once @@ -18,32 +18,33 @@ namespace margelo::nitro::utils { using namespace facebook; - class JHybridContactsModuleSpec: public jni::HybridClass, - public virtual HybridContactsModuleSpec { + class JHybridContactsModuleSpec: public virtual HybridContactsModuleSpec, public virtual JHybridObject { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/utils/HybridContactsModuleSpec;"; - static jni::local_ref initHybrid(jni::alias_ref jThis); - static void registerNatives(); - - protected: - // C++ constructor (called from Java via `initHybrid()`) - explicit JHybridContactsModuleSpec(jni::alias_ref jThis) : - HybridObject(HybridContactsModuleSpec::TAG), - HybridBase(jThis), - _javaPart(jni::make_global(jThis)) {} + struct JavaPart: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/utils/HybridContactsModuleSpec;"; + std::shared_ptr getJHybridContactsModuleSpec(); + }; + struct CxxPart: public jni::HybridClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/utils/HybridContactsModuleSpec$CxxPart;"; + static jni::local_ref initHybrid(jni::alias_ref jThis); + static void registerNatives(); + using HybridBase::HybridBase; + protected: + std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; + }; public: + explicit JHybridContactsModuleSpec(const jni::local_ref& javaPart): + HybridObject(HybridContactsModuleSpec::TAG), + JHybridObject(javaPart), + _javaPart(jni::make_global(javaPart)) {} ~JHybridContactsModuleSpec() override { // Hermes GC can destroy JS objects on a non-JNI Thread. jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); }); } public: - size_t getExternalMemorySize() noexcept override; - void dispose() noexcept override; - - public: - inline const jni::global_ref& getJavaPart() const noexcept { + inline const jni::global_ref& getJavaPart() const noexcept { return _javaPart; } @@ -56,9 +57,7 @@ namespace margelo::nitro::utils { std::shared_ptr>> getAll(const std::vector& keys) override; private: - friend HybridBase; - using HybridBase::HybridBase; - jni::global_ref _javaPart; + jni::global_ref _javaPart; }; } // namespace margelo::nitro::utils diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JStringHolder.hpp b/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JStringHolder.hpp index babbbf5289c05..11b563d2b6950 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JStringHolder.hpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/android/c++/JStringHolder.hpp @@ -2,7 +2,7 @@ /// JStringHolder.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once @@ -44,7 +44,11 @@ namespace margelo::nitro::utils { */ [[maybe_unused]] static jni::local_ref fromCpp(const StringHolder& value) { - return newInstance( + using JSignature = JStringHolder(jni::alias_ref); + static const auto clazz = javaClassStatic(); + static const auto create = clazz->getStaticMethod("fromCpp"); + return create( + clazz, jni::make_jstring(value.value) ); } diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/Contact.kt b/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/Contact.kt index 327fe876dbbbb..ca037de30643b 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/Contact.kt +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/Contact.kt @@ -2,14 +2,13 @@ /// Contact.kt /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// package com.margelo.nitro.utils import androidx.annotation.Keep import com.facebook.proguard.annotations.DoNotStrip -import com.margelo.nitro.core.* /** @@ -17,25 +16,35 @@ import com.margelo.nitro.core.* */ @DoNotStrip @Keep -data class Contact +data class Contact( @DoNotStrip @Keep - constructor( - @DoNotStrip - @Keep - val firstName: String?, - @DoNotStrip - @Keep - val lastName: String?, - @DoNotStrip - @Keep - val phoneNumbers: Array?, - @DoNotStrip - @Keep - val emailAddresses: Array?, + val firstName: String?, + @DoNotStrip + @Keep + val lastName: String?, + @DoNotStrip + @Keep + val phoneNumbers: Array?, + @DoNotStrip + @Keep + val emailAddresses: Array?, + @DoNotStrip + @Keep + val imageData: String? +) { + /* primary constructor */ + + companion object { + /** + * Constructor called from C++ + */ @DoNotStrip @Keep - val imageData: String? - ) { - /* main constructor */ + @Suppress("unused") + @JvmStatic + private fun fromCpp(firstName: String?, lastName: String?, phoneNumbers: Array?, emailAddresses: Array?, imageData: String?): Contact { + return Contact(firstName, lastName, phoneNumbers, emailAddresses, imageData) + } + } } diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/ContactFields.kt b/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/ContactFields.kt index 619aed2f224f1..8c2c337ac373a 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/ContactFields.kt +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/ContactFields.kt @@ -2,7 +2,7 @@ /// ContactFields.kt /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// package com.margelo.nitro.utils @@ -21,4 +21,6 @@ enum class ContactFields(@DoNotStrip @Keep val value: Int) { PHONE_NUMBERS(2), EMAIL_ADDRESSES(3), IMAGE_DATA(4); + + companion object } diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/ExpensifyNitroUtilsOnLoad.kt b/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/ExpensifyNitroUtilsOnLoad.kt index f454ec43e2ffa..3b6c58ae83cb8 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/ExpensifyNitroUtilsOnLoad.kt +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/ExpensifyNitroUtilsOnLoad.kt @@ -2,7 +2,7 @@ /// ExpensifyNitroUtilsOnLoad.kt /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// package com.margelo.nitro.utils diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/HybridAppStartTimeModuleSpec.kt b/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/HybridAppStartTimeModuleSpec.kt index a03637b06ae76..f925221dd42b2 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/HybridAppStartTimeModuleSpec.kt +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/HybridAppStartTimeModuleSpec.kt @@ -2,7 +2,7 @@ /// HybridAppStartTimeModuleSpec.kt /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// package com.margelo.nitro.utils @@ -10,7 +10,7 @@ package com.margelo.nitro.utils import androidx.annotation.Keep import com.facebook.jni.HybridData import com.facebook.proguard.annotations.DoNotStrip -import com.margelo.nitro.core.* +import com.margelo.nitro.core.HybridObject /** * A Kotlin class representing the AppStartTimeModule HybridObject. @@ -24,31 +24,31 @@ import com.margelo.nitro.core.* "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" ) abstract class HybridAppStartTimeModuleSpec: HybridObject() { - @DoNotStrip - private var mHybridData: HybridData = initHybrid() - - init { - super.updateNative(mHybridData) - } - - override fun updateNative(hybridData: HybridData) { - mHybridData = hybridData - super.updateNative(hybridData) - } - // Properties @get:DoNotStrip @get:Keep abstract val appStartTime: Double // Methods + + + // Default implementation of `HybridObject.toString()` + override fun toString(): String { + return "[HybridObject AppStartTimeModule]" + } + + // C++ backing class @DoNotStrip @Keep - abstract fun recordAppStartTime(): Unit - - private external fun initHybrid(): HybridData + protected open class CxxPart(javaPart: HybridAppStartTimeModuleSpec): HybridObject.CxxPart(javaPart) { + // C++ JHybridAppStartTimeModuleSpec::CxxPart::initHybrid(...) + external override fun initHybrid(): HybridData + } + override fun createCxxPart(): CxxPart { + return CxxPart(this) + } companion object { - private const val TAG = "HybridAppStartTimeModuleSpec" + protected const val TAG = "HybridAppStartTimeModuleSpec" } } diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/HybridContactsModuleSpec.kt b/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/HybridContactsModuleSpec.kt index eb72823ea494b..8f68b49898eaa 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/HybridContactsModuleSpec.kt +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/HybridContactsModuleSpec.kt @@ -2,7 +2,7 @@ /// HybridContactsModuleSpec.kt /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// package com.margelo.nitro.utils @@ -10,7 +10,8 @@ package com.margelo.nitro.utils import androidx.annotation.Keep import com.facebook.jni.HybridData import com.facebook.proguard.annotations.DoNotStrip -import com.margelo.nitro.core.* +import com.margelo.nitro.core.Promise +import com.margelo.nitro.core.HybridObject /** * A Kotlin class representing the ContactsModule HybridObject. @@ -24,18 +25,6 @@ import com.margelo.nitro.core.* "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" ) abstract class HybridContactsModuleSpec: HybridObject() { - @DoNotStrip - private var mHybridData: HybridData = initHybrid() - - init { - super.updateNative(mHybridData) - } - - override fun updateNative(hybridData: HybridData) { - mHybridData = hybridData - super.updateNative(hybridData) - } - // Properties @@ -44,9 +33,23 @@ abstract class HybridContactsModuleSpec: HybridObject() { @Keep abstract fun getAll(keys: Array): Promise> - private external fun initHybrid(): HybridData + // Default implementation of `HybridObject.toString()` + override fun toString(): String { + return "[HybridObject ContactsModule]" + } + + // C++ backing class + @DoNotStrip + @Keep + protected open class CxxPart(javaPart: HybridContactsModuleSpec): HybridObject.CxxPart(javaPart) { + // C++ JHybridContactsModuleSpec::CxxPart::initHybrid(...) + external override fun initHybrid(): HybridData + } + override fun createCxxPart(): CxxPart { + return CxxPart(this) + } companion object { - private const val TAG = "HybridContactsModuleSpec" + protected const val TAG = "HybridContactsModuleSpec" } } diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/StringHolder.kt b/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/StringHolder.kt index 2b5330c8c4e2a..accaebee29685 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/StringHolder.kt +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/android/kotlin/com/margelo/nitro/utils/StringHolder.kt @@ -2,14 +2,13 @@ /// StringHolder.kt /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// package com.margelo.nitro.utils import androidx.annotation.Keep import com.facebook.proguard.annotations.DoNotStrip -import com.margelo.nitro.core.* /** @@ -17,13 +16,23 @@ import com.margelo.nitro.core.* */ @DoNotStrip @Keep -data class StringHolder +data class StringHolder( @DoNotStrip @Keep - constructor( + val value: String +) { + /* primary constructor */ + + companion object { + /** + * Constructor called from C++ + */ @DoNotStrip @Keep - val value: String - ) { - /* main constructor */ + @Suppress("unused") + @JvmStatic + private fun fromCpp(value: String): StringHolder { + return StringHolder(value) + } + } } diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils+autolinking.rb b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils+autolinking.rb index 997952fe1fc77..78c2c451cd922 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils+autolinking.rb +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils+autolinking.rb @@ -2,7 +2,7 @@ # ExpensifyNitroUtils+autolinking.rb # This file was generated by nitrogen. DO NOT MODIFY THIS FILE. # https://github.com/mrousavy/nitro -# Copyright © 2026 Marc Rousavy @ Margelo +# Copyright © Marc Rousavy @ Margelo # # This is a Ruby script that adds all files generated by Nitrogen @@ -52,7 +52,7 @@ def add_nitrogen_files(spec) spec.pod_target_xcconfig = current_pod_target_xcconfig.merge({ # Use C++ 20 "CLANG_CXX_LANGUAGE_STANDARD" => "c++20", - # Enables C++ <-> Swift interop (by default it's only C) + # Enables C++ <-> Swift interop (by default it's only ObjC) "SWIFT_OBJC_INTEROP_MODE" => "objcxx", # Enables stricter modular headers "DEFINES_MODULE" => "YES", diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils-Swift-Cxx-Bridge.cpp b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils-Swift-Cxx-Bridge.cpp index b4ba285734f0b..bad2bd0d8e7a6 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils-Swift-Cxx-Bridge.cpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils-Swift-Cxx-Bridge.cpp @@ -2,7 +2,7 @@ /// ExpensifyNitroUtils-Swift-Cxx-Bridge.cpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #include "ExpensifyNitroUtils-Swift-Cxx-Bridge.hpp" @@ -11,15 +11,16 @@ #include "ExpensifyNitroUtils-Swift-Cxx-Umbrella.hpp" #include "HybridAppStartTimeModuleSpecSwift.hpp" #include "HybridContactsModuleSpecSwift.hpp" +#include namespace margelo::nitro::utils::bridge::swift { // pragma MARK: std::shared_ptr - std::shared_ptr create_std__shared_ptr_HybridAppStartTimeModuleSpec_(void* _Nonnull swiftUnsafePointer) noexcept { + std::shared_ptr create_std__shared_ptr_HybridAppStartTimeModuleSpec_(void* NON_NULL swiftUnsafePointer) noexcept { ExpensifyNitroUtils::HybridAppStartTimeModuleSpec_cxx swiftPart = ExpensifyNitroUtils::HybridAppStartTimeModuleSpec_cxx::fromUnsafe(swiftUnsafePointer); return std::make_shared(swiftPart); } - void* _Nonnull get_std__shared_ptr_HybridAppStartTimeModuleSpec_(std__shared_ptr_HybridAppStartTimeModuleSpec_ cppType) noexcept { + void* NON_NULL get_std__shared_ptr_HybridAppStartTimeModuleSpec_(std__shared_ptr_HybridAppStartTimeModuleSpec_ cppType) { std::shared_ptr swiftWrapper = std::dynamic_pointer_cast(cppType); #ifdef NITRO_DEBUG if (swiftWrapper == nullptr) [[unlikely]] { @@ -31,7 +32,7 @@ namespace margelo::nitro::utils::bridge::swift { } // pragma MARK: std::function& /* result */)> - Func_void_std__vector_Contact_ create_Func_void_std__vector_Contact_(void* _Nonnull swiftClosureWrapper) noexcept { + Func_void_std__vector_Contact_ create_Func_void_std__vector_Contact_(void* NON_NULL swiftClosureWrapper) noexcept { auto swiftClosure = ExpensifyNitroUtils::Func_void_std__vector_Contact_::fromUnsafe(swiftClosureWrapper); return [swiftClosure = std::move(swiftClosure)](const std::vector& result) mutable -> void { swiftClosure.call(result); @@ -39,7 +40,7 @@ namespace margelo::nitro::utils::bridge::swift { } // pragma MARK: std::function - Func_void_std__exception_ptr create_Func_void_std__exception_ptr(void* _Nonnull swiftClosureWrapper) noexcept { + Func_void_std__exception_ptr create_Func_void_std__exception_ptr(void* NON_NULL swiftClosureWrapper) noexcept { auto swiftClosure = ExpensifyNitroUtils::Func_void_std__exception_ptr::fromUnsafe(swiftClosureWrapper); return [swiftClosure = std::move(swiftClosure)](const std::exception_ptr& error) mutable -> void { swiftClosure.call(error); @@ -47,11 +48,11 @@ namespace margelo::nitro::utils::bridge::swift { } // pragma MARK: std::shared_ptr - std::shared_ptr create_std__shared_ptr_HybridContactsModuleSpec_(void* _Nonnull swiftUnsafePointer) noexcept { + std::shared_ptr create_std__shared_ptr_HybridContactsModuleSpec_(void* NON_NULL swiftUnsafePointer) noexcept { ExpensifyNitroUtils::HybridContactsModuleSpec_cxx swiftPart = ExpensifyNitroUtils::HybridContactsModuleSpec_cxx::fromUnsafe(swiftUnsafePointer); return std::make_shared(swiftPart); } - void* _Nonnull get_std__shared_ptr_HybridContactsModuleSpec_(std__shared_ptr_HybridContactsModuleSpec_ cppType) noexcept { + void* NON_NULL get_std__shared_ptr_HybridContactsModuleSpec_(std__shared_ptr_HybridContactsModuleSpec_ cppType) { std::shared_ptr swiftWrapper = std::dynamic_pointer_cast(cppType); #ifdef NITRO_DEBUG if (swiftWrapper == nullptr) [[unlikely]] { diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils-Swift-Cxx-Bridge.hpp b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils-Swift-Cxx-Bridge.hpp index ebcb69c0ee028..1e38d4cb4153f 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils-Swift-Cxx-Bridge.hpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils-Swift-Cxx-Bridge.hpp @@ -2,7 +2,7 @@ /// ExpensifyNitroUtils-Swift-Cxx-Bridge.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once @@ -52,22 +52,13 @@ namespace margelo::nitro::utils::bridge::swift { * Specialized version of `std::shared_ptr`. */ using std__shared_ptr_HybridAppStartTimeModuleSpec_ = std::shared_ptr; - std::shared_ptr create_std__shared_ptr_HybridAppStartTimeModuleSpec_(void* _Nonnull swiftUnsafePointer) noexcept; - void* _Nonnull get_std__shared_ptr_HybridAppStartTimeModuleSpec_(std__shared_ptr_HybridAppStartTimeModuleSpec_ cppType) noexcept; + std::shared_ptr create_std__shared_ptr_HybridAppStartTimeModuleSpec_(void* NON_NULL swiftUnsafePointer) noexcept; + void* NON_NULL get_std__shared_ptr_HybridAppStartTimeModuleSpec_(std__shared_ptr_HybridAppStartTimeModuleSpec_ cppType); // pragma MARK: std::weak_ptr using std__weak_ptr_HybridAppStartTimeModuleSpec_ = std::weak_ptr; inline std__weak_ptr_HybridAppStartTimeModuleSpec_ weakify_std__shared_ptr_HybridAppStartTimeModuleSpec_(const std::shared_ptr& strong) noexcept { return strong; } - // pragma MARK: Result - using Result_void_ = Result; - inline Result_void_ create_Result_void_() noexcept { - return Result::withValue(); - } - inline Result_void_ create_Result_void_(const std::exception_ptr& error) noexcept { - return Result::withError(error); - } - // pragma MARK: std::optional /** * Specialized version of `std::optional`. @@ -80,7 +71,7 @@ namespace margelo::nitro::utils::bridge::swift { return optional.has_value(); } inline std::string get_std__optional_std__string_(const std::optional& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::vector @@ -106,7 +97,7 @@ namespace margelo::nitro::utils::bridge::swift { return optional.has_value(); } inline std::vector get_std__optional_std__vector_StringHolder__(const std::optional>& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::vector @@ -149,7 +140,7 @@ namespace margelo::nitro::utils::bridge::swift { private: std::unique_ptr& /* result */)>> _function; } SWIFT_NONCOPYABLE; - Func_void_std__vector_Contact_ create_Func_void_std__vector_Contact_(void* _Nonnull swiftClosureWrapper) noexcept; + Func_void_std__vector_Contact_ create_Func_void_std__vector_Contact_(void* NON_NULL swiftClosureWrapper) noexcept; inline Func_void_std__vector_Contact__Wrapper wrap_Func_void_std__vector_Contact_(Func_void_std__vector_Contact_ value) noexcept { return Func_void_std__vector_Contact__Wrapper(std::move(value)); } @@ -171,7 +162,7 @@ namespace margelo::nitro::utils::bridge::swift { private: std::unique_ptr> _function; } SWIFT_NONCOPYABLE; - Func_void_std__exception_ptr create_Func_void_std__exception_ptr(void* _Nonnull swiftClosureWrapper) noexcept; + Func_void_std__exception_ptr create_Func_void_std__exception_ptr(void* NON_NULL swiftClosureWrapper) noexcept; inline Func_void_std__exception_ptr_Wrapper wrap_Func_void_std__exception_ptr(Func_void_std__exception_ptr value) noexcept { return Func_void_std__exception_ptr_Wrapper(std::move(value)); } @@ -192,8 +183,8 @@ namespace margelo::nitro::utils::bridge::swift { * Specialized version of `std::shared_ptr`. */ using std__shared_ptr_HybridContactsModuleSpec_ = std::shared_ptr; - std::shared_ptr create_std__shared_ptr_HybridContactsModuleSpec_(void* _Nonnull swiftUnsafePointer) noexcept; - void* _Nonnull get_std__shared_ptr_HybridContactsModuleSpec_(std__shared_ptr_HybridContactsModuleSpec_ cppType) noexcept; + std::shared_ptr create_std__shared_ptr_HybridContactsModuleSpec_(void* NON_NULL swiftUnsafePointer) noexcept; + void* NON_NULL get_std__shared_ptr_HybridContactsModuleSpec_(std__shared_ptr_HybridContactsModuleSpec_ cppType); // pragma MARK: std::weak_ptr using std__weak_ptr_HybridContactsModuleSpec_ = std::weak_ptr; diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils-Swift-Cxx-Umbrella.hpp b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils-Swift-Cxx-Umbrella.hpp index 52ea5f3863734..f61ac3b6b942e 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils-Swift-Cxx-Umbrella.hpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtils-Swift-Cxx-Umbrella.hpp @@ -2,7 +2,7 @@ /// ExpensifyNitroUtils-Swift-Cxx-Umbrella.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtilsAutolinking.mm b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtilsAutolinking.mm index b3101413be341..dcf15dd6aba0b 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtilsAutolinking.mm +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtilsAutolinking.mm @@ -2,7 +2,7 @@ /// ExpensifyNitroUtilsAutolinking.mm /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #import diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtilsAutolinking.swift b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtilsAutolinking.swift index b402dc07c98fb..5794c7097255e 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtilsAutolinking.swift +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/ExpensifyNitroUtilsAutolinking.swift @@ -2,19 +2,16 @@ /// ExpensifyNitroUtilsAutolinking.swift /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// +import NitroModules + +// TODO: Use empty enums once Swift supports exporting them as namespaces +// See: https://github.com/swiftlang/swift/pull/83616 public final class ExpensifyNitroUtilsAutolinking { public typealias bridge = margelo.nitro.utils.bridge.swift - /** - * Creates an instance of a Swift class that implements `HybridContactsModuleSpec`, - * and wraps it in a Swift class that can directly interop with C++ (`HybridContactsModuleSpec_cxx`) - * - * This is generated by Nitrogen and will initialize the class specified - * in the `"autolinking"` property of `nitro.json` (in this case, `HybridContactsModule`). - */ public static func createContactsModule() -> bridge.std__shared_ptr_HybridContactsModuleSpec_ { let hybridObject = HybridContactsModule() return { () -> bridge.std__shared_ptr_HybridContactsModuleSpec_ in @@ -23,13 +20,10 @@ public final class ExpensifyNitroUtilsAutolinking { }() } - /** - * Creates an instance of a Swift class that implements `HybridAppStartTimeModuleSpec`, - * and wraps it in a Swift class that can directly interop with C++ (`HybridAppStartTimeModuleSpec_cxx`) - * - * This is generated by Nitrogen and will initialize the class specified - * in the `"autolinking"` property of `nitro.json` (in this case, `HybridAppStartTimeModule`). - */ + public static func isContactsModuleRecyclable() -> Bool { + return HybridContactsModule.self is any RecyclableView.Type + } + public static func createAppStartTimeModule() -> bridge.std__shared_ptr_HybridAppStartTimeModuleSpec_ { let hybridObject = HybridAppStartTimeModule() return { () -> bridge.std__shared_ptr_HybridAppStartTimeModuleSpec_ in @@ -37,4 +31,8 @@ public final class ExpensifyNitroUtilsAutolinking { return __cxxWrapped.getCxxPart() }() } + + public static func isAppStartTimeModuleRecyclable() -> Bool { + return HybridAppStartTimeModule.self is any RecyclableView.Type + } } diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/c++/HybridAppStartTimeModuleSpecSwift.cpp b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/c++/HybridAppStartTimeModuleSpecSwift.cpp index e9cb5771aaa3c..c5c0f33208a50 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/c++/HybridAppStartTimeModuleSpecSwift.cpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/c++/HybridAppStartTimeModuleSpecSwift.cpp @@ -2,7 +2,7 @@ /// HybridAppStartTimeModuleSpecSwift.cpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #include "HybridAppStartTimeModuleSpecSwift.hpp" diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/c++/HybridAppStartTimeModuleSpecSwift.hpp b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/c++/HybridAppStartTimeModuleSpecSwift.hpp index 8a0da8729b561..2f7cf1df71284 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/c++/HybridAppStartTimeModuleSpecSwift.hpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/c++/HybridAppStartTimeModuleSpecSwift.hpp @@ -2,7 +2,7 @@ /// HybridAppStartTimeModuleSpecSwift.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once @@ -47,9 +47,18 @@ namespace margelo::nitro::utils { inline size_t getExternalMemorySize() noexcept override { return _swiftPart.getMemorySize(); } + bool equals(const std::shared_ptr& other) override { + if (auto otherCast = std::dynamic_pointer_cast(other)) { + return _swiftPart.equals(otherCast->_swiftPart); + } + return false; + } void dispose() noexcept override { _swiftPart.dispose(); } + std::string toString() override { + return _swiftPart.toString(); + } public: // Properties @@ -59,12 +68,7 @@ namespace margelo::nitro::utils { public: // Methods - inline void recordAppStartTime() override { - auto __result = _swiftPart.recordAppStartTime(); - if (__result.hasError()) [[unlikely]] { - std::rethrow_exception(__result.error()); - } - } + private: ExpensifyNitroUtils::HybridAppStartTimeModuleSpec_cxx _swiftPart; diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/c++/HybridContactsModuleSpecSwift.cpp b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/c++/HybridContactsModuleSpecSwift.cpp index 4ed87fe30a92c..c112a079efb9d 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/c++/HybridContactsModuleSpecSwift.cpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/c++/HybridContactsModuleSpecSwift.cpp @@ -2,7 +2,7 @@ /// HybridContactsModuleSpecSwift.cpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #include "HybridContactsModuleSpecSwift.hpp" diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/c++/HybridContactsModuleSpecSwift.hpp b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/c++/HybridContactsModuleSpecSwift.hpp index 0ec5342eccecd..17fb6c17149af 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/c++/HybridContactsModuleSpecSwift.hpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/c++/HybridContactsModuleSpecSwift.hpp @@ -2,7 +2,7 @@ /// HybridContactsModuleSpecSwift.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once @@ -58,9 +58,18 @@ namespace margelo::nitro::utils { inline size_t getExternalMemorySize() noexcept override { return _swiftPart.getMemorySize(); } + bool equals(const std::shared_ptr& other) override { + if (auto otherCast = std::dynamic_pointer_cast(other)) { + return _swiftPart.equals(otherCast->_swiftPart); + } + return false; + } void dispose() noexcept override { _swiftPart.dispose(); } + std::string toString() override { + return _swiftPart.toString(); + } public: // Properties diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/Contact.swift b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/Contact.swift index bc66c3e46d2b0..2e6df64a0eaa1 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/Contact.swift +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/Contact.swift @@ -2,7 +2,7 @@ /// Contact.swift /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// import NitroModules @@ -64,135 +64,63 @@ public extension Contact { }()) } + @inline(__always) var firstName: String? { - @inline(__always) - get { - return { () -> String? in - if bridge.has_value_std__optional_std__string_(self.__firstName) { - let __unwrapped = bridge.get_std__optional_std__string_(self.__firstName) - return String(__unwrapped) - } else { - return nil - } - }() - } - @inline(__always) - set { - self.__firstName = { () -> bridge.std__optional_std__string_ in - if let __unwrappedValue = newValue { - return bridge.create_std__optional_std__string_(std.string(__unwrappedValue)) - } else { - return .init() - } - }() - } + return { () -> String? in + if bridge.has_value_std__optional_std__string_(self.__firstName) { + let __unwrapped = bridge.get_std__optional_std__string_(self.__firstName) + return String(__unwrapped) + } else { + return nil + } + }() } + @inline(__always) var lastName: String? { - @inline(__always) - get { - return { () -> String? in - if bridge.has_value_std__optional_std__string_(self.__lastName) { - let __unwrapped = bridge.get_std__optional_std__string_(self.__lastName) - return String(__unwrapped) - } else { - return nil - } - }() - } - @inline(__always) - set { - self.__lastName = { () -> bridge.std__optional_std__string_ in - if let __unwrappedValue = newValue { - return bridge.create_std__optional_std__string_(std.string(__unwrappedValue)) - } else { - return .init() - } - }() - } + return { () -> String? in + if bridge.has_value_std__optional_std__string_(self.__lastName) { + let __unwrapped = bridge.get_std__optional_std__string_(self.__lastName) + return String(__unwrapped) + } else { + return nil + } + }() } + @inline(__always) var phoneNumbers: [StringHolder]? { - @inline(__always) - get { - return { () -> [StringHolder]? in - if bridge.has_value_std__optional_std__vector_StringHolder__(self.__phoneNumbers) { - let __unwrapped = bridge.get_std__optional_std__vector_StringHolder__(self.__phoneNumbers) - return __unwrapped.map({ __item in __item }) - } else { - return nil - } - }() - } - @inline(__always) - set { - self.__phoneNumbers = { () -> bridge.std__optional_std__vector_StringHolder__ in - if let __unwrappedValue = newValue { - return bridge.create_std__optional_std__vector_StringHolder__({ () -> bridge.std__vector_StringHolder_ in - var __vector = bridge.create_std__vector_StringHolder_(__unwrappedValue.count) - for __item in __unwrappedValue { - __vector.push_back(__item) - } - return __vector - }()) - } else { - return .init() - } - }() - } + return { () -> [StringHolder]? in + if bridge.has_value_std__optional_std__vector_StringHolder__(self.__phoneNumbers) { + let __unwrapped = bridge.get_std__optional_std__vector_StringHolder__(self.__phoneNumbers) + return __unwrapped.map({ __item in __item }) + } else { + return nil + } + }() } + @inline(__always) var emailAddresses: [StringHolder]? { - @inline(__always) - get { - return { () -> [StringHolder]? in - if bridge.has_value_std__optional_std__vector_StringHolder__(self.__emailAddresses) { - let __unwrapped = bridge.get_std__optional_std__vector_StringHolder__(self.__emailAddresses) - return __unwrapped.map({ __item in __item }) - } else { - return nil - } - }() - } - @inline(__always) - set { - self.__emailAddresses = { () -> bridge.std__optional_std__vector_StringHolder__ in - if let __unwrappedValue = newValue { - return bridge.create_std__optional_std__vector_StringHolder__({ () -> bridge.std__vector_StringHolder_ in - var __vector = bridge.create_std__vector_StringHolder_(__unwrappedValue.count) - for __item in __unwrappedValue { - __vector.push_back(__item) - } - return __vector - }()) - } else { - return .init() - } - }() - } + return { () -> [StringHolder]? in + if bridge.has_value_std__optional_std__vector_StringHolder__(self.__emailAddresses) { + let __unwrapped = bridge.get_std__optional_std__vector_StringHolder__(self.__emailAddresses) + return __unwrapped.map({ __item in __item }) + } else { + return nil + } + }() } + @inline(__always) var imageData: String? { - @inline(__always) - get { - return { () -> String? in - if bridge.has_value_std__optional_std__string_(self.__imageData) { - let __unwrapped = bridge.get_std__optional_std__string_(self.__imageData) - return String(__unwrapped) - } else { - return nil - } - }() - } - @inline(__always) - set { - self.__imageData = { () -> bridge.std__optional_std__string_ in - if let __unwrappedValue = newValue { - return bridge.create_std__optional_std__string_(std.string(__unwrappedValue)) - } else { - return .init() - } - }() - } + return { () -> String? in + if bridge.has_value_std__optional_std__string_(self.__imageData) { + let __unwrapped = bridge.get_std__optional_std__string_(self.__imageData) + return String(__unwrapped) + } else { + return nil + } + }() } } diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/ContactFields.swift b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/ContactFields.swift index 9f464ce24e0a3..1f7f694816da6 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/ContactFields.swift +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/ContactFields.swift @@ -2,7 +2,7 @@ /// ContactFields.swift /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// /** diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift index a2ddc405ac6d1..17206995f1f62 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift @@ -2,12 +2,11 @@ /// Func_void_std__exception_ptr.swift /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// import NitroModules - /** * Wraps a Swift `(_ error: Error) -> Void` as a class. * This class can be used from C++, e.g. to wrap the Swift closure as a `std::function`. diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/Func_void_std__vector_Contact_.swift b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/Func_void_std__vector_Contact_.swift index 1dd498ba1629f..48f3bb1925488 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/Func_void_std__vector_Contact_.swift +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/Func_void_std__vector_Contact_.swift @@ -2,12 +2,11 @@ /// Func_void_std__vector_Contact_.swift /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// import NitroModules - /** * Wraps a Swift `(_ value: [Contact]) -> Void` as a class. * This class can be used from C++, e.g. to wrap the Swift closure as a `std::function`. diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/HybridAppStartTimeModuleSpec.swift b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/HybridAppStartTimeModuleSpec.swift index e3b9e50858fb3..97370c141ba02 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/HybridAppStartTimeModuleSpec.swift +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/HybridAppStartTimeModuleSpec.swift @@ -2,10 +2,9 @@ /// HybridAppStartTimeModuleSpec.swift /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /// See ``HybridAppStartTimeModuleSpec`` @@ -14,7 +13,14 @@ public protocol HybridAppStartTimeModuleSpec_protocol: HybridObject { var appStartTime: Double { get } // Methods - func recordAppStartTime() throws -> Void + +} + +public extension HybridAppStartTimeModuleSpec_protocol { + /// Default implementation of ``HybridObject.toString`` + func toString() -> String { + return "[HybridObject AppStartTimeModule]" + } } /// See ``HybridAppStartTimeModuleSpec`` @@ -23,14 +29,14 @@ open class HybridAppStartTimeModuleSpec_base { public init() { } public func getCxxWrapper() -> HybridAppStartTimeModuleSpec_cxx { #if DEBUG - guard self is HybridAppStartTimeModuleSpec else { + guard self is any HybridAppStartTimeModuleSpec else { fatalError("`self` is not a `HybridAppStartTimeModuleSpec`! Did you accidentally inherit from `HybridAppStartTimeModuleSpec_base` instead of `HybridAppStartTimeModuleSpec`?") } #endif if let cxxWrapper = self.cxxWrapper { return cxxWrapper } else { - let cxxWrapper = HybridAppStartTimeModuleSpec_cxx(self as! HybridAppStartTimeModuleSpec) + let cxxWrapper = HybridAppStartTimeModuleSpec_cxx(self as! any HybridAppStartTimeModuleSpec) self.cxxWrapper = cxxWrapper return cxxWrapper } diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/HybridAppStartTimeModuleSpec_cxx.swift b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/HybridAppStartTimeModuleSpec_cxx.swift index 3d54beba719df..933ed8c89beed 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/HybridAppStartTimeModuleSpec_cxx.swift +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/HybridAppStartTimeModuleSpec_cxx.swift @@ -2,10 +2,9 @@ /// HybridAppStartTimeModuleSpec_cxx.swift /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** @@ -76,7 +75,7 @@ open class HybridAppStartTimeModuleSpec_cxx { */ public func getCxxPart() -> bridge.std__shared_ptr_HybridAppStartTimeModuleSpec_ { let cachedCxxPart = self.__cxxPart.lock() - if cachedCxxPart.__convertToBool() { + if Bool(fromCxx: cachedCxxPart) { return cachedCxxPart } else { let newCxxPart = bridge.create_std__shared_ptr_HybridAppStartTimeModuleSpec_(self.toUnsafe()) @@ -96,6 +95,14 @@ open class HybridAppStartTimeModuleSpec_cxx { return MemoryHelper.getSizeOf(self.__implementation) + self.__implementation.memorySize } + /** + * Compares this object with the given [other] object for reference equality. + */ + @inline(__always) + public func equals(other: HybridAppStartTimeModuleSpec_cxx) -> Bool { + return self.__implementation === other.__implementation + } + /** * Call dispose() on the Swift class. * This _may_ be called manually from JS. @@ -105,6 +112,14 @@ open class HybridAppStartTimeModuleSpec_cxx { self.__implementation.dispose() } + /** + * Call toString() on the Swift class. + */ + @inline(__always) + public func toString() -> String { + return self.__implementation.toString() + } + // Properties public final var appStartTime: Double { @inline(__always) @@ -114,14 +129,5 @@ open class HybridAppStartTimeModuleSpec_cxx { } // Methods - @inline(__always) - public final func recordAppStartTime() -> bridge.Result_void_ { - do { - try self.__implementation.recordAppStartTime() - return bridge.create_Result_void_() - } catch (let __error) { - let __exceptionPtr = __error.toCpp() - return bridge.create_Result_void_(__exceptionPtr) - } - } + } diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/HybridContactsModuleSpec.swift b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/HybridContactsModuleSpec.swift index 3456cb65982ba..cd6b32d838737 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/HybridContactsModuleSpec.swift +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/HybridContactsModuleSpec.swift @@ -2,10 +2,9 @@ /// HybridContactsModuleSpec.swift /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /// See ``HybridContactsModuleSpec`` @@ -17,20 +16,27 @@ public protocol HybridContactsModuleSpec_protocol: HybridObject { func getAll(keys: [ContactFields]) throws -> Promise<[Contact]> } +public extension HybridContactsModuleSpec_protocol { + /// Default implementation of ``HybridObject.toString`` + func toString() -> String { + return "[HybridObject ContactsModule]" + } +} + /// See ``HybridContactsModuleSpec`` open class HybridContactsModuleSpec_base { private weak var cxxWrapper: HybridContactsModuleSpec_cxx? = nil public init() { } public func getCxxWrapper() -> HybridContactsModuleSpec_cxx { #if DEBUG - guard self is HybridContactsModuleSpec else { + guard self is any HybridContactsModuleSpec else { fatalError("`self` is not a `HybridContactsModuleSpec`! Did you accidentally inherit from `HybridContactsModuleSpec_base` instead of `HybridContactsModuleSpec`?") } #endif if let cxxWrapper = self.cxxWrapper { return cxxWrapper } else { - let cxxWrapper = HybridContactsModuleSpec_cxx(self as! HybridContactsModuleSpec) + let cxxWrapper = HybridContactsModuleSpec_cxx(self as! any HybridContactsModuleSpec) self.cxxWrapper = cxxWrapper return cxxWrapper } diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/HybridContactsModuleSpec_cxx.swift b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/HybridContactsModuleSpec_cxx.swift index 80081c8acb78b..e8c7683952829 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/HybridContactsModuleSpec_cxx.swift +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/HybridContactsModuleSpec_cxx.swift @@ -2,10 +2,9 @@ /// HybridContactsModuleSpec_cxx.swift /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** @@ -76,7 +75,7 @@ open class HybridContactsModuleSpec_cxx { */ public func getCxxPart() -> bridge.std__shared_ptr_HybridContactsModuleSpec_ { let cachedCxxPart = self.__cxxPart.lock() - if cachedCxxPart.__convertToBool() { + if Bool(fromCxx: cachedCxxPart) { return cachedCxxPart } else { let newCxxPart = bridge.create_std__shared_ptr_HybridContactsModuleSpec_(self.toUnsafe()) @@ -96,6 +95,14 @@ open class HybridContactsModuleSpec_cxx { return MemoryHelper.getSizeOf(self.__implementation) + self.__implementation.memorySize } + /** + * Compares this object with the given [other] object for reference equality. + */ + @inline(__always) + public func equals(other: HybridContactsModuleSpec_cxx) -> Bool { + return self.__implementation === other.__implementation + } + /** * Call dispose() on the Swift class. * This _may_ be called manually from JS. @@ -105,6 +112,14 @@ open class HybridContactsModuleSpec_cxx { self.__implementation.dispose() } + /** + * Call toString() on the Swift class. + */ + @inline(__always) + public func toString() -> String { + return self.__implementation.toString() + } + // Properties diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/StringHolder.swift b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/StringHolder.swift index 5f9c0bd1b5b1b..f1ccaabdc5071 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/StringHolder.swift +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/ios/swift/StringHolder.swift @@ -2,7 +2,7 @@ /// StringHolder.swift /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// import NitroModules @@ -22,14 +22,8 @@ public extension StringHolder { self.init(std.string(value)) } + @inline(__always) var value: String { - @inline(__always) - get { - return String(self.__value) - } - @inline(__always) - set { - self.__value = std.string(newValue) - } + return String(self.__value) } } diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/Contact.hpp b/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/Contact.hpp index c30eb56e1820b..cda9afb3f5f33 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/Contact.hpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/Contact.hpp @@ -2,7 +2,7 @@ /// Contact.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once @@ -17,6 +17,16 @@ #else #error NitroModules cannot be found! Are you sure you installed NitroModules properly? #endif +#if __has_include() +#include +#else +#error NitroModules cannot be found! Are you sure you installed NitroModules properly? +#endif +#if __has_include() +#include +#else +#error NitroModules cannot be found! Are you sure you installed NitroModules properly? +#endif // Forward declaration of `StringHolder` to properly resolve imports. namespace margelo::nitro::utils { struct StringHolder; } @@ -31,7 +41,7 @@ namespace margelo::nitro::utils { /** * A struct which can be represented as a JavaScript object (Contact). */ - struct Contact { + struct Contact final { public: std::optional firstName SWIFT_PRIVATE; std::optional lastName SWIFT_PRIVATE; @@ -42,6 +52,9 @@ namespace margelo::nitro::utils { public: Contact() = default; explicit Contact(std::optional firstName, std::optional lastName, std::optional> phoneNumbers, std::optional> emailAddresses, std::optional imageData): firstName(firstName), lastName(lastName), phoneNumbers(phoneNumbers), emailAddresses(emailAddresses), imageData(imageData) {} + + public: + friend bool operator==(const Contact& lhs, const Contact& rhs) = default; }; } // namespace margelo::nitro::utils @@ -54,20 +67,20 @@ namespace margelo::nitro { static inline margelo::nitro::utils::Contact fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) { jsi::Object obj = arg.asObject(runtime); return margelo::nitro::utils::Contact( - JSIConverter>::fromJSI(runtime, obj.getProperty(runtime, "firstName")), - JSIConverter>::fromJSI(runtime, obj.getProperty(runtime, "lastName")), - JSIConverter>>::fromJSI(runtime, obj.getProperty(runtime, "phoneNumbers")), - JSIConverter>>::fromJSI(runtime, obj.getProperty(runtime, "emailAddresses")), - JSIConverter>::fromJSI(runtime, obj.getProperty(runtime, "imageData")) + JSIConverter>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "firstName"))), + JSIConverter>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "lastName"))), + JSIConverter>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "phoneNumbers"))), + JSIConverter>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "emailAddresses"))), + JSIConverter>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "imageData"))) ); } static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::utils::Contact& arg) { jsi::Object obj(runtime); - obj.setProperty(runtime, "firstName", JSIConverter>::toJSI(runtime, arg.firstName)); - obj.setProperty(runtime, "lastName", JSIConverter>::toJSI(runtime, arg.lastName)); - obj.setProperty(runtime, "phoneNumbers", JSIConverter>>::toJSI(runtime, arg.phoneNumbers)); - obj.setProperty(runtime, "emailAddresses", JSIConverter>>::toJSI(runtime, arg.emailAddresses)); - obj.setProperty(runtime, "imageData", JSIConverter>::toJSI(runtime, arg.imageData)); + obj.setProperty(runtime, PropNameIDCache::get(runtime, "firstName"), JSIConverter>::toJSI(runtime, arg.firstName)); + obj.setProperty(runtime, PropNameIDCache::get(runtime, "lastName"), JSIConverter>::toJSI(runtime, arg.lastName)); + obj.setProperty(runtime, PropNameIDCache::get(runtime, "phoneNumbers"), JSIConverter>>::toJSI(runtime, arg.phoneNumbers)); + obj.setProperty(runtime, PropNameIDCache::get(runtime, "emailAddresses"), JSIConverter>>::toJSI(runtime, arg.emailAddresses)); + obj.setProperty(runtime, PropNameIDCache::get(runtime, "imageData"), JSIConverter>::toJSI(runtime, arg.imageData)); return obj; } static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) { @@ -75,11 +88,14 @@ namespace margelo::nitro { return false; } jsi::Object obj = value.getObject(runtime); - if (!JSIConverter>::canConvert(runtime, obj.getProperty(runtime, "firstName"))) return false; - if (!JSIConverter>::canConvert(runtime, obj.getProperty(runtime, "lastName"))) return false; - if (!JSIConverter>>::canConvert(runtime, obj.getProperty(runtime, "phoneNumbers"))) return false; - if (!JSIConverter>>::canConvert(runtime, obj.getProperty(runtime, "emailAddresses"))) return false; - if (!JSIConverter>::canConvert(runtime, obj.getProperty(runtime, "imageData"))) return false; + if (!nitro::isPlainObject(runtime, obj)) { + return false; + } + if (!JSIConverter>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "firstName")))) return false; + if (!JSIConverter>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "lastName")))) return false; + if (!JSIConverter>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "phoneNumbers")))) return false; + if (!JSIConverter>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "emailAddresses")))) return false; + if (!JSIConverter>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "imageData")))) return false; return true; } }; diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/ContactFields.hpp b/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/ContactFields.hpp index df13271b6919c..562bed8035742 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/ContactFields.hpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/ContactFields.hpp @@ -2,7 +2,7 @@ /// ContactFields.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/HybridAppStartTimeModuleSpec.cpp b/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/HybridAppStartTimeModuleSpec.cpp index 90c53a80a53db..a3a70baab6b5c 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/HybridAppStartTimeModuleSpec.cpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/HybridAppStartTimeModuleSpec.cpp @@ -2,7 +2,7 @@ /// HybridAppStartTimeModuleSpec.cpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #include "HybridAppStartTimeModuleSpec.hpp" @@ -15,7 +15,6 @@ namespace margelo::nitro::utils { // load custom methods/properties registerHybrids(this, [](Prototype& prototype) { prototype.registerHybridGetter("appStartTime", &HybridAppStartTimeModuleSpec::getAppStartTime); - prototype.registerHybridMethod("recordAppStartTime", &HybridAppStartTimeModuleSpec::recordAppStartTime); }); } diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/HybridAppStartTimeModuleSpec.hpp b/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/HybridAppStartTimeModuleSpec.hpp index 75b174de7a6b6..21188ee4dbdfc 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/HybridAppStartTimeModuleSpec.hpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/HybridAppStartTimeModuleSpec.hpp @@ -2,7 +2,7 @@ /// HybridAppStartTimeModuleSpec.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once @@ -48,7 +48,7 @@ namespace margelo::nitro::utils { public: // Methods - virtual void recordAppStartTime() = 0; + protected: // Hybrid Setup diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/HybridContactsModuleSpec.cpp b/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/HybridContactsModuleSpec.cpp index 3f609e5bbcb27..dec0a2adc457d 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/HybridContactsModuleSpec.cpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/HybridContactsModuleSpec.cpp @@ -2,7 +2,7 @@ /// HybridContactsModuleSpec.cpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #include "HybridContactsModuleSpec.hpp" diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/HybridContactsModuleSpec.hpp b/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/HybridContactsModuleSpec.hpp index c9ffa5ed3cca9..cbb6831c685c2 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/HybridContactsModuleSpec.hpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/HybridContactsModuleSpec.hpp @@ -2,7 +2,7 @@ /// HybridContactsModuleSpec.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once diff --git a/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/StringHolder.hpp b/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/StringHolder.hpp index 1f400597c6456..506185c82184b 100644 --- a/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/StringHolder.hpp +++ b/modules/ExpensifyNitroUtils/nitrogen/generated/shared/c++/StringHolder.hpp @@ -2,7 +2,7 @@ /// StringHolder.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro -/// Copyright © 2026 Marc Rousavy @ Margelo +/// Copyright © Marc Rousavy @ Margelo /// #pragma once @@ -17,6 +17,16 @@ #else #error NitroModules cannot be found! Are you sure you installed NitroModules properly? #endif +#if __has_include() +#include +#else +#error NitroModules cannot be found! Are you sure you installed NitroModules properly? +#endif +#if __has_include() +#include +#else +#error NitroModules cannot be found! Are you sure you installed NitroModules properly? +#endif @@ -27,13 +37,16 @@ namespace margelo::nitro::utils { /** * A struct which can be represented as a JavaScript object (StringHolder). */ - struct StringHolder { + struct StringHolder final { public: std::string value SWIFT_PRIVATE; public: StringHolder() = default; explicit StringHolder(std::string value): value(value) {} + + public: + friend bool operator==(const StringHolder& lhs, const StringHolder& rhs) = default; }; } // namespace margelo::nitro::utils @@ -46,12 +59,12 @@ namespace margelo::nitro { static inline margelo::nitro::utils::StringHolder fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) { jsi::Object obj = arg.asObject(runtime); return margelo::nitro::utils::StringHolder( - JSIConverter::fromJSI(runtime, obj.getProperty(runtime, "value")) + JSIConverter::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "value"))) ); } static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::utils::StringHolder& arg) { jsi::Object obj(runtime); - obj.setProperty(runtime, "value", JSIConverter::toJSI(runtime, arg.value)); + obj.setProperty(runtime, PropNameIDCache::get(runtime, "value"), JSIConverter::toJSI(runtime, arg.value)); return obj; } static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) { @@ -59,7 +72,10 @@ namespace margelo::nitro { return false; } jsi::Object obj = value.getObject(runtime); - if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, "value"))) return false; + if (!nitro::isPlainObject(runtime, obj)) { + return false; + } + if (!JSIConverter::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "value")))) return false; return true; } }; From f78b3392055525d5d53ff2fe3d964e11f4ce6a92 Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Sun, 8 Mar 2026 23:28:45 +0000 Subject: [PATCH 3/7] chore: update `react-native-onyx` to latest commit in Onyx PR Onyx PR: https://github.com/Expensify/react-native-onyx/pull/749 --- package-lock.json | 46 ++++++++++++++++++++++++++++++++++++++++------ package.json | 2 +- 2 files changed, 41 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 69267611b6ba1..b16758c11c68a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -115,9 +115,9 @@ "react-native-keyboard-controller": "1.21.0-beta.1", "react-native-launch-arguments": "^4.1.0", "react-native-localize": "^3.5.4", - "react-native-onyx": "3.0.42", "react-native-nitro-modules": "0.35.0", "react-native-nitro-sqlite": "9.6.0", + "react-native-onyx": "git+https://github.com/Expensify/react-native-onyx.git#0e1750d7e955257c076d59d9dd1babb08f624ecf", "react-native-pager-view": "8.0.0", "react-native-pdf": "7.0.2", "react-native-permissions": "^5.4.0", @@ -18016,6 +18016,12 @@ "version": "2.0.6", "license": "MIT" }, + "node_modules/ascii-table": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/ascii-table/-/ascii-table-0.0.9.tgz", + "integrity": "sha512-xpkr6sCDIYTPqzvjG8M3ncw1YOTaloWZOyrUmicoEifBEKzQzt+ooUpRpQ/AbOoJfO/p2ZKiyp79qHThzJDulQ==", + "license": "MIT" + }, "node_modules/assertion-error": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", @@ -30436,10 +30442,23 @@ "version": "4.17.21", "license": "MIT" }, + "node_modules/lodash.bindall": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.bindall/-/lodash.bindall-4.4.0.tgz", + "integrity": "sha512-NQ+QvFohS2gPbWpyLfyuiF0ZQA3TTaJ+n0XDID5jwtMZBKE32gN5vSyy7xBVsqvJkvT/UY9dvHXIk9tZmBVF3g==", + "license": "MIT" + }, "node_modules/lodash.camelcase": { "version": "4.3.0", "license": "MIT" }, + "node_modules/lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha512-GhrVeweiTD6uTmmn5hV/lzgCQhccwReIVRLHp7LT4SopOjqEZ5BbX8b5WWEtAKasjmy8hR7ZPwsYlxRCku5odg==", + "deprecated": "This package is deprecated. Use structuredClone instead.", + "license": "MIT" + }, "node_modules/lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -30466,10 +30485,23 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==", + "deprecated": "This package is deprecated. Use destructuring assignment syntax instead.", + "license": "MIT" + }, "node_modules/lodash.throttle": { "version": "4.1.1", "license": "MIT" }, + "node_modules/lodash.transform": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz", + "integrity": "sha512-LO37ZnhmBVx0GvOU/caQuipEh4GN82TcWv3yHlebGDgOxbxiwwzW5Pcx2AcvpIv2WmvmSMoC492yQFNhy/l/UQ==", + "license": "MIT" + }, "node_modules/log-symbols": { "version": "4.1.0", "devOptional": true, @@ -34250,9 +34282,9 @@ } }, "node_modules/react-native-onyx": { - "version": "3.0.42", - "resolved": "https://registry.npmjs.org/react-native-onyx/-/react-native-onyx-3.0.42.tgz", - "integrity": "sha512-+JM4+2s3JNd6PIPuM/sWBZgKKeS7/LXav90rNq7OwizpbOBRvqEcnYIouKOWLbsYm2996zOvXUGcSiuxSUbXYw==", + "version": "3.0.45", + "resolved": "git+ssh://git@github.com/Expensify/react-native-onyx.git#0e1750d7e955257c076d59d9dd1babb08f624ecf", + "integrity": "sha512-Uai2V90F59zIy8Hco83zCDARDLZhmhejjf6RxXryXnHVVcpswDpSVc83fc2plllXiFATfvWppYLfzjQcZczGow==", "license": "MIT", "dependencies": { "ascii-table": "0.0.9", @@ -34272,8 +34304,8 @@ "react": ">=18.1.0", "react-native": ">=0.75.0", "react-native-device-info": "^10.3.0", - "react-native-nitro-modules": ">=0.27.2", - "react-native-nitro-sqlite": "^9.2.0", + "react-native-nitro-modules": ">=0.35.0", + "react-native-nitro-sqlite": "^9.6.0", "react-native-performance": ">=5.1.0" }, "peerDependenciesMeta": { @@ -34296,6 +34328,8 @@ }, "node_modules/react-native-onyx/node_modules/fast-equals": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-4.0.3.tgz", + "integrity": "sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg==", "license": "MIT" }, "node_modules/react-native-pager-view": { diff --git a/package.json b/package.json index 5bdb4bf833485..9ce7bcdcbb111 100644 --- a/package.json +++ b/package.json @@ -179,9 +179,9 @@ "react-native-keyboard-controller": "1.21.0-beta.1", "react-native-launch-arguments": "^4.1.0", "react-native-localize": "^3.5.4", - "react-native-onyx": "3.0.42", "react-native-nitro-modules": "0.35.0", "react-native-nitro-sqlite": "9.6.0", + "react-native-onyx": "git+https://github.com/Expensify/react-native-onyx.git#0e1750d7e955257c076d59d9dd1babb08f624ecf", "react-native-pager-view": "8.0.0", "react-native-pdf": "7.0.2", "react-native-permissions": "^5.4.0", From 871360073bda42ef1286e908dbcacdf902263c23 Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Sun, 8 Mar 2026 23:46:39 +0000 Subject: [PATCH 4/7] fix: remove `override` keyword from `HybridAppStartTimeModule` --- .../java/com/margelo/nitro/utils/HybridAppStartTimeModule.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/ExpensifyNitroUtils/android/src/main/java/com/margelo/nitro/utils/HybridAppStartTimeModule.kt b/modules/ExpensifyNitroUtils/android/src/main/java/com/margelo/nitro/utils/HybridAppStartTimeModule.kt index ddde08906f00a..5ba9df67cdd5e 100644 --- a/modules/ExpensifyNitroUtils/android/src/main/java/com/margelo/nitro/utils/HybridAppStartTimeModule.kt +++ b/modules/ExpensifyNitroUtils/android/src/main/java/com/margelo/nitro/utils/HybridAppStartTimeModule.kt @@ -2,14 +2,15 @@ package com.margelo.nitro.utils import android.content.Context import com.margelo.nitro.NitroModules +import androidx.core.content.edit class HybridAppStartTimeModule : HybridAppStartTimeModuleSpec() { override val memorySize: Long = 16L - override fun recordAppStartTime() { + fun recordAppStartTime() { val context = NitroModules.applicationContext ?: return val sharedPreferences = context.getSharedPreferences("AppStartTime", Context.MODE_PRIVATE) - sharedPreferences.edit().putLong("AppStartTime", System.currentTimeMillis()).apply() + sharedPreferences.edit { putLong("AppStartTime", System.currentTimeMillis()) } } override val appStartTime: Double From 434118be32d9731cb82558308fb1bf70b7750dd3 Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Sun, 8 Mar 2026 23:57:06 +0000 Subject: [PATCH 5/7] Update Podfile.lock --- ios/Podfile.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 750a9147bc808..14378879602c6 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -379,7 +379,7 @@ PODS: - nanopb/encode (= 3.30910.0) - nanopb/decode (3.30910.0) - nanopb/encode (3.30910.0) - - NitroModules (0.29.4): + - NitroModules (0.35.0): - boost - DoubleConversion - fast_float @@ -3559,7 +3559,7 @@ PODS: - SocketRocket - Turf - Yoga - - RNNitroSQLite (9.2.0): + - RNNitroSQLite (9.6.0): - boost - DoubleConversion - fast_float @@ -4558,7 +4558,7 @@ SPEC CHECKSUMS: MapboxMaps: f87023cf0d72b180b40ea0b6fb4b2d7db6b73b71 MapboxMobileEvents: d044b9edbe0ec7df60f6c2c9634fe9a7f449266b nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 - NitroModules: 8bffd214aa360baba0f2c5718fe0acff5ef94763 + NitroModules: f8c2cc3025e4550aee15ff77c525622bf98e774a NWWebSocket: b4741420f1976e1dff4da3edad00c401e4f1d769 Onfido: 65454f91d10758193c857fd149417f6efbea84c5 onfido-react-native-sdk: bb8cfd9198e2e97978461d969497d18b37e45ca7 @@ -4664,7 +4664,7 @@ SPEC CHECKSUMS: RNLiveMarkdown: 60621617bc0504ac39669e3a8d1e9cadf1ada34f RNLocalize: 05e367a873223683f0e268d0af9a8a8e6aed3b26 rnmapbox-maps: 392ac61c42a9ff01a51d4c2f6775d9131b5951fb - RNNitroSQLite: fb251387cfbee73b100cd484a3c886fda681b3b5 + RNNitroSQLite: a9b5965d511ed6e99ce903380e64934d043a0d2c RNPermissions: 518f0a0c439acc74e2b9937e0e7d29e5031ae949 RNReactNativeHapticFeedback: 5f1542065f0b24c9252bd8cf3e83bc9c548182e4 RNReanimated: e79d7f42b76ba026e7dc5fb3e3f81991c590d3af From f335703ac848e7721d40485b1d34eaa860f8bced Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Fri, 20 Mar 2026 12:30:31 +0100 Subject: [PATCH 6/7] chore: update onyx commit --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index bd76f4089bc10..4a6734837a217 100644 --- a/package-lock.json +++ b/package-lock.json @@ -117,7 +117,7 @@ "react-native-localize": "^3.5.4", "react-native-nitro-modules": "0.35.0", "react-native-nitro-sqlite": "9.6.0", - "react-native-onyx": "git+https://github.com/Expensify/react-native-onyx.git#674b1f2db915059aac6c9e1f2d9babd19f42064a", + "react-native-onyx": "git+https://github.com/Expensify/react-native-onyx.git#5d957b684f41f616117ba7a64d8580a0ff5d3905", "react-native-pager-view": "8.0.0", "react-native-pdf": "7.0.2", "react-native-permissions": "^5.4.0", @@ -34754,7 +34754,7 @@ }, "node_modules/react-native-onyx": { "version": "3.0.48", - "resolved": "git+ssh://git@github.com/Expensify/react-native-onyx.git#674b1f2db915059aac6c9e1f2d9babd19f42064a", + "resolved": "git+ssh://git@github.com/Expensify/react-native-onyx.git#5d957b684f41f616117ba7a64d8580a0ff5d3905", "integrity": "sha512-D+brPV/dh9vUALImk2sQJBwOKk9G+oqTZlPg7dkpOBIFaekKfGVYQWKCmaVfdyh3wXRq8oKCQgNy9Z1ajpns6Q==", "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 05c9f59c3509a..afdda195c855f 100644 --- a/package.json +++ b/package.json @@ -181,7 +181,7 @@ "react-native-localize": "^3.5.4", "react-native-nitro-modules": "0.35.0", "react-native-nitro-sqlite": "9.6.0", - "react-native-onyx": "git+https://github.com/Expensify/react-native-onyx.git#674b1f2db915059aac6c9e1f2d9babd19f42064a", + "react-native-onyx": "git+https://github.com/Expensify/react-native-onyx.git#674b1f2db915059aac6c9e1f2d9babd19f42064agra", "react-native-pager-view": "8.0.0", "react-native-pdf": "7.0.2", "react-native-permissions": "^5.4.0", From 5d5edfff6291753ccec893a2dff2019de86a52c6 Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Mon, 23 Mar 2026 13:34:47 +0100 Subject: [PATCH 7/7] Update package-lock.json --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f688464ebfd83..028f412357808 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34753,9 +34753,9 @@ } }, "node_modules/react-native-onyx": { - "version": "3.0.48", - "resolved": "git+ssh://git@github.com/Expensify/react-native-onyx.git#5d957b684f41f616117ba7a64d8580a0ff5d3905", - "integrity": "sha512-D+brPV/dh9vUALImk2sQJBwOKk9G+oqTZlPg7dkpOBIFaekKfGVYQWKCmaVfdyh3wXRq8oKCQgNy9Z1ajpns6Q==", + "version": "3.0.50", + "resolved": "git+ssh://git@github.com/Expensify/react-native-onyx.git#5e44d80f5fc5dbde4e9ae8f100e8fb05b09301d3", + "integrity": "sha512-Hj5JbZOmUCLAsHR3ROx0YXUfTXzEFhW1DRXfMU0399TWeiyYChHeBQWC0wAohcd5PRLWtA/zNDfKyA8FsyynLA==", "license": "MIT", "dependencies": { "ascii-table": "0.0.9",