effect 3.2.9 → 3.3.1

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 (154) hide show
  1. package/Redacted/package.json +6 -0
  2. package/dist/cjs/Chunk.js +16 -6
  3. package/dist/cjs/Chunk.js.map +1 -1
  4. package/dist/cjs/Config.js +9 -1
  5. package/dist/cjs/Config.js.map +1 -1
  6. package/dist/cjs/Either.js +3 -2
  7. package/dist/cjs/Either.js.map +1 -1
  8. package/dist/cjs/Iterable.js +15 -2
  9. package/dist/cjs/Iterable.js.map +1 -1
  10. package/dist/cjs/Layer.js +11 -1
  11. package/dist/cjs/Layer.js.map +1 -1
  12. package/dist/cjs/Option.js +8 -2
  13. package/dist/cjs/Option.js.map +1 -1
  14. package/dist/cjs/Pool.js +26 -0
  15. package/dist/cjs/Pool.js.map +1 -1
  16. package/dist/cjs/Predicate.js +92 -2
  17. package/dist/cjs/Predicate.js.map +1 -1
  18. package/dist/cjs/Redacted.js +114 -0
  19. package/dist/cjs/Redacted.js.map +1 -0
  20. package/dist/cjs/STM.js.map +1 -1
  21. package/dist/cjs/Secret.js +7 -0
  22. package/dist/cjs/Secret.js.map +1 -1
  23. package/dist/cjs/Stream.js +32 -1
  24. package/dist/cjs/Stream.js.map +1 -1
  25. package/dist/cjs/Struct.js.map +1 -1
  26. package/dist/cjs/Tuple.js +15 -1
  27. package/dist/cjs/Tuple.js.map +1 -1
  28. package/dist/cjs/Utils.js.map +1 -1
  29. package/dist/cjs/index.js +4 -2
  30. package/dist/cjs/index.js.map +1 -1
  31. package/dist/cjs/internal/config.js +9 -2
  32. package/dist/cjs/internal/config.js.map +1 -1
  33. package/dist/cjs/internal/layer.js +14 -2
  34. package/dist/cjs/internal/layer.js.map +1 -1
  35. package/dist/cjs/internal/pool.js +206 -235
  36. package/dist/cjs/internal/pool.js.map +1 -1
  37. package/dist/cjs/internal/redacted.js +87 -0
  38. package/dist/cjs/internal/redacted.js.map +1 -0
  39. package/dist/cjs/internal/secret.js +40 -23
  40. package/dist/cjs/internal/secret.js.map +1 -1
  41. package/dist/cjs/internal/stm/stm.js +2 -1
  42. package/dist/cjs/internal/stm/stm.js.map +1 -1
  43. package/dist/cjs/internal/stream.js +15 -7
  44. package/dist/cjs/internal/stream.js.map +1 -1
  45. package/dist/cjs/internal/version.js +1 -1
  46. package/dist/dts/Chunk.d.ts +11 -1
  47. package/dist/dts/Chunk.d.ts.map +1 -1
  48. package/dist/dts/Config.d.ts +10 -1
  49. package/dist/dts/Config.d.ts.map +1 -1
  50. package/dist/dts/Either.d.ts.map +1 -1
  51. package/dist/dts/Iterable.d.ts +7 -0
  52. package/dist/dts/Iterable.d.ts.map +1 -1
  53. package/dist/dts/Layer.d.ts +20 -0
  54. package/dist/dts/Layer.d.ts.map +1 -1
  55. package/dist/dts/Option.d.ts.map +1 -1
  56. package/dist/dts/Pool.d.ts +31 -0
  57. package/dist/dts/Pool.d.ts.map +1 -1
  58. package/dist/dts/Predicate.d.ts +99 -2
  59. package/dist/dts/Predicate.d.ts.map +1 -1
  60. package/dist/dts/Redacted.d.ts +122 -0
  61. package/dist/dts/Redacted.d.ts.map +1 -0
  62. package/dist/dts/STM.d.ts +4 -1
  63. package/dist/dts/STM.d.ts.map +1 -1
  64. package/dist/dts/Secret.d.ts +14 -1
  65. package/dist/dts/Secret.d.ts.map +1 -1
  66. package/dist/dts/Stream.d.ts +61 -4
  67. package/dist/dts/Stream.d.ts.map +1 -1
  68. package/dist/dts/Struct.d.ts +7 -7
  69. package/dist/dts/Struct.d.ts.map +1 -1
  70. package/dist/dts/Tuple.d.ts +51 -0
  71. package/dist/dts/Tuple.d.ts.map +1 -1
  72. package/dist/dts/Types.d.ts +46 -0
  73. package/dist/dts/Types.d.ts.map +1 -1
  74. package/dist/dts/Utils.d.ts +6 -5
  75. package/dist/dts/Utils.d.ts.map +1 -1
  76. package/dist/dts/index.d.ts +10 -0
  77. package/dist/dts/index.d.ts.map +1 -1
  78. package/dist/dts/internal/layer.d.ts +15 -1
  79. package/dist/dts/internal/layer.d.ts.map +1 -1
  80. package/dist/dts/internal/redacted.d.ts +2 -0
  81. package/dist/dts/internal/redacted.d.ts.map +1 -0
  82. package/dist/dts/internal/stm/stm.d.ts.map +1 -1
  83. package/dist/dts/internal/stream.d.ts +1 -0
  84. package/dist/dts/internal/stream.d.ts.map +1 -1
  85. package/dist/esm/Chunk.js +16 -5
  86. package/dist/esm/Chunk.js.map +1 -1
  87. package/dist/esm/Config.js +8 -0
  88. package/dist/esm/Config.js.map +1 -1
  89. package/dist/esm/Either.js +3 -2
  90. package/dist/esm/Either.js.map +1 -1
  91. package/dist/esm/Iterable.js +12 -0
  92. package/dist/esm/Iterable.js.map +1 -1
  93. package/dist/esm/Layer.js +10 -0
  94. package/dist/esm/Layer.js.map +1 -1
  95. package/dist/esm/Option.js +8 -2
  96. package/dist/esm/Option.js.map +1 -1
  97. package/dist/esm/Pool.js +26 -0
  98. package/dist/esm/Pool.js.map +1 -1
  99. package/dist/esm/Predicate.js +91 -1
  100. package/dist/esm/Predicate.js.map +1 -1
  101. package/dist/esm/Redacted.js +82 -0
  102. package/dist/esm/Redacted.js.map +1 -0
  103. package/dist/esm/STM.js.map +1 -1
  104. package/dist/esm/Secret.js +7 -0
  105. package/dist/esm/Secret.js.map +1 -1
  106. package/dist/esm/Stream.js +31 -0
  107. package/dist/esm/Stream.js.map +1 -1
  108. package/dist/esm/Struct.js.map +1 -1
  109. package/dist/esm/Tuple.js +51 -0
  110. package/dist/esm/Tuple.js.map +1 -1
  111. package/dist/esm/Utils.js.map +1 -1
  112. package/dist/esm/index.js +10 -0
  113. package/dist/esm/index.js.map +1 -1
  114. package/dist/esm/internal/config.js +7 -1
  115. package/dist/esm/internal/config.js.map +1 -1
  116. package/dist/esm/internal/layer.js +12 -0
  117. package/dist/esm/internal/layer.js.map +1 -1
  118. package/dist/esm/internal/pool.js +205 -235
  119. package/dist/esm/internal/pool.js.map +1 -1
  120. package/dist/esm/internal/redacted.js +52 -0
  121. package/dist/esm/internal/redacted.js.map +1 -0
  122. package/dist/esm/internal/secret.js +39 -22
  123. package/dist/esm/internal/secret.js.map +1 -1
  124. package/dist/esm/internal/stm/stm.js +2 -1
  125. package/dist/esm/internal/stm/stm.js.map +1 -1
  126. package/dist/esm/internal/stream.js +13 -4
  127. package/dist/esm/internal/stream.js.map +1 -1
  128. package/dist/esm/internal/version.js +1 -1
  129. package/package.json +9 -1
  130. package/src/Chunk.ts +17 -5
  131. package/src/Config.ts +11 -1
  132. package/src/Either.ts +6 -4
  133. package/src/Iterable.ts +13 -0
  134. package/src/Layer.ts +22 -0
  135. package/src/Option.ts +8 -2
  136. package/src/Pool.ts +39 -6
  137. package/src/Predicate.ts +102 -3
  138. package/src/Redacted.ts +133 -0
  139. package/src/STM.ts +7 -2
  140. package/src/Secret.ts +14 -1
  141. package/src/Stream.ts +67 -7
  142. package/src/Struct.ts +8 -13
  143. package/src/Tuple.ts +53 -0
  144. package/src/Types.ts +48 -0
  145. package/src/Utils.ts +9 -6
  146. package/src/index.ts +11 -0
  147. package/src/internal/config.ts +13 -2
  148. package/src/internal/layer.ts +63 -0
  149. package/src/internal/pool.ts +320 -447
  150. package/src/internal/redacted.ts +69 -0
  151. package/src/internal/secret.ts +39 -28
  152. package/src/internal/stm/stm.ts +4 -1
  153. package/src/internal/stream.ts +111 -50
  154. package/src/internal/version.ts +1 -1
@@ -0,0 +1,69 @@
1
+ import * as Equal from "../Equal.js"
2
+ import { pipe } from "../Function.js"
3
+ import { globalValue } from "../GlobalValue.js"
4
+ import * as Hash from "../Hash.js"
5
+ import { pipeArguments } from "../Pipeable.js"
6
+ import { hasProperty } from "../Predicate.js"
7
+ import type * as Redacted from "../Redacted.js"
8
+
9
+ /** @internal */
10
+ const RedactedSymbolKey = "effect/Redacted"
11
+
12
+ /** @internal */
13
+ export const redactedRegistry = globalValue(
14
+ "effect/Redacted/redactedRegistry",
15
+ () => new WeakMap<Redacted.Redacted<any>, any>()
16
+ )
17
+
18
+ /** @internal */
19
+ export const RedactedTypeId: Redacted.RedactedTypeId = Symbol.for(
20
+ RedactedSymbolKey
21
+ ) as Redacted.RedactedTypeId
22
+
23
+ /** @internal */
24
+ export const proto = {
25
+ [RedactedTypeId]: {
26
+ _A: (_: never) => _
27
+ },
28
+ pipe() {
29
+ return pipeArguments(this, arguments)
30
+ },
31
+ toString() {
32
+ return "<redacted>"
33
+ },
34
+ toJSON() {
35
+ return "<redacted>"
36
+ },
37
+ [Hash.symbol]<T>(this: Redacted.Redacted<T>): number {
38
+ return pipe(
39
+ Hash.hash(RedactedSymbolKey),
40
+ Hash.combine(Hash.hash(redactedRegistry.get(this))),
41
+ Hash.cached(this)
42
+ )
43
+ },
44
+ [Equal.symbol]<T>(this: Redacted.Redacted<T>, that: unknown): boolean {
45
+ return isRedacted(that) && Equal.equals(redactedRegistry.get(this), redactedRegistry.get(that))
46
+ }
47
+ }
48
+
49
+ /** @internal */
50
+ export const isRedacted = (u: unknown): u is Redacted.Redacted<unknown> => hasProperty(u, RedactedTypeId)
51
+
52
+ /** @internal */
53
+ export const make = <T>(value: T): Redacted.Redacted<T> => {
54
+ const redacted = Object.create(proto)
55
+ redactedRegistry.set(redacted, value)
56
+ return redacted
57
+ }
58
+
59
+ /** @internal */
60
+ export const value = <T>(self: Redacted.Redacted<T>): T => {
61
+ if (redactedRegistry.has(self)) {
62
+ return redactedRegistry.get(self)
63
+ } else {
64
+ throw new Error("Unable to get redacted value")
65
+ }
66
+ }
67
+
68
+ /** @internal */
69
+ export const unsafeWipe = <T>(self: Redacted.Redacted<T>): boolean => redactedRegistry.delete(self)
@@ -1,40 +1,37 @@
1
1
  import * as Arr from "../Array.js"
2
- import * as Equal from "../Equal.js"
3
- import { pipe } from "../Function.js"
4
- import * as Hash from "../Hash.js"
5
2
  import { hasProperty } from "../Predicate.js"
6
3
  import type * as Secret from "../Secret.js"
4
+ import * as redacted_ from "./redacted.js"
7
5
 
8
- /** @internal */
6
+ /**
7
+ * @internal
8
+ * @deprecated
9
+ */
9
10
  const SecretSymbolKey = "effect/Secret"
10
11
 
11
- /** @internal */
12
+ /**
13
+ * @internal
14
+ * @deprecated
15
+ */
12
16
  export const SecretTypeId: Secret.SecretTypeId = Symbol.for(
13
17
  SecretSymbolKey
14
18
  ) as Secret.SecretTypeId
15
19
 
16
- /** @internal */
17
- export const proto = {
18
- [SecretTypeId]: SecretTypeId,
19
- [Hash.symbol](this: Secret.Secret): number {
20
- return pipe(
21
- Hash.hash(SecretSymbolKey),
22
- Hash.combine(Hash.array(this.raw)),
23
- Hash.cached(this)
24
- )
25
- },
26
- [Equal.symbol](this: Secret.Secret, that: unknown): boolean {
27
- return isSecret(that) && this.raw.length === that.raw.length &&
28
- this.raw.every((v, i) => Equal.equals(v, that.raw[i]))
29
- }
30
- }
31
-
32
- /** @internal */
20
+ /**
21
+ * @internal
22
+ * @deprecated
23
+ */
33
24
  export const isSecret = (u: unknown): u is Secret.Secret => hasProperty(u, SecretTypeId)
34
25
 
35
- /** @internal */
26
+ /**
27
+ * @internal
28
+ * @deprecated
29
+ */
36
30
  export const make = (bytes: Array<number>): Secret.Secret => {
37
- const secret = Object.create(proto)
31
+ const secret = Object.create({
32
+ ...redacted_.proto,
33
+ [SecretTypeId]: SecretTypeId
34
+ })
38
35
  Object.defineProperty(secret, "toString", {
39
36
  enumerable: false,
40
37
  value() {
@@ -51,26 +48,40 @@ export const make = (bytes: Array<number>): Secret.Secret => {
51
48
  enumerable: false,
52
49
  value: bytes
53
50
  })
51
+ redacted_.redactedRegistry.set(secret, bytes.map((byte) => String.fromCharCode(byte)).join(""))
54
52
  return secret
55
53
  }
56
54
 
57
- /** @internal */
55
+ /**
56
+ * @internal
57
+ * @deprecated
58
+ */
58
59
  export const fromIterable = (iterable: Iterable<string>): Secret.Secret =>
59
60
  make(Arr.fromIterable(iterable).map((char) => char.charCodeAt(0)))
60
61
 
61
- /** @internal */
62
+ /**
63
+ * @internal
64
+ * @deprecated
65
+ */
62
66
  export const fromString = (text: string): Secret.Secret => {
63
67
  return make(text.split("").map((char) => char.charCodeAt(0)))
64
68
  }
65
69
 
66
- /** @internal */
70
+ /**
71
+ * @internal
72
+ * @deprecated
73
+ */
67
74
  export const value = (self: Secret.Secret): string => {
68
75
  return self.raw.map((byte) => String.fromCharCode(byte)).join("")
69
76
  }
70
77
 
71
- /** @internal */
78
+ /**
79
+ * @internal
80
+ * @deprecated
81
+ */
72
82
  export const unsafeWipe = (self: Secret.Secret): void => {
73
83
  for (let i = 0; i < self.raw.length; i++) {
74
84
  self.raw[i] = 0
75
85
  }
86
+ redacted_.redactedRegistry.delete(self)
76
87
  }
@@ -618,8 +618,11 @@ export const fromOption = <A>(option: Option.Option<A>): STM.STM<A, Option.Optio
618
618
  * Inspired by https://github.com/tusharmath/qio/pull/22 (revised)
619
619
  * @internal
620
620
  */
621
- export const gen: typeof STM.gen = (f) =>
621
+ export const gen: typeof STM.gen = (...args) =>
622
622
  suspend(() => {
623
+ const f = (args.length === 1)
624
+ ? args[0]
625
+ : args[1].bind(args[0])
623
626
  const iterator = f(pipe)
624
627
  const state = iterator.next()
625
628
  const run = (
@@ -6542,63 +6542,103 @@ export const toQueueOfElements = dual<
6542
6542
  ))
6543
6543
 
6544
6544
  /** @internal */
6545
- export const toReadableStream = <A, E>(self: Stream.Stream<A, E>) =>
6546
- toReadableStreamRuntime(self, Runtime.defaultRuntime)
6545
+ export const toReadableStream = dual<
6546
+ <A>(
6547
+ options?: { readonly strategy?: QueuingStrategy<A> | undefined }
6548
+ ) => <E>(self: Stream.Stream<A, E>) => ReadableStream<A>,
6549
+ <A, E>(
6550
+ self: Stream.Stream<A, E>,
6551
+ options?: { readonly strategy?: QueuingStrategy<A> | undefined }
6552
+ ) => ReadableStream<A>
6553
+ >(
6554
+ (args) => isStream(args[0]),
6555
+ <A, E>(
6556
+ self: Stream.Stream<A, E>,
6557
+ options?: { readonly strategy?: QueuingStrategy<A> | undefined }
6558
+ ) => toReadableStreamRuntime(self, Runtime.defaultRuntime, options)
6559
+ )
6547
6560
 
6548
6561
  /** @internal */
6549
- export const toReadableStreamEffect = <A, E, R>(self: Stream.Stream<A, E, R>) =>
6550
- Effect.map(Effect.runtime<R>(), (runtime) => toReadableStreamRuntime(self, runtime))
6562
+ export const toReadableStreamEffect = dual<
6563
+ <A>(
6564
+ options?: { readonly strategy?: QueuingStrategy<A> | undefined }
6565
+ ) => <E, R>(self: Stream.Stream<A, E, R>) => Effect.Effect<ReadableStream<A>, never, R>,
6566
+ <A, E, R>(
6567
+ self: Stream.Stream<A, E, R>,
6568
+ options?: { readonly strategy?: QueuingStrategy<A> | undefined }
6569
+ ) => Effect.Effect<ReadableStream<A>, never, R>
6570
+ >(
6571
+ (args) => isStream(args[0]),
6572
+ <A, E, R>(
6573
+ self: Stream.Stream<A, E, R>,
6574
+ options?: { readonly strategy?: QueuingStrategy<A> | undefined }
6575
+ ) => Effect.map(Effect.runtime<R>(), (runtime) => toReadableStreamRuntime(self, runtime, options))
6576
+ )
6551
6577
 
6552
6578
  /** @internal */
6553
6579
  export const toReadableStreamRuntime = dual<
6554
- <XR>(runtime: Runtime.Runtime<XR>) => <A, E, R extends XR>(self: Stream.Stream<A, E, R>) => ReadableStream<A>,
6555
- <A, E, XR, R extends XR>(self: Stream.Stream<A, E, R>, runtime: Runtime.Runtime<XR>) => ReadableStream<A>
6556
- >(2, <A, E, XR, R extends XR>(self: Stream.Stream<A, E, R>, runtime: Runtime.Runtime<XR>): ReadableStream<A> => {
6557
- const runSync = Runtime.runSync(runtime)
6558
- const runFork = Runtime.runFork(runtime)
6559
-
6560
- let pull: Effect.Effect<void, never, R>
6561
- let scope: Scope.CloseableScope
6562
- return new ReadableStream<A>({
6563
- start(controller) {
6564
- scope = runSync(Scope.make())
6565
- pull = pipe(
6566
- toPull(self),
6567
- Scope.extend(scope),
6568
- runSync,
6569
- Effect.tap((chunk) =>
6570
- Effect.sync(() => {
6571
- Chunk.map(chunk, (a) => {
6572
- controller.enqueue(a)
6573
- })
6574
- })
6575
- ),
6576
- Effect.tapErrorCause(() => Scope.close(scope, Exit.void)),
6577
- Effect.catchTags({
6578
- "None": () =>
6579
- Effect.sync(() => {
6580
- controller.close()
6581
- }),
6582
- "Some": (error) =>
6580
+ <A, XR>(
6581
+ runtime: Runtime.Runtime<XR>,
6582
+ options?: { readonly strategy?: QueuingStrategy<A> | undefined }
6583
+ ) => <E, R extends XR>(self: Stream.Stream<A, E, R>) => ReadableStream<A>,
6584
+ <A, E, XR, R extends XR>(
6585
+ self: Stream.Stream<A, E, R>,
6586
+ runtime: Runtime.Runtime<XR>,
6587
+ options?: { readonly strategy?: QueuingStrategy<A> | undefined }
6588
+ ) => ReadableStream<A>
6589
+ >(
6590
+ (args) => isStream(args[0]),
6591
+ <A, E, XR, R extends XR>(
6592
+ self: Stream.Stream<A, E, R>,
6593
+ runtime: Runtime.Runtime<XR>,
6594
+ options?: { readonly strategy?: QueuingStrategy<A> | undefined }
6595
+ ): ReadableStream<A> => {
6596
+ const runSync = Runtime.runSync(runtime)
6597
+ const runFork = Runtime.runFork(runtime)
6598
+
6599
+ let pull: Effect.Effect<void, never, R>
6600
+ let scope: Scope.CloseableScope
6601
+ return new ReadableStream<A>({
6602
+ start(controller) {
6603
+ scope = runSync(Scope.make())
6604
+ pull = pipe(
6605
+ toPull(self),
6606
+ Scope.extend(scope),
6607
+ runSync,
6608
+ Effect.tap((chunk) =>
6583
6609
  Effect.sync(() => {
6584
- controller.error(error.value)
6610
+ Chunk.map(chunk, (a) => {
6611
+ controller.enqueue(a)
6612
+ })
6585
6613
  })
6586
- }),
6587
- Effect.asVoid
6588
- )
6589
- },
6590
- pull() {
6591
- return new Promise<void>((resolve) => {
6592
- runFork(pull, { scope }).addObserver((_) => resolve())
6593
- })
6594
- },
6595
- cancel() {
6596
- return new Promise<void>((resolve) => {
6597
- runFork(Scope.close(scope, Exit.void)).addObserver((_) => resolve())
6598
- })
6599
- }
6600
- })
6601
- })
6614
+ ),
6615
+ Effect.tapErrorCause(() => Scope.close(scope, Exit.void)),
6616
+ Effect.catchTags({
6617
+ "None": () =>
6618
+ Effect.sync(() => {
6619
+ controller.close()
6620
+ }),
6621
+ "Some": (error) =>
6622
+ Effect.sync(() => {
6623
+ controller.error(error.value)
6624
+ })
6625
+ }),
6626
+ Effect.asVoid
6627
+ )
6628
+ },
6629
+ pull() {
6630
+ return new Promise<void>((resolve) => {
6631
+ runFork(pull, { scope }).addObserver((_) => resolve())
6632
+ })
6633
+ },
6634
+ cancel() {
6635
+ return new Promise<void>((resolve) => {
6636
+ runFork(Scope.close(scope, Exit.void)).addObserver((_) => resolve())
6637
+ })
6638
+ }
6639
+ }, options?.strategy)
6640
+ }
6641
+ )
6602
6642
 
6603
6643
  /** @internal */
6604
6644
  export const transduce = dual<
@@ -7569,6 +7609,27 @@ export const zipLatest = dual<
7569
7609
  ): Stream.Stream<[A, A2], E2 | E, R2 | R> => pipe(self, zipLatestWith(that, (a, a2) => [a, a2]))
7570
7610
  )
7571
7611
 
7612
+ export const zipLatestAll = <T extends ReadonlyArray<Stream.Stream<any, any, any>>>(
7613
+ ...streams: T
7614
+ ): Stream.Stream<
7615
+ [T[number]] extends [never] ? never
7616
+ : { [K in keyof T]: T[K] extends Stream.Stream<infer A, infer _E, infer _R> ? A : never },
7617
+ [T[number]] extends [never] ? never : T[number] extends Stream.Stream<infer _A, infer _E, infer _R> ? _E : never,
7618
+ [T[number]] extends [never] ? never : T[number] extends Stream.Stream<infer _A, infer _E, infer _R> ? _R : never
7619
+ > => {
7620
+ if (streams.length === 0) {
7621
+ return empty
7622
+ } else if (streams.length === 1) {
7623
+ return map(streams[0]!, (x) => [x]) as any
7624
+ }
7625
+ const [head, ...tail] = streams
7626
+ return zipLatestWith(
7627
+ head,
7628
+ zipLatestAll(...tail),
7629
+ (first, second) => [first, ...second]
7630
+ ) as any
7631
+ }
7632
+
7572
7633
  /** @internal */
7573
7634
  export const zipLatestWith = dual<
7574
7635
  <A2, E2, R2, A, A3>(
@@ -1,4 +1,4 @@
1
- let moduleVersion = "3.2.9"
1
+ let moduleVersion = "3.3.1"
2
2
 
3
3
  export const getCurrentVersion = () => moduleVersion
4
4