From d02b381035cfc82817ac35029c8eab1cc4384002 Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Thu, 21 Aug 2025 11:02:27 +0200 Subject: [PATCH 01/12] remove react dom --- packages/mobile-sdk-alpha/package.json | 2 -- yarn.lock | 2 -- 2 files changed, 4 deletions(-) diff --git a/packages/mobile-sdk-alpha/package.json b/packages/mobile-sdk-alpha/package.json index db28cecf4..2d973beee 100644 --- a/packages/mobile-sdk-alpha/package.json +++ b/packages/mobile-sdk-alpha/package.json @@ -61,7 +61,6 @@ "devDependencies": { "@testing-library/react": "^14.1.2", "@types/react": "^18.3.4", - "@types/react-dom": "^18.3.0", "@typescript-eslint/eslint-plugin": "^8.0.0", "@typescript-eslint/parser": "^8.0.0", "eslint": "^8.57.0", @@ -73,7 +72,6 @@ "jsdom": "^24.0.0", "prettier": "^3.5.3", "react": "^18.3.1", - "react-dom": "^18.3.1", "react-native": "0.75.4", "tsup": "^8.0.1", "typescript": "^5.9.2", diff --git a/yarn.lock b/yarn.lock index a7cbc21f7..3bab183cd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5253,7 +5253,6 @@ __metadata: "@selfxyz/common": "workspace:*" "@testing-library/react": "npm:^14.1.2" "@types/react": "npm:^18.3.4" - "@types/react-dom": "npm:^18.3.0" "@typescript-eslint/eslint-plugin": "npm:^8.0.0" "@typescript-eslint/parser": "npm:^8.0.0" eslint: "npm:^8.57.0" @@ -5265,7 +5264,6 @@ __metadata: jsdom: "npm:^24.0.0" prettier: "npm:^3.5.3" react: "npm:^18.3.1" - react-dom: "npm:^18.3.1" react-native: "npm:0.75.4" tslib: "npm:^2.6.2" tsup: "npm:^8.0.1" From d3c576fd85d2a1e0244ef59df82735e941489b21 Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Thu, 21 Aug 2025 12:39:04 +0200 Subject: [PATCH 02/12] moves proving utils to the common --- app/src/utils/proving/index.ts | 2 +- app/src/utils/proving/provingMachine.ts | 16 ++++++------ common/package.json | 5 ++++ .../src/utils/proving.ts | 25 +++++++------------ common/tsup.config.ts | 1 + 5 files changed, 24 insertions(+), 25 deletions(-) rename app/src/utils/proving/provingUtils.ts => common/src/utils/proving.ts (81%) diff --git a/app/src/utils/proving/index.ts b/app/src/utils/proving/index.ts index 3e50ea944..fd2d24603 100644 --- a/app/src/utils/proving/index.ts +++ b/app/src/utils/proving/index.ts @@ -9,7 +9,7 @@ export { encryptAES256GCM, getPayload, getWSDbRelayerUrl, -} from '@/utils/proving/provingUtils'; +} from '@selfxyz/common/utils/proving'; // From loadingScreenStateText - used in loading screen export { getLoadingScreenText } from '@/utils/proving/loadingScreenStateText'; diff --git a/app/src/utils/proving/provingMachine.ts b/app/src/utils/proving/provingMachine.ts index ae48a516a..0ee7f13e8 100644 --- a/app/src/utils/proving/provingMachine.ts +++ b/app/src/utils/proving/provingMachine.ts @@ -14,6 +14,14 @@ import { getCircuitNameFromPassportData, getSolidityPackedUserContextData, } from '@selfxyz/common/utils'; +import { + clientKey, + clientPublicKeyHex, + ec, + encryptAES256GCM, + getPayload, + getWSDbRelayerUrl, +} from '@selfxyz/common/utils/proving'; import { PassportEvents, ProofEvents } from '@/consts/analytics'; import { navigationRef } from '@/navigation'; @@ -33,14 +41,6 @@ import { generateTEEInputsDSC, generateTEEInputsRegister, } from '@/utils/proving/provingInputs'; -import { - clientKey, - clientPublicKeyHex, - ec, - encryptAES256GCM, - getPayload, - getWSDbRelayerUrl, -} from '@/utils/proving/provingUtils'; import { checkIfPassportDscIsInTree, checkPassportSupported, diff --git a/common/package.json b/common/package.json index 1ed098232..9a4cf02a7 100644 --- a/common/package.json +++ b/common/package.json @@ -280,6 +280,11 @@ "types": "./dist/esm/src/utils/passports/passport_parsing/parseDscCertificateData.d.ts", "import": "./dist/esm/src/utils/passports/passport_parsing/parseDscCertificateData.js", "require": "./dist/cjs/src/utils/passports/passport_parsing/parseDscCertificateData.cjs" + }, + "./utils/proving": { + "types": "./dist/esm/src/utils/proving.d.ts", + "import": "./dist/esm/src/utils/proving.js", + "require": "./dist/cjs/src/utils/proving.cjs" }, "./utils/scope": { "types": "./dist/esm/src/utils/scope.d.ts", diff --git a/app/src/utils/proving/provingUtils.ts b/common/src/utils/proving.ts similarity index 81% rename from app/src/utils/proving/provingUtils.ts rename to common/src/utils/proving.ts index cfac5f4f1..33e96ebb4 100644 --- a/app/src/utils/proving/provingUtils.ts +++ b/common/src/utils/proving.ts @@ -2,12 +2,9 @@ import forge from 'node-forge'; -import { - WS_DB_RELAYER, - WS_DB_RELAYER_STAGING, -} from '@selfxyz/common/constants'; -import type { EndpointType } from '@selfxyz/common/utils'; -import { initElliptic } from '@selfxyz/common/utils'; +import { WS_DB_RELAYER, WS_DB_RELAYER_STAGING } from '../constants/index.js'; +import { initElliptic } from '../utils/certificate_parsing/elliptic.js'; +import type { EndpointType } from './appType.js'; const elliptic = initElliptic(); const { ec: EC } = elliptic; @@ -32,28 +29,24 @@ export type TEEPayloadDisclose = TEEPayloadBase & { version: number; }; +// // eslint-disable-next-line -- ec must be created first export const ec = new EC('p256'); - +// eslint-disable-next-line -- clientKey is created from ec so must be second export const clientKey = ec.genKeyPair(); type RegisterSuffixes = '' | '_id'; type DscSuffixes = '' | '_id'; type DiscloseSuffixes = '' | '_id'; type ProofTypes = 'register' | 'dsc' | 'disclose'; -type RegisterProofType = - `${Extract}${RegisterSuffixes}`; +type RegisterProofType = `${Extract}${RegisterSuffixes}`; type DscProofType = `${Extract}${DscSuffixes}`; -type DiscloseProofType = - `${Extract}${DiscloseSuffixes}`; +type DiscloseProofType = `${Extract}${DiscloseSuffixes}`; export const clientPublicKeyHex = clientKey.getPublic().getX().toString('hex').padStart(64, '0') + clientKey.getPublic().getY().toString('hex').padStart(64, '0'); -export function encryptAES256GCM( - plaintext: string, - key: forge.util.ByteStringBuffer, -) { +export function encryptAES256GCM(plaintext: string, key: forge.util.ByteStringBuffer) { const iv = forge.random.getBytesSync(12); const cipher = forge.cipher.createCipher('AES-GCM', key); cipher.start({ iv: iv, tagLength: 128 }); @@ -75,7 +68,7 @@ export function getPayload( endpointType: EndpointType, endpoint: string, version: number = 1, - userDefinedData: string = '', + userDefinedData: string = '' ) { if (circuitType === 'disclose') { const payload: TEEPayloadDisclose = { diff --git a/common/tsup.config.ts b/common/tsup.config.ts index 08c8f22f4..9e7d3b7f1 100644 --- a/common/tsup.config.ts +++ b/common/tsup.config.ts @@ -26,6 +26,7 @@ export default defineConfig([ 'src/utils/hash': 'src/utils/hash.ts', 'src/utils/bytes': 'src/utils/bytes.ts', 'src/utils/trees': 'src/utils/trees.ts', + 'src/utils/proving': 'src/utils/proving.ts', 'src/utils/scope': 'src/utils/scope.ts', 'src/utils/appType': 'src/utils/appType.ts', 'src/utils/date': 'src/utils/date.ts', From a1ee1a4479f09f4ef4a6f95db2d2048d4f5dae59 Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Thu, 21 Aug 2025 13:05:27 +0200 Subject: [PATCH 03/12] need to use rn components --- packages/mobile-sdk-alpha/src/components/SelfMobileSdk.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/mobile-sdk-alpha/src/components/SelfMobileSdk.tsx b/packages/mobile-sdk-alpha/src/components/SelfMobileSdk.tsx index 3e4b1e3c2..6c239c123 100644 --- a/packages/mobile-sdk-alpha/src/components/SelfMobileSdk.tsx +++ b/packages/mobile-sdk-alpha/src/components/SelfMobileSdk.tsx @@ -1,4 +1,5 @@ import type { ComponentType, ReactNode } from 'react'; +import { View } from 'tamagui'; import { SelfClientProvider } from '../context'; import { useDocumentManager } from '../hooks/useDocumentManager'; @@ -30,7 +31,7 @@ const SelfMobileSdkContent = ({ const { documents, isLoading, hasRegisteredDocuments } = useDocumentManager(external); if (isLoading) { - return
Loading documents...
; + return Loading documents...; } // Check if user has any registered documents From 8e7b95cd9c002f7525002f29ecaee15c6e4cd252 Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Thu, 21 Aug 2025 13:11:51 +0200 Subject: [PATCH 04/12] fix imports --- app/tests/utils/proving/provingUtils.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/tests/utils/proving/provingUtils.test.ts b/app/tests/utils/proving/provingUtils.test.ts index 8588443bb..ea4b05ccc 100644 --- a/app/tests/utils/proving/provingUtils.test.ts +++ b/app/tests/utils/proving/provingUtils.test.ts @@ -6,7 +6,7 @@ import { encryptAES256GCM, getPayload, getWSDbRelayerUrl, -} from '@/utils/proving/provingUtils'; +} from '@/utils/proving'; describe('provingUtils', () => { it('encryptAES256GCM encrypts and decrypts correctly', () => { From 7723a06f857142f5cbe430adce0cc091074795d7 Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Thu, 21 Aug 2025 13:24:52 +0200 Subject: [PATCH 05/12] add proving-utils and dedeuplicate entry configs for esm and cjs. --- common/tsup.config.ts | 230 +++++++++++++++--------------------------- 1 file changed, 79 insertions(+), 151 deletions(-) diff --git a/common/tsup.config.ts b/common/tsup.config.ts index 9e7d3b7f1..c12e790db 100644 --- a/common/tsup.config.ts +++ b/common/tsup.config.ts @@ -5,86 +5,88 @@ import { fileURLToPath } from 'url'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); +const entry = { + index: 'index.ts', + // Existing grouped exports + 'src/constants/index': 'src/constants/index.ts', + 'src/utils/index': 'src/utils/index.ts', + 'src/types/index': 'src/types/index.ts', + // Granular constants exports + 'src/constants/constants': 'src/constants/constants.ts', + 'src/constants/countries': 'src/constants/countries.ts', + 'src/constants/vkey': 'src/constants/vkey.ts', + 'src/constants/skiPem': 'src/constants/skiPem.ts', + 'src/constants/mockCertificates': 'src/constants/mockCertificates.ts', + 'src/constants/sampleDataHashes': 'src/constants/sampleDataHashes.ts', + // Granular utils exports + 'src/utils/hash': 'src/utils/hash.ts', + 'src/utils/bytes': 'src/utils/bytes.ts', + 'src/utils/trees': 'src/utils/trees.ts', + 'src/utils/proving': 'src/utils/proving.ts', + 'src/utils/scope': 'src/utils/scope.ts', + 'src/utils/appType': 'src/utils/appType.ts', + 'src/utils/date': 'src/utils/date.ts', + 'src/utils/arrays': 'src/utils/arrays.ts', + 'src/utils/types': 'src/utils/types.ts', + 'src/utils/passports/index': 'src/utils/passports/index.ts', + 'src/utils/passports/format': 'src/utils/passports/format.ts', + 'src/utils/passports/mock': 'src/utils/passports/mock.ts', + 'src/utils/passports/dg1': 'src/utils/passports/dg1.ts', + 'src/utils/passports/genMockPassportData': 'src/utils/passports/genMockPassportData.ts', + 'src/utils/passports/genMockIdDoc': 'src/utils/passports/genMockIdDoc.ts', + 'src/utils/passports/passport_parsing/parseDscCertificateData': + 'src/utils/passports/passport_parsing/parseDscCertificateData.ts', + 'src/utils/certificate_parsing/index': 'src/utils/certificate_parsing/index.ts', + 'src/utils/certificate_parsing/elliptic': 'src/utils/certificate_parsing/elliptic.ts', + 'src/utils/certificate_parsing/curves': 'src/utils/certificate_parsing/curves.ts', + 'src/utils/certificate_parsing/oids': 'src/utils/certificate_parsing/oids.ts', + 'src/utils/certificate_parsing/parseCertificateSimple': + 'src/utils/certificate_parsing/parseCertificateSimple.ts', + 'src/utils/circuits/index': 'src/utils/circuits/index.ts', + 'src/utils/circuits/circuitsName': 'src/utils/circuits/circuitsName.ts', + 'src/utils/circuits/formatOutputs': 'src/utils/circuits/formatOutputs.ts', + 'src/utils/circuits/formatInputs': 'src/utils/circuits/formatInputs.ts', + 'src/utils/circuits/uuid': 'src/utils/circuits/uuid.ts', + 'src/utils/contracts/index': 'src/utils/contracts/index.ts', + 'src/utils/contracts/forbiddenCountries': 'src/utils/contracts/forbiddenCountries.ts', + 'src/utils/csca': 'src/utils/csca.ts', + // Level 3 Hash Function Exports + 'src/utils/hash/poseidon': 'src/utils/hash/poseidon.ts', + 'src/utils/hash/sha': 'src/utils/hash/sha.ts', + 'src/utils/hash/custom': 'src/utils/hash/custom.ts', + // Level 3 Circuit Function Exports + 'src/utils/circuits/dscInputs': 'src/utils/circuits/dscInputs.ts', + 'src/utils/circuits/registerInputs': 'src/utils/circuits/registerInputs.ts', + 'src/utils/circuits/discloseInputs': 'src/utils/circuits/discloseInputs.ts', + 'src/utils/circuits/generateInputs': 'src/utils/circuits/generateInputs.ts', + 'src/utils/circuits/ofacInputs': 'src/utils/circuits/ofacInputs.ts', + // Level 3 Certificate Function Exports + 'src/utils/certificate_parsing/parseSimple': 'src/utils/certificate_parsing/parseSimple.ts', + 'src/utils/certificate_parsing/parseNode': 'src/utils/certificate_parsing/parseNode.ts', + 'src/utils/certificate_parsing/ellipticInit': 'src/utils/certificate_parsing/ellipticInit.ts', + 'src/utils/certificate_parsing/curveUtils': 'src/utils/certificate_parsing/curveUtils.ts', + 'src/utils/certificate_parsing/oidUtils': 'src/utils/certificate_parsing/oidUtils.ts', + 'src/utils/certificate_parsing/certUtils': 'src/utils/certificate_parsing/certUtils.ts', + // Level 3 Passport Function Exports + 'src/utils/passports/core': 'src/utils/passports/core.ts', + 'src/utils/passports/commitment': 'src/utils/passports/commitment.ts', + 'src/utils/passports/signature': 'src/utils/passports/signature.ts', + 'src/utils/passports/parsing': 'src/utils/passports/parsing.ts', + 'src/utils/passports/mockGeneration': 'src/utils/passports/mockGeneration.ts', + 'src/utils/passports/mockDsc': 'src/utils/passports/mockDsc.ts', + 'src/utils/passports/passport': 'src/utils/passports/passport.ts', + // Granular types exports + 'src/types/passport': 'src/types/passport.ts', + 'src/types/app': 'src/types/app.ts', + 'src/types/certificates': 'src/types/certificates.ts', + 'src/types/circuits': 'src/types/circuits.ts', +}; + export default defineConfig([ // ESM build (matches current dist/esm/src structure) { tsconfig: './tsconfig.json', - entry: { - index: 'index.ts', - // Existing grouped exports - 'src/constants/index': 'src/constants/index.ts', - 'src/utils/index': 'src/utils/index.ts', - 'src/types/index': 'src/types/index.ts', - // Granular constants exports - 'src/constants/constants': 'src/constants/constants.ts', - 'src/constants/countries': 'src/constants/countries.ts', - 'src/constants/vkey': 'src/constants/vkey.ts', - 'src/constants/skiPem': 'src/constants/skiPem.ts', - 'src/constants/mockCertificates': 'src/constants/mockCertificates.ts', - 'src/constants/sampleDataHashes': 'src/constants/sampleDataHashes.ts', - // Granular utils exports - 'src/utils/hash': 'src/utils/hash.ts', - 'src/utils/bytes': 'src/utils/bytes.ts', - 'src/utils/trees': 'src/utils/trees.ts', - 'src/utils/proving': 'src/utils/proving.ts', - 'src/utils/scope': 'src/utils/scope.ts', - 'src/utils/appType': 'src/utils/appType.ts', - 'src/utils/date': 'src/utils/date.ts', - 'src/utils/arrays': 'src/utils/arrays.ts', - 'src/utils/types': 'src/utils/types.ts', - 'src/utils/passports/index': 'src/utils/passports/index.ts', - 'src/utils/passports/format': 'src/utils/passports/format.ts', - 'src/utils/passports/mock': 'src/utils/passports/mock.ts', - 'src/utils/passports/dg1': 'src/utils/passports/dg1.ts', - 'src/utils/passports/genMockPassportData': 'src/utils/passports/genMockPassportData.ts', - 'src/utils/passports/genMockIdDoc': 'src/utils/passports/genMockIdDoc.ts', - 'src/utils/passports/passport_parsing/parseDscCertificateData': - 'src/utils/passports/passport_parsing/parseDscCertificateData.ts', - 'src/utils/certificate_parsing/index': 'src/utils/certificate_parsing/index.ts', - 'src/utils/certificate_parsing/elliptic': 'src/utils/certificate_parsing/elliptic.ts', - 'src/utils/certificate_parsing/curves': 'src/utils/certificate_parsing/curves.ts', - 'src/utils/certificate_parsing/oids': 'src/utils/certificate_parsing/oids.ts', - 'src/utils/certificate_parsing/parseCertificateSimple': - 'src/utils/certificate_parsing/parseCertificateSimple.ts', - 'src/utils/circuits/index': 'src/utils/circuits/index.ts', - 'src/utils/circuits/circuitsName': 'src/utils/circuits/circuitsName.ts', - 'src/utils/circuits/formatOutputs': 'src/utils/circuits/formatOutputs.ts', - 'src/utils/circuits/formatInputs': 'src/utils/circuits/formatInputs.ts', - 'src/utils/circuits/uuid': 'src/utils/circuits/uuid.ts', - 'src/utils/contracts/index': 'src/utils/contracts/index.ts', - 'src/utils/contracts/forbiddenCountries': 'src/utils/contracts/forbiddenCountries.ts', - 'src/utils/csca': 'src/utils/csca.ts', - // Level 3 Hash Function Exports - 'src/utils/hash/poseidon': 'src/utils/hash/poseidon.ts', - 'src/utils/hash/sha': 'src/utils/hash/sha.ts', - 'src/utils/hash/custom': 'src/utils/hash/custom.ts', - // Level 3 Circuit Function Exports - 'src/utils/circuits/dscInputs': 'src/utils/circuits/dscInputs.ts', - 'src/utils/circuits/registerInputs': 'src/utils/circuits/registerInputs.ts', - 'src/utils/circuits/discloseInputs': 'src/utils/circuits/discloseInputs.ts', - 'src/utils/circuits/generateInputs': 'src/utils/circuits/generateInputs.ts', - 'src/utils/circuits/ofacInputs': 'src/utils/circuits/ofacInputs.ts', - // Level 3 Certificate Function Exports - 'src/utils/certificate_parsing/parseSimple': 'src/utils/certificate_parsing/parseSimple.ts', - 'src/utils/certificate_parsing/parseNode': 'src/utils/certificate_parsing/parseNode.ts', - 'src/utils/certificate_parsing/ellipticInit': 'src/utils/certificate_parsing/ellipticInit.ts', - 'src/utils/certificate_parsing/curveUtils': 'src/utils/certificate_parsing/curveUtils.ts', - 'src/utils/certificate_parsing/oidUtils': 'src/utils/certificate_parsing/oidUtils.ts', - 'src/utils/certificate_parsing/certUtils': 'src/utils/certificate_parsing/certUtils.ts', - // Level 3 Passport Function Exports - 'src/utils/passports/core': 'src/utils/passports/core.ts', - 'src/utils/passports/commitment': 'src/utils/passports/commitment.ts', - 'src/utils/passports/signature': 'src/utils/passports/signature.ts', - 'src/utils/passports/parsing': 'src/utils/passports/parsing.ts', - 'src/utils/passports/mockGeneration': 'src/utils/passports/mockGeneration.ts', - 'src/utils/passports/mockDsc': 'src/utils/passports/mockDsc.ts', - 'src/utils/passports/passport': 'src/utils/passports/passport.ts', - // Granular types exports - 'src/types/passport': 'src/types/passport.ts', - 'src/types/app': 'src/types/app.ts', - 'src/types/certificates': 'src/types/certificates.ts', - 'src/types/circuits': 'src/types/circuits.ts', - }, + entry: entry, format: ['esm'], outDir: path.resolve(__dirname, 'dist/esm'), outExtension: ({ format }) => ({ js: format === 'cjs' ? '.cjs' : '.js' }), @@ -121,81 +123,7 @@ export default defineConfig([ // CJS build (matches current dist/cjs/src structure) { tsconfig: './tsconfig.cjs.json', - entry: { - index: 'index.ts', - // Existing grouped exports - 'src/constants/index': 'src/constants/index.ts', - 'src/utils/index': 'src/utils/index.ts', - 'src/types/index': 'src/types/index.ts', - // Granular constants exports - 'src/constants/constants': 'src/constants/constants.ts', - 'src/constants/countries': 'src/constants/countries.ts', - 'src/constants/vkey': 'src/constants/vkey.ts', - 'src/constants/skiPem': 'src/constants/skiPem.ts', - 'src/constants/mockCertificates': 'src/constants/mockCertificates.ts', - 'src/constants/sampleDataHashes': 'src/constants/sampleDataHashes.ts', - // Granular utils exports - 'src/utils/hash': 'src/utils/hash.ts', - 'src/utils/bytes': 'src/utils/bytes.ts', - 'src/utils/trees': 'src/utils/trees.ts', - 'src/utils/scope': 'src/utils/scope.ts', - 'src/utils/appType': 'src/utils/appType.ts', - 'src/utils/date': 'src/utils/date.ts', - 'src/utils/arrays': 'src/utils/arrays.ts', - 'src/utils/types': 'src/utils/types.ts', - 'src/utils/passports/index': 'src/utils/passports/index.ts', - 'src/utils/passports/format': 'src/utils/passports/format.ts', - 'src/utils/passports/mock': 'src/utils/passports/mock.ts', - 'src/utils/passports/dg1': 'src/utils/passports/dg1.ts', - 'src/utils/passports/genMockPassportData': 'src/utils/passports/genMockPassportData.ts', - 'src/utils/passports/genMockIdDoc': 'src/utils/passports/genMockIdDoc.ts', - 'src/utils/passports/passport_parsing/parseDscCertificateData': - 'src/utils/passports/passport_parsing/parseDscCertificateData.ts', - 'src/utils/certificate_parsing/index': 'src/utils/certificate_parsing/index.ts', - 'src/utils/certificate_parsing/elliptic': 'src/utils/certificate_parsing/elliptic.ts', - 'src/utils/certificate_parsing/curves': 'src/utils/certificate_parsing/curves.ts', - 'src/utils/certificate_parsing/oids': 'src/utils/certificate_parsing/oids.ts', - 'src/utils/certificate_parsing/parseCertificateSimple': - 'src/utils/certificate_parsing/parseCertificateSimple.ts', - 'src/utils/circuits/index': 'src/utils/circuits/index.ts', - 'src/utils/circuits/circuitsName': 'src/utils/circuits/circuitsName.ts', - 'src/utils/circuits/formatOutputs': 'src/utils/circuits/formatOutputs.ts', - 'src/utils/circuits/formatInputs': 'src/utils/circuits/formatInputs.ts', - 'src/utils/circuits/uuid': 'src/utils/circuits/uuid.ts', - 'src/utils/contracts/index': 'src/utils/contracts/index.ts', - 'src/utils/contracts/forbiddenCountries': 'src/utils/contracts/forbiddenCountries.ts', - 'src/utils/csca': 'src/utils/csca.ts', - // Level 3 Hash Function Exports - 'src/utils/hash/poseidon': 'src/utils/hash/poseidon.ts', - 'src/utils/hash/sha': 'src/utils/hash/sha.ts', - 'src/utils/hash/custom': 'src/utils/hash/custom.ts', - // Level 3 Circuit Function Exports - 'src/utils/circuits/dscInputs': 'src/utils/circuits/dscInputs.ts', - 'src/utils/circuits/registerInputs': 'src/utils/circuits/registerInputs.ts', - 'src/utils/circuits/discloseInputs': 'src/utils/circuits/discloseInputs.ts', - 'src/utils/circuits/generateInputs': 'src/utils/circuits/generateInputs.ts', - 'src/utils/circuits/ofacInputs': 'src/utils/circuits/ofacInputs.ts', - // Level 3 Certificate Function Exports - 'src/utils/certificate_parsing/parseSimple': 'src/utils/certificate_parsing/parseSimple.ts', - 'src/utils/certificate_parsing/parseNode': 'src/utils/certificate_parsing/parseNode.ts', - 'src/utils/certificate_parsing/ellipticInit': 'src/utils/certificate_parsing/ellipticInit.ts', - 'src/utils/certificate_parsing/curveUtils': 'src/utils/certificate_parsing/curveUtils.ts', - 'src/utils/certificate_parsing/oidUtils': 'src/utils/certificate_parsing/oidUtils.ts', - 'src/utils/certificate_parsing/certUtils': 'src/utils/certificate_parsing/certUtils.ts', - // Level 3 Passport Function Exports - 'src/utils/passports/core': 'src/utils/passports/core.ts', - 'src/utils/passports/commitment': 'src/utils/passports/commitment.ts', - 'src/utils/passports/signature': 'src/utils/passports/signature.ts', - 'src/utils/passports/parsing': 'src/utils/passports/parsing.ts', - 'src/utils/passports/mockGeneration': 'src/utils/passports/mockGeneration.ts', - 'src/utils/passports/mockDsc': 'src/utils/passports/mockDsc.ts', - 'src/utils/passports/passport': 'src/utils/passports/passport.ts', - // Granular types exports - 'src/types/passport': 'src/types/passport.ts', - 'src/types/app': 'src/types/app.ts', - 'src/types/certificates': 'src/types/certificates.ts', - 'src/types/circuits': 'src/types/circuits.ts', - }, + entry: entry, format: ['cjs'], outDir: path.resolve(__dirname, 'dist/cjs'), outExtension: ({ format }) => ({ js: format === 'cjs' ? '.cjs' : '.js' }), From 145ee5432bf2d9a0cae92eb4e7428197557cfe23 Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Thu, 21 Aug 2025 13:33:50 +0200 Subject: [PATCH 06/12] must wrap in text component --- .../mobile-sdk-alpha/src/components/SelfMobileSdk.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/mobile-sdk-alpha/src/components/SelfMobileSdk.tsx b/packages/mobile-sdk-alpha/src/components/SelfMobileSdk.tsx index 6c239c123..b29c00721 100644 --- a/packages/mobile-sdk-alpha/src/components/SelfMobileSdk.tsx +++ b/packages/mobile-sdk-alpha/src/components/SelfMobileSdk.tsx @@ -1,5 +1,5 @@ import type { ComponentType, ReactNode } from 'react'; -import { View } from 'tamagui'; +import { Text, View } from 'tamagui'; import { SelfClientProvider } from '../context'; import { useDocumentManager } from '../hooks/useDocumentManager'; @@ -31,7 +31,11 @@ const SelfMobileSdkContent = ({ const { documents, isLoading, hasRegisteredDocuments } = useDocumentManager(external); if (isLoading) { - return Loading documents...; + return ( + + Loading documents... + + ); } // Check if user has any registered documents From 3e6ec7e9f3cf43df5010d5158d1a4d65d0c775c4 Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Thu, 21 Aug 2025 13:59:28 +0200 Subject: [PATCH 07/12] fix metro bundling --- app/docs/TREE_SHAKING.md | 1 + app/metro.config.cjs | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/app/docs/TREE_SHAKING.md b/app/docs/TREE_SHAKING.md index f4409f778..ec4fddace 100644 --- a/app/docs/TREE_SHAKING.md +++ b/app/docs/TREE_SHAKING.md @@ -211,6 +211,7 @@ import type { PassportData } from '@selfxyz/common/types/passport'; - `@selfxyz/common/utils/bytes` - Byte manipulation - `@selfxyz/common/utils/trees` - SMT and leaf operations - `@selfxyz/common/utils/scope` - Endpoint formatting +- `@selfxyz/common/utils/proving` - Proving Utils - `@selfxyz/common/utils/appType` - SelfApp definitions - `@selfxyz/common/utils/date` - Date utilities - `@selfxyz/common/utils/arrays` - Array helpers diff --git a/app/metro.config.cjs b/app/metro.config.cjs index ad69c4eab..c378a4291 100644 --- a/app/metro.config.cjs +++ b/app/metro.config.cjs @@ -70,6 +70,10 @@ const extraNodeModules = { commonPath, 'dist/esm/src/utils/scope.js', ), + '@selfxyz/common/utils/proving': path.resolve( + commonPath, + 'dist/esm/src/utils/proving.js', + ), '@selfxyz/common/utils/appType': path.resolve( commonPath, 'dist/esm/src/utils/appType.js', From 6784488cc8e6ec07d3efe1ab36e3483e8a539699 Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Thu, 21 Aug 2025 14:04:35 +0200 Subject: [PATCH 08/12] fix mock import --- .../utils/proving/provingMachine.generatePayload.test.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/tests/utils/proving/provingMachine.generatePayload.test.ts b/app/tests/utils/proving/provingMachine.generatePayload.test.ts index 031cec1d4..327556adc 100644 --- a/app/tests/utils/proving/provingMachine.generatePayload.test.ts +++ b/app/tests/utils/proving/provingMachine.generatePayload.test.ts @@ -37,8 +37,8 @@ jest.mock('@/utils/proving/provingInputs', () => ({ })); // Mock the proving utils -jest.mock('@/utils/proving/provingUtils', () => { - const actual = jest.requireActual('@/utils/proving/provingUtils') as any; +jest.mock('@selfxyz/common/utils/proving', () => { + const actual = jest.requireActual('@selfxyz/common/utils/proving') as any; return { ...actual, getPayload: jest.fn(() => ({ mocked: true })), @@ -53,7 +53,7 @@ jest.mock('@/utils/proving/provingUtils', () => { const { getPayload, encryptAES256GCM, -} = require('@/utils/proving/provingUtils'); +} = require('@selfxyz/common/utils/proving'); const { generateTEEInputsRegister, generateTEEInputsDSC, From fd98640f94657b19057276efaf3bccf02eae5e26 Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Thu, 21 Aug 2025 15:28:26 +0200 Subject: [PATCH 09/12] fix builds and tests --- app/.eslintrc.cjs | 1 - app/src/hooks/useAesopRedesign.ts | 4 +++- app/vite.config.ts | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/.eslintrc.cjs b/app/.eslintrc.cjs index 8e9d9d045..dc6abfc88 100644 --- a/app/.eslintrc.cjs +++ b/app/.eslintrc.cjs @@ -183,7 +183,6 @@ module.exports = { 'src/providers/passportDataProvider.tsx', 'src/utils/cloudBackup/helpers.ts', 'src/utils/haptic/index.ts', - 'src/utils/proving/provingUtils.ts', ], rules: { 'sort-exports/sort-exports': 'off', diff --git a/app/src/hooks/useAesopRedesign.ts b/app/src/hooks/useAesopRedesign.ts index 4188532ba..47bc3547c 100644 --- a/app/src/hooks/useAesopRedesign.ts +++ b/app/src/hooks/useAesopRedesign.ts @@ -3,7 +3,9 @@ import { IS_TEST_BUILD } from '@env'; export const shouldShowAesopRedesign = (): boolean => { - return JSON.parse(String(IS_TEST_BUILD ?? 'false')); + return typeof IS_TEST_BUILD === 'boolean' + ? IS_TEST_BUILD + : typeof IS_TEST_BUILD === 'string' && IS_TEST_BUILD === 'true'; }; export const useAesopRedesign = (): boolean => { diff --git a/app/vite.config.ts b/app/vite.config.ts index d4c4e1c4a..13a0d237f 100644 --- a/app/vite.config.ts +++ b/app/vite.config.ts @@ -155,7 +155,7 @@ export default defineConfig({ ], 'screens-prove-attest': ['./src/utils/proving/attest.ts'], 'screens-prove-utils': [ - './src/utils/proving/provingUtils.ts', + './src/utils/proving/index.ts', './src/utils/proving/provingInputs.ts', './src/utils/proving/cose.ts', './src/utils/proving/loadingScreenStateText.ts', From 904710c2a6d5665124f5e3ffbe7150fccfb53bdc Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Thu, 21 Aug 2025 15:44:27 +0200 Subject: [PATCH 10/12] please save me --- common/scripts/shimConfigs.js | 1 + 1 file changed, 1 insertion(+) diff --git a/common/scripts/shimConfigs.js b/common/scripts/shimConfigs.js index b3c751ef1..889438ff0 100644 --- a/common/scripts/shimConfigs.js +++ b/common/scripts/shimConfigs.js @@ -220,6 +220,7 @@ export const shimConfigs = [ name: 'utils/sanctions', }, { shimPath: 'utils/scope', targetPath: '../../esm/src/utils/scope.js', name: 'utils/scope' }, + { shimPath: 'utils/proving', targetPath: '../../esm/src/utils/proving.js', name: 'utils/proving' }, { shimPath: 'utils/trees', targetPath: '../../esm/src/utils/trees.js', name: 'utils/trees' }, { shimPath: 'utils/uuid', From 2cadb6e6a9579cd6aa56cf5dbdbcc8ad15c7b23a Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Thu, 21 Aug 2025 16:15:14 +0200 Subject: [PATCH 11/12] solution? --- common/scripts/shimConfigs.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/common/scripts/shimConfigs.js b/common/scripts/shimConfigs.js index 889438ff0..903d53d04 100644 --- a/common/scripts/shimConfigs.js +++ b/common/scripts/shimConfigs.js @@ -220,7 +220,11 @@ export const shimConfigs = [ name: 'utils/sanctions', }, { shimPath: 'utils/scope', targetPath: '../../esm/src/utils/scope.js', name: 'utils/scope' }, - { shimPath: 'utils/proving', targetPath: '../../esm/src/utils/proving.js', name: 'utils/proving' }, + { + shimPath: 'utils/proving', + targetPath: '../../esm/src/utils/proving.js', + name: 'utils/proving', + }, { shimPath: 'utils/trees', targetPath: '../../esm/src/utils/trees.js', name: 'utils/trees' }, { shimPath: 'utils/uuid', From 2ba5696b93035c1fce513296f60ba3e4db1bc3dc Mon Sep 17 00:00:00 2001 From: Aaron DeRuvo Date: Thu, 21 Aug 2025 16:27:53 +0200 Subject: [PATCH 12/12] fix test --- app/tests/src/navigation.test.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/app/tests/src/navigation.test.ts b/app/tests/src/navigation.test.ts index 4ed53e10b..d36682974 100644 --- a/app/tests/src/navigation.test.ts +++ b/app/tests/src/navigation.test.ts @@ -11,6 +11,7 @@ describe('navigation', () => { 'CloudBackupSettings', 'ConfirmBelongingScreen', 'CreateMock', + 'DeferredLinkingInfo', 'DevFeatureFlags', 'DevHapticFeedback', 'DevPrivateKey',