nitrogen 0.31.10 → 0.32.0

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 (104) hide show
  1. package/lib/autolinking/ios/createPodspecRubyExtension.js +1 -1
  2. package/lib/index.js +1 -1
  3. package/lib/syntax/c++/CppStruct.js +20 -4
  4. package/lib/syntax/createType.js +1 -1
  5. package/lib/syntax/getHybridObjectName.d.ts +1 -1
  6. package/lib/syntax/kotlin/KotlinCxxBridgedType.js +19 -13
  7. package/lib/syntax/kotlin/KotlinEnum.js +3 -6
  8. package/lib/syntax/kotlin/KotlinStruct.js +1 -1
  9. package/lib/syntax/kotlin/KotlinVariant.js +1 -1
  10. package/lib/syntax/swift/SwiftCxxTypeHelper.js +1 -1
  11. package/lib/syntax/swift/SwiftStruct.js +2 -8
  12. package/lib/syntax/types/AnyHybridObjectType.d.ts +1 -0
  13. package/lib/syntax/types/AnyHybridObjectType.js +3 -0
  14. package/lib/syntax/types/ArrayBufferType.d.ts +1 -0
  15. package/lib/syntax/types/ArrayBufferType.js +3 -0
  16. package/lib/syntax/types/ArrayType.d.ts +1 -0
  17. package/lib/syntax/types/ArrayType.js +3 -0
  18. package/lib/syntax/types/BigIntType.d.ts +1 -0
  19. package/lib/syntax/types/BigIntType.js +3 -0
  20. package/lib/syntax/types/BooleanType.d.ts +1 -0
  21. package/lib/syntax/types/BooleanType.js +3 -0
  22. package/lib/syntax/types/CustomType.d.ts +1 -0
  23. package/lib/syntax/types/CustomType.js +3 -0
  24. package/lib/syntax/types/DateType.d.ts +1 -0
  25. package/lib/syntax/types/DateType.js +3 -0
  26. package/lib/syntax/types/EnumType.d.ts +1 -0
  27. package/lib/syntax/types/EnumType.js +3 -0
  28. package/lib/syntax/types/ErrorType.d.ts +1 -0
  29. package/lib/syntax/types/ErrorType.js +4 -1
  30. package/lib/syntax/types/FunctionType.d.ts +1 -0
  31. package/lib/syntax/types/FunctionType.js +3 -0
  32. package/lib/syntax/types/HybridObjectType.d.ts +1 -0
  33. package/lib/syntax/types/HybridObjectType.js +3 -0
  34. package/lib/syntax/types/MapType.d.ts +1 -0
  35. package/lib/syntax/types/MapType.js +3 -0
  36. package/lib/syntax/types/NamedWrappingType.d.ts +1 -0
  37. package/lib/syntax/types/NamedWrappingType.js +3 -0
  38. package/lib/syntax/types/NullType.d.ts +1 -0
  39. package/lib/syntax/types/NullType.js +3 -0
  40. package/lib/syntax/types/NumberType.d.ts +1 -0
  41. package/lib/syntax/types/NumberType.js +3 -0
  42. package/lib/syntax/types/OptionalType.d.ts +1 -0
  43. package/lib/syntax/types/OptionalType.js +3 -0
  44. package/lib/syntax/types/PromiseType.d.ts +1 -0
  45. package/lib/syntax/types/PromiseType.js +3 -0
  46. package/lib/syntax/types/RecordType.d.ts +1 -0
  47. package/lib/syntax/types/RecordType.js +3 -0
  48. package/lib/syntax/types/ResultWrappingType.d.ts +1 -0
  49. package/lib/syntax/types/ResultWrappingType.js +3 -0
  50. package/lib/syntax/types/StringType.d.ts +1 -0
  51. package/lib/syntax/types/StringType.js +3 -0
  52. package/lib/syntax/types/StructType.d.ts +1 -0
  53. package/lib/syntax/types/StructType.js +3 -0
  54. package/lib/syntax/types/TupleType.d.ts +1 -0
  55. package/lib/syntax/types/TupleType.js +3 -0
  56. package/lib/syntax/types/Type.d.ts +4 -0
  57. package/lib/syntax/types/VariantType.d.ts +1 -0
  58. package/lib/syntax/types/VariantType.js +3 -0
  59. package/lib/syntax/types/VoidType.d.ts +1 -0
  60. package/lib/syntax/types/VoidType.js +3 -0
  61. package/lib/views/CppHybridViewComponent.js +2 -1
  62. package/lib/writeFile.d.ts +1 -1
  63. package/lib/writeFile.js +1 -1
  64. package/package.json +2 -3
  65. package/src/autolinking/ios/createPodspecRubyExtension.ts +1 -1
  66. package/src/index.ts +1 -1
  67. package/src/syntax/c++/CppStruct.ts +20 -4
  68. package/src/syntax/createType.ts +1 -1
  69. package/src/syntax/getHybridObjectName.ts +1 -1
  70. package/src/syntax/kotlin/KotlinCxxBridgedType.ts +29 -13
  71. package/src/syntax/kotlin/KotlinEnum.ts +3 -7
  72. package/src/syntax/kotlin/KotlinStruct.ts +1 -1
  73. package/src/syntax/kotlin/KotlinVariant.ts +1 -1
  74. package/src/syntax/swift/SwiftCxxTypeHelper.ts +1 -1
  75. package/src/syntax/swift/SwiftStruct.ts +2 -8
  76. package/src/syntax/types/AnyHybridObjectType.ts +3 -0
  77. package/src/syntax/types/ArrayBufferType.ts +3 -0
  78. package/src/syntax/types/ArrayType.ts +3 -0
  79. package/src/syntax/types/BigIntType.ts +3 -0
  80. package/src/syntax/types/BooleanType.ts +3 -0
  81. package/src/syntax/types/CustomType.ts +3 -0
  82. package/src/syntax/types/DateType.ts +3 -0
  83. package/src/syntax/types/EnumType.ts +3 -0
  84. package/src/syntax/types/ErrorType.ts +4 -1
  85. package/src/syntax/types/FunctionType.ts +3 -0
  86. package/src/syntax/types/HybridObjectType.ts +3 -0
  87. package/src/syntax/types/MapType.ts +3 -0
  88. package/src/syntax/types/NamedWrappingType.ts +3 -0
  89. package/src/syntax/types/NullType.ts +3 -0
  90. package/src/syntax/types/NumberType.ts +3 -0
  91. package/src/syntax/types/OptionalType.ts +3 -0
  92. package/src/syntax/types/PromiseType.ts +3 -0
  93. package/src/syntax/types/RecordType.ts +3 -0
  94. package/src/syntax/types/ResultWrappingType.ts +3 -0
  95. package/src/syntax/types/StringType.ts +3 -0
  96. package/src/syntax/types/StructType.ts +3 -0
  97. package/src/syntax/types/TupleType.ts +3 -0
  98. package/src/syntax/types/Type.ts +4 -0
  99. package/src/syntax/types/VariantType.ts +3 -0
  100. package/src/syntax/types/VoidType.ts +3 -0
  101. package/src/views/CppHybridViewComponent.ts +2 -1
  102. package/src/writeFile.ts +1 -1
  103. package/lib/syntax/types/UndefinedType.d.ts +0 -10
  104. package/lib/syntax/types/UndefinedType.js +0 -23
@@ -18,6 +18,9 @@ export class RecordType implements Type {
18
18
  get kind(): TypeKind {
19
19
  return 'record'
20
20
  }
21
+ get isEquatable(): boolean {
22
+ return this.keyType.isEquatable && this.valueType.isEquatable
23
+ }
21
24
 
22
25
  getCode(language: Language, options?: GetCodeOptions): string {
23
26
  const keyCode = this.keyType.getCode(language, options)
@@ -19,6 +19,9 @@ export class ResultWrappingType implements Type {
19
19
  get kind(): TypeKind {
20
20
  return 'result-wrapper'
21
21
  }
22
+ get isEquatable(): boolean {
23
+ return this.result.isEquatable && this.error.isEquatable
24
+ }
22
25
 
23
26
  getCode(language: Language, options?: GetCodeOptions): string {
24
27
  const type = this.result.getCode(language, options)
@@ -10,6 +10,9 @@ export class StringType implements Type {
10
10
  get kind(): TypeKind {
11
11
  return 'string'
12
12
  }
13
+ get isEquatable(): boolean {
14
+ return true
15
+ }
13
16
 
14
17
  getCode(language: Language): string {
15
18
  switch (language) {
@@ -38,6 +38,9 @@ export class StructType implements Type {
38
38
  get kind(): TypeKind {
39
39
  return 'struct'
40
40
  }
41
+ get isEquatable(): boolean {
42
+ return this.properties.every((p) => p.isEquatable)
43
+ }
41
44
 
42
45
  getCode(language: Language, { fullyQualified }: GetCodeOptions = {}): string {
43
46
  switch (language) {
@@ -17,6 +17,9 @@ export class TupleType implements Type {
17
17
  get kind(): TypeKind {
18
18
  return 'tuple'
19
19
  }
20
+ get isEquatable(): boolean {
21
+ return this.itemTypes.every((t) => t.isEquatable)
22
+ }
20
23
 
21
24
  getCode(language: Language, options?: GetCodeOptions): string {
22
25
  const types = this.itemTypes.map((t) => t.getCode(language, options))
@@ -46,6 +46,10 @@ export interface Type {
46
46
  * Get the kind of the type.
47
47
  */
48
48
  readonly kind: TypeKind
49
+ /**
50
+ * `true` if the type is equatable.
51
+ */
52
+ readonly isEquatable: boolean
49
53
  /**
50
54
  * Get the native code required to represent this type for the given language (C++, Swift, Kotlin).
51
55
  *
@@ -34,6 +34,9 @@ export class VariantType implements Type {
34
34
  get kind(): TypeKind {
35
35
  return 'variant'
36
36
  }
37
+ get isEquatable(): boolean {
38
+ return this.variants.every((v) => v.isEquatable)
39
+ }
37
40
 
38
41
  get jsType(): string {
39
42
  return this.variants.map((v) => v.kind).join(' | ')
@@ -10,6 +10,9 @@ export class VoidType implements Type {
10
10
  get kind(): TypeKind {
11
11
  return 'void'
12
12
  }
13
+ get isEquatable(): boolean {
14
+ return true
15
+ }
13
16
 
14
17
  getCode(language: Language): string {
15
18
  switch (language) {
@@ -199,7 +199,7 @@ namespace ${namespace} {
199
199
  // Due to a React limitation, functions cannot be passed to native directly,
200
200
  // because RN converts them to booleans (`true`). Nitro knows this and just
201
201
  // wraps functions as objects - the original function is stored in `f`.
202
- valueConversion = `value.asObject(*runtime).getProperty(*runtime, "f")`
202
+ valueConversion = `value.asObject(*runtime).getProperty(*runtime, PropNameIDCache::get(*runtime, "f"))`
203
203
  }
204
204
 
205
205
  propInitializers.push(
@@ -230,6 +230,7 @@ ${createFileMetadataString(`${component}.cpp`)}
230
230
  #include <utility>
231
231
  #include <NitroModules/NitroDefines.hpp>
232
232
  #include <NitroModules/JSIConverter.hpp>
233
+ #include <NitroModules/PropNameIDCache.hpp>
233
234
  #include <react/renderer/core/RawValue.h>
234
235
  #include <react/renderer/core/ShadowNode.h>
235
236
  #include <react/renderer/core/ComponentDescriptor.h>
package/src/writeFile.ts CHANGED
@@ -6,7 +6,7 @@ import chalk from 'chalk'
6
6
  import { Logger } from './Logger.js'
7
7
 
8
8
  /**
9
- * Writes the given file to disk and returns it's actual path.
9
+ * Writes the given file to disk and returns its actual path.
10
10
  */
11
11
  export async function writeFile(
12
12
  basePath: string,
@@ -1,10 +0,0 @@
1
- import type { Language } from '../../getPlatformSpecs.js';
2
- import type { SourceFile, SourceImport } from '../SourceFile.js';
3
- import type { Type, TypeKind } from './Type.js';
4
- export declare class UndefinedType implements Type {
5
- get canBePassedByReference(): boolean;
6
- get kind(): TypeKind;
7
- getCode(language: Language): string;
8
- getExtraFiles(): SourceFile[];
9
- getRequiredImports(): SourceImport[];
10
- }
@@ -1,23 +0,0 @@
1
- export class UndefinedType {
2
- get canBePassedByReference() {
3
- // It's a primitive.
4
- return false;
5
- }
6
- get kind() {
7
- return 'undefined';
8
- }
9
- getCode(language) {
10
- switch (language) {
11
- case 'c++':
12
- return 'std::nullopt_t';
13
- default:
14
- throw new Error(`Language ${language} is not yet supported for UndefinedType!`);
15
- }
16
- }
17
- getExtraFiles() {
18
- return [];
19
- }
20
- getRequiredImports() {
21
- return [];
22
- }
23
- }