expo-crypto 9.1.0 → 10.0.2

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.
package/CHANGELOG.md CHANGED
@@ -8,6 +8,42 @@
8
8
 
9
9
  ### 🐛 Bug fixes
10
10
 
11
+ ### 💡 Others
12
+
13
+ ## 10.0.2 — 2021-10-15
14
+
15
+ _This version does not introduce any user-facing changes._
16
+
17
+ ## 10.0.1 — 2021-10-01
18
+
19
+ _This version does not introduce any user-facing changes._
20
+
21
+ ## 10.0.0 — 2021-09-28
22
+
23
+ ### 🛠 Breaking changes
24
+
25
+ - Dropped support for iOS 11.0 ([#14383](https://github.com/expo/expo/pull/14383) by [@cruzach](https://github.com/cruzach))
26
+
27
+ ### 🐛 Bug fixes
28
+
29
+ - Fix building errors from use_frameworks! in Podfile. ([#14523](https://github.com/expo/expo/pull/14523) by [@kudo](https://github.com/kudo))
30
+
31
+ ### 💡 Others
32
+
33
+ - Rewrite Android code to Kotlin. ([#14425](https://github.com/expo/expo/pull/14425) by [@kkafar](https://github.com/kkafar))
34
+ - Add tests. ([#13592](https://github.com/expo/expo/pull/13592) by [@mstach60161](https://github.com/mstach60161))
35
+ - Migrated from `@unimodules/core` to `expo-modules-core`. ([#13757](https://github.com/expo/expo/pull/13757) by [@tsapeta](https://github.com/tsapeta))
36
+
37
+ ## 9.2.0 — 2021-06-16
38
+
39
+ ### 🐛 Bug fixes
40
+
41
+ - Enable kotlin in all modules. ([#12716](https://github.com/expo/expo/pull/12716) by [@wschurman](https://github.com/wschurman))
42
+
43
+ ### 💡 Others
44
+
45
+ - Build Android code using Java 8 to fix Android instrumented test build error. ([#12939](https://github.com/expo/expo/pull/12939) by [@kudo](https://github.com/kudo))
46
+
11
47
  ## 9.1.0 — 2021-03-10
12
48
 
13
49
  ### 🎉 New features
@@ -1,12 +1,23 @@
1
1
  apply plugin: 'com.android.library'
2
+ apply plugin: 'kotlin-android'
2
3
  apply plugin: 'maven'
3
4
 
4
5
  group = 'host.exp.exponent'
5
- version = '9.1.0'
6
+ version = '10.0.2'
6
7
 
7
- // Simple helper that allows the root project to override versions declared by this library.
8
- def safeExtGet(prop, fallback) {
9
- rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
8
+ buildscript {
9
+ // Simple helper that allows the root project to override versions declared by this library.
10
+ ext.safeExtGet = { prop, fallback ->
11
+ rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
12
+ }
13
+
14
+ repositories {
15
+ mavenCentral()
16
+ }
17
+
18
+ dependencies {
19
+ classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${safeExtGet('kotlinVersion', '1.4.21')}")
20
+ }
10
21
  }
11
22
 
12
23
  // Upload android library to maven with javadoc and android sources
@@ -37,25 +48,30 @@ uploadArchives {
37
48
  android {
38
49
  compileSdkVersion safeExtGet("compileSdkVersion", 30)
39
50
 
51
+ compileOptions {
52
+ sourceCompatibility JavaVersion.VERSION_1_8
53
+ targetCompatibility JavaVersion.VERSION_1_8
54
+ }
55
+
40
56
  defaultConfig {
41
57
  minSdkVersion safeExtGet("minSdkVersion", 21)
42
58
  targetSdkVersion safeExtGet("targetSdkVersion", 30)
43
59
  versionCode 25
44
- versionName "9.1.0"
60
+ versionName "10.0.2"
45
61
  }
46
62
  lintOptions {
47
63
  abortOnError false
48
64
  }
49
65
  }
50
66
 
51
- if (new File(rootProject.projectDir.parentFile, 'package.json').exists()) {
52
- apply from: project(":unimodules-core").file("../unimodules-core.gradle")
53
- } else {
54
- throw new GradleException(
55
- "'unimodules-core.gradle' was not found in the usual React Native dependency location. " +
56
- "This package can only be used in such projects. Are you sure you've installed the dependencies properly?")
57
- }
58
-
59
67
  dependencies {
60
- unimodule "unimodules-core"
68
+ implementation project(':expo-modules-core')
69
+
70
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${safeExtGet('kotlinVersion', '1.4.21')}"
71
+
72
+ if (project.findProject(':unimodules-test-core')) {
73
+ testImplementation project(':unimodules-test-core')
74
+ }
75
+ testImplementation 'junit:junit:4.12'
76
+ testImplementation "org.robolectric:robolectric:4.3.1"
61
77
  }
@@ -0,0 +1,46 @@
1
+ package expo.modules.crypto
2
+
3
+ import android.content.Context
4
+ import android.util.Base64
5
+
6
+ import expo.modules.core.ExportedModule
7
+ import expo.modules.core.Promise
8
+ import expo.modules.core.interfaces.ExpoMethod
9
+
10
+ import java.security.MessageDigest
11
+ import java.security.NoSuchAlgorithmException
12
+
13
+ class CryptoModule(context: Context) : ExportedModule(context) {
14
+ override fun getName() = "ExpoCrypto"
15
+
16
+ @ExpoMethod
17
+ fun digestStringAsync(algorithm: String, data: String, options: Map<String, Any?>, promise: Promise) {
18
+ val encoding = options["encoding"] as String?
19
+
20
+ val messageDigest = try {
21
+ MessageDigest.getInstance(algorithm).apply { update(data.toByteArray()) }
22
+ } catch (e: NoSuchAlgorithmException) {
23
+ promise.reject("ERR_CRYPTO_DIGEST", e)
24
+ return
25
+ }
26
+
27
+ val digest: ByteArray = messageDigest.digest()
28
+ when (encoding) {
29
+ "base64" -> {
30
+ val output = Base64.encodeToString(digest, Base64.NO_WRAP)
31
+ promise.resolve(output)
32
+ }
33
+ "hex" -> {
34
+ val output = digest.joinToString(separator = "") { byte ->
35
+ ((byte.toInt() and 0xff) + 0x100)
36
+ .toString(radix = 16)
37
+ .substring(startIndex = 1)
38
+ }
39
+ promise.resolve(output)
40
+ }
41
+ else -> {
42
+ promise.reject("ERR_CRYPTO_DIGEST", "Invalid encoding type provided.")
43
+ }
44
+ }
45
+ }
46
+ }
@@ -0,0 +1,9 @@
1
+ package expo.modules.crypto
2
+
3
+ import android.content.Context
4
+ import expo.modules.core.BasePackage
5
+ import expo.modules.core.ExportedModule
6
+
7
+ class CryptoPackage : BasePackage() {
8
+ override fun createExportedModules(context: Context): List<ExportedModule> = listOf(CryptoModule(context))
9
+ }
package/build/Crypto.js CHANGED
@@ -1,11 +1,11 @@
1
- import { UnavailabilityError } from '@unimodules/core';
1
+ import { UnavailabilityError } from 'expo-modules-core';
2
2
  import { CryptoDigestAlgorithm, CryptoEncoding } from './Crypto.types';
3
3
  import ExpoCrypto from './ExpoCrypto';
4
4
  export * from './Crypto.types';
5
5
  class CryptoError extends TypeError {
6
+ code = 'ERR_CRYPTO';
6
7
  constructor(message) {
7
8
  super(`expo-crypto: ${message}`);
8
- this.code = 'ERR_CRYPTO';
9
9
  }
10
10
  }
11
11
  function assertAlgorithm(algorithm) {
@@ -1 +1 @@
1
- {"version":3,"file":"Crypto.js","sourceRoot":"","sources":["../src/Crypto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAA+B,MAAM,gBAAgB,CAAC;AACpG,OAAO,UAAU,MAAM,cAAc,CAAC;AAEtC,cAAc,gBAAgB,CAAC;AAE/B,MAAM,WAAY,SAAQ,SAAS;IAGjC,YAAY,OAAe;QACzB,KAAK,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC;QAHnC,SAAI,GAAG,YAAY,CAAC;IAIpB,CAAC;CACF;AAED,SAAS,eAAe,CAAC,SAAgC;IACvD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;QAC7D,MAAM,IAAI,WAAW,CACnB,sEAAsE,MAAM,CAAC,IAAI,CAC/E,qBAAqB,CACtB,CAAC,IAAI,CAAC,mCAAmC,CAAC,EAAE,CAC9C,CAAC;KACH;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC5B,MAAM,IAAI,WAAW,CAAC,2CAA2C,CAAC,CAAC;KACpE;AACH,CAAC;AAED,SAAS,cAAc,CAAC,QAAwB;IAC9C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QACrD,MAAM,IAAI,WAAW,CACnB,8DAA8D,MAAM,CAAC,IAAI,CACvE,cAAc,CACf,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAC9B,CAAC;KACH;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,SAAgC,EAChC,IAAY,EACZ,UAA+B,EAAE,QAAQ,EAAE,cAAc,CAAC,GAAG,EAAE;IAE/D,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE;QACjC,MAAM,IAAI,mBAAmB,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;KACnE;IAED,eAAe,CAAC,SAAS,CAAC,CAAC;IAC3B,UAAU,CAAC,IAAI,CAAC,CAAC;IACjB,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEjC,OAAO,MAAM,UAAU,CAAC,iBAAiB,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC","sourcesContent":["import { UnavailabilityError } from '@unimodules/core';\n\nimport { CryptoDigestAlgorithm, CryptoEncoding, CryptoDigestOptions, Digest } from './Crypto.types';\nimport ExpoCrypto from './ExpoCrypto';\n\nexport * from './Crypto.types';\n\nclass CryptoError extends TypeError {\n code = 'ERR_CRYPTO';\n\n constructor(message: string) {\n super(`expo-crypto: ${message}`);\n }\n}\n\nfunction assertAlgorithm(algorithm: CryptoDigestAlgorithm): void {\n if (!Object.values(CryptoDigestAlgorithm).includes(algorithm)) {\n throw new CryptoError(\n `Invalid algorithm provided. Expected one of: CryptoDigestAlgorithm.${Object.keys(\n CryptoDigestAlgorithm\n ).join(', AlgCryptoDigestAlgorithmorithm.')}`\n );\n }\n}\n\nfunction assertData(data: string): void {\n if (typeof data !== 'string') {\n throw new CryptoError(`Invalid data provided. Expected a string.`);\n }\n}\n\nfunction assertEncoding(encoding: CryptoEncoding): void {\n if (!Object.values(CryptoEncoding).includes(encoding)) {\n throw new CryptoError(\n `Invalid encoding provided. Expected one of: CryptoEncoding.${Object.keys(\n CryptoEncoding\n ).join(', CryptoEncoding.')}`\n );\n }\n}\n\nexport async function digestStringAsync(\n algorithm: CryptoDigestAlgorithm,\n data: string,\n options: CryptoDigestOptions = { encoding: CryptoEncoding.HEX }\n): Promise<Digest> {\n if (!ExpoCrypto.digestStringAsync) {\n throw new UnavailabilityError('expo-crypto', 'digestStringAsync');\n }\n\n assertAlgorithm(algorithm);\n assertData(data);\n assertEncoding(options.encoding);\n\n return await ExpoCrypto.digestStringAsync(algorithm, data, options);\n}\n"]}
1
+ {"version":3,"file":"Crypto.js","sourceRoot":"","sources":["../src/Crypto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAA+B,MAAM,gBAAgB,CAAC;AACpG,OAAO,UAAU,MAAM,cAAc,CAAC;AAEtC,cAAc,gBAAgB,CAAC;AAE/B,MAAM,WAAY,SAAQ,SAAS;IACjC,IAAI,GAAG,YAAY,CAAC;IAEpB,YAAY,OAAe;QACzB,KAAK,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC;IACnC,CAAC;CACF;AAED,SAAS,eAAe,CAAC,SAAgC;IACvD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;QAC7D,MAAM,IAAI,WAAW,CACnB,sEAAsE,MAAM,CAAC,IAAI,CAC/E,qBAAqB,CACtB,CAAC,IAAI,CAAC,mCAAmC,CAAC,EAAE,CAC9C,CAAC;KACH;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC5B,MAAM,IAAI,WAAW,CAAC,2CAA2C,CAAC,CAAC;KACpE;AACH,CAAC;AAED,SAAS,cAAc,CAAC,QAAwB;IAC9C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QACrD,MAAM,IAAI,WAAW,CACnB,8DAA8D,MAAM,CAAC,IAAI,CACvE,cAAc,CACf,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAC9B,CAAC;KACH;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,SAAgC,EAChC,IAAY,EACZ,UAA+B,EAAE,QAAQ,EAAE,cAAc,CAAC,GAAG,EAAE;IAE/D,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE;QACjC,MAAM,IAAI,mBAAmB,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;KACnE;IAED,eAAe,CAAC,SAAS,CAAC,CAAC;IAC3B,UAAU,CAAC,IAAI,CAAC,CAAC;IACjB,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEjC,OAAO,MAAM,UAAU,CAAC,iBAAiB,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC","sourcesContent":["import { UnavailabilityError } from 'expo-modules-core';\n\nimport { CryptoDigestAlgorithm, CryptoEncoding, CryptoDigestOptions, Digest } from './Crypto.types';\nimport ExpoCrypto from './ExpoCrypto';\n\nexport * from './Crypto.types';\n\nclass CryptoError extends TypeError {\n code = 'ERR_CRYPTO';\n\n constructor(message: string) {\n super(`expo-crypto: ${message}`);\n }\n}\n\nfunction assertAlgorithm(algorithm: CryptoDigestAlgorithm): void {\n if (!Object.values(CryptoDigestAlgorithm).includes(algorithm)) {\n throw new CryptoError(\n `Invalid algorithm provided. Expected one of: CryptoDigestAlgorithm.${Object.keys(\n CryptoDigestAlgorithm\n ).join(', AlgCryptoDigestAlgorithmorithm.')}`\n );\n }\n}\n\nfunction assertData(data: string): void {\n if (typeof data !== 'string') {\n throw new CryptoError(`Invalid data provided. Expected a string.`);\n }\n}\n\nfunction assertEncoding(encoding: CryptoEncoding): void {\n if (!Object.values(CryptoEncoding).includes(encoding)) {\n throw new CryptoError(\n `Invalid encoding provided. Expected one of: CryptoEncoding.${Object.keys(\n CryptoEncoding\n ).join(', CryptoEncoding.')}`\n );\n }\n}\n\nexport async function digestStringAsync(\n algorithm: CryptoDigestAlgorithm,\n data: string,\n options: CryptoDigestOptions = { encoding: CryptoEncoding.HEX }\n): Promise<Digest> {\n if (!ExpoCrypto.digestStringAsync) {\n throw new UnavailabilityError('expo-crypto', 'digestStringAsync');\n }\n\n assertAlgorithm(algorithm);\n assertData(data);\n assertEncoding(options.encoding);\n\n return await ExpoCrypto.digestStringAsync(algorithm, data, options);\n}\n"]}
@@ -1,2 +1,2 @@
1
- declare const _default: import("@unimodules/core").ProxyNativeModule;
1
+ declare const _default: import("expo-modules-core").ProxyNativeModule;
2
2
  export default _default;
@@ -1,3 +1,3 @@
1
- import { NativeModulesProxy } from '@unimodules/core';
1
+ import { NativeModulesProxy } from 'expo-modules-core';
2
2
  export default NativeModulesProxy.ExpoCrypto;
3
3
  //# sourceMappingURL=ExpoCrypto.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExpoCrypto.js","sourceRoot":"","sources":["../src/ExpoCrypto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,eAAe,kBAAkB,CAAC,UAAU,CAAC","sourcesContent":["import { NativeModulesProxy } from '@unimodules/core';\nexport default NativeModulesProxy.ExpoCrypto;\n"]}
1
+ {"version":3,"file":"ExpoCrypto.js","sourceRoot":"","sources":["../src/ExpoCrypto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,eAAe,kBAAkB,CAAC,UAAU,CAAC","sourcesContent":["import { NativeModulesProxy } from 'expo-modules-core';\nexport default NativeModulesProxy.ExpoCrypto;\n"]}
@@ -1,4 +1,4 @@
1
- import { CodedError } from '@unimodules/core';
1
+ import { CodedError } from 'expo-modules-core';
2
2
  import { CryptoEncoding } from './Crypto.types';
3
3
  export default {
4
4
  get name() {
@@ -22,7 +22,7 @@ export default {
22
22
  };
23
23
  function hexString(buffer) {
24
24
  const byteArray = new Uint8Array(buffer);
25
- const hexCodes = [...byteArray].map(value => {
25
+ const hexCodes = [...byteArray].map((value) => {
26
26
  const hexCode = value.toString(16);
27
27
  const paddedHexCode = hexCode.padStart(2, '0');
28
28
  return paddedHexCode;
@@ -1 +1 @@
1
- {"version":3,"file":"ExpoCrypto.web.js","sourceRoot":"","sources":["../src/ExpoCrypto.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAyB,cAAc,EAAuB,MAAM,gBAAgB,CAAC;AAE5F,eAAe;IACb,IAAI,IAAI;QACN,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,KAAK,CAAC,iBAAiB,CACrB,SAAgC,EAChC,IAAY,EACZ,OAA4B;QAE5B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAClB,MAAM,IAAI,UAAU,CAClB,wBAAwB,EACxB,sEAAsE,CACvE,CAAC;SACH;QACD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,QAAQ,KAAK,cAAc,CAAC,GAAG,EAAE;YAC3C,OAAO,SAAS,CAAC,UAAU,CAAC,CAAC;SAC9B;aAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,cAAc,CAAC,MAAM,EAAE;YACrD,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SACjE;QACD,MAAM,IAAI,UAAU,CAAC,mBAAmB,EAAE,iCAAiC,CAAC,CAAC;IAC/E,CAAC;CACF,CAAC;AAEF,SAAS,SAAS,CAAC,MAAmB;IACpC,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IAEzC,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACnC,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/C,OAAO,aAAa,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3B,CAAC","sourcesContent":["import { CodedError } from '@unimodules/core';\n\nimport { CryptoDigestAlgorithm, CryptoEncoding, CryptoDigestOptions } from './Crypto.types';\n\nexport default {\n get name(): string {\n return 'ExpoCrypto';\n },\n async digestStringAsync(\n algorithm: CryptoDigestAlgorithm,\n data: string,\n options: CryptoDigestOptions\n ): Promise<string> {\n if (!crypto.subtle) {\n throw new CodedError(\n 'ERR_CRYPTO_UNAVAILABLE',\n 'Access to the WebCrypto API is restricted to secure origins (https).'\n );\n }\n const encoder = new TextEncoder();\n const buffer = encoder.encode(data);\n const hashedData = await crypto.subtle.digest(algorithm, buffer);\n if (options.encoding === CryptoEncoding.HEX) {\n return hexString(hashedData);\n } else if (options.encoding === CryptoEncoding.BASE64) {\n return btoa(String.fromCharCode(...new Uint8Array(hashedData)));\n }\n throw new CodedError('ERR_CRYPTO_DIGEST', 'Invalid encoding type provided.');\n },\n};\n\nfunction hexString(buffer: ArrayBuffer): string {\n const byteArray = new Uint8Array(buffer);\n\n const hexCodes = [...byteArray].map(value => {\n const hexCode = value.toString(16);\n const paddedHexCode = hexCode.padStart(2, '0');\n return paddedHexCode;\n });\n\n return hexCodes.join('');\n}\n"]}
1
+ {"version":3,"file":"ExpoCrypto.web.js","sourceRoot":"","sources":["../src/ExpoCrypto.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAyB,cAAc,EAAuB,MAAM,gBAAgB,CAAC;AAE5F,eAAe;IACb,IAAI,IAAI;QACN,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,KAAK,CAAC,iBAAiB,CACrB,SAAgC,EAChC,IAAY,EACZ,OAA4B;QAE5B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAClB,MAAM,IAAI,UAAU,CAClB,wBAAwB,EACxB,sEAAsE,CACvE,CAAC;SACH;QACD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,QAAQ,KAAK,cAAc,CAAC,GAAG,EAAE;YAC3C,OAAO,SAAS,CAAC,UAAU,CAAC,CAAC;SAC9B;aAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,cAAc,CAAC,MAAM,EAAE;YACrD,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SACjE;QACD,MAAM,IAAI,UAAU,CAAC,mBAAmB,EAAE,iCAAiC,CAAC,CAAC;IAC/E,CAAC;CACF,CAAC;AAEF,SAAS,SAAS,CAAC,MAAmB;IACpC,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IAEzC,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACnC,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/C,OAAO,aAAa,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3B,CAAC","sourcesContent":["import { CodedError } from 'expo-modules-core';\n\nimport { CryptoDigestAlgorithm, CryptoEncoding, CryptoDigestOptions } from './Crypto.types';\n\nexport default {\n get name(): string {\n return 'ExpoCrypto';\n },\n async digestStringAsync(\n algorithm: CryptoDigestAlgorithm,\n data: string,\n options: CryptoDigestOptions\n ): Promise<string> {\n if (!crypto.subtle) {\n throw new CodedError(\n 'ERR_CRYPTO_UNAVAILABLE',\n 'Access to the WebCrypto API is restricted to secure origins (https).'\n );\n }\n const encoder = new TextEncoder();\n const buffer = encoder.encode(data);\n const hashedData = await crypto.subtle.digest(algorithm, buffer);\n if (options.encoding === CryptoEncoding.HEX) {\n return hexString(hashedData);\n } else if (options.encoding === CryptoEncoding.BASE64) {\n return btoa(String.fromCharCode(...new Uint8Array(hashedData)));\n }\n throw new CodedError('ERR_CRYPTO_DIGEST', 'Invalid encoding type provided.');\n },\n};\n\nfunction hexString(buffer: ArrayBuffer): string {\n const byteArray = new Uint8Array(buffer);\n\n const hexCodes = [...byteArray].map((value) => {\n const hexCode = value.toString(16);\n const paddedHexCode = hexCode.padStart(2, '0');\n return paddedHexCode;\n });\n\n return hexCodes.join('');\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  // Copyright 2019-present 650 Industries. All rights reserved.
2
2
 
3
- #import <UMCore/UMExportedModule.h>
3
+ #import <ExpoModulesCore/EXExportedModule.h>
4
4
 
5
- @interface EXCrypto : UMExportedModule
5
+ @interface EXCrypto : EXExportedModule
6
6
 
7
7
  @end
@@ -5,14 +5,14 @@
5
5
 
6
6
  @implementation EXCrypto
7
7
 
8
- UM_EXPORT_MODULE(ExpoCrypto);
8
+ EX_EXPORT_MODULE(ExpoCrypto);
9
9
 
10
- UM_EXPORT_METHOD_AS(digestStringAsync,
10
+ EX_EXPORT_METHOD_AS(digestStringAsync,
11
11
  digestStringAsync:(NSString *)algorithm
12
12
  data:(NSString *)data
13
13
  options:(NSDictionary *)options
14
- resolver:(UMPromiseResolveBlock)resolve
15
- rejecter:(UMPromiseRejectBlock)reject)
14
+ resolver:(EXPromiseResolveBlock)resolve
15
+ rejecter:(EXPromiseRejectBlock)reject)
16
16
  {
17
17
  NSString *encoding = options[@"encoding"];
18
18
 
@@ -10,10 +10,11 @@ Pod::Spec.new do |s|
10
10
  s.license = package['license']
11
11
  s.author = package['author']
12
12
  s.homepage = package['homepage']
13
- s.platform = :ios, '11.0'
13
+ s.platform = :ios, '12.0'
14
14
  s.source = { git: 'https://github.com/expo/expo.git' }
15
+ s.static_framework = true
15
16
 
16
- s.dependency 'UMCore'
17
+ s.dependency 'ExpoModulesCore'
17
18
 
18
19
  if !$ExpoUseSources&.include?(package['name']) && ENV['EXPO_USE_SOURCE'].to_i == 0 && File.exist?("#{s.name}.xcframework") && Gem::Version.new(Pod::VERSION) >= Gem::Version.new('1.10.0')
19
20
  s.source_files = "#{s.name}/**/*.h"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-crypto",
3
- "version": "9.1.0",
3
+ "version": "10.0.2",
4
4
  "description": "Expo universal module for crypto",
5
5
  "main": "build/Crypto.js",
6
6
  "types": "build/Crypto.d.ts",
@@ -34,15 +34,15 @@
34
34
  },
35
35
  "author": "650 Industries, Inc.",
36
36
  "license": "MIT",
37
- "homepage": "https://docs.expo.io/versions/latest/sdk/crypto/",
37
+ "homepage": "https://docs.expo.dev/versions/latest/sdk/crypto/",
38
38
  "jest": {
39
39
  "preset": "expo-module-scripts"
40
40
  },
41
- "unimodulePeerDependencies": {
42
- "@unimodules/core": "*"
41
+ "dependencies": {
42
+ "expo-modules-core": "~0.4.3"
43
43
  },
44
44
  "devDependencies": {
45
45
  "expo-module-scripts": "^2.0.0"
46
46
  },
47
- "gitHead": "5b57d1fd0a20294c1dec7c43b5df34dd6425d1a5"
47
+ "gitHead": "d23e1ac491da96b51c25eb2533efcd56499ee287"
48
48
  }
package/src/Crypto.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { UnavailabilityError } from '@unimodules/core';
1
+ import { UnavailabilityError } from 'expo-modules-core';
2
2
 
3
3
  import { CryptoDigestAlgorithm, CryptoEncoding, CryptoDigestOptions, Digest } from './Crypto.types';
4
4
  import ExpoCrypto from './ExpoCrypto';
package/src/ExpoCrypto.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { NativeModulesProxy } from '@unimodules/core';
1
+ import { NativeModulesProxy } from 'expo-modules-core';
2
2
  export default NativeModulesProxy.ExpoCrypto;
@@ -1,4 +1,4 @@
1
- import { CodedError } from '@unimodules/core';
1
+ import { CodedError } from 'expo-modules-core';
2
2
 
3
3
  import { CryptoDigestAlgorithm, CryptoEncoding, CryptoDigestOptions } from './Crypto.types';
4
4
 
@@ -32,7 +32,7 @@ export default {
32
32
  function hexString(buffer: ArrayBuffer): string {
33
33
  const byteArray = new Uint8Array(buffer);
34
34
 
35
- const hexCodes = [...byteArray].map(value => {
35
+ const hexCodes = [...byteArray].map((value) => {
36
36
  const hexCode = value.toString(16);
37
37
  const paddedHexCode = hexCode.padStart(2, '0');
38
38
  return paddedHexCode;
@@ -1,59 +0,0 @@
1
- package expo.modules.crypto;
2
-
3
- import android.content.Context;
4
- import android.util.Base64;
5
-
6
- import java.security.MessageDigest;
7
- import java.security.NoSuchAlgorithmException;
8
- import java.util.Map;
9
-
10
- import org.unimodules.core.ExportedModule;
11
- import org.unimodules.core.ModuleRegistry;
12
- import org.unimodules.core.Promise;
13
- import org.unimodules.core.interfaces.ExpoMethod;
14
-
15
- public class CryptoModule extends ExportedModule {
16
-
17
- public CryptoModule(Context context) {
18
- super(context);
19
- }
20
-
21
- @Override
22
- public void onCreate(ModuleRegistry moduleRegistry) {
23
- }
24
-
25
- @Override
26
- public String getName() {
27
- return "ExpoCrypto";
28
- }
29
-
30
- @ExpoMethod
31
- public void digestStringAsync(String algorithm, String data, final Map<String, Object> options, final Promise promise) {
32
- String encoding = (String) options.get("encoding");
33
-
34
- MessageDigest md;
35
- try {
36
- md = MessageDigest.getInstance(algorithm);
37
- md.update(data.getBytes());
38
- } catch (NoSuchAlgorithmException e) {
39
- promise.reject("ERR_CRYPTO_DIGEST", e);
40
- return;
41
- }
42
-
43
- byte[] digest = md.digest();
44
- if (encoding.equals("base64")) {
45
- String output = Base64.encodeToString(digest, Base64.NO_WRAP);
46
- promise.resolve(output);
47
- } else if (encoding.equals("hex")) {
48
- StringBuilder stringBuilder = new StringBuilder(digest.length * 2);
49
- for (int i = 0; i < digest.length; i++) {
50
- stringBuilder.append(Integer.toString((digest[i] & 0xff) +
51
- 0x100, 16).substring(1));
52
- }
53
- String output = stringBuilder.toString();
54
- promise.resolve(output);
55
- } else {
56
- promise.reject("ERR_CRYPTO_DIGEST", "Invalid encoding type provided.");
57
- }
58
- }
59
- }
@@ -1,18 +0,0 @@
1
-
2
- package expo.modules.crypto;
3
-
4
- import android.content.Context;
5
-
6
- import java.util.Collections;
7
- import java.util.List;
8
-
9
- import org.unimodules.core.BasePackage;
10
- import org.unimodules.core.ExportedModule;
11
- import org.unimodules.core.ViewManager;
12
-
13
- public class CryptoPackage extends BasePackage {
14
- @Override
15
- public List<ExportedModule> createExportedModules(Context context) {
16
- return Collections.singletonList((ExportedModule) new CryptoModule(context));
17
- }
18
- }