{"_id":"expo-modules-macros","_rev":"14-286452c11057b90a81f843c0e5765bdd","name":"expo-modules-macros","dist-tags":{"next":"0.17.0-0","latest":"0.22.0"},"versions":{"0.0.1":{"name":"expo-modules-macros","version":"0.0.1","author":"","license":"MIT","_id":"expo-modules-macros@0.0.1","maintainers":[{"name":"tsapeta","email":"npm@tsapeta.com"}],"dist":{"shasum":"c435f2401700532387e4f3f8c02d6eb2216d4ed6","tarball":"https://registry.npmjs.org/expo-modules-macros/-/expo-modules-macros-0.0.1.tgz","fileCount":1,"integrity":"sha512-OzbCcyRDHFS2psDBmYJWyN5hH23rGmzRpBSK8onrA9B8x6PAuZE8N25NX0P9M44WyFU8c4XJedKolmxmPfQsmQ==","signatures":[{"sig":"MEQCIEApTsivWDjYJbzJ3WZccqgB1hCotvwv01ehn2acKsKkAiBNkqISnVXHdQtCXW6fFlHizavbrOveWw3iZ8hbSG4APA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137},"main":"index.js","_npmUser":{"name":"tsapeta","email":"npm@tsapeta.com"},"_npmVersion":"11.6.3","description":"","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/expo-modules-macros_0.0.1_1777574624153_0.8847414036012184","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"expo-modules-macros","version":"0.14.0","author":{"name":"650 Industries, Inc."},"license":"MIT","_id":"expo-modules-macros@0.14.0","maintainers":[{"name":"tsapeta","email":"npm@tsapeta.com"}],"homepage":"https://github.com/expo/expo-modules-macros","bugs":{"url":"https://github.com/expo/expo-modules-macros/issues"},"dist":{"shasum":"b4aacfdbd8a4fa6d4906ffd8cecf049347953b93","tarball":"https://registry.npmjs.org/expo-modules-macros/-/expo-modules-macros-0.14.0.tgz","fileCount":46,"integrity":"sha512-R6ODnfK0Za+pSZZjv0SuOTV2YkxczeavvrsLv40gueH3U7QJ8H5OlD3kkFqyT68UzDLRJhwF52D884egtNH7Rw==","signatures":[{"sig":"MEYCIQCPrHkogUfa6rPFpUxBYmF3/M3AEJedw+uT72CW/hE/VAIhANmJA+5Z73eeniafxTwFfe55xicQsqkUVoP46O12fw/K","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDrKsdgnKJGjogZ8HDJWjEXb0na92/rsGa7OTfLDvMyyQIgZwQilFqpQ6jfgXk8cHFL7dTdtDXT+i7n+CD36BAQZeI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/expo-modules-macros@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16886216},"main":"build/index.js","types":"build/index.d.ts","gitHead":"afed4e68484bf46744cfbee72e3d044437747599","scripts":{"build":"node apple/build.js","clean":"rm -rf build","build:ts":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:14bb38bd-1c02-4f45-a3a1-db71ed322247"}},"repository":{"url":"git+https://github.com/expo/expo-modules-macros.git","type":"git"},"_npmVersion":"12.1.0","description":"Swift macro plugin for Expo modules","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/expo-modules-macros_0.14.0_1790439641799_0.09602375018783604","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"expo-modules-macros","version":"0.15.0","author":{"name":"650 Industries, Inc."},"license":"MIT","_id":"expo-modules-macros@0.15.0","maintainers":[{"name":"tsapeta","email":"npm@tsapeta.com"}],"homepage":"https://github.com/expo/expo-modules-macros","bugs":{"url":"https://github.com/expo/expo-modules-macros/issues"},"dist":{"shasum":"80b91c8aecd637311e9b00ad50497fa904749f04","tarball":"https://registry.npmjs.org/expo-modules-macros/-/expo-modules-macros-0.15.0.tgz","fileCount":46,"integrity":"sha512-SPNpejC1GTb5g519PQXRHnwNjC3NJE/IP8yvuwwKJ9cfel7g7gQk/11qsvlNQBdk/AOnu2uhsmBMpTVit2WMfA==","signatures":[{"sig":"MEYCIQDQsT3wrrBYEbA8xOsMyUoCbAecSRvijoWT1akQMClIbgIhAMgg5JEdo1zwzL4VF2IwOSUMs8qCGMn4m9C0yoekpQ2R","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICbJLWAykHDNr4CiE2uCPY2U0BxAY6HGUvlaKIKvPtXnAiBqHho7Z5GZz8OUCsjUMi0NdMrp6ADhll9WYSZpXy+CPw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/expo-modules-macros@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16888073},"main":"build/index.js","types":"build/index.d.ts","gitHead":"1eb2ac88087860b89c15e9b130cc188adae3d90c","scripts":{"build":"node apple/build.js","clean":"rm -rf build","build:ts":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"14bb38bd-1c02-4f45-a3a1-db71ed322247"}},"repository":{"url":"git+https://github.com/expo/expo-modules-macros.git","type":"git"},"_npmVersion":"12.2.0","description":"Swift macro plugin for Expo modules","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/expo-modules-macros_0.15.0_1791013379679_0.19610841104171484","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"expo-modules-macros","version":"0.16.0","author":{"name":"650 Industries, Inc."},"license":"MIT","_id":"expo-modules-macros@0.16.0","maintainers":[{"name":"tsapeta","email":"npm@tsapeta.com"}],"homepage":"https://github.com/expo/expo-modules-macros","bugs":{"url":"https://github.com/expo/expo-modules-macros/issues"},"dist":{"shasum":"e08031b62d3937c5a073b963131d5e3ee695fb58","tarball":"https://registry.npmjs.org/expo-modules-macros/-/expo-modules-macros-0.16.0.tgz","fileCount":47,"integrity":"sha512-O8F67o4smrGT2l6G2MKmJUdg/x0gfAOGrXD3Cy1MtQwnOPLSgdKk8eXx21sEPUSMXkfHLcvFcdIbl1May09VBg==","signatures":[{"sig":"MEQCIFo9TNeSsT4HjGO9Nj0yyYIwLkeVABdpJZKTX9+kI/r0AiBgic6GHmSw7UxOTq0xga/34WzEcveqtffXjpqNHf54QA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDranVqp6UTkUcit+CU+aSj4YsagGisI7GN81s7dwC+OAiA4WgVhqoqb29/WfMDiZ0rkiTmUjNL6QzwGZJWVRL88mA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/expo-modules-macros@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16977117},"main":"build/index.js","types":"build/index.d.ts","gitHead":"6ba5356764746ccdf99707ebc3cb01c7b76f7f16","scripts":{"build":"node apple/build.js","clean":"rm -rf build","build:ts":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"14bb38bd-1c02-4f45-a3a1-db71ed322247"}},"repository":{"url":"git+https://github.com/expo/expo-modules-macros.git","type":"git"},"_npmVersion":"12.2.0","description":"Swift macro plugin for Expo modules","directories":{},"_nodeVersion":"22.23.2","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/expo-modules-macros_0.16.0_1791193643990_0.47942610722846624","host":"s3://npm-registry-packages-npm-production"}},"0.17.0-0":{"name":"expo-modules-macros","version":"0.17.0-0","author":{"name":"650 Industries, Inc."},"license":"MIT","_id":"expo-modules-macros@0.17.0-0","maintainers":[{"name":"tsapeta","email":"npm@tsapeta.com"}],"homepage":"https://github.com/expo/expo-modules-macros","bugs":{"url":"https://github.com/expo/expo-modules-macros/issues"},"dist":{"shasum":"57a76d2248711f72642f39324df3a82057ff1793","tarball":"https://registry.npmjs.org/expo-modules-macros/-/expo-modules-macros-0.17.0-0.tgz","fileCount":48,"integrity":"sha512-y4S4a0wGDdM1SSw1BKGwcnXObZr0gEpTsANZvE/42HwwrjP16/WzLnmhfuLda2GpWqqYUYAbIVqgzBuS2JRruw==","signatures":[{"sig":"MEUCIQDMyXy8b76lkEQwdWT/St2WiEasiNcVV7tA2eBltG8kFgIgKJVu5DaGdNOKFRWzug1F/jnqCAWLJbLJ1INufmYLhDc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAve8MDJI/njLYIkiS7r4mq1NNR73VKlmX07GP2tyAtxAiEA5Srwdbzo6nmKwm+/dmdYLmqx2sMr6FvTzIX3DnZiyjw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/expo-modules-macros@0.17.0-0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17502227},"main":"build/index.js","types":"build/index.d.ts","gitHead":"86b8fc4e4da22f6f002553f1d7a1f8997f85b674","scripts":{"build":"node scripts/build.js","clean":"rm -rf build","build:ts":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"14bb38bd-1c02-4f45-a3a1-db71ed322247"}},"repository":{"url":"git+https://github.com/expo/expo-modules-macros.git","type":"git"},"_npmVersion":"12.2.0","description":"Swift macro plugin for Expo modules","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"typescript":"^5.4.0","@types/node":"^20.11.0"},"optionalDependencies":{"@expo/modules-macros-win32-x64":"0.17.0-0","@expo/modules-macros-win32-arm64":"0.17.0-0"},"_npmOperationalInternal":{"tmp":"tmp/expo-modules-macros_0.17.0-0_1791663803558_0.23689972675344495","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"expo-modules-macros","version":"0.17.0","author":{"name":"650 Industries, Inc."},"license":"MIT","_id":"expo-modules-macros@0.17.0","maintainers":[{"name":"tsapeta","email":"npm@tsapeta.com"}],"homepage":"https://github.com/expo/expo-modules-macros","bugs":{"url":"https://github.com/expo/expo-modules-macros/issues"},"dist":{"shasum":"dfef6abfb00dedd842c580ac600049feb4d85263","tarball":"https://registry.npmjs.org/expo-modules-macros/-/expo-modules-macros-0.17.0.tgz","fileCount":48,"integrity":"sha512-ZYrUpV8lWfpC2p28H9FMjRTFSCXgVr4zrmwvDWjxGFyXmpWz7HTneJEQ8+BUK9YRuUFbVVv93c9TKklBU+8q4A==","signatures":[{"sig":"MEYCIQDextHggoxaxxC0oumLFtbiFOhSzkkq3rcM8L+QsnBawgIhAJcrNR0Zc4Ccg8ZppygMLX10Hfl/sBaXc8XqMP4SPaMc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCID6fX8Lg6R5YuQq3G7SgvODErOs7bwUzOYSJPIPCIbi2AiEAqxvh01LvFcqG68HKZ+YnHpgCfT/jH+Y3chH1PbZ5bHM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/expo-modules-macros@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17502354},"main":"build/index.js","types":"build/index.d.ts","gitHead":"1fe89fdadfcd5642a861a3fadd95dab26fd6b335","scripts":{"build":"node scripts/build.js","clean":"rm -rf build","build:ts":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"14bb38bd-1c02-4f45-a3a1-db71ed322247"}},"repository":{"url":"git+https://github.com/expo/expo-modules-macros.git","type":"git"},"_npmVersion":"12.2.0","description":"Swift macro plugin for Expo modules","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^20.11.0"},"optionalDependencies":{"@expo/modules-macros-win32-x64":"0.17.0","@expo/modules-macros-win32-arm64":"0.17.0"},"_npmOperationalInternal":{"tmp":"tmp/expo-modules-macros_0.17.0_1791705502093_0.4279241797048734","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"expo-modules-macros","version":"0.18.0","author":{"name":"650 Industries, Inc."},"license":"MIT","_id":"expo-modules-macros@0.18.0","maintainers":[{"name":"tsapeta","email":"npm@tsapeta.com"}],"homepage":"https://github.com/expo/expo-modules-macros","bugs":{"url":"https://github.com/expo/expo-modules-macros/issues"},"dist":{"shasum":"6c30213fd320b499407f37d05a9e5214ccb1d964","tarball":"https://registry.npmjs.org/expo-modules-macros/-/expo-modules-macros-0.18.0.tgz","fileCount":48,"integrity":"sha512-YdSubPGnQQjSlXllC2gtvKEGION5+0sZQPwWD/Efz6I5OwbGGb09HlD6UTQsZiJ4+2947ryrwyJSoTpfXQAWDw==","signatures":[{"sig":"MEUCIA4dYHdwC324Cil8iZMWaZ+VYBGuimnqXcvP6P0XFfN+AiEAxpB7mQS5OzDuigftVek26hwSLkQf0E0IbzGzpFDhYX0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIA8jy4rnCWoKuoyX/fUC2/EjSOVsBO0boOIppYOvt3fqAiBJVMnLidhhFra4FsZDvB3CUioxNv+m/VK15wUhvzIuQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/expo-modules-macros@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17507600},"main":"build/index.js","types":"build/index.d.ts","gitHead":"cacbc716d3b984e15df3f44ff924f421c08285c9","scripts":{"build":"node scripts/build.js","clean":"rm -rf build","build:ts":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"14bb38bd-1c02-4f45-a3a1-db71ed322247"}},"repository":{"url":"git+https://github.com/expo/expo-modules-macros.git","type":"git"},"_npmVersion":"12.2.0","description":"Swift macro plugin for Expo modules","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^20.11.0"},"optionalDependencies":{"@expo/modules-macros-win32-x64":"0.18.0","@expo/modules-macros-win32-arm64":"0.18.0"},"_npmOperationalInternal":{"tmp":"tmp/expo-modules-macros_0.18.0_1791714873811_0.606500494695857","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"expo-modules-macros","version":"0.19.0","author":{"name":"650 Industries, Inc."},"license":"MIT","_id":"expo-modules-macros@0.19.0","maintainers":[{"name":"tsapeta","email":"npm@tsapeta.com"}],"homepage":"https://github.com/expo/expo-modules-macros","bugs":{"url":"https://github.com/expo/expo-modules-macros/issues"},"dist":{"shasum":"4a06c455f3b45938d650d3253366cb0365341b7a","tarball":"https://registry.npmjs.org/expo-modules-macros/-/expo-modules-macros-0.19.0.tgz","fileCount":48,"integrity":"sha512-Rga6UBVicoEk2adgcea2TeQC6rNubLTvQNs56pRtfH0INnCQHhH3FqquKAxiVfFLkZd22pw8n+gBnvvwkgZ1/w==","signatures":[{"sig":"MEUCIQDoHdAPazQNxAqfybCklOe2CbfVuEhNbBWGWKn5zSorhAIgfclegVr09XMy0V0MELtam8y4xQqtXWnxJQMyYcsWCeg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIB9wJShXUT/+IWZLaX26wkbBua4IlH+HVoBjs63G1yxrAiEA1yrv11kyM9hdHnP+FlePmQXGKyP/Zk4aoqvZ9TB/pu8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/expo-modules-macros@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17514785},"main":"build/index.js","types":"build/index.d.ts","gitHead":"cb065cc3eeb0f0fe2640067d164c69f837749c13","scripts":{"build":"node scripts/build.js","clean":"rm -rf build","build:ts":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"14bb38bd-1c02-4f45-a3a1-db71ed322247"}},"repository":{"url":"git+https://github.com/expo/expo-modules-macros.git","type":"git"},"_npmVersion":"12.2.0","description":"Swift macro plugin for Expo modules","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^20.11.0"},"optionalDependencies":{"@expo/modules-macros-win32-x64":"0.19.0","@expo/modules-macros-win32-arm64":"0.19.0"},"_npmOperationalInternal":{"tmp":"tmp/expo-modules-macros_0.19.0_1791741785505_0.5761729523707451","host":"s3://npm-registry-packages-npm-production"}},"0.19.1":{"name":"expo-modules-macros","version":"0.19.1","author":{"name":"650 Industries, Inc."},"license":"MIT","_id":"expo-modules-macros@0.19.1","maintainers":[{"name":"tsapeta","email":"npm@tsapeta.com"}],"homepage":"https://github.com/expo/expo-modules-macros","bugs":{"url":"https://github.com/expo/expo-modules-macros/issues"},"dist":{"shasum":"755b08b7fbc3cfd75a3b8eea6c5d488297de43f5","tarball":"https://registry.npmjs.org/expo-modules-macros/-/expo-modules-macros-0.19.1.tgz","fileCount":48,"integrity":"sha512-7JQ+pTwgMFw+Xnl1J958BKoWPE2f8Tpglcl8l5kdxEL9q4WtSiobSIciK5UQNe2ZqCc4r6s+t8A2lOM/H0xf4w==","signatures":[{"sig":"MEQCIGCP7jsfVzSstrkaKbnl1OqNyoNxbK+d/QhLemL0GdacAiASyQea+nGCp50VWZ7BGT8bpV6ojXRzLz1BAtyNH19dfw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDuyWpbSqEvbVDW1qAGcJuMM5TjlmdnS6FGwTlOCdqH/AiAHnMmqzilD9paE19wB54Y5uZsuAUZmAsogzpPvnHiHtg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/expo-modules-macros@0.19.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17514931},"main":"build/index.js","types":"build/index.d.ts","gitHead":"927f8384d78f46d5cbb77b591434e863a3eaed64","scripts":{"build":"node scripts/build.js","clean":"rm -rf build","build:ts":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"14bb38bd-1c02-4f45-a3a1-db71ed322247"}},"repository":{"url":"git+https://github.com/expo/expo-modules-macros.git","type":"git"},"_npmVersion":"12.2.0","description":"Swift macro plugin for Expo modules","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^20.11.0"},"optionalDependencies":{"@expo/modules-macros-win32-x64":"0.19.1","@expo/modules-macros-win32-arm64":"0.19.1"},"_npmOperationalInternal":{"tmp":"tmp/expo-modules-macros_0.19.1_1791759869857_0.728561412079739","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"expo-modules-macros","version":"0.20.0","author":{"name":"650 Industries, Inc."},"license":"MIT","_id":"expo-modules-macros@0.20.0","maintainers":[{"name":"tsapeta","email":"npm@tsapeta.com"}],"homepage":"https://github.com/expo/expo-modules-macros","bugs":{"url":"https://github.com/expo/expo-modules-macros/issues"},"dist":{"shasum":"854658af689db5723c0785be7cc6a9fe0a79e75d","tarball":"https://registry.npmjs.org/expo-modules-macros/-/expo-modules-macros-0.20.0.tgz","fileCount":49,"integrity":"sha512-Ekgb5c9LQPM9CPnmDZdeWcOa1eBbCDUGrgdN5lIFNH2GWDUf9doeAOK7IqQOOVviamy37eIp5FW+N1zyrIwzoA==","signatures":[{"sig":"MEUCIQDoTqHEG0nGmXDBbFgY2B6dMzjwWqA1baQqejBYJ0ha0QIgNAh43y02wJDAUlhjF+A+pu++fBOdfWl+i5uN62Q/NPs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGFcTRzgy9RBZ+iuTBszUKygmBYPZlS/ZdwPrer00wZxAiBZfTWIIUwtTrMs5jRx+uiXJT93lwUyUYSei5Zkgz47Rw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/expo-modules-macros@0.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17657909},"main":"build/index.js","types":"build/index.d.ts","gitHead":"5c8601408b396dafce37e5b19044adef5d12c5c3","scripts":{"build":"node scripts/build.js","clean":"rm -rf build","build:ts":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"14bb38bd-1c02-4f45-a3a1-db71ed322247"}},"repository":{"url":"git+https://github.com/expo/expo-modules-macros.git","type":"git"},"_npmVersion":"12.2.0","description":"Swift macro plugin for Expo modules","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^20.11.0"},"optionalDependencies":{"@expo/modules-macros-win32-x64":"0.20.0","@expo/modules-macros-win32-arm64":"0.20.0"},"_npmOperationalInternal":{"tmp":"tmp/expo-modules-macros_0.20.0_1791988841789_0.21799611338444058","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"expo-modules-macros","version":"0.21.0","author":{"name":"650 Industries, Inc."},"license":"MIT","_id":"expo-modules-macros@0.21.0","maintainers":[{"name":"ide","email":"ide+npm@jameside.com"},{"name":"brentvatne","email":"brentvatne@gmail.com"},{"name":"expoadmin","email":"support@expo.io"},{"name":"exponent","email":"exponent.team@gmail.com"},{"name":"bycedric","email":"me@bycedric.com"},{"name":"kudochien","email":"ckchien@gmail.com"},{"name":"alanhughes","email":"hughesno1@gmail.com"},{"name":"tsapeta","email":"npm@tsapeta.com"},{"name":"expo-bot","email":"brent+expobotnpm@expo.io"},{"name":"philpl","email":"phil@kitten.sh"},{"name":"ccheever","email":"ccheever@gmail.com"},{"name":"szdziedzic","email":"sz.dziedz@gmail.com"},{"name":"wschurman","email":"wschurman@gmail.com"}],"homepage":"https://github.com/expo/expo-modules-macros","bugs":{"url":"https://github.com/expo/expo-modules-macros/issues"},"dist":{"shasum":"d02497568cc76bbd272362bb630118d204299e96","tarball":"https://registry.npmjs.org/expo-modules-macros/-/expo-modules-macros-0.21.0.tgz","fileCount":51,"integrity":"sha512-dCzN+IH3ss9audf0tvDPgwEuQJZ0WvlC60SfUDFhms8Gal1cXkYpyU7epTH2lj+ipGqghrXXjp+fmyo5wDX+YQ==","signatures":[{"sig":"MEQCICKsFlBeW+UWMu6E8D3Rvtc0JTpZ/A/9aFR7iuvellX7AiBcJxo5FaLCV7f6Rozd49oHLoDhs8HGfiymLEQpZmCUnQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGC3tcILNAWclO3m46VkBUSHZykwN36UwU1T/pnKYKGDAiAPuNwbk1oN+zjFObiLjTeZ4AOSbRLe9HHGk2e0sXRb3g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/expo-modules-macros@0.21.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17727731},"main":"build/index.js","types":"build/index.d.ts","gitHead":"19a9f8201d5742a055d72aebd1bcaac27f13dd90","scripts":{"build":"node scripts/build.js","clean":"rm -rf build","build:ts":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build:ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"14bb38bd-1c02-4f45-a3a1-db71ed322247"}},"repository":{"url":"git+https://github.com/expo/expo-modules-macros.git","type":"git"},"_npmVersion":"12.2.0","description":"Swift macro plugin for Expo modules","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^20.11.0"},"optionalDependencies":{"@expo/modules-macros-linux-x64":"0.21.0","@expo/modules-macros-win32-x64":"0.21.0","@expo/modules-macros-linux-arm64":"0.21.0","@expo/modules-macros-win32-arm64":"0.21.0"},"_npmOperationalInternal":{"tmp":"tmp/expo-modules-macros_0.21.0_1792191164980_0.8991336196908373","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"_id":"expo-modules-macros@0.22.0","bugs":{"url":"https://github.com/expo/expo-modules-macros/issues"},"dist":{"shasum":"b97a25a1954ec028330a1b2a116c55778d29be7e","tarball":"https://registry.npmjs.org/expo-modules-macros/-/expo-modules-macros-0.22.0.tgz","fileCount":52,"integrity":"sha512-IHY+FkILfG19qsyf9G/z7dcWVgsyqdkWsvvob3n5nWKa2meCCAGeEjp42N68fG8Ta6dn/bsceuma7uh2i6ho9g==","signatures":[{"sig":"MEUCIC6HwIJXJK+Mr7u79u1fUiCelcFhFbn3I8gVsSpYpHTTAiEA72V7yfbAzc+ZsQdw010dGa661WU43khT2eihy5uh5hY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDCesCpSl4uKjGMPR4IBpTr4LV+7ubKgaXa3XEmn6U9GwIhAJ8/4kyhkuiR6kxlpGraDJFChE2baku4Wj+T+0QR75sZ"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/expo-modules-macros@0.22.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17888223},"main":"build/index.js","name":"expo-modules-macros","types":"build/index.d.ts","author":{"name":"650 Industries, Inc."},"gitHead":"ce1d4476059c2e00860e856336dce523e4d184ee","license":"MIT","scripts":{"build":"node scripts/build.js","clean":"rm -rf build","build:ts":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","swift:lint":"node scripts/swift-format.js --lint","swift:format":"node scripts/swift-format.js","prepublishOnly":"npm run build:ts"},"version":"0.22.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"14bb38bd-1c02-4f45-a3a1-db71ed322247"}},"homepage":"https://github.com/expo/expo-modules-macros","repository":{"url":"git+https://github.com/expo/expo-modules-macros.git","type":"git"},"_npmVersion":"12.2.0","description":"Swift macro plugin for Expo modules","directories":{},"maintainers":[{"name":"ide","email":"ide+npm@jameside.com"},{"name":"brentvatne","email":"brentvatne@gmail.com"},{"name":"expoadmin","email":"support@expo.io"},{"name":"exponent","email":"exponent.team@gmail.com"},{"name":"bycedric","email":"me@bycedric.com"},{"name":"kudochien","email":"ckchien@gmail.com"},{"name":"alanhughes","email":"hughesno1@gmail.com"},{"name":"tsapeta","email":"npm@tsapeta.com"},{"name":"expo-bot","email":"brent+expobotnpm@expo.io"},{"name":"philpl","email":"phil@kitten.sh"},{"name":"ccheever","email":"ccheever@gmail.com"},{"name":"szdziedzic","email":"sz.dziedz@gmail.com"},{"name":"wschurman","email":"wschurman@gmail.com"}],"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^20.11.0"},"optionalDependencies":{"@expo/modules-macros-linux-x64":"0.22.0","@expo/modules-macros-win32-x64":"0.22.0","@expo/modules-macros-linux-arm64":"0.22.0","@expo/modules-macros-win32-arm64":"0.22.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/expo-modules-macros_0.22.0_1792493868556_0.06870480466394402"}}},"time":{"created":"2026-04-30T18:43:44.152Z","modified":"2026-10-20T10:57:49.053Z","0.0.1":"2026-04-30T18:43:44.275Z","0.14.0":"2026-09-26T16:20:41.986Z","0.15.0":"2026-10-03T07:42:59.890Z","0.16.0":"2026-10-05T09:47:24.196Z","0.17.0-0":"2026-10-10T20:23:23.773Z","0.17.0":"2026-10-11T07:58:22.280Z","0.18.0":"2026-10-11T10:34:34.012Z","0.19.0":"2026-10-11T18:03:05.737Z","0.19.1":"2026-10-11T23:04:30.030Z","0.20.0":"2026-10-14T14:40:41.979Z","0.21.0":"2026-10-16T22:52:45.304Z","0.22.0":"2026-10-20T10:57:48.723Z"},"bugs":{"url":"https://github.com/expo/expo-modules-macros/issues"},"author":{"name":"650 Industries, Inc."},"license":"MIT","homepage":"https://github.com/expo/expo-modules-macros","repository":{"url":"git+https://github.com/expo/expo-modules-macros.git","type":"git"},"description":"Swift macro plugin for Expo modules","maintainers":[{"name":"ide","email":"ide+npm@jameside.com"},{"name":"brentvatne","email":"brentvatne@gmail.com"},{"name":"expoadmin","email":"support@expo.io"},{"name":"exponent","email":"exponent.team@gmail.com"},{"name":"bycedric","email":"me@bycedric.com"},{"name":"kudochien","email":"ckchien@gmail.com"},{"name":"alanhughes","email":"hughesno1@gmail.com"},{"name":"tsapeta","email":"npm@tsapeta.com"},{"name":"expo-bot","email":"brent+expobotnpm@expo.io"},{"name":"philpl","email":"phil@kitten.sh"},{"name":"ccheever","email":"ccheever@gmail.com"},{"name":"szdziedzic","email":"sz.dziedz@gmail.com"},{"name":"wschurman","email":"wschurman@gmail.com"}],"readme":"<p>\n  <a href=\"https://docs.expo.dev/modules/\">\n    <img\n      src=\".github/resources/expo-modules-macros.svg\"\n      alt=\"expo-modules-macros\"\n      height=\"64\" />\n  </a>\n</p>\n\n`expo-modules-macros` is the Swift compiler plugin behind the Expo Modules API. It implements the macros that [`expo-modules-core`](https://github.com/expo/expo/tree/main/packages/expo-modules-core) declares, so a module author writes plain Swift declarations and the plugin synthesizes the code that binds them to JavaScript.\n\nThe same executable doubles as a source scanner CLI.\n\n# Installation\n\nThis package is not meant to be installed directly. It is a dependency of `expo-modules-core`, so every Expo project already has it. The published package contains a prebuilt universal (arm64 + x86_64) macOS binary at `apple/ExpoModulesMacros`, so consumers never build the plugin themselves.\n\nThe Windows and Linux binaries ship in their own packages, one per platform and architecture:\n\n- `@expo/modules-macros-win32-x64` and `@expo/modules-macros-win32-arm64`, each with an `ExpoModulesMacros.exe`. They need only Windows system libraries and the Microsoft Visual C++ runtime.\n- `@expo/modules-macros-linux-x64` and `@expo/modules-macros-linux-arm64`, each with an `ExpoModulesMacros`. They need glibc 2.34 or newer and the GNU C++ runtime (`libstdc++` and `libgcc_s`), for example on Ubuntu 22.04, Debian 12, Red Hat Enterprise Linux 9 or Amazon Linux 2023. They don't run on musl distributions such as Alpine Linux.\n\nThis package lists them as optional dependencies, and their `os`, `cpu` and (on Linux) `libc` fields make npm, pnpm and Yarn install only the one that matches the machine, so other machines don't download them. The Swift runtime is linked in statically, so the executables run without a Swift toolchain.\n\n# Macros\n\n- **`@ExpoModule(_ name: String? = nil, classes: [Any.Type] = [])`** on a class. Turns the class into a module: binds its `@JS` members into the module's JavaScript object and resolves the module name from the argument, falling back to the class name. It also synthesizes everything inheriting from `Module` used to provide, so a module class can carry any superclass, or none.\n- **`@JS(_ jsName: String? = nil, _ options: JSOptions...)`** on a member of a module or shared object. Marks a function, property or initializer for export. `@ExpoModule` and `@SharedObject` bind each marked member straight into the JavaScript object, with the argument decoding, the call and the result encoding inlined, so there is no dynamic per-call path. The JS name defaults to the Swift name; pass a string to override it. Two `@JS` members with the same JS name on one JavaScript object are a compile-time error, since JavaScript could reach only one of them. A shared object's static and instance members bind onto different objects, so they can share a name. The macro also checks that every type crossing the boundary is convertible in the direction it travels, so a bad type is reported on the author's own declaration rather than on the enclosing type. The `.concurrent` option moves an `async` body off the JavaScript thread while still decoding and encoding on it. The `.withAsync(\"name\")` option binds a synchronous function a second time under that name, as a function that returns a promise and runs the body on the concurrent thread pool. That function isn't isolated to the JavaScript thread, so its body must be safe to run on any thread. The macro reports a function isolated to a global actor through its own attribute or its type's. When the isolation comes from elsewhere, such as a protocol or the module's default isolation, the error points into the generated code, so mark the function `nonisolated`. A function or initializer can take a closure argument, such as `(Point) throws -> Size` or `(String) async throws -> Data`. JavaScript passes a function for it, and native code can store the closure and call it from any thread. A closure that throws or returns a value blocks the caller until JavaScript returns, and an `async` closure suspends instead and awaits a promise that the function returns. A closure that returns a value must be `throws`, so that an error from JavaScript can reach the caller. A non-throwing `Void` closure returns before JavaScript reads its arguments, so don't change a class instance after passing it to one.\n- **`@Event(_ name: String? = nil, sync: Bool = false)`** on a function-typed `var`. Expands the property into a closure that emits the event, so calling the property sends it to JavaScript with the closure's parameter as the payload. The JS name defaults to the property name with a leading `on` stripped. `sync: true` dispatches inline instead of asynchronously.\n- **`@SharedObject(_ name: String? = nil)`** on a `SharedObject` subclass. Collects the class's `@JS` members into a class definition that a module exposes through `@ExpoModule(classes:)`.\n- **`@Record()`** on a struct, or on a final class with no inheritance clause (declare a class's protocol conformances in an extension). Treats every non-static, non-private, non-computed stored property as a field, with no per-field wrapper, and synthesizes the memberwise initializer, the conversions in both directions, and the `Record` conformance. Requiredness is inferred: a default value makes a field optional, an optional type makes it nullable and optional.\n- **`@Union()`** on an enum whose cases each carry one associated value. Models a TypeScript union. Synthesizes the conversions in both directions, a typed accessor per payload type, and the `JavaScriptDecodable` and `JavaScriptEncodable` conformances. Decoding is ordered: the first case whose payload decodes wins, so the more specific case goes first.\n\nHow that looks in a module:\n\n```swift\nimport ExpoModulesCore\n\n@ExpoModule(classes: [Cache.self])\npublic final class MyModule {\n  @JS\n  func greet(name: String) -> String {\n    \"Hi, \\(name)\"\n  }\n\n  @JS(\"doWork\")\n  func performWork() async throws { ... }\n\n  @Event\n  var onProgress: (ProgressEvent) -> Void\n}\n\n@SharedObject\nfinal class Cache: SharedObject {\n  @JS\n  init(name: String) { ... }\n\n  @JS\n  func get(_ key: String) -> String? { ... }\n}\n```\n\nThe author-facing documentation for each macro lives next to its declaration in `expo-modules-core`, in `ios/Core/ExpoModulesMacros.swift`. This repository holds the implementations.\n\n# Scanner\n\nThe Swift compiler launches a plugin executable with no arguments and speaks the plugin protocol over stdin, so the binary treats any argument as a scanner invocation instead:\n\n```\nExpoModulesMacros <subcommand> [options] <path> [<path> ...]\n\nsubcommands:\n  scan-modules   fast scan for top-level @ExpoModule types (autolinking)\n  scan-exports   deep scan of the full JS-exported surface (type generation)\n\noptions (scan-modules only):\n  --define <flag>   treat a conditional compilation flag as set; repeatable\n```\n\nEach path is a `.swift` file or a directory, scanned recursively for `.swift` files. Both subcommands print a JSON report to stdout, each carrying its own `schemaVersion` so a consumer can check it understands the shape before trusting it. The two versions are independent: the commands serve different consumers and change for different reasons.\n\n# TypeScript wrapper\n\nNode consumers can call the scanner through this package instead of locating the binary and shelling out themselves:\n\n```ts\nimport { scanModules, scanExports } from 'expo-modules-macros';\n\nconst { modules, warnings } = await scanModules(['ios/'], { defines: ['DEBUG'], timeout: 30_000 });\nconst { exports } = await scanExports(['ios/']);\n```\n\nThe binary is a compiled executable, so each call still spawns a process. What the wrapper owns is the part consumers would otherwise duplicate: resolving the shipped binary, building the arguments, parsing the JSON, checking `schemaVersion`, and turning a non-zero exit or an exceeded `timeout` into a `ScannerError`. The result types are hand-written mirrors of the Swift `Codable` types, which is what the version check guards against drifting.\n\n# How the plugin reaches the compiler\n\n`expo-modules-core` declares the macro signatures with `#externalMacro(module: \"ExpoModulesMacros\", type: …)`. During `pod install`, `expo-modules-autolinking` resolves this package from the core package and appends\n\n```\n-Xfrontend -load-plugin-executable -Xfrontend <plugin>/apple/ExpoModulesMacros#ExpoModulesMacros\n```\n\nto `OTHER_SWIFT_FLAGS` for `ExpoModulesCore`, every pod that depends on it, and their test specs. Expo's SPM prebuilds pass the same flag when they generate `Package.swift`, so both build systems load the same binary.\n\nOn Windows and Linux, the compiler loads `ExpoModulesMacros.exe` from `@expo/modules-macros-win32-<arch>` or `ExpoModulesMacros` from `@expo/modules-macros-linux-<arch>` with the same flag. `getScannerBinaryPath()` in the TypeScript wrapper returns the binary for the current platform and architecture. On Windows and Linux it falls back to the local `npm run build` output in `platforms/<platform>-<arch>` when the platform package isn't installed, for example in this repository.\n\nThe module and type names in `#externalMacro` must stay in sync with `apple/Sources/ExpoModulesMacros/Plugin.swift`.\n\n# Development\n\nRequires a toolchain with Swift 6.2 or newer: on macOS 13 or newer that means Xcode 26 or newer, and on Windows and Linux the Swift toolchain from swift.org (CI uses 6.4).\n\n```sh\ncd apple\nswift build\nswift test\n```\n\nThe Swift sources are formatted with [swift-format](https://github.com/swiftlang/swift-format), using the same configuration (`.swift-format`) as the `expo/expo` repository. `npm run swift:format` formats the `.swift` files that Git tracks or doesn't ignore in place, and `npm run swift:lint` checks them without changes, as CI does.\n\nThe scripts run the `swift-format` on `PATH`, or on macOS the one in the selected Xcode when there is none on `PATH`. CI uses swift-format `604.0.0`, which can format differently from the one in Xcode. To get the version that CI uses, build it from source:\n\n```sh\ngit clone --depth 1 --branch 604.0.0 https://github.com/swiftlang/swift-format.git /tmp/swift-format\n(cd /tmp/swift-format && swift build -c release --product swift-format)\nmkdir -p ~/.local/bin\ncp \"$(cd /tmp/swift-format && swift build -c release --show-bin-path)/swift-format\" ~/.local/bin/\n```\n\nThen add `~/.local/bin` to `PATH`.\n\n`npm run build` runs `scripts/build.js`, which builds the release binary with SwiftPM's native build system (Swift Build, the default since Swift 6.4, doesn't build a macro tool that no target in the package uses).\n\n- On macOS, it builds for arm64 and x86_64, merges the slices into `apple/ExpoModulesMacros` with `lipo`, strips it, and verifies both slices are present. SwiftPM only builds macro tools for the host architecture, so the x86_64 slice is produced by running the toolchain under Rosetta; the script installs Rosetta if it is missing.\n- On Windows, it builds for the host architecture only, with the Swift runtime linked in statically and without debug info, and writes `platforms/win32-<arch>/ExpoModulesMacros.exe` (`x64` or `arm64`, as Node's `process.arch` names them), the file that the package for that architecture publishes. It strips the executable with `llvm-strip` from the Swift toolchain and checks the architecture in its header.\n- On Linux, it also builds for the host architecture only, with the Swift runtime linked in statically, and writes `platforms/linux-<arch>/ExpoModulesMacros`. It strips the executable with `strip` and checks the architecture in its ELF header. The executable needs the glibc version of the machine it's built on or a newer one, so CI and the Publish workflow build it in the `swift:6.4.0-rhel-ubi9` image (Red Hat UBI 9, glibc 2.34).\n\nThe macOS binary is committed to the repository. The Windows and Linux binaries aren't: the Publish workflow builds them and puts them into the packages in `platforms/`.\n\n# Releasing\n\nThe **Publish** workflow is manual (`workflow_dispatch`) and takes a release type. It bumps the version, builds the universal binary, and publishes to npm through OIDC trusted publishing. The commit, tag and GitHub release are created only after the publish succeeds, so a failed build leaves the branch untouched.\n\nWindows and Linux jobs (x64 and arm64 for each) build their binaries first. Verify jobs then install each binary from its packed package and scan through the TypeScript wrapper with `scripts/check-scan.js`, on Windows runners without Swift and, for Linux, in the Ubuntu 22.04, Debian 12 and Amazon Linux 2023 images. The publish job does the same for the macOS binary, so a failed check stops the release before anything is published. After the version bump, `scripts/set-platform-versions.js` gives the packages in `platforms/` the same version and lists them in this package's `optionalDependencies` with that exact version. The workflow publishes the four platform packages before `expo-modules-macros`, so this package is never on npm without them. Each package needs trusted publishing configured on npmjs.com for the Publish workflow.\n\nPrerelease versions (`prepatch`, `preminor`, `premajor`, `prerelease`) are published with the `next` dist-tag, and the others with `latest`. With **Dry run** checked, the workflow builds everything and runs `npm publish --dry-run` for the five packages, but doesn't publish, commit, tag or create a release. Use it to check a change to the workflow.\n\n# Contributing\n\nContributions are very welcome! Please refer to the guidelines described in the [contributing guide](https://github.com/expo/expo#contributing).\n","readmeFilename":"README.md"}