expo-linking 7.1.4 → 7.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/android/build.gradle +2 -2
  3. package/build/createURL.js +3 -1
  4. package/build/createURL.js.map +1 -1
  5. package/expo-module.config.json +1 -7
  6. package/package.json +4 -4
  7. package/src/createURL.ts +3 -3
  8. package/local-maven-repo/host/exp/exponent/expo.modules.linking/7.1.4/expo.modules.linking-7.1.4-sources.jar +0 -0
  9. package/local-maven-repo/host/exp/exponent/expo.modules.linking/7.1.4/expo.modules.linking-7.1.4-sources.jar.md5 +0 -1
  10. package/local-maven-repo/host/exp/exponent/expo.modules.linking/7.1.4/expo.modules.linking-7.1.4-sources.jar.sha1 +0 -1
  11. package/local-maven-repo/host/exp/exponent/expo.modules.linking/7.1.4/expo.modules.linking-7.1.4-sources.jar.sha256 +0 -1
  12. package/local-maven-repo/host/exp/exponent/expo.modules.linking/7.1.4/expo.modules.linking-7.1.4-sources.jar.sha512 +0 -1
  13. package/local-maven-repo/host/exp/exponent/expo.modules.linking/7.1.4/expo.modules.linking-7.1.4.aar +0 -0
  14. package/local-maven-repo/host/exp/exponent/expo.modules.linking/7.1.4/expo.modules.linking-7.1.4.aar.md5 +0 -1
  15. package/local-maven-repo/host/exp/exponent/expo.modules.linking/7.1.4/expo.modules.linking-7.1.4.aar.sha1 +0 -1
  16. package/local-maven-repo/host/exp/exponent/expo.modules.linking/7.1.4/expo.modules.linking-7.1.4.aar.sha256 +0 -1
  17. package/local-maven-repo/host/exp/exponent/expo.modules.linking/7.1.4/expo.modules.linking-7.1.4.aar.sha512 +0 -1
  18. package/local-maven-repo/host/exp/exponent/expo.modules.linking/7.1.4/expo.modules.linking-7.1.4.module +0 -87
  19. package/local-maven-repo/host/exp/exponent/expo.modules.linking/7.1.4/expo.modules.linking-7.1.4.module.md5 +0 -1
  20. package/local-maven-repo/host/exp/exponent/expo.modules.linking/7.1.4/expo.modules.linking-7.1.4.module.sha1 +0 -1
  21. package/local-maven-repo/host/exp/exponent/expo.modules.linking/7.1.4/expo.modules.linking-7.1.4.module.sha256 +0 -1
  22. package/local-maven-repo/host/exp/exponent/expo.modules.linking/7.1.4/expo.modules.linking-7.1.4.module.sha512 +0 -1
  23. package/local-maven-repo/host/exp/exponent/expo.modules.linking/7.1.4/expo.modules.linking-7.1.4.pom +0 -35
  24. package/local-maven-repo/host/exp/exponent/expo.modules.linking/7.1.4/expo.modules.linking-7.1.4.pom.md5 +0 -1
  25. package/local-maven-repo/host/exp/exponent/expo.modules.linking/7.1.4/expo.modules.linking-7.1.4.pom.sha1 +0 -1
  26. package/local-maven-repo/host/exp/exponent/expo.modules.linking/7.1.4/expo.modules.linking-7.1.4.pom.sha256 +0 -1
  27. package/local-maven-repo/host/exp/exponent/expo.modules.linking/7.1.4/expo.modules.linking-7.1.4.pom.sha512 +0 -1
  28. package/local-maven-repo/host/exp/exponent/expo.modules.linking/maven-metadata.xml +0 -13
  29. package/local-maven-repo/host/exp/exponent/expo.modules.linking/maven-metadata.xml.md5 +0 -1
  30. package/local-maven-repo/host/exp/exponent/expo.modules.linking/maven-metadata.xml.sha1 +0 -1
  31. package/local-maven-repo/host/exp/exponent/expo.modules.linking/maven-metadata.xml.sha256 +0 -1
  32. package/local-maven-repo/host/exp/exponent/expo.modules.linking/maven-metadata.xml.sha512 +0 -1
package/CHANGELOG.md CHANGED
@@ -10,6 +10,12 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 7.1.5 — 2025-05-08
14
+
15
+ ### 🐛 Bug fixes
16
+
17
+ - Fixed `createURL` double-encodes URI parameters. ([#36704](https://github.com/expo/expo/pull/36704) by [@lukmccall](https://github.com/lukmccall))
18
+
13
19
  ## 7.1.4 — 2025-04-30
14
20
 
15
21
  _This version does not introduce any user-facing changes._
@@ -4,13 +4,13 @@ plugins {
4
4
  }
5
5
 
6
6
  group = 'host.exp.exponent'
7
- version = '7.1.4'
7
+ version = '7.1.5'
8
8
 
9
9
  android {
10
10
  namespace "expo.modules.linking"
11
11
  defaultConfig {
12
12
  versionCode 1
13
- versionName "7.1.4"
13
+ versionName "7.1.5"
14
14
  }
15
15
  lintOptions {
16
16
  abortOnError false
@@ -109,7 +109,9 @@ export function createURL(path, { scheme, queryParams = {}, isTripleSlashed = fa
109
109
  queryString = `?${queryString}`;
110
110
  }
111
111
  hostUri = ensureLeadingSlash(hostUri, !isTripleSlashed);
112
- return encodeURI(`${resolvedScheme}:${isTripleSlashed ? '/' : ''}/${hostUri}${path}${queryString}`);
112
+ // URLSearchParams.stringify already encodes query parameters, so we only need to encode the remaining part of the URL.
113
+ const encodedURI = encodeURI(`${resolvedScheme}:${isTripleSlashed ? '/' : ''}/${hostUri}${path}`);
114
+ return `${encodedURI}${queryString}`;
113
115
  }
114
116
  // @needsAudit
115
117
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"createURL.js","sourceRoot":"","sources":["../src/createURL.ts"],"names":[],"mappings":"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","sourcesContent":["import Constants from 'expo-constants';\n\nimport { CreateURLOptions, ParsedURL } from './Linking.types';\nimport { hasCustomScheme, resolveScheme } from './Schemes';\nimport { validateURL } from './validateURL';\n\nfunction getHostUri(): string | null {\n if (Constants.expoConfig?.hostUri) {\n return Constants.expoConfig.hostUri;\n } else if (!hasCustomScheme()) {\n // we're probably not using up-to-date xdl, so just fake it for now\n // we have to remove the /--/ on the end since this will be inserted again later\n return removeScheme(Constants.linkingUri).replace(/\\/--($|\\/.*$)/, '');\n } else {\n return null;\n }\n}\n\nfunction isExpoHosted(): boolean {\n const hostUri = getHostUri();\n return !!(\n hostUri &&\n (/^(.*\\.)?(expo\\.io|exp\\.host|exp\\.direct|expo\\.test|expo\\.dev)(:.*)?(\\/.*)?$/.test(hostUri) ||\n Constants.expoGoConfig?.developer)\n );\n}\n\nfunction removeScheme(url: string): string {\n return url.replace(/^[a-zA-Z0-9+.-]+:\\/\\//, '');\n}\n\nfunction removePort(url: string): string {\n return url.replace(/(?=([a-zA-Z0-9+.-]+:\\/\\/)?[^/]):\\d+/, '');\n}\n\nfunction removeLeadingSlash(url: string): string {\n return url.replace(/^\\//, '');\n}\n\nfunction removeTrailingSlashAndQueryString(url: string): string {\n return url.replace(/\\/?\\?.*$/, '');\n}\n\nfunction ensureLeadingSlash(input: string, shouldAppend: boolean): string {\n const hasSlash = input.startsWith('/');\n if (hasSlash && !shouldAppend) {\n return input.substring(1);\n } else if (!hasSlash && shouldAppend) {\n return `/${input}`;\n }\n return input;\n}\n\n// @needsAudit\n/**\n * Helper method for constructing a deep link into your app, given an optional path and set of query\n * parameters. Creates a URI scheme with two slashes by default.\n *\n * The scheme must be defined in the [app config](./../config/app) under `expo.scheme`\n * or `expo.{android,ios}.scheme`. Platform-specific schemes defined under `expo.{android,ios}.scheme`\n * take precedence over universal schemes defined under `expo.scheme`.\n *\n * # Examples\n * - Development and production builds: `<scheme>://path` - uses the optional `scheme` property if provided, and otherwise uses the first scheme defined by your app config\n * - Web (dev): `https://localhost:19006/path`\n * - Web (prod): `https://myapp.com/path`\n * - Expo Go (dev): `exp://128.0.0.1:8081/--/path`\n *\n * The behavior of this method in Expo Go for published updates is undefined and should not be relied upon.\n * The created URL in this case is neither stable nor predictable during the lifetime of the app.\n * If a stable URL is needed, for example in authorization callbacks, a build (or development build)\n * of your application should be used and the scheme provided.\n *\n * @param path Addition path components to append to the base URL.\n * @param namedParameters Additional options object.\n * @return A URL string which points to your app with the given deep link information.\n */\nexport function createURL(\n path: string,\n { scheme, queryParams = {}, isTripleSlashed = false }: CreateURLOptions = {}\n): string {\n const resolvedScheme = resolveScheme({ scheme });\n\n let hostUri = getHostUri() || '';\n\n if (hasCustomScheme() && isExpoHosted()) {\n hostUri = '';\n }\n\n if (path) {\n if (isExpoHosted() && hostUri) {\n path = `/--/${removeLeadingSlash(path)}`;\n }\n if (isTripleSlashed && !path.startsWith('/')) {\n path = `/${path}`;\n }\n } else {\n path = '';\n }\n\n // merge user-provided query params with any that were already in the hostUri\n // e.g. release-channel\n let queryString = '';\n const queryStringMatchResult = hostUri.match(/(.*)\\?(.+)/);\n if (queryStringMatchResult) {\n hostUri = queryStringMatchResult[1];\n queryString = queryStringMatchResult[2];\n let paramsFromHostUri = {};\n try {\n paramsFromHostUri = Object.fromEntries(\n // @ts-ignore: [Symbol.iterator] is indeed, available on every platform.\n new URLSearchParams(queryString)\n );\n } catch {}\n queryParams = {\n ...queryParams,\n ...paramsFromHostUri,\n };\n }\n queryString = new URLSearchParams(\n // For legacy purposes, we'll strip out the nullish values before creating the URL.\n Object.fromEntries(\n Object.entries(queryParams).filter(([, value]) => value != null) as [string, string][]\n )\n ).toString();\n if (queryString) {\n queryString = `?${queryString}`;\n }\n\n hostUri = ensureLeadingSlash(hostUri, !isTripleSlashed);\n\n return encodeURI(\n `${resolvedScheme}:${isTripleSlashed ? '/' : ''}/${hostUri}${path}${queryString}`\n );\n}\n\n// @needsAudit\n/**\n * Helper method for parsing out deep link information from a URL.\n * @param url A URL that points to the currently running experience (for example, an output of `Linking.createURL()`).\n * @return A `ParsedURL` object.\n */\nexport function parse(url: string): ParsedURL {\n validateURL(url);\n\n const queryParams: Record<string, string> = {};\n let path: string | null = null;\n let hostname: string | null = null;\n let scheme: string | null = null;\n\n try {\n const parsed = new URL(url);\n\n parsed.searchParams.forEach((value, key) => {\n queryParams[key] = decodeURIComponent(value);\n });\n path = parsed.pathname || null;\n hostname = parsed.hostname || null;\n scheme = parsed.protocol || null;\n } catch {\n path = url;\n }\n\n const hostUri = getHostUri() || '';\n const hostUriStripped = removePort(removeTrailingSlashAndQueryString(hostUri));\n\n if (scheme) {\n // Remove colon at end\n scheme = scheme.substring(0, scheme.length - 1);\n }\n\n if (path) {\n path = removeLeadingSlash(path);\n\n let expoPrefix: string | null = null;\n if (hostUriStripped) {\n const parts = hostUriStripped.split('/');\n expoPrefix = parts.slice(1).concat(['--/']).join('/');\n }\n\n if (isExpoHosted() && !hasCustomScheme() && expoPrefix && path.startsWith(expoPrefix)) {\n path = path.substring(expoPrefix.length);\n hostname = null;\n } else if (path.indexOf('+') > -1) {\n path = path.substring(path.indexOf('+') + 1);\n }\n }\n\n return {\n hostname,\n path,\n queryParams,\n scheme,\n };\n}\n"]}
1
+ {"version":3,"file":"createURL.js","sourceRoot":"","sources":["../src/createURL.ts"],"names":[],"mappings":"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","sourcesContent":["import Constants from 'expo-constants';\n\nimport { CreateURLOptions, ParsedURL } from './Linking.types';\nimport { hasCustomScheme, resolveScheme } from './Schemes';\nimport { validateURL } from './validateURL';\n\nfunction getHostUri(): string | null {\n if (Constants.expoConfig?.hostUri) {\n return Constants.expoConfig.hostUri;\n } else if (!hasCustomScheme()) {\n // we're probably not using up-to-date xdl, so just fake it for now\n // we have to remove the /--/ on the end since this will be inserted again later\n return removeScheme(Constants.linkingUri).replace(/\\/--($|\\/.*$)/, '');\n } else {\n return null;\n }\n}\n\nfunction isExpoHosted(): boolean {\n const hostUri = getHostUri();\n return !!(\n hostUri &&\n (/^(.*\\.)?(expo\\.io|exp\\.host|exp\\.direct|expo\\.test|expo\\.dev)(:.*)?(\\/.*)?$/.test(hostUri) ||\n Constants.expoGoConfig?.developer)\n );\n}\n\nfunction removeScheme(url: string): string {\n return url.replace(/^[a-zA-Z0-9+.-]+:\\/\\//, '');\n}\n\nfunction removePort(url: string): string {\n return url.replace(/(?=([a-zA-Z0-9+.-]+:\\/\\/)?[^/]):\\d+/, '');\n}\n\nfunction removeLeadingSlash(url: string): string {\n return url.replace(/^\\//, '');\n}\n\nfunction removeTrailingSlashAndQueryString(url: string): string {\n return url.replace(/\\/?\\?.*$/, '');\n}\n\nfunction ensureLeadingSlash(input: string, shouldAppend: boolean): string {\n const hasSlash = input.startsWith('/');\n if (hasSlash && !shouldAppend) {\n return input.substring(1);\n } else if (!hasSlash && shouldAppend) {\n return `/${input}`;\n }\n return input;\n}\n\n// @needsAudit\n/**\n * Helper method for constructing a deep link into your app, given an optional path and set of query\n * parameters. Creates a URI scheme with two slashes by default.\n *\n * The scheme must be defined in the [app config](./../config/app) under `expo.scheme`\n * or `expo.{android,ios}.scheme`. Platform-specific schemes defined under `expo.{android,ios}.scheme`\n * take precedence over universal schemes defined under `expo.scheme`.\n *\n * # Examples\n * - Development and production builds: `<scheme>://path` - uses the optional `scheme` property if provided, and otherwise uses the first scheme defined by your app config\n * - Web (dev): `https://localhost:19006/path`\n * - Web (prod): `https://myapp.com/path`\n * - Expo Go (dev): `exp://128.0.0.1:8081/--/path`\n *\n * The behavior of this method in Expo Go for published updates is undefined and should not be relied upon.\n * The created URL in this case is neither stable nor predictable during the lifetime of the app.\n * If a stable URL is needed, for example in authorization callbacks, a build (or development build)\n * of your application should be used and the scheme provided.\n *\n * @param path Addition path components to append to the base URL.\n * @param namedParameters Additional options object.\n * @return A URL string which points to your app with the given deep link information.\n */\nexport function createURL(\n path: string,\n { scheme, queryParams = {}, isTripleSlashed = false }: CreateURLOptions = {}\n): string {\n const resolvedScheme = resolveScheme({ scheme });\n\n let hostUri = getHostUri() || '';\n\n if (hasCustomScheme() && isExpoHosted()) {\n hostUri = '';\n }\n\n if (path) {\n if (isExpoHosted() && hostUri) {\n path = `/--/${removeLeadingSlash(path)}`;\n }\n if (isTripleSlashed && !path.startsWith('/')) {\n path = `/${path}`;\n }\n } else {\n path = '';\n }\n\n // merge user-provided query params with any that were already in the hostUri\n // e.g. release-channel\n let queryString = '';\n const queryStringMatchResult = hostUri.match(/(.*)\\?(.+)/);\n if (queryStringMatchResult) {\n hostUri = queryStringMatchResult[1];\n queryString = queryStringMatchResult[2];\n let paramsFromHostUri = {};\n try {\n paramsFromHostUri = Object.fromEntries(\n // @ts-ignore: [Symbol.iterator] is indeed, available on every platform.\n new URLSearchParams(queryString)\n );\n } catch {}\n queryParams = {\n ...queryParams,\n ...paramsFromHostUri,\n };\n }\n queryString = new URLSearchParams(\n // For legacy purposes, we'll strip out the nullish values before creating the URL.\n Object.fromEntries(\n Object.entries(queryParams).filter(([, value]) => value != null) as [string, string][]\n )\n ).toString();\n if (queryString) {\n queryString = `?${queryString}`;\n }\n\n hostUri = ensureLeadingSlash(hostUri, !isTripleSlashed);\n\n // URLSearchParams.stringify already encodes query parameters, so we only need to encode the remaining part of the URL.\n const encodedURI = encodeURI(`${resolvedScheme}:${isTripleSlashed ? '/' : ''}/${hostUri}${path}`);\n return `${encodedURI}${queryString}`;\n}\n\n// @needsAudit\n/**\n * Helper method for parsing out deep link information from a URL.\n * @param url A URL that points to the currently running experience (for example, an output of `Linking.createURL()`).\n * @return A `ParsedURL` object.\n */\nexport function parse(url: string): ParsedURL {\n validateURL(url);\n\n const queryParams: Record<string, string> = {};\n let path: string | null = null;\n let hostname: string | null = null;\n let scheme: string | null = null;\n\n try {\n const parsed = new URL(url);\n\n parsed.searchParams.forEach((value, key) => {\n queryParams[key] = decodeURIComponent(value);\n });\n path = parsed.pathname || null;\n hostname = parsed.hostname || null;\n scheme = parsed.protocol || null;\n } catch {\n path = url;\n }\n\n const hostUri = getHostUri() || '';\n const hostUriStripped = removePort(removeTrailingSlashAndQueryString(hostUri));\n\n if (scheme) {\n // Remove colon at end\n scheme = scheme.substring(0, scheme.length - 1);\n }\n\n if (path) {\n path = removeLeadingSlash(path);\n\n let expoPrefix: string | null = null;\n if (hostUriStripped) {\n const parts = hostUriStripped.split('/');\n expoPrefix = parts.slice(1).concat(['--/']).join('/');\n }\n\n if (isExpoHosted() && !hasCustomScheme() && expoPrefix && path.startsWith(expoPrefix)) {\n path = path.substring(expoPrefix.length);\n hostname = null;\n } else if (path.indexOf('+') > -1) {\n path = path.substring(path.indexOf('+') + 1);\n }\n }\n\n return {\n hostname,\n path,\n queryParams,\n scheme,\n };\n}\n"]}
@@ -5,12 +5,6 @@
5
5
  "appDelegateSubscribers": ["LinkingAppDelegateSubscriber"]
6
6
  },
7
7
  "android": {
8
- "modules": ["expo.modules.linking.ExpoLinkingModule"],
9
- "publication": {
10
- "groupId": "host.exp.exponent",
11
- "artifactId": "expo.modules.linking",
12
- "version": "7.1.4",
13
- "repository": "local-maven-repo"
14
- }
8
+ "modules": ["expo.modules.linking.ExpoLinkingModule"]
15
9
  }
16
10
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-linking",
3
- "version": "7.1.4",
3
+ "version": "7.1.5",
4
4
  "description": "Create and open deep links universally",
5
5
  "main": "build/Linking.js",
6
6
  "types": "build/Linking.d.ts",
@@ -38,11 +38,11 @@
38
38
  "license": "MIT",
39
39
  "homepage": "https://docs.expo.dev/versions/latest/sdk/linking",
40
40
  "dependencies": {
41
- "expo-constants": "~17.1.4",
41
+ "expo-constants": "~17.1.6",
42
42
  "invariant": "^2.2.4"
43
43
  },
44
44
  "devDependencies": {
45
- "expo-module-scripts": "^4.1.6"
45
+ "expo-module-scripts": "^4.1.7"
46
46
  },
47
47
  "peerDependencies": {
48
48
  "react": "*",
@@ -51,5 +51,5 @@
51
51
  "jest": {
52
52
  "preset": "expo-module-scripts"
53
53
  },
54
- "gitHead": "84355076bc31a356aa3d23257f387f221885f53d"
54
+ "gitHead": "49c9d53cf0a9fc8179d1c8f5268beadd141f70ca"
55
55
  }
package/src/createURL.ts CHANGED
@@ -129,9 +129,9 @@ export function createURL(
129
129
 
130
130
  hostUri = ensureLeadingSlash(hostUri, !isTripleSlashed);
131
131
 
132
- return encodeURI(
133
- `${resolvedScheme}:${isTripleSlashed ? '/' : ''}/${hostUri}${path}${queryString}`
134
- );
132
+ // URLSearchParams.stringify already encodes query parameters, so we only need to encode the remaining part of the URL.
133
+ const encodedURI = encodeURI(`${resolvedScheme}:${isTripleSlashed ? '/' : ''}/${hostUri}${path}`);
134
+ return `${encodedURI}${queryString}`;
135
135
  }
136
136
 
137
137
  // @needsAudit
@@ -1 +0,0 @@
1
- 59d45e2a6cf5b9f1d58570a3a23fbfbcf5eeb66463e7510e727155d94c38cad2
@@ -1 +0,0 @@
1
- d8abe8805c570aa18ee34018f0836e26d825ce9e008a7af2aa9ecc2ffd3f32958037def397960dbdcfb09bfba5938052603637dedc16a6d5d19e92efc0926f47
@@ -1 +0,0 @@
1
- d41bbee32d65b5d2bdbdee1a82f0308ee85ba1ae
@@ -1 +0,0 @@
1
- 101a6b628581a2c1d9e1ff346079ef5804de4fc19d626af821e9d8da6a6be6b1
@@ -1 +0,0 @@
1
- e1c7eecf45de1d87b5badfa833e3a1dba3a25f5e392beed4ac002a940ff17ea0ca22a35622d0e435f2cd0f5922771a51718e2c99d6a4b02f0b3aebfa35e381e4
@@ -1,87 +0,0 @@
1
- {
2
- "formatVersion": "1.1",
3
- "component": {
4
- "group": "host.exp.exponent",
5
- "module": "expo.modules.linking",
6
- "version": "7.1.4",
7
- "attributes": {
8
- "org.gradle.status": "release"
9
- }
10
- },
11
- "createdBy": {
12
- "gradle": {
13
- "version": "8.13"
14
- }
15
- },
16
- "variants": [
17
- {
18
- "name": "releaseVariantReleaseApiPublication",
19
- "attributes": {
20
- "org.gradle.category": "library",
21
- "org.gradle.dependency.bundling": "external",
22
- "org.gradle.libraryelements": "aar",
23
- "org.gradle.usage": "java-api"
24
- },
25
- "files": [
26
- {
27
- "name": "expo.modules.linking-7.1.4.aar",
28
- "url": "expo.modules.linking-7.1.4.aar",
29
- "size": 11860,
30
- "sha512": "e1c7eecf45de1d87b5badfa833e3a1dba3a25f5e392beed4ac002a940ff17ea0ca22a35622d0e435f2cd0f5922771a51718e2c99d6a4b02f0b3aebfa35e381e4",
31
- "sha256": "101a6b628581a2c1d9e1ff346079ef5804de4fc19d626af821e9d8da6a6be6b1",
32
- "sha1": "d41bbee32d65b5d2bdbdee1a82f0308ee85ba1ae",
33
- "md5": "ff00f7d52f9505d9c5ee32d9285b4f29"
34
- }
35
- ]
36
- },
37
- {
38
- "name": "releaseVariantReleaseRuntimePublication",
39
- "attributes": {
40
- "org.gradle.category": "library",
41
- "org.gradle.dependency.bundling": "external",
42
- "org.gradle.libraryelements": "aar",
43
- "org.gradle.usage": "java-runtime"
44
- },
45
- "dependencies": [
46
- {
47
- "group": "org.jetbrains.kotlin",
48
- "module": "kotlin-stdlib-jdk7",
49
- "version": {
50
- "requires": "2.0.21"
51
- }
52
- }
53
- ],
54
- "files": [
55
- {
56
- "name": "expo.modules.linking-7.1.4.aar",
57
- "url": "expo.modules.linking-7.1.4.aar",
58
- "size": 11860,
59
- "sha512": "e1c7eecf45de1d87b5badfa833e3a1dba3a25f5e392beed4ac002a940ff17ea0ca22a35622d0e435f2cd0f5922771a51718e2c99d6a4b02f0b3aebfa35e381e4",
60
- "sha256": "101a6b628581a2c1d9e1ff346079ef5804de4fc19d626af821e9d8da6a6be6b1",
61
- "sha1": "d41bbee32d65b5d2bdbdee1a82f0308ee85ba1ae",
62
- "md5": "ff00f7d52f9505d9c5ee32d9285b4f29"
63
- }
64
- ]
65
- },
66
- {
67
- "name": "releaseVariantReleaseSourcePublication",
68
- "attributes": {
69
- "org.gradle.category": "documentation",
70
- "org.gradle.dependency.bundling": "external",
71
- "org.gradle.docstype": "sources",
72
- "org.gradle.usage": "java-runtime"
73
- },
74
- "files": [
75
- {
76
- "name": "expo.modules.linking-7.1.4-sources.jar",
77
- "url": "expo.modules.linking-7.1.4-sources.jar",
78
- "size": 2384,
79
- "sha512": "d8abe8805c570aa18ee34018f0836e26d825ce9e008a7af2aa9ecc2ffd3f32958037def397960dbdcfb09bfba5938052603637dedc16a6d5d19e92efc0926f47",
80
- "sha256": "59d45e2a6cf5b9f1d58570a3a23fbfbcf5eeb66463e7510e727155d94c38cad2",
81
- "sha1": "6d333ab0bbfd515cec43299271011985dc02ff1d",
82
- "md5": "ed5b68ea8ace3e98aaaaa1bac77179fb"
83
- }
84
- ]
85
- }
86
- ]
87
- }
@@ -1 +0,0 @@
1
- fbe96f3cbb88e5d11441219b47bbda0b37dbd347d7b2ae32b8e8593e547b2526
@@ -1 +0,0 @@
1
- e4222ee1b9a1ba7ecb426260c7f3dd1666aa01e19c7f22ab223791a20db3c38fd226e492aa617c610b781f5cc5fdd00febe4904e3ff00cbc9ffd8a02ca982632
@@ -1,35 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
3
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
4
- <!-- This module was also published with a richer model, Gradle metadata, -->
5
- <!-- which should be used instead. Do not delete the following line which -->
6
- <!-- is to indicate to Gradle or any Gradle module metadata file consumer -->
7
- <!-- that they should prefer consuming it instead. -->
8
- <!-- do_not_remove: published-with-gradle-metadata -->
9
- <modelVersion>4.0.0</modelVersion>
10
- <groupId>host.exp.exponent</groupId>
11
- <artifactId>expo.modules.linking</artifactId>
12
- <version>7.1.4</version>
13
- <packaging>aar</packaging>
14
- <name>expo.modules.linking</name>
15
- <url>https://github.com/expo/expo</url>
16
- <licenses>
17
- <license>
18
- <name>MIT License</name>
19
- <url>https://github.com/expo/expo/blob/main/LICENSE</url>
20
- </license>
21
- </licenses>
22
- <scm>
23
- <connection>https://github.com/expo/expo.git</connection>
24
- <developerConnection>https://github.com/expo/expo.git</developerConnection>
25
- <url>https://github.com/expo/expo</url>
26
- </scm>
27
- <dependencies>
28
- <dependency>
29
- <groupId>org.jetbrains.kotlin</groupId>
30
- <artifactId>kotlin-stdlib-jdk7</artifactId>
31
- <version>2.0.21</version>
32
- <scope>runtime</scope>
33
- </dependency>
34
- </dependencies>
35
- </project>
@@ -1 +0,0 @@
1
- edcf60c95afaf529bf6be2e75102674563b20861
@@ -1 +0,0 @@
1
- a5b0e4feb6c86c4223d1d60166e48420fe95dd07808c86662f33cbea6a5b4dab
@@ -1 +0,0 @@
1
- a61e740e62d0fa526e7612fb132217970f994a4511941e00c4dc73f3e86f503421d2b533e2779e0c3cbe5c02d7ec7d45bd2727ba0cd69ee51557bbb57b94d81a
@@ -1,13 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <metadata>
3
- <groupId>host.exp.exponent</groupId>
4
- <artifactId>expo.modules.linking</artifactId>
5
- <versioning>
6
- <latest>7.1.4</latest>
7
- <release>7.1.4</release>
8
- <versions>
9
- <version>7.1.4</version>
10
- </versions>
11
- <lastUpdated>20250430211454</lastUpdated>
12
- </versioning>
13
- </metadata>
@@ -1 +0,0 @@
1
- b8904e42dae756ebae57e698263c7673
@@ -1 +0,0 @@
1
- c663006f321e291cf814171297cd9bccdd897464
@@ -1 +0,0 @@
1
- efa2abaffe2eff5471f09090525144637cfb881de1be183c6762e4ce5a6dcecd
@@ -1 +0,0 @@
1
- ac362d5d49c3293861df60c94f7c62e7c9db37d89ab380582709deadcc431e3ab5412aeb60867af62d422fb3871a809bdbcd5c3bdd50eb996466fbde3f85331b