diff --git a/app/.eslintrc.cjs b/app/.eslintrc.cjs index db11486f8..7b27c638e 100644 --- a/app/.eslintrc.cjs +++ b/app/.eslintrc.cjs @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + module.exports = { root: true, parser: '@typescript-eslint/parser', @@ -26,9 +28,6 @@ module.exports = { 'web/dist/', '.tamagui/*', '*.js.map', - '*.d.ts', - 'metro.config.cjs', - 'docs/examples/', 'tests/e2e/', ], settings: { @@ -169,6 +168,14 @@ module.exports = { '@typescript-eslint/indent': 'off', }, overrides: [ + { + files: ['docs/examples/**/*.ts'], + rules: { + '@typescript-eslint/no-unused-vars': 'off', + 'no-unused-vars': 'off', + 'import/no-unresolved': 'off', + }, + }, { // Disable export sorting for files with dependency issues files: [ @@ -212,7 +219,6 @@ module.exports = { sourceType: 'script', }, rules: { - 'header/header': 'off', '@typescript-eslint/no-var-requires': 'off', 'no-undef': 'off', }, diff --git a/app/babel.config.cjs b/app/babel.config.cjs index edfd56e5d..d2b73ab39 100644 --- a/app/babel.config.cjs +++ b/app/babel.config.cjs @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + module.exports = { presets: ['module:@react-native/babel-preset'], plugins: [ diff --git a/app/declarations.d.ts b/app/declarations.d.ts index d97b5c29e..074e4bcad 100644 --- a/app/declarations.d.ts +++ b/app/declarations.d.ts @@ -11,8 +11,9 @@ declare module '*.jpeg' { } declare module '*.svg' { - import React from 'react'; - import { SvgProps } from 'react-native-svg'; + import type React from 'react'; + import type { SvgProps } from 'react-native-svg'; + const content: React.FC; export default content; } diff --git a/app/docs/examples/tree-shaking/granular-circuits-example.ts b/app/docs/examples/tree-shaking/granular-circuits-example.ts index 9300191c6..800cb70a1 100644 --- a/app/docs/examples/tree-shaking/granular-circuits-example.ts +++ b/app/docs/examples/tree-shaking/granular-circuits-example.ts @@ -1,8 +1,10 @@ +// SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + // Granular import example: Circuit utilities only // This will tree-shake out passport parsing, certificate parsing, etc. -import { generateCircuitInputsDSC } from '@selfxyz/common/utils/circuits'; import type { PassportData } from '@selfxyz/common/types/passport'; +import { generateCircuitInputsDSC } from '@selfxyz/common/utils/circuits'; export function exampleCircuitUsage(passportData: PassportData) { // Only circuit-related utilities are bundled diff --git a/app/docs/examples/tree-shaking/level2-optimal-example.ts b/app/docs/examples/tree-shaking/level2-optimal-example.ts index 281794c60..7b8dbe2bf 100644 --- a/app/docs/examples/tree-shaking/level2-optimal-example.ts +++ b/app/docs/examples/tree-shaking/level2-optimal-example.ts @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + // Level 2 Granular Import Example - Optimal Tree Shaking // This demonstrates the new file-based imports for maximum optimization @@ -6,12 +8,10 @@ import { API_URL, PASSPORT_ATTESTATION_ID, } from '@selfxyz/common/constants/core'; - -// Import only hash utilities (no bytes, trees, circuits, etc.) -import { hash } from '@selfxyz/common/utils/hash'; - // Import only passport types (no app types, certificate types, etc.) import type { PassportData } from '@selfxyz/common/types/passport'; +// Import only hash utilities (no bytes, trees, circuits, etc.) +import { hash } from '@selfxyz/common/utils/hash'; export function optimalLevel2Example(data: PassportData) { // This will result in the smallest possible bundle diff --git a/app/docs/examples/tree-shaking/level3-migration-guide.ts b/app/docs/examples/tree-shaking/level3-migration-guide.ts index 30f1ea33e..7f594dc09 100644 --- a/app/docs/examples/tree-shaking/level3-migration-guide.ts +++ b/app/docs/examples/tree-shaking/level3-migration-guide.ts @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + /** * LEVEL 3 MIGRATION GUIDE - Function-Level Granular Imports * @@ -25,45 +27,38 @@ // ============================================================================ // ✅ Hash Functions - Import only what you need -import { hash } from '@selfxyz/common/utils/hash/sha'; // ~3KB instead of 15KB -import { flexiblePoseidon } from '@selfxyz/common/utils/hash/poseidon'; // ~2KB instead of 15KB +import type { CertificateData } from '@selfxyz/common/types/certificates'; +// ✅ Types - Import specific type categories +import type { PassportData } from '@selfxyz/common/types/passport'; // Types are tree-shaken automatically +import { identifyCurve } from '@selfxyz/common/utils/certificates/curveUtils'; // ~3KB instead of 20KB +import { initElliptic } from '@selfxyz/common/utils/certificates/ellipticInit'; // ~2KB instead of 20KB +// No need to import disclose or OFAC inputs if not used +// ✅ Certificate Functions - Import specific parsing operations +import { parseCertificateSimple } from '@selfxyz/common/utils/certificates/parseSimple'; // ~5KB instead of 20KB // No need to import custom hash functions if not used - // ✅ Circuit Functions - Import specific circuit generators import { generateCircuitInputsDSC } from '@selfxyz/common/utils/circuits/dscInputs'; // ~8KB instead of 25KB import { generateCircuitInputsRegister } from '@selfxyz/common/utils/circuits/registerInputs'; // ~7KB instead of 25KB -// No need to import disclose or OFAC inputs if not used - -// ✅ Certificate Functions - Import specific parsing operations -import { parseCertificateSimple } from '@selfxyz/common/utils/certificates/parseSimple'; // ~5KB instead of 20KB -import { initElliptic } from '@selfxyz/common/utils/certificates/ellipticInit'; // ~2KB instead of 20KB -import { identifyCurve } from '@selfxyz/common/utils/certificates/curveUtils'; // ~3KB instead of 20KB - +import { flexiblePoseidon } from '@selfxyz/common/utils/hash/poseidon'; // ~2KB instead of 15KB +import { hash } from '@selfxyz/common/utils/hash/sha'; // ~3KB instead of 15KB // ✅ Passport Functions - Import specific operations import { generateCommitment } from '@selfxyz/common/utils/passports/commitment'; // ~3KB instead of 15KB import { initPassportDataParsing } from '@selfxyz/common/utils/passports/core'; // ~4KB instead of 15KB -import { getPassportSignatureInfos } from '@selfxyz/common/utils/passports/signature'; // ~5KB instead of 15KB - -// ✅ Types - Import specific type categories -import type { PassportData } from '@selfxyz/common/types/passport'; // Types are tree-shaken automatically -import type { CertificateData } from '@selfxyz/common/types/certificates'; - -// ============================================================================ -// MIGRATION EXAMPLES BY USE CASE -// ============================================================================ +import { getPassportSignatureInfos } from '@selfxyz/common/utils/passports/signature'; /** - * USE CASE 1: Frontend App - Only needs basic hash and passport parsing - * Bundle size reduction: ~60KB → ~15KB (75% smaller!) + * USE CASE 3: Certificate Parser - Only needs certificate operations + * Bundle size reduction: ~35KB → ~10KB (71% smaller!) */ -export function frontendOptimalImports() { - // Only import what this specific frontend component needs - // import { hash } from '@selfxyz/common/utils/hash/sha'; - // import { initPassportDataParsing } from '@selfxyz/common/utils/passports/core'; - // import type { PassportData } from '@selfxyz/common/types/passport'; - // Your component code here... +export function certificateParserOptimalImports() { + // Only import certificate-specific functions + // import { parseCertificateSimple } from '@selfxyz/common/utils/certificates/parseSimple'; + // import { identifyCurve } from '@selfxyz/common/utils/certificates/curveUtils'; + // import { getFriendlyName } from '@selfxyz/common/utils/certificates/oidUtils'; + // Your certificate parsing code here... } +// ~5KB instead of 15KB /** * USE CASE 2: Circuit Worker - Only needs circuit generation * Bundle size reduction: ~45KB → ~8KB (82% smaller!) @@ -75,16 +70,19 @@ export function circuitWorkerOptimalImports() { // Your circuit generation code here... } +// ============================================================================ +// MIGRATION EXAMPLES BY USE CASE +// ============================================================================ /** - * USE CASE 3: Certificate Parser - Only needs certificate operations - * Bundle size reduction: ~35KB → ~10KB (71% smaller!) + * USE CASE 1: Frontend App - Only needs basic hash and passport parsing + * Bundle size reduction: ~60KB → ~15KB (75% smaller!) */ -export function certificateParserOptimalImports() { - // Only import certificate-specific functions - // import { parseCertificateSimple } from '@selfxyz/common/utils/certificates/parseSimple'; - // import { identifyCurve } from '@selfxyz/common/utils/certificates/curveUtils'; - // import { getFriendlyName } from '@selfxyz/common/utils/certificates/oidUtils'; - // Your certificate parsing code here... +export function frontendOptimalImports() { + // Only import what this specific frontend component needs + // import { hash } from '@selfxyz/common/utils/hash/sha'; + // import { initPassportDataParsing } from '@selfxyz/common/utils/passports/core'; + // import type { PassportData } from '@selfxyz/common/types/passport'; + // Your component code here... } /** diff --git a/app/docs/examples/tree-shaking/level3-optimal-example.ts b/app/docs/examples/tree-shaking/level3-optimal-example.ts index 592d62c32..7c333b071 100644 --- a/app/docs/examples/tree-shaking/level3-optimal-example.ts +++ b/app/docs/examples/tree-shaking/level3-optimal-example.ts @@ -1,29 +1,26 @@ +// SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + // Level 3 Function-Based Import Example - Maximum Tree Shaking // This demonstrates the new function-level imports for ultimate optimization // ✅ Uses clean re-exports (safe, no regression risk) // ✅ LEVEL 3: Import only specific hash functions (not entire hash module) -import { hash } from '@selfxyz/common/utils/hash/sha'; -import { flexiblePoseidon } from '@selfxyz/common/utils/hash/poseidon'; - -// ✅ LEVEL 3: Import only specific circuit generator (not entire circuits module) -import { generateCircuitInputsDSC } from '@selfxyz/common/utils/circuits/dscInputs'; - -// ✅ LEVEL 3: Import only specific passport functions (not entire passports module) -import { generateCommitment } from '@selfxyz/common/utils/passports/commitment'; -import { initPassportDataParsing } from '@selfxyz/common/utils/passports/core'; - -// ✅ LEVEL 3: Import only specific certificate parsing (not entire certificates module) -import { parseCertificateSimple } from '@selfxyz/common/utils/certificate_parsing/parseSimple'; - // Import only core constants (same as Level 2) import { API_URL, PASSPORT_ATTESTATION_ID, } from '@selfxyz/common/constants/constants'; - // Import only passport types (same as Level 2) import type { PassportData } from '@selfxyz/common/types/passport'; +// ✅ LEVEL 3: Import only specific certificate parsing (not entire certificates module) +import { parseCertificateSimple } from '@selfxyz/common/utils/certificate_parsing/parseSimple'; +// ✅ LEVEL 3: Import only specific circuit generator (not entire circuits module) +import { generateCircuitInputsDSC } from '@selfxyz/common/utils/circuits/dscInputs'; +import { flexiblePoseidon } from '@selfxyz/common/utils/hash/poseidon'; +import { hash } from '@selfxyz/common/utils/hash/sha'; +// ✅ LEVEL 3: Import only specific passport functions (not entire passports module) +import { generateCommitment } from '@selfxyz/common/utils/passports/commitment'; +import { initPassportDataParsing } from '@selfxyz/common/utils/passports/core'; export function optimalLevel3Example(data: PassportData, secret: string) { // This will result in the smallest possible bundle diff --git a/app/env.ts b/app/env.ts index 63ca99dff..64b301b8e 100644 --- a/app/env.ts +++ b/app/env.ts @@ -1,4 +1,5 @@ // SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + export const DEFAULT_DOB = undefined; export const DEFAULT_DOE = undefined; diff --git a/app/fastlane/helpers.rb b/app/fastlane/helpers.rb index 12b4e49f8..43dc7d7b0 100644 --- a/app/fastlane/helpers.rb +++ b/app/fastlane/helpers.rb @@ -1,4 +1,5 @@ # SPDX-License-Identifier: BUSL-1.1 + require "bundler/setup" require "fastlane" require "tempfile" diff --git a/app/fastlane/helpers/android.rb b/app/fastlane/helpers/android.rb index 75b703043..19ef2185e 100644 --- a/app/fastlane/helpers/android.rb +++ b/app/fastlane/helpers/android.rb @@ -1,3 +1,5 @@ +# SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + module Fastlane module Helpers module Android diff --git a/app/fastlane/helpers/common.rb b/app/fastlane/helpers/common.rb index 3aa1942c6..cb4565e29 100644 --- a/app/fastlane/helpers/common.rb +++ b/app/fastlane/helpers/common.rb @@ -1,3 +1,5 @@ +# SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + module Fastlane module Helpers module Common diff --git a/app/fastlane/helpers/ios.rb b/app/fastlane/helpers/ios.rb index a2c5f41fe..04df5ec73 100644 --- a/app/fastlane/helpers/ios.rb +++ b/app/fastlane/helpers/ios.rb @@ -1,3 +1,5 @@ +# SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + module Fastlane module Helpers module IOS @@ -8,7 +10,7 @@ def ios_verify_app_store_build_number(xcodeproj) latest = Fastlane::Actions::LatestTestflightBuildNumberAction.run( api_key: api_key, app_identifier: ENV["IOS_APP_IDENTIFIER"], - platform: "ios" + platform: "ios", ) project = Xcodeproj::Project.open(xcodeproj) @@ -64,13 +66,13 @@ def ios_increment_build_number(xcodeproj) latest = Fastlane::Actions::LatestTestflightBuildNumberAction.run( api_key: api_key, app_identifier: ENV["IOS_APP_IDENTIFIER"], - platform: "ios" + platform: "ios", ) new_number = latest + 1 Fastlane::Actions::IncrementBuildNumberAction.run( build_number: new_number, - xcodeproj: xcodeproj + xcodeproj: xcodeproj, ) report_success("Incremented build number to #{new_number} (previous #{latest})") new_number diff --git a/app/fastlane/helpers/slack.rb b/app/fastlane/helpers/slack.rb index f396295f0..ce6a06ecf 100644 --- a/app/fastlane/helpers/slack.rb +++ b/app/fastlane/helpers/slack.rb @@ -1,3 +1,5 @@ +# SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + module Fastlane module Helpers module Slack diff --git a/app/fastlane/helpers/version_manager.rb b/app/fastlane/helpers/version_manager.rb index 8a107fa5a..9322cf578 100644 --- a/app/fastlane/helpers/version_manager.rb +++ b/app/fastlane/helpers/version_manager.rb @@ -1,19 +1,20 @@ # SPDX-License-Identifier: BUSL-1.1 -require 'json' -require 'time' + +require "json" +require "time" module Fastlane module Helpers module VersionManager extend self - VERSION_FILE_PATH = File.expand_path('../../version.json', __dir__) + VERSION_FILE_PATH = File.expand_path("../../version.json", __dir__) def read_version_file unless File.exist?(VERSION_FILE_PATH) UI.user_error!("version.json not found at #{VERSION_FILE_PATH}") end - + JSON.parse(File.read(VERSION_FILE_PATH)) rescue JSON::ParserError => e UI.user_error!("Failed to parse version.json: #{e.message}") @@ -28,49 +29,49 @@ def write_version_file(data) def get_current_version # Version comes from package.json, not version.json - package_json_path = File.expand_path('../../package.json', __dir__) + package_json_path = File.expand_path("../../package.json", __dir__) package_data = JSON.parse(File.read(package_json_path)) - package_data['version'] + package_data["version"] end def get_ios_build_number data = read_version_file - data['ios']['build'] + data["ios"]["build"] end def get_android_build_number data = read_version_file - data['android']['build'] + data["android"]["build"] end def bump_ios_build_number data = read_version_file - current = data['ios']['build'] - data['ios']['build'] = current + 1 + current = data["ios"]["build"] + data["ios"]["build"] = current + 1 write_version_file(data) - UI.success("iOS build number bumped from #{current} to #{data['ios']['build']}") - data['ios']['build'] + UI.success("iOS build number bumped from #{current} to #{data["ios"]["build"]}") + data["ios"]["build"] end def bump_android_build_number data = read_version_file - current = data['android']['build'] - data['android']['build'] = current + 1 + current = data["android"]["build"] + data["android"]["build"] = current + 1 write_version_file(data) - UI.success("Android build number bumped from #{current} to #{data['android']['build']}") - data['android']['build'] + UI.success("Android build number bumped from #{current} to #{data["android"]["build"]}") + data["android"]["build"] end def update_deployment_timestamp(platform) unless %w[ios android].include?(platform) UI.user_error!("Invalid platform: #{platform}. Must be 'ios' or 'android'") end - + data = read_version_file timestamp = Time.now.utc.iso8601 - - data[platform]['lastDeployed'] = timestamp - + + data[platform]["lastDeployed"] = timestamp + write_version_file(data) UI.success("Updated #{platform} deployment timestamp") end @@ -78,17 +79,17 @@ def update_deployment_timestamp(platform) def sync_build_numbers_to_native data = read_version_file version = get_current_version - + UI.message("Version #{version} (from package.json)") - UI.message("iOS build: #{data['ios']['build']}") - UI.message("Android build: #{data['android']['build']}") - + UI.message("iOS build: #{data["ios"]["build"]}") + UI.message("Android build: #{data["android"]["build"]}") + # Return the build numbers for use in Fastlane { - ios: data['ios']['build'], - android: data['android']['build'] + ios: data["ios"]["build"], + android: data["android"]["build"], } end end end -end \ No newline at end of file +end diff --git a/app/fastlane/test/app_name_test.rb b/app/fastlane/test/app_name_test.rb index c6222c560..39f97ff42 100644 --- a/app/fastlane/test/app_name_test.rb +++ b/app/fastlane/test/app_name_test.rb @@ -1,3 +1,5 @@ +# SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + require "minitest/autorun" require "json" require "tmpdir" diff --git a/app/fastlane/test/helpers_test.rb b/app/fastlane/test/helpers_test.rb index 2d01dd862..ebaea5b0d 100644 --- a/app/fastlane/test/helpers_test.rb +++ b/app/fastlane/test/helpers_test.rb @@ -1,3 +1,5 @@ +# SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + require "minitest/autorun" require_relative "../helpers" diff --git a/app/jest.config.cjs b/app/jest.config.cjs index eb59dcd1e..635ca3a4b 100644 --- a/app/jest.config.cjs +++ b/app/jest.config.cjs @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + module.exports = { preset: 'react-native', moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], diff --git a/app/metro.config.cjs b/app/metro.config.cjs index ea21a203c..ad69c4eab 100644 --- a/app/metro.config.cjs +++ b/app/metro.config.cjs @@ -1,5 +1,8 @@ +// SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config'); const path = require('node:path'); + const defaultConfig = getDefaultConfig(__dirname); const { assetExts, sourceExts } = defaultConfig.resolver; diff --git a/app/package.json b/app/package.json index c68529955..b888656cb 100644 --- a/app/package.json +++ b/app/package.json @@ -54,7 +54,7 @@ "tag:release": "node scripts/tag.cjs release", "tag:remove": "node scripts/tag.cjs remove", "test": "jest --passWithNoTests && node --test scripts/tests/*.cjs", - "test:build": "yarn build:deps && yarn types && yarn analyze:bundle:ios && yarn test", + "test:build": "yarn build:deps && yarn types && node ./scripts/bundle-analyze-ci.cjs ios && yarn test", "test:coverage": "jest --coverage --passWithNoTests", "test:coverage:ci": "jest --coverage --passWithNoTests --ci --coverageReporters=lcov --coverageReporters=text --coverageReporters=json", "test:e2e:android": "cd android && ./gradlew assembleDebug && cd .. && maestro test tests/e2e/launch.android.flow.yaml", diff --git a/app/react-native.config.cjs b/app/react-native.config.cjs index d48660986..fb7a451c5 100644 --- a/app/react-native.config.cjs +++ b/app/react-native.config.cjs @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + module.exports = { project: { ios: {}, diff --git a/app/scripts/alias-imports.cjs b/app/scripts/alias-imports.cjs index 578413662..867f2d118 100644 --- a/app/scripts/alias-imports.cjs +++ b/app/scripts/alias-imports.cjs @@ -1,4 +1,5 @@ // SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + const path = require('node:path'); const { Project, SyntaxKind } = require('ts-morph'); diff --git a/app/scripts/analyze-tree-shaking.cjs b/app/scripts/analyze-tree-shaking.cjs index bb502f779..10f00716e 100755 --- a/app/scripts/analyze-tree-shaking.cjs +++ b/app/scripts/analyze-tree-shaking.cjs @@ -1,4 +1,6 @@ #!/usr/bin/env node +// SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + const { execSync } = require('child_process'); const fs = require('fs'); const path = require('path'); diff --git a/app/scripts/bundle-analyze-ci.cjs b/app/scripts/bundle-analyze-ci.cjs index 8e80bbdf7..1205797ed 100755 --- a/app/scripts/bundle-analyze-ci.cjs +++ b/app/scripts/bundle-analyze-ci.cjs @@ -1,4 +1,6 @@ #!/usr/bin/env node +// SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + const { execSync } = require('child_process'); const fs = require('fs'); const os = require('os'); diff --git a/app/scripts/check-duplicate-headers.cjs b/app/scripts/check-duplicate-headers.cjs index 5ecaff310..d913c3578 100644 --- a/app/scripts/check-duplicate-headers.cjs +++ b/app/scripts/check-duplicate-headers.cjs @@ -1,4 +1,5 @@ #!/usr/bin/env node +// SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 const fs = require('fs'); const path = require('path'); diff --git a/app/scripts/cleanup-ios-build.sh b/app/scripts/cleanup-ios-build.sh index 9b9239421..204e4ec78 100755 --- a/app/scripts/cleanup-ios-build.sh +++ b/app/scripts/cleanup-ios-build.sh @@ -1,4 +1,6 @@ #!/bin/bash +# SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + # Reset Xcode project after local fastlane builds set -euo pipefail diff --git a/app/scripts/generate-changelog.sh b/app/scripts/generate-changelog.sh index c8b7933d3..a989338f9 100755 --- a/app/scripts/generate-changelog.sh +++ b/app/scripts/generate-changelog.sh @@ -1,4 +1,5 @@ #!/bin/bash +# SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 # Simple changelog generator that creates release notes from git history # Usage: ./generate-changelog.sh [from_tag] [to_tag] diff --git a/app/scripts/release.sh b/app/scripts/release.sh index 7e36eb3c5..479313537 100755 --- a/app/scripts/release.sh +++ b/app/scripts/release.sh @@ -1,4 +1,5 @@ #!/bin/bash +# SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 # Simple release script for manual version bumping and tagging # Usage: ./release.sh [major|minor|patch] diff --git a/app/scripts/test-e2e-local.sh b/app/scripts/test-e2e-local.sh index fb11fa576..c9687b762 100755 --- a/app/scripts/test-e2e-local.sh +++ b/app/scripts/test-e2e-local.sh @@ -1,4 +1,6 @@ #!/bin/bash +# SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + # Unified Local E2E Testing Script # Run this from the app directory diff --git a/app/scripts/test-tree-shaking.cjs b/app/scripts/test-tree-shaking.cjs index 607493dbb..983677d2f 100755 --- a/app/scripts/test-tree-shaking.cjs +++ b/app/scripts/test-tree-shaking.cjs @@ -1,4 +1,6 @@ #!/usr/bin/env node +// SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + const { execSync } = require('child_process'); const fs = require('fs'); const path = require('path'); diff --git a/app/scripts/tests/alias-imports.test.cjs b/app/scripts/tests/alias-imports.test.cjs index da90585d4..e8310a745 100644 --- a/app/scripts/tests/alias-imports.test.cjs +++ b/app/scripts/tests/alias-imports.test.cjs @@ -1,4 +1,6 @@ #!/usr/bin/env node +// SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + const { describe, it, beforeEach } = require('node:test'); const assert = require('node:assert'); const path = require('node:path'); diff --git a/app/scripts/tests/bundle-analyze-ci.test.cjs b/app/scripts/tests/bundle-analyze-ci.test.cjs index 6327cb814..b53c26ed7 100644 --- a/app/scripts/tests/bundle-analyze-ci.test.cjs +++ b/app/scripts/tests/bundle-analyze-ci.test.cjs @@ -1,4 +1,6 @@ #!/usr/bin/env node +// SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + const { execSync } = require('child_process'); const fs = require('fs'); const path = require('path'); diff --git a/app/scripts/tests/cleanup-ios-build.test.cjs b/app/scripts/tests/cleanup-ios-build.test.cjs index 358c5f5d9..0fbee331a 100644 --- a/app/scripts/tests/cleanup-ios-build.test.cjs +++ b/app/scripts/tests/cleanup-ios-build.test.cjs @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + const fs = require('fs'); const path = require('path'); const os = require('os'); diff --git a/app/scripts/tests/mobile-deploy-confirm-module.test.cjs b/app/scripts/tests/mobile-deploy-confirm-module.test.cjs index 2e6db3306..3124c027c 100644 --- a/app/scripts/tests/mobile-deploy-confirm-module.test.cjs +++ b/app/scripts/tests/mobile-deploy-confirm-module.test.cjs @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + const { describe, it } = require('node:test'); const assert = require('node:assert'); const child_process = require('child_process'); diff --git a/app/scripts/tests/tree-shaking.test.cjs b/app/scripts/tests/tree-shaking.test.cjs index b19a4b6cd..369f88c87 100644 --- a/app/scripts/tests/tree-shaking.test.cjs +++ b/app/scripts/tests/tree-shaking.test.cjs @@ -1,4 +1,6 @@ #!/usr/bin/env node +// SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + const { describe, it } = require('node:test'); const assert = require('node:assert'); const path = require('path'); diff --git a/app/scripts/version.cjs b/app/scripts/version.cjs index 7fca51140..cc56937dd 100755 --- a/app/scripts/version.cjs +++ b/app/scripts/version.cjs @@ -1,5 +1,5 @@ #!/usr/bin/env node -// SPDX-License-Identifier: BUSL-1.1 +// SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 const fs = require('fs'); const path = require('path'); diff --git a/app/src/types/png.d.ts b/app/src/types/png.d.ts index dd84df40a..217fd2b8b 100644 --- a/app/src/types/png.d.ts +++ b/app/src/types/png.d.ts @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + declare module '*.png' { const content: any; export default content; diff --git a/app/src/types/svg.d.ts b/app/src/types/svg.d.ts index fed8d1663..ee3eca5a6 100644 --- a/app/src/types/svg.d.ts +++ b/app/src/types/svg.d.ts @@ -1,6 +1,9 @@ +// SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11 + declare module '*.svg' { - import React from 'react'; - import { SvgProps } from 'react-native-svg'; + import type React from 'react'; + import type { SvgProps } from 'react-native-svg'; + const content: React.FC; export default content; }