diff --git a/.changeset/nine-cameras-pump.md b/.changeset/nine-cameras-pump.md new file mode 100644 index 000000000..1045d31d0 --- /dev/null +++ b/.changeset/nine-cameras-pump.md @@ -0,0 +1,25 @@ +--- +"@evolu/common": minor +--- + +Time Travel + +Evolu does not delete data; it only marks them as deleted. This is because local-first is a distributed system. There is no central authority (if there is, it's not local-first). Imagine you delete data on some disconnected device and update it on another. Should we throw away changes? Such a deletion would require additional logic to enforce data deletion on all devices forever, even in the future, when some outdated device syncs. It's possible (and planned for Evolu), but it's not trivial because every device has to track data to be rejected without knowing the data itself (for security reasons). + +Not deleting data allows Evolu to provide a time-traveling feature. All data, even "deleted" or overridden, are stored in the evolu_message table. Here is how we can read such data. + +```ts +const todoTitleHistory = (id: TodoId) => + evolu.createQuery((db) => + db + .selectFrom("evolu_message") + .select("value") + .where("table", "==", "todo") + .where("row", "==", id) + .where("column", "==", "title") + .$narrowType<{ value: TodoTable["title"] }>() + .orderBy("timestamp", "desc"), + ); +``` + +Note that this API is not 100% typed, but it's not an issue because Evolu Schema shall be append-only. Once an app is released, we shall not change Schema names and types. We can only add new tables and columns because there is a chance current Schema is already used. diff --git a/apps/server/package.json b/apps/server/package.json index f6e3fa25b..122ed4728 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -15,7 +15,7 @@ }, "devDependencies": { "@evolu/tsconfig": "workspace:*", - "@types/node": "^20.12.8", + "@types/node": "^20.12.10", "ts-node": "10.9.2", "typescript": "^5.4.5" }, diff --git a/apps/web/package.json b/apps/web/package.json index cb8241821..59407c7c7 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -23,7 +23,7 @@ }, "devDependencies": { "@evolu/tsconfig": "workspace:*", - "@types/node": "^20.12.8", + "@types/node": "^20.12.10", "@types/react": "~18.3.1", "@types/react-dom": "~18.3.0", "autoprefixer": "^10.4.19", diff --git a/apps/web/pages/docs/_meta.json b/apps/web/pages/docs/_meta.json index fdef4a115..0a91da01d 100644 --- a/apps/web/pages/docs/_meta.json +++ b/apps/web/pages/docs/_meta.json @@ -4,6 +4,7 @@ "quickstart": "Quickstart", "indexes": "Indexes", "migrations": "Migrations", + "time-travel": "Time Travel", "patterns": "Patterns", "evolu-server": "Evolu Server", "how-evolu-works": "How Evolu Works", diff --git a/apps/web/pages/docs/time-travel.mdx b/apps/web/pages/docs/time-travel.mdx new file mode 100644 index 000000000..814df8bc1 --- /dev/null +++ b/apps/web/pages/docs/time-travel.mdx @@ -0,0 +1,21 @@ +# Time Travel + +Evolu does not delete data; it only marks them as deleted. This is because local-first is a distributed system. There is no central authority (if there is, it's not local-first). Imagine you delete data on some disconnected device and update it on another. Should we throw away changes? Such a deletion would require additional logic to enforce data deletion on all devices forever, even in the future, when some outdated device syncs. It's possible (and planned for Evolu), but it's not trivial because every device has to track data to be rejected without knowing the data itself (for security reasons). + +Not deleting data allows Evolu to provide a time-traveling feature. All data, even "deleted" or overridden, are stored in the evolu_message table. Here is how we can read such data. + +```ts +const todoTitleHistory = (id: TodoId) => + evolu.createQuery((db) => + db + .selectFrom("evolu_message") + .select("value") + .where("table", "==", "todo") + .where("row", "==", id) + .where("column", "==", "title") + .$narrowType<{ value: TodoTable["title"] }>() + .orderBy("timestamp", "desc"), + ); +``` + +Note that this API is not 100% typed, but it's not an issue because Evolu Schema shall be append-only. Once an app is released, we shall not change Schema names and types. We can only add new tables and columns because there is a chance current Schema is already used. diff --git a/package.json b/package.json index 19d2742e8..3055a69b8 100755 --- a/package.json +++ b/package.json @@ -28,6 +28,9 @@ }, "packageManager": "pnpm@9.1.0", "pnpm": { + "patchedDependencies": { + "@changesets/assemble-release-plan@6.0.0": "patches/@changesets__assemble-release-plan@6.0.0.patch" + }, "peerDependencyRules": { "ignoreMissing": [ "@babel/*", diff --git a/packages/evolu-common/README.md b/packages/evolu-common/README.md index 2b14b5478..e5e0f4349 100644 --- a/packages/evolu-common/README.md +++ b/packages/evolu-common/README.md @@ -25,6 +25,10 @@ Local-first apps allow users to own their data by storing them on their devices. For detailed information and usage examples, please visit [evolu.dev](https://www.evolu.dev). +## API Reference + +[evoluhq.github.io/evolu](https://evoluhq.github.io/evolu) + ## Community The Evolu community is on [GitHub Discussions](https://github.com/evoluhq/evolu/discussions), where you can ask questions and voice ideas. diff --git a/packages/evolu-common/package.json b/packages/evolu-common/package.json index 0c356426c..9eaff4d53 100644 --- a/packages/evolu-common/package.json +++ b/packages/evolu-common/package.json @@ -53,7 +53,7 @@ "protobuf": "pnpm protoc --ts_out ./src --proto_path protobuf protobuf/Protobuf.proto --ts_opt eslint_disable --ts_opt optimize_code_size && pnpm format" }, "dependencies": { - "@noble/ciphers": "^0.5.2", + "@noble/ciphers": "^0.5.3", "@noble/hashes": "^1.4.0", "@protobuf-ts/runtime": "^2.9.4", "@scure/bip39": "^1.3.0", @@ -61,7 +61,7 @@ "nanoid": "^5.0.7" }, "devDependencies": { - "@effect/platform": "^0.52.2", + "@effect/platform": "^0.53.0", "@effect/schema": "^0.66.14", "@evolu/tsconfig": "workspace:*", "@protobuf-ts/plugin": "^2.9.4", @@ -74,9 +74,9 @@ "vitest": "^1.6.0" }, "peerDependencies": { - "@effect/platform": "^0.52.2", - "@effect/schema": "^0.66.10", - "effect": "^3.0.0" + "@effect/platform": "^0.53.0", + "@effect/schema": "^0.66.14", + "effect": "^3.1.2" }, "publishConfig": { "access": "public" diff --git a/packages/evolu-common/src/Evolu.ts b/packages/evolu-common/src/Evolu.ts index d36d55f81..a4733b13d 100644 --- a/packages/evolu-common/src/Evolu.ts +++ b/packages/evolu-common/src/Evolu.ts @@ -44,6 +44,7 @@ import { } from "./Sqlite.js"; import { Listener, Unsubscribe, makeStore } from "./Store.js"; import { SyncState, initialSyncState } from "./Sync.js"; +import { TimestampString } from "./Crdt.js"; /** * The Evolu interface provides a type-safe SQL query building and state @@ -101,11 +102,21 @@ export interface Evolu { readonly createQuery: ( queryCallback: ( db: Pick< - Kysely.Kysely<{ - [Table in keyof T]: NullableExceptIdCreatedAtUpdatedAt<{ - [Column in keyof T[Table]]: T[Table][Column]; - }>; - }>, + Kysely.Kysely< + { + [Table in keyof T]: NullableExceptIdCreatedAtUpdatedAt<{ + [Column in keyof T[Table]]: T[Table][Column]; + }>; + } & { + readonly evolu_message: { + readonly timestamp: TimestampString; + readonly table: keyof T; + readonly row: Id; + readonly column: string; + readonly value: Value; + }; + } + >, "selectFrom" | "fn" | "with" | "withRecursive" >, ) => Kysely.SelectQueryBuilder, @@ -764,7 +775,7 @@ const createEvolu = ( createQuery: (queryCallback, options) => pipe( - queryCallback(kysely).compile(), + queryCallback(kysely as never).compile(), (compiledQuery): SqliteQuery => { if (isSqlMutation(compiledQuery.sql)) throw new Error( diff --git a/packages/evolu-server/package.json b/packages/evolu-server/package.json index f618644b2..f8dff4840 100644 --- a/packages/evolu-server/package.json +++ b/packages/evolu-server/package.json @@ -41,7 +41,7 @@ "@types/body-parser": "^1.19.5", "@types/cors": "^2.8.17", "@types/express": "^4.17.21", - "@types/node": "^20.12.8", + "@types/node": "^20.12.10", "eslint": "^8.57.0", "eslint-config-evolu": "workspace:*", "typescript": "^5.4.5", diff --git a/patches/@changesets__assemble-release-plan@6.0.0.patch b/patches/@changesets__assemble-release-plan@6.0.0.patch new file mode 100644 index 000000000..e6c8faa6a --- /dev/null +++ b/patches/@changesets__assemble-release-plan@6.0.0.patch @@ -0,0 +1,42 @@ +diff --git a/dist/changesets-assemble-release-plan.cjs.js b/dist/changesets-assemble-release-plan.cjs.js +index ee5c0f67fabadeb112e9f238d8b144a4d125830f..42afcbce044a2949d6242af0a6c5abffcd2a51ad 100644 +--- a/dist/changesets-assemble-release-plan.cjs.js ++++ b/dist/changesets-assemble-release-plan.cjs.js +@@ -90,16 +90,6 @@ function determineDependents({ + } of dependencyVersionRanges) { + if (nextRelease.type === "none") { + continue; +- } else if (shouldBumpMajor({ +- dependent, +- depType, +- versionRange, +- releases, +- nextRelease, +- preInfo, +- onlyUpdatePeerDependentsWhenOutOfRange: config.___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH.onlyUpdatePeerDependentsWhenOutOfRange +- })) { +- type = "major"; + } else if ((!releases.has(dependent) || releases.get(dependent).type === "none") && (config.___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH.updateInternalDependents === "always" || !semverSatisfies__default["default"](incrementVersion(nextRelease, preInfo), versionRange))) { + switch (depType) { + case "dependencies": +diff --git a/dist/changesets-assemble-release-plan.esm.js b/dist/changesets-assemble-release-plan.esm.js +index bf5202626a164a7780650d333983c3479b078689..27eea4d1d31c0e7ce8d56363c5a3437bbeb819a0 100644 +--- a/dist/changesets-assemble-release-plan.esm.js ++++ b/dist/changesets-assemble-release-plan.esm.js +@@ -79,16 +79,6 @@ function determineDependents({ + } of dependencyVersionRanges) { + if (nextRelease.type === "none") { + continue; +- } else if (shouldBumpMajor({ +- dependent, +- depType, +- versionRange, +- releases, +- nextRelease, +- preInfo, +- onlyUpdatePeerDependentsWhenOutOfRange: config.___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH.onlyUpdatePeerDependentsWhenOutOfRange +- })) { +- type = "major"; + } else if ((!releases.has(dependent) || releases.get(dependent).type === "none") && (config.___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH.updateInternalDependents === "always" || !semverSatisfies(incrementVersion(nextRelease, preInfo), versionRange))) { + switch (depType) { + case "dependencies": diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f900f3f11..f0e1daf61 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,6 +7,11 @@ settings: overrides: flexsearch: 0.7.31 +patchedDependencies: + '@changesets/assemble-release-plan@6.0.0': + hash: efefrufcathrfopd2z6l62idva + path: patches/@changesets__assemble-release-plan@6.0.0.patch + importers: .: @@ -37,7 +42,7 @@ importers: dependencies: '@effect/schema': specifier: ^0.66.14 - version: 0.66.14(effect@3.1.2)(fast-check@3.18.0) + version: 0.66.15(effect@3.1.2)(fast-check@3.18.0) '@evolu/common': specifier: workspace:* version: link:../../packages/evolu-common @@ -64,10 +69,10 @@ importers: version: 3.3.0 expo: specifier: ^50.0.17 - version: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))) + version: 50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))) expo-sqlite: specifier: ~13.4.0 - version: 13.4.0(expo@50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))) + version: 13.4.0(expo@50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))) expo-status-bar: specifier: ~1.11.1 version: 1.11.1 @@ -125,11 +130,11 @@ importers: specifier: workspace:* version: link:../../packages/evolu-tsconfig '@types/node': - specifier: ^20.12.8 - version: 20.12.8 + specifier: ^20.12.10 + version: 20.12.10 ts-node: specifier: 10.9.2 - version: 10.9.2(@types/node@20.12.8)(typescript@5.4.5) + version: 10.9.2(@types/node@20.12.10)(typescript@5.4.5) typescript: specifier: ^5.4.5 version: 5.4.5 @@ -138,7 +143,7 @@ importers: dependencies: '@effect/schema': specifier: ^0.66.14 - version: 0.66.14(effect@3.1.2)(fast-check@3.18.0) + version: 0.66.15(effect@3.1.2)(fast-check@3.18.0) '@evolu/common': specifier: workspace:* version: link:../../packages/evolu-common @@ -171,8 +176,8 @@ importers: specifier: workspace:* version: link:../../packages/evolu-tsconfig '@types/node': - specifier: ^20.12.8 - version: 20.12.8 + specifier: ^20.12.10 + version: 20.12.10 '@types/react': specifier: ~18.3.1 version: 18.3.1 @@ -199,7 +204,7 @@ importers: version: 0.5.14(prettier-plugin-jsdoc@1.3.0(prettier@3.2.5))(prettier@3.2.5) tailwindcss: specifier: ^3.4.3 - version: 3.4.3(ts-node@10.9.2(@types/node@20.12.8)(typescript@5.4.5)) + version: 3.4.3(ts-node@10.9.2(@types/node@20.12.10)(typescript@5.4.5)) typescript: specifier: ^5.4.5 version: 5.4.5 @@ -247,8 +252,8 @@ importers: packages/evolu-common: dependencies: '@noble/ciphers': - specifier: ^0.5.2 - version: 0.5.2 + specifier: ^0.5.3 + version: 0.5.3 '@noble/hashes': specifier: ^1.4.0 version: 1.4.0 @@ -266,11 +271,11 @@ importers: version: 5.0.7 devDependencies: '@effect/platform': - specifier: ^0.52.2 - version: 0.52.3(@effect/schema@0.66.14(effect@3.1.2)(fast-check@3.18.0))(effect@3.1.2)(ws@8.17.0) + specifier: ^0.53.0 + version: 0.53.1(@effect/schema@0.66.15(effect@3.1.2)(fast-check@3.18.0))(effect@3.1.2) '@effect/schema': specifier: ^0.66.14 - version: 0.66.14(effect@3.1.2)(fast-check@3.18.0) + version: 0.66.15(effect@3.1.2)(fast-check@3.18.0) '@evolu/tsconfig': specifier: workspace:* version: link:../evolu-tsconfig @@ -297,7 +302,7 @@ importers: version: 5.4.5 vitest: specifier: ^1.6.0 - version: 1.6.0(@types/node@20.12.8)(terser@5.31.0) + version: 1.6.0(@types/node@20.12.10)(terser@5.31.0) packages/evolu-common-react: devDependencies: @@ -324,7 +329,7 @@ importers: version: 5.4.5 vitest: specifier: ^1.6.0 - version: 1.6.0(@types/node@20.12.8)(terser@5.31.0) + version: 1.6.0(@types/node@20.12.10)(terser@5.31.0) packages/evolu-common-web: devDependencies: @@ -354,7 +359,7 @@ importers: version: 0.4.2 vitest: specifier: ^1.6.0 - version: 1.6.0(@types/node@20.12.8)(terser@5.31.0) + version: 1.6.0(@types/node@20.12.10)(terser@5.31.0) packages/evolu-react: devDependencies: @@ -387,13 +392,13 @@ importers: version: 5.4.5 vitest: specifier: ^1.6.0 - version: 1.6.0(@types/node@20.12.8)(terser@5.31.0) + version: 1.6.0(@types/node@20.12.10)(terser@5.31.0) packages/evolu-react-native: dependencies: expo-updates: specifier: ^0.24.12 - version: 0.24.12(expo@50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))) + version: 0.24.12(expo@50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))) devDependencies: '@evolu/common': specifier: workspace:* @@ -412,10 +417,10 @@ importers: version: link:../eslint-config-evolu expo: specifier: ^50.0.17 - version: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))) + version: 50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))) expo-sqlite: specifier: ~13.4.0 - version: 13.4.0(expo@50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))) + version: 13.4.0(expo@50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))) react-native: specifier: 0.73.6 version: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(react@18.3.1) @@ -424,7 +429,7 @@ importers: version: 5.4.5 vitest: specifier: ^1.6.0 - version: 1.6.0(@types/node@20.12.8)(terser@5.31.0) + version: 1.6.0(@types/node@20.12.10)(terser@5.31.0) packages/evolu-server: dependencies: @@ -466,8 +471,8 @@ importers: specifier: ^4.17.21 version: 4.17.21 '@types/node': - specifier: ^20.12.8 - version: 20.12.8 + specifier: ^20.12.10 + version: 20.12.10 eslint: specifier: ^8.57.0 version: 8.57.0 @@ -479,7 +484,7 @@ importers: version: 5.4.5 vitest: specifier: ^1.6.0 - version: 1.6.0(@types/node@20.12.8)(terser@5.31.0) + version: 1.6.0(@types/node@20.12.10)(terser@5.31.0) packages/evolu-tsconfig: {} @@ -1300,14 +1305,14 @@ packages: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} - '@effect/platform@0.52.3': - resolution: {integrity: sha512-pDLssAZn/N2Ae80XKoNh2YSfYUz9b7KIsMMsuGYt0d5+A7KjotMQ7id/rFv9/QdY/8UXOOMkE5/Iby8KZKhpdA==} + '@effect/platform@0.53.1': + resolution: {integrity: sha512-gususqRdqFxAvtFZ+gqT09vSlb9xsXWlGS76HGAMnyU7QKVcGQFdRYST0+/hOuM1fvNd9kniTwLwORaVNmc34Q==} peerDependencies: - '@effect/schema': ^0.66.14 + '@effect/schema': ^0.66.15 effect: ^3.1.2 - '@effect/schema@0.66.14': - resolution: {integrity: sha512-2Yc6gnXpcMmwQnbU2JUwDl0ckeOJmFZzteXn2jjVWuNi9PGv+jp2yK7jxv0pALcieuYwdR5tKkCRI7STuhEwfg==} + '@effect/schema@0.66.15': + resolution: {integrity: sha512-7dNBbCIo+pGs4V3edW9ujqK+f5ZbmzZn4Cm1euRN4NWPBAuPTXuToKLNR370ojimbis6OsuQbpGBNgzEGFMvrg==} peerDependencies: effect: ^3.1.2 fast-check: ^3.13.2 @@ -1476,8 +1481,8 @@ packages: resolution: {integrity: sha512-Ydf4LidRB/EBI+YrB+cVLqIseiRfjUI/AeHBgjGMtq3GroraDu81OV7zqophRgupngoL3iS3JUMDMnxO7g39qA==} engines: {'0': node >=0.10.0} - '@expo/cli@0.17.10': - resolution: {integrity: sha512-Jw2wY+lsavP9GRqwwLqF/SvB7w2GZ4sWBMcBKTZ8F0lWjwmLGAUt4WYquf20agdmnY/oZUHvWNkrz/t3SflhnA==} + '@expo/cli@0.17.11': + resolution: {integrity: sha512-EyAL/x9yyN9nA0iiZC0XZLvSBbKtl1GT38HNgrPmTb0KEzVlpbSJoWfw2vn9g/NnWPS1wMKRU2I5U42d/tvqvg==} hasBin: true '@expo/code-signing-certificates@0.0.5': @@ -1486,8 +1491,8 @@ packages: '@expo/config-plugins@7.8.4': resolution: {integrity: sha512-hv03HYxb/5kX8Gxv/BTI8TLc9L06WzqAfHRRXdbar4zkLcP2oTzvsLEF4/L/TIpD3rsnYa0KU42d0gWRxzPCJg==} - '@expo/config-plugins@7.9.1': - resolution: {integrity: sha512-ICt6Jed1J0tPYMQrJ8K5Qusgih2I6pZ2PU4VSvxsN3T4n97L13XpYV1vyq1Uc/HMl3UhOwldipmgpEbCfeDqsQ==} + '@expo/config-plugins@7.9.2': + resolution: {integrity: sha512-sRU/OAp7kJxrCUiCTUZqvPMKPdiN1oTmNfnbkG4oPdfWQTpid3jyCH7ZxJEN5SI6jrY/ZsK5B/JPgjDUhuWLBQ==} '@expo/config-types@50.0.1': resolution: {integrity: sha512-EZHMgzkWRB9SMHO1e9m8s+OMahf92XYTnsCFjxhSfcDrcEoSdFPyJWDJVloHZPMGhxns7Fi2+A+bEVN/hD4NKA==} @@ -1508,23 +1513,23 @@ packages: '@expo/image-utils@0.4.2': resolution: {integrity: sha512-CxP+1QXgRXsNnmv2FAUA2RWwK6kNBFg4QEmVXn2K9iLoEAI+i+1IQXcUgc+J7nTJl9pO7FIu2gIiEYGYffjLWQ==} - '@expo/json-file@8.3.1': - resolution: {integrity: sha512-QIMMaqPvm8EGflp041h27OG8DDgh3RxzkEjEEvHJ9AUImgeieMCGrpDsnGOcPI4TR6MpJpLNAk5rZK4szhEwIQ==} + '@expo/json-file@8.3.3': + resolution: {integrity: sha512-eZ5dld9AD0PrVRiIWpRkm5aIoWBw3kAyd8VkuWEy92sEthBKDDDHAnK2a0dw0Eil6j7rK7lS/Qaq/Zzngv2h5A==} '@expo/metro-config@0.17.7': resolution: {integrity: sha512-3vAdinAjMeRwdhGWWLX6PziZdAPvnyJ6KVYqnJErHHqH0cA6dgAENT3Vq6PEM1H2HgczKr2d5yG9AMgwy848ow==} peerDependencies: '@react-native/babel-preset': '*' - '@expo/osascript@2.1.0': - resolution: {integrity: sha512-bOhuFnlRaS7CU33+rFFIWdcET/Vkyn1vsN8BYFwCDEF5P1fVVvYN7bFOsQLTMD3nvi35C1AGmtqUr/Wfv8Xaow==} + '@expo/osascript@2.1.2': + resolution: {integrity: sha512-/ugqDG+52uzUiEpggS9GPdp9g0U9EQrXcTdluHDmnlGmR2nV/F83L7c+HCUyPnf77QXwkr8gQk16vQTbxBQ5eA==} engines: {node: '>=12'} '@expo/package-manager@1.5.2': resolution: {integrity: sha512-IuA9XtGBilce0q8cyxtWINqbzMB1Fia0Yrug/O53HNuRSwQguV/iqjV68bsa4z8mYerePhcFgtvISWLAlNEbUA==} - '@expo/plist@0.1.1': - resolution: {integrity: sha512-90qbbblHYWR/z0R+HP2t7yRx0IG5AsEL0BqTY/vXcj4emhGhm39Dbwg4BO2t6qfdLljJISzUwEtWWTl1HNHAAg==} + '@expo/plist@0.1.3': + resolution: {integrity: sha512-GW/7hVlAylYg1tUrEASclw1MMk9FP4ZwyFAY/SUTJIhPDQHtfOlXREyWV3hhrHdX/K+pS73GNgdfT6E/e+kBbg==} '@expo/prebuild-config@6.8.1': resolution: {integrity: sha512-ptK9e0dcj1eYlAWV+fG+QkuAWcLAT1AmtEbj++tn7ZjEj8+LkXRM73LCOEGaF0Er8i8ZWNnaVsgGW4vjgP5ZsA==} @@ -1788,8 +1793,8 @@ packages: cpu: [x64] os: [win32] - '@noble/ciphers@0.5.2': - resolution: {integrity: sha512-GADtQmZCdgbnNp+daPLc3OY3ibEtGGDV/+CzeM3MFnhiQ7ELQKlsHWYq0YbYUXx4jU3/Y1erAxU6r+hwpewqmQ==} + '@noble/ciphers@0.5.3': + resolution: {integrity: sha512-B0+6IIHiqEs3BPMT0hcRmHvEj2QHOLu+uwt+tqDDeVd0oyVzh7BPrDcPjRnV1PV/5LaknXJJQvOuRGR0zQJz+w==} '@noble/hashes@1.4.0': resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} @@ -2188,8 +2193,8 @@ packages: '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@20.12.8': - resolution: {integrity: sha512-NU0rJLJnshZWdE/097cdCBbyW1h4hEg0xpovcoAQYHl8dnEyp/NAOiE45pvc+Bd1Dt+2r94v2eGFpQJ4R7g+2w==} + '@types/node@20.12.10': + resolution: {integrity: sha512-Eem5pH9pmWBHoGAT8Dr5fdc5rYA+4NAovdM4EktRPVAAiJhmWWfQrA0cFhAbOsQdSfIHjAud6YdkbL69+zSKjw==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -3451,8 +3456,8 @@ packages: effect@3.1.2: resolution: {integrity: sha512-XakSWck6w6ROqKyEys0tKE9K6Gx2p8W/09u2ZTEZZrneO5Z3QEdPhXzWTyC73kD5zUvfJinZLVIas8I1xoHaTg==} - electron-to-chromium@1.4.756: - resolution: {integrity: sha512-RJKZ9+vEBMeiPAvKNWyZjuYyUqMndcP1f335oHqn3BEQbs2NFtVrnK5+6Xg5wSM9TknNNpWghGDUCKGYF+xWXw==} + electron-to-chromium@1.4.758: + resolution: {integrity: sha512-/o9x6TCdrYZBMdGeTifAP3wlF/gVT+TtWJe3BSmtNh92Mw81U9hrYwW9OAGUh+sEOX/yz5e34sksqRruZbjYrw==} elkjs@0.9.3: resolution: {integrity: sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==} @@ -3476,8 +3481,8 @@ packages: end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - enhanced-resolve@5.16.0: - resolution: {integrity: sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==} + enhanced-resolve@5.16.1: + resolution: {integrity: sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==} engines: {node: '>=10.13.0'} enquirer@2.4.1: @@ -3840,8 +3845,8 @@ packages: peerDependencies: expo: '*' - expo@50.0.17: - resolution: {integrity: sha512-eD8Nh10BgVwecU7EVyogx7X314ajxVpJdFwkXhi341AD61S2WPX31NMHW82XGXas6dbDjdbgtaOMo5H/vylB7Q==} + expo@50.0.18: + resolution: {integrity: sha512-es0rw+OkQNoaNQcPzv8CUpi5Qd0zipvflr6PgiXLDnv5D58R0GeAQZ7KEgYOlH+HocYrQeVm/zlpOhPPb0CEww==} hasBin: true express@4.19.2: @@ -4252,8 +4257,8 @@ packages: hast-util-parse-selector@4.0.0: resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} - hast-util-raw@9.0.2: - resolution: {integrity: sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA==} + hast-util-raw@9.0.3: + resolution: {integrity: sha512-ICWvVOF2fq4+7CMmtCPD5CM4QKjPbHpPotE6+8tDooV0ZuyJVUzHsrNX+O5NaRbieTf0F7FfeBOMAwi6Td0+yQ==} hast-util-to-estree@2.3.3: resolution: {integrity: sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==} @@ -4647,11 +4652,6 @@ packages: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} - isows@1.0.4: - resolution: {integrity: sha512-hEzjY+x9u9hPmBom9IIAqdJCwNLax+xrPb51vEPpERoFlIxgmZcHzsT5jKG06nvInKOBGvReAVz80Umed5CczQ==} - peerDependencies: - ws: '*' - iterator.prototype@1.1.2: resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} @@ -6520,8 +6520,8 @@ packages: engines: {node: '>=10'} hasBin: true - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + semver@7.6.1: + resolution: {integrity: sha512-f/vbBsu+fOiYt+lmwZV0rVwJScl46HppnOA1ZvIuBWKOTlllpyJ3bfVax76/OrhCH38dyxoDIA8K7uB963IYgA==} engines: {node: '>=10'} hasBin: true @@ -7616,8 +7616,8 @@ packages: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} - zod@3.23.6: - resolution: {integrity: sha512-RTHJlZhsRbuA8Hmp/iNL7jnfc4nZishjsanDAfEY1QpDQZCahUp3xDzl+zfweE9BklxMUcgBgS1b7Lvie/ZVwA==} + zod@3.23.7: + resolution: {integrity: sha512-NBeIoqbtOiUMomACV/y+V3Qfs9+Okr18vR5c/5pHClPpufWOrsx8TENboDPe265lFdfewX2yBtNTLPvnmCxwog==} zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -8542,16 +8542,16 @@ snapshots: outdent: 0.5.0 prettier: 2.8.8 resolve-from: 5.0.0 - semver: 7.6.0 + semver: 7.6.1 - '@changesets/assemble-release-plan@6.0.0': + '@changesets/assemble-release-plan@6.0.0(patch_hash=efefrufcathrfopd2z6l62idva)': dependencies: '@babel/runtime': 7.24.5 '@changesets/errors': 0.2.0 '@changesets/get-dependents-graph': 2.0.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 - semver: 7.6.0 + semver: 7.6.1 '@changesets/changelog-git@0.2.0': dependencies: @@ -8561,7 +8561,7 @@ snapshots: dependencies: '@babel/runtime': 7.24.5 '@changesets/apply-release-plan': 7.0.0 - '@changesets/assemble-release-plan': 6.0.0 + '@changesets/assemble-release-plan': 6.0.0(patch_hash=efefrufcathrfopd2z6l62idva) '@changesets/changelog-git': 0.2.0 '@changesets/config': 3.0.0 '@changesets/errors': 0.2.0 @@ -8587,7 +8587,7 @@ snapshots: p-limit: 2.3.0 preferred-pm: 3.1.3 resolve-from: 5.0.0 - semver: 7.6.0 + semver: 7.6.1 spawndamnit: 2.0.0 term-size: 2.2.1 tty-table: 4.2.3 @@ -8612,12 +8612,12 @@ snapshots: '@manypkg/get-packages': 1.1.3 chalk: 2.4.2 fs-extra: 7.0.1 - semver: 7.6.0 + semver: 7.6.1 '@changesets/get-release-plan@4.0.0': dependencies: '@babel/runtime': 7.24.5 - '@changesets/assemble-release-plan': 6.0.0 + '@changesets/assemble-release-plan': 6.0.0(patch_hash=efefrufcathrfopd2z6l62idva) '@changesets/config': 3.0.0 '@changesets/pre': 2.0.0 '@changesets/read': 0.6.0 @@ -8680,18 +8680,15 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@effect/platform@0.52.3(@effect/schema@0.66.14(effect@3.1.2)(fast-check@3.18.0))(effect@3.1.2)(ws@8.17.0)': + '@effect/platform@0.53.1(@effect/schema@0.66.15(effect@3.1.2)(fast-check@3.18.0))(effect@3.1.2)': dependencies: - '@effect/schema': 0.66.14(effect@3.1.2)(fast-check@3.18.0) + '@effect/schema': 0.66.15(effect@3.1.2)(fast-check@3.18.0) effect: 3.1.2 find-my-way-ts: 0.1.2 - isows: 1.0.4(ws@8.17.0) multipasta: 0.2.1 path-browserify: 1.0.1 - transitivePeerDependencies: - - ws - '@effect/schema@0.66.14(effect@3.1.2)(fast-check@3.18.0)': + '@effect/schema@0.66.15(effect@3.1.2)(fast-check@3.18.0)': dependencies: effect: 3.1.2 fast-check: 3.18.0 @@ -8801,20 +8798,20 @@ snapshots: mv: 2.1.1 safe-json-stringify: 1.2.0 - '@expo/cli@0.17.10(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))(expo-modules-autolinking@1.10.3)': + '@expo/cli@0.17.11(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))(expo-modules-autolinking@1.10.3)': dependencies: '@babel/runtime': 7.24.5 '@expo/code-signing-certificates': 0.0.5 '@expo/config': 8.5.6 - '@expo/config-plugins': 7.9.1 + '@expo/config-plugins': 7.9.2 '@expo/devcert': 1.1.0 '@expo/env': 0.2.3 '@expo/image-utils': 0.4.2 - '@expo/json-file': 8.3.1 + '@expo/json-file': 8.3.3 '@expo/metro-config': 0.17.7(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))) - '@expo/osascript': 2.1.0 + '@expo/osascript': 2.1.2 '@expo/package-manager': 1.5.2 - '@expo/plist': 0.1.1 + '@expo/plist': 0.1.3 '@expo/prebuild-config': 6.8.1(expo-modules-autolinking@1.10.3) '@expo/rudder-sdk-node': 1.1.1 '@expo/spawn-async': 1.5.0 @@ -8865,7 +8862,7 @@ snapshots: resolve: 1.22.8 resolve-from: 5.0.0 resolve.exports: 2.0.2 - semver: 7.6.0 + semver: 7.6.1 send: 0.18.0 slugify: 1.6.6 source-map-support: 0.5.21 @@ -8897,8 +8894,8 @@ snapshots: dependencies: '@expo/config-types': 50.0.1 '@expo/fingerprint': 0.6.1 - '@expo/json-file': 8.3.1 - '@expo/plist': 0.1.1 + '@expo/json-file': 8.3.3 + '@expo/plist': 0.1.3 '@expo/sdk-runtime-versions': 1.0.0 '@react-native/normalize-color': 2.1.0 chalk: 4.1.2 @@ -8907,7 +8904,7 @@ snapshots: getenv: 1.0.0 glob: 7.1.6 resolve-from: 5.0.0 - semver: 7.6.0 + semver: 7.6.1 slash: 3.0.0 slugify: 1.6.6 xcode: 3.0.1 @@ -8915,12 +8912,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/config-plugins@7.9.1': + '@expo/config-plugins@7.9.2': dependencies: '@expo/config-types': 50.0.1 '@expo/fingerprint': 0.6.1 - '@expo/json-file': 8.3.1 - '@expo/plist': 0.1.1 + '@expo/json-file': 8.3.3 + '@expo/plist': 0.1.3 '@expo/sdk-runtime-versions': 1.0.0 '@react-native/normalize-color': 2.1.0 chalk: 4.1.2 @@ -8929,7 +8926,7 @@ snapshots: getenv: 1.0.0 glob: 7.1.6 resolve-from: 5.0.0 - semver: 7.6.0 + semver: 7.6.1 slash: 3.0.0 slugify: 1.6.6 xcode: 3.0.1 @@ -8942,9 +8939,9 @@ snapshots: '@expo/config@8.5.6': dependencies: '@babel/code-frame': 7.10.4 - '@expo/config-plugins': 7.9.1 + '@expo/config-plugins': 7.9.2 '@expo/config-types': 50.0.1 - '@expo/json-file': 8.3.1 + '@expo/json-file': 8.3.3 getenv: 1.0.0 glob: 7.1.6 require-from-string: 2.0.2 @@ -9010,7 +9007,7 @@ snapshots: transitivePeerDependencies: - encoding - '@expo/json-file@8.3.1': + '@expo/json-file@8.3.3': dependencies: '@babel/code-frame': 7.10.4 json5: 2.2.3 @@ -9024,7 +9021,7 @@ snapshots: '@babel/types': 7.24.5 '@expo/config': 8.5.6 '@expo/env': 0.2.3 - '@expo/json-file': 8.3.1 + '@expo/json-file': 8.3.3 '@expo/spawn-async': 1.7.2 '@react-native/babel-preset': 0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)) babel-preset-fbjs: 3.4.0(@babel/core@7.24.5) @@ -9042,14 +9039,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/osascript@2.1.0': + '@expo/osascript@2.1.2': dependencies: - '@expo/spawn-async': 1.5.0 + '@expo/spawn-async': 1.7.2 exec-async: 2.2.0 '@expo/package-manager@1.5.2': dependencies: - '@expo/json-file': 8.3.1 + '@expo/json-file': 8.3.3 '@expo/spawn-async': 1.7.2 ansi-regex: 5.0.1 chalk: 4.1.2 @@ -9062,7 +9059,7 @@ snapshots: split: 1.0.1 sudo-prompt: 9.1.1 - '@expo/plist@0.1.1': + '@expo/plist@0.1.3': dependencies: '@xmldom/xmldom': 0.7.13 base64-js: 1.5.1 @@ -9071,10 +9068,10 @@ snapshots: '@expo/prebuild-config@6.8.1(expo-modules-autolinking@1.10.3)': dependencies: '@expo/config': 8.5.6 - '@expo/config-plugins': 7.9.1 + '@expo/config-plugins': 7.9.2 '@expo/config-types': 50.0.1 '@expo/image-utils': 0.4.2 - '@expo/json-file': 8.3.1 + '@expo/json-file': 8.3.3 debug: 4.3.4 expo-modules-autolinking: 1.10.3 fs-extra: 9.1.0 @@ -9176,14 +9173,14 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.12.8 + '@types/node': 20.12.10 jest-mock: 29.7.0 '@jest/fake-timers@29.7.0': dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.12.8 + '@types/node': 20.12.10 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -9196,7 +9193,7 @@ snapshots: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.12.8 + '@types/node': 20.12.10 '@types/yargs': 15.0.19 chalk: 4.1.2 @@ -9205,7 +9202,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.12.8 + '@types/node': 20.12.10 '@types/yargs': 17.0.32 chalk: 4.1.2 @@ -9360,7 +9357,7 @@ snapshots: '@next/swc-win32-x64-msvc@14.2.3': optional: true - '@noble/ciphers@0.5.2': {} + '@noble/ciphers@0.5.3': {} '@noble/hashes@1.4.0': {} @@ -9379,7 +9376,7 @@ snapshots: '@npmcli/fs@1.1.1': dependencies: '@gar/promisify': 1.1.3 - semver: 7.6.0 + semver: 7.6.1 '@npmcli/move-file@1.1.2': dependencies: @@ -9451,7 +9448,7 @@ snapshots: hermes-profile-transformer: 0.0.6 node-stream-zip: 1.15.0 ora: 5.4.1 - semver: 7.6.0 + semver: 7.6.1 strip-ansi: 5.2.0 wcwidth: 1.0.1 yaml: 2.4.2 @@ -9517,7 +9514,7 @@ snapshots: node-fetch: 2.7.0 open: 6.4.0 ora: 5.4.1 - semver: 7.6.0 + semver: 7.6.1 shell-quote: 1.8.1 sudo-prompt: 9.2.1 transitivePeerDependencies: @@ -9546,7 +9543,7 @@ snapshots: fs-extra: 8.1.0 graceful-fs: 4.2.11 prompts: 2.4.2 - semver: 7.6.0 + semver: 7.6.1 transitivePeerDependencies: - bufferutil - encoding @@ -9824,20 +9821,20 @@ snapshots: '@types/better-sqlite3@7.6.10': dependencies: - '@types/node': 20.12.8 + '@types/node': 20.12.10 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 20.12.8 + '@types/node': 20.12.10 '@types/connect@3.4.38': dependencies: - '@types/node': 20.12.8 + '@types/node': 20.12.10 '@types/cors@2.8.17': dependencies: - '@types/node': 20.12.8 + '@types/node': 20.12.10 '@types/d3-scale-chromatic@3.0.3': {} @@ -9859,7 +9856,7 @@ snapshots: '@types/express-serve-static-core@4.19.0': dependencies: - '@types/node': 20.12.8 + '@types/node': 20.12.10 '@types/qs': 6.9.15 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -9917,7 +9914,7 @@ snapshots: '@types/node@12.20.55': {} - '@types/node@20.12.8': + '@types/node@20.12.10': dependencies: undici-types: 5.26.5 @@ -9943,12 +9940,12 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 20.12.8 + '@types/node': 20.12.10 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 20.12.8 + '@types/node': 20.12.10 '@types/send': 0.17.4 '@types/stack-utils@2.0.3': {} @@ -9982,7 +9979,7 @@ snapshots: graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - semver: 7.6.0 + semver: 7.6.1 ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 @@ -10049,7 +10046,7 @@ snapshots: globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 - semver: 7.6.0 + semver: 7.6.1 ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 @@ -10064,7 +10061,7 @@ snapshots: globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.4 - semver: 7.6.0 + semver: 7.6.1 ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 @@ -10080,7 +10077,7 @@ snapshots: '@typescript-eslint/types': 7.8.0 '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) eslint: 8.57.0 - semver: 7.6.0 + semver: 7.6.1 transitivePeerDependencies: - supports-color - typescript @@ -10596,7 +10593,7 @@ snapshots: browserslist@4.23.0: dependencies: caniuse-lite: 1.0.30001616 - electron-to-chromium: 1.4.756 + electron-to-chromium: 1.4.758 node-releases: 2.0.14 update-browserslist-db: 1.0.15(browserslist@4.23.0) @@ -10756,7 +10753,7 @@ snapshots: chrome-launcher@0.15.2: dependencies: - '@types/node': 20.12.8 + '@types/node': 20.12.10 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -10765,7 +10762,7 @@ snapshots: chromium-edge-launcher@1.0.0: dependencies: - '@types/node': 20.12.8 + '@types/node': 20.12.10 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -11369,7 +11366,7 @@ snapshots: effect@3.1.2: {} - electron-to-chromium@1.4.756: {} + electron-to-chromium@1.4.758: {} elkjs@0.9.3: {} @@ -11395,7 +11392,7 @@ snapshots: dependencies: once: 1.4.0 - enhanced-resolve@5.16.0: + enhanced-resolve@5.16.1: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 @@ -11594,7 +11591,7 @@ snapshots: eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): dependencies: debug: 4.3.4 - enhanced-resolve: 5.16.0 + enhanced-resolve: 5.16.1 eslint: 8.57.0 eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0) @@ -11672,7 +11669,7 @@ snapshots: eslint: 8.57.0 esquery: 1.5.0 is-builtin-module: 3.2.1 - semver: 7.6.0 + semver: 7.6.1 spdx-expression-parse: 4.0.0 transitivePeerDependencies: - supports-color @@ -11904,46 +11901,46 @@ snapshots: expand-template@2.0.3: {} - expo-asset@9.0.2(expo@50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))): + expo-asset@9.0.2(expo@50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))): dependencies: '@react-native/assets-registry': 0.73.1 blueimp-md5: 2.19.0 - expo-constants: 15.4.6(expo@50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))) - expo-file-system: 16.0.9(expo@50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))) + expo-constants: 15.4.6(expo@50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))) + expo-file-system: 16.0.9(expo@50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))) invariant: 2.2.4 md5-file: 3.2.3 transitivePeerDependencies: - expo - supports-color - expo-constants@15.4.6(expo@50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))): + expo-constants@15.4.6(expo@50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))): dependencies: '@expo/config': 8.5.6 - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))) + expo: 50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))) transitivePeerDependencies: - supports-color expo-eas-client@0.11.2: {} - expo-file-system@16.0.9(expo@50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))): + expo-file-system@16.0.9(expo@50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))): dependencies: - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))) + expo: 50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))) - expo-font@11.10.3(expo@50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))): + expo-font@11.10.3(expo@50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))): dependencies: - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))) + expo: 50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))) fontfaceobserver: 2.3.0 expo-json-utils@0.12.3: {} - expo-keep-awake@12.8.2(expo@50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))): + expo-keep-awake@12.8.2(expo@50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))): dependencies: - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))) + expo: 50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))) - expo-manifests@0.13.2(expo@50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))): + expo-manifests@0.13.2(expo@50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))): dependencies: '@expo/config': 8.5.6 - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))) + expo: 50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))) expo-json-utils: 0.12.3 transitivePeerDependencies: - supports-color @@ -11963,50 +11960,50 @@ snapshots: dependencies: invariant: 2.2.4 - expo-sqlite@13.4.0(expo@50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))): + expo-sqlite@13.4.0(expo@50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))): dependencies: '@expo/websql': 1.0.1 - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))) + expo: 50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))) expo-status-bar@1.11.1: {} expo-structured-headers@3.7.2: {} - expo-updates-interface@0.15.3(expo@50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))): + expo-updates-interface@0.15.3(expo@50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))): dependencies: - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))) + expo: 50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))) - expo-updates@0.24.12(expo@50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))): + expo-updates@0.24.12(expo@50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))): dependencies: '@expo/code-signing-certificates': 0.0.5 '@expo/config': 8.5.6 '@expo/config-plugins': 7.8.4 arg: 4.1.0 chalk: 4.1.2 - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))) + expo: 50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))) expo-eas-client: 0.11.2 - expo-manifests: 0.13.2(expo@50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))) + expo-manifests: 0.13.2(expo@50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))) expo-structured-headers: 3.7.2 - expo-updates-interface: 0.15.3(expo@50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))) + expo-updates-interface: 0.15.3(expo@50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))) fbemitter: 3.0.0 resolve-from: 5.0.0 transitivePeerDependencies: - encoding - supports-color - expo@50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))): + expo@50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))): dependencies: '@babel/runtime': 7.24.5 - '@expo/cli': 0.17.10(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))(expo-modules-autolinking@1.10.3) + '@expo/cli': 0.17.11(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))(expo-modules-autolinking@1.10.3) '@expo/config': 8.5.6 - '@expo/config-plugins': 7.9.1 + '@expo/config-plugins': 7.9.2 '@expo/metro-config': 0.17.7(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))) '@expo/vector-icons': 14.0.1 babel-preset-expo: 10.0.2(@babel/core@7.24.5) - expo-asset: 9.0.2(expo@50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))) - expo-file-system: 16.0.9(expo@50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))) - expo-font: 11.10.3(expo@50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))) - expo-keep-awake: 12.8.2(expo@50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))) + expo-asset: 9.0.2(expo@50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))) + expo-file-system: 16.0.9(expo@50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))) + expo-font: 11.10.3(expo@50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))) + expo-keep-awake: 12.8.2(expo@50.0.18(@babel/core@7.24.5)(@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5)))) expo-modules-autolinking: 1.10.3 expo-modules-core: 1.11.13 fbemitter: 3.0.0 @@ -12535,7 +12532,7 @@ snapshots: dependencies: '@types/hast': 3.0.4 - hast-util-raw@9.0.2: + hast-util-raw@9.0.3: dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.2 @@ -12912,10 +12909,6 @@ snapshots: isobject@3.0.1: {} - isows@1.0.4(ws@8.17.0): - dependencies: - ws: 8.17.0 - iterator.prototype@1.1.2: dependencies: define-properties: 1.2.1 @@ -12935,7 +12928,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.12.8 + '@types/node': 20.12.10 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -12956,13 +12949,13 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.12.8 + '@types/node': 20.12.10 jest-util: 29.7.0 jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.12.8 + '@types/node': 20.12.10 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -12979,7 +12972,7 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 20.12.8 + '@types/node': 20.12.10 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -14355,7 +14348,7 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) scroll-into-view-if-needed: 3.1.0 - zod: 3.23.6 + zod: 3.23.7 nextra@2.13.4(next@14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: @@ -14387,7 +14380,7 @@ snapshots: title: 3.5.3 unist-util-remove: 4.0.0 unist-util-visit: 5.0.0 - zod: 3.23.6 + zod: 3.23.7 transitivePeerDependencies: - supports-color @@ -14397,7 +14390,7 @@ snapshots: node-abi@3.62.0: dependencies: - semver: 7.6.0 + semver: 7.6.1 node-abort-controller@3.1.1: {} @@ -14779,13 +14772,13 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.4.38 - postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.8)(typescript@5.4.5)): + postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.10)(typescript@5.4.5)): dependencies: lilconfig: 3.1.1 yaml: 2.4.2 optionalDependencies: postcss: 8.4.38 - ts-node: 10.9.2(@types/node@20.12.8)(typescript@5.4.5) + ts-node: 10.9.2(@types/node@20.12.10)(typescript@5.4.5) postcss-nested@6.0.1(postcss@8.4.38): dependencies: @@ -15186,7 +15179,7 @@ snapshots: rehype-raw@7.0.0: dependencies: '@types/hast': 3.0.4 - hast-util-raw: 9.0.2 + hast-util-raw: 9.0.3 vfile: 6.0.1 remark-gfm@3.0.1: @@ -15397,9 +15390,7 @@ snapshots: dependencies: lru-cache: 6.0.0 - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 + semver@7.6.1: {} send@0.18.0: dependencies: @@ -15774,7 +15765,7 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - tailwindcss@3.4.3(ts-node@10.9.2(@types/node@20.12.8)(typescript@5.4.5)): + tailwindcss@3.4.3(ts-node@10.9.2(@types/node@20.12.10)(typescript@5.4.5)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -15793,7 +15784,7 @@ snapshots: postcss: 8.4.38 postcss-import: 15.1.0(postcss@8.4.38) postcss-js: 4.0.1(postcss@8.4.38) - postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.8)(typescript@5.4.5)) + postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@20.12.10)(typescript@5.4.5)) postcss-nested: 6.0.1(postcss@8.4.38) postcss-selector-parser: 6.0.16 resolve: 1.22.8 @@ -15935,14 +15926,14 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-node@10.9.2(@types/node@20.12.8)(typescript@5.4.5): + ts-node@10.9.2(@types/node@20.12.10)(typescript@5.4.5): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.12.8 + '@types/node': 20.12.10 acorn: 8.11.3 acorn-walk: 8.3.2 arg: 4.1.3 @@ -16310,13 +16301,13 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - vite-node@1.6.0(@types/node@20.12.8)(terser@5.31.0): + vite-node@1.6.0(@types/node@20.12.10)(terser@5.31.0): dependencies: cac: 6.7.14 debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.2.11(@types/node@20.12.8)(terser@5.31.0) + vite: 5.2.11(@types/node@20.12.10)(terser@5.31.0) transitivePeerDependencies: - '@types/node' - less @@ -16327,17 +16318,17 @@ snapshots: - supports-color - terser - vite@5.2.11(@types/node@20.12.8)(terser@5.31.0): + vite@5.2.11(@types/node@20.12.10)(terser@5.31.0): dependencies: esbuild: 0.20.2 postcss: 8.4.38 rollup: 4.17.2 optionalDependencies: - '@types/node': 20.12.8 + '@types/node': 20.12.10 fsevents: 2.3.3 terser: 5.31.0 - vitest@1.6.0(@types/node@20.12.8)(terser@5.31.0): + vitest@1.6.0(@types/node@20.12.10)(terser@5.31.0): dependencies: '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 @@ -16356,11 +16347,11 @@ snapshots: strip-literal: 2.1.0 tinybench: 2.8.0 tinypool: 0.8.4 - vite: 5.2.11(@types/node@20.12.8)(terser@5.31.0) - vite-node: 1.6.0(@types/node@20.12.8)(terser@5.31.0) + vite: 5.2.11(@types/node@20.12.10)(terser@5.31.0) + vite-node: 1.6.0(@types/node@20.12.10)(terser@5.31.0) why-is-node-running: 2.2.2 optionalDependencies: - '@types/node': 20.12.8 + '@types/node': 20.12.10 transitivePeerDependencies: - less - lightningcss @@ -16568,6 +16559,6 @@ snapshots: yocto-queue@1.0.0: {} - zod@3.23.6: {} + zod@3.23.7: {} zwitch@2.0.4: {}