@react-native-windows/codegen 0.0.0-canary.54 → 0.0.0-canary.56

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
@@ -1,19 +1,40 @@
1
1
  # Change Log - @react-native-windows/codegen
2
2
 
3
- This log was last generated on Tue, 21 Mar 2023 21:20:29 GMT and should not be manually modified.
3
+ This log was last generated on Tue, 25 Apr 2023 05:14:58 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
- ## 0.0.0-canary.54
7
+ ## 0.0.0-canary.56
8
8
 
9
- Tue, 21 Mar 2023 21:20:29 GMT
9
+ Tue, 25 Apr 2023 05:14:58 GMT
10
10
 
11
11
  ### Changes
12
12
 
13
- - Bump @react-native-windows/fs to v0.0.0-canary.17
14
- - Bump @rnw-scripts/jest-unittest-config to v1.5.1
15
- - Bump @rnw-scripts/just-task to v2.3.6
13
+ - Update Node to 16 (34109996+chiaramooney@users.noreply.github.com)
14
+ - Bump @react-native-windows/fs to v0.0.0-canary.18
15
+ - Bump @rnw-scripts/eslint-config to v1.1.16
16
+ - Bump @rnw-scripts/jest-unittest-config to v1.5.2
17
+ - Bump @rnw-scripts/just-task to v2.3.7
18
+ - Bump @rnw-scripts/ts-config to v2.0.4
16
19
 
20
+ ## 0.0.0-canary.55
21
+
22
+ Thu, 13 Apr 2023 05:14:28 GMT
23
+
24
+ ### Changes
25
+
26
+ - Fix RNW not being detected on case-sensitive file systems (4123478+tido64@users.noreply.github.com)
27
+
28
+ ## 0.0.0-canary.54
29
+
30
+ Tue, 21 Mar 2023 21:21:55 GMT
31
+
32
+ ### Changes
33
+
34
+ - Bump @react-native-windows/fs to v0.0.0-canary.17
35
+ - Bump @rnw-scripts/jest-unittest-config to v1.5.1
36
+ - Bump @rnw-scripts/just-task to v2.3.6
37
+
17
38
  ## 0.0.0-canary.53
18
39
 
19
40
  Thu, 02 Mar 2023 06:14:21 GMT
@@ -28,7 +28,7 @@ function getParser(isTypeScript) {
28
28
  return new fp.FlowParser();
29
29
  }
30
30
  }
31
- const schemaValidator = require(path_1.default.resolve(rncodegenPath, 'lib/schemaValidator'));
31
+ const schemaValidator = require(path_1.default.resolve(rncodegenPath, 'lib/SchemaValidator'));
32
32
  function normalizeFileMap(map, outputDir, outMap) {
33
33
  for (const [fileName, contents] of map) {
34
34
  const location = path_1.default.join(outputDir, fileName);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * @format\n */\n\nimport path from 'path';\nimport fs from '@react-native-windows/fs';\nimport globby from 'globby';\nimport {createNM2Generator} from './generators/GenerateNM2';\nimport {\n generateTypeScript,\n setOptionalTurboModule,\n} from './generators/GenerateTypeScript';\nimport type {SchemaType} from '@react-native/codegen/lib/CodegenSchema';\nimport type {Parser} from '@react-native/codegen/lib/parsers/parser';\n\n// Load @react-native/codegen from react-native\nconst rnPath = path.dirname(require.resolve('react-native/package.json'));\nconst rncodegenPath = path.dirname(\n require.resolve('@react-native/codegen/package.json', {paths: [rnPath]}),\n);\n\nfunction getParser(isTypeScript: boolean): Parser {\n if (isTypeScript) {\n const fp = require(path.resolve(\n rncodegenPath,\n 'lib/parsers/typescript/parser',\n ));\n return new fp.TypeScriptParser();\n } else {\n const fp = require(path.resolve(rncodegenPath, 'lib/parsers/flow/parser'));\n return new fp.FlowParser();\n }\n}\n\nconst schemaValidator = require(path.resolve(\n rncodegenPath,\n 'lib/schemaValidator',\n));\n\ninterface Options {\n libraryName: string;\n methodOnly: boolean;\n modulesCxx: boolean;\n moduleSpecName: string;\n modulesTypeScriptTypes: boolean;\n modulesWindows: boolean;\n namespace: string;\n outputDirectory: string;\n schema: SchemaType;\n}\n\ninterface Config {\n generators: any[] /*Generators[]*/;\n test?: boolean;\n}\n\nfunction normalizeFileMap(\n map: Map<string, string>,\n outputDir: string,\n outMap: Map<string, string>,\n): void {\n for (const [fileName, contents] of map) {\n const location = path.join(outputDir, fileName);\n outMap.set(path.normalize(location), contents);\n }\n}\n\nfunction checkFilesForChanges(\n map: Map<string, string>,\n outputDir: string,\n): boolean {\n let hasChanges = false;\n\n outputDir = path.resolve(outputDir);\n const globbyDir = outputDir.replace(/\\\\/g, '/');\n const allExistingFiles = globby\n .sync([`${globbyDir}/**`, `${globbyDir}/**/.*`], {absolute: true})\n .map(_ => path.normalize(_));\n const allGeneratedFiles = [...map.keys()].map(_ => path.normalize(_)).sort();\n\n if (\n allExistingFiles.length !== allGeneratedFiles.length ||\n !allGeneratedFiles.every(filepath =>\n allExistingFiles.includes(\n path.normalize(path.resolve(process.cwd(), filepath)),\n ),\n )\n )\n return true;\n\n for (const [fileName, contents] of map) {\n if (!fs.existsSync(fileName)) {\n hasChanges = true;\n continue;\n }\n\n const currentContents = fs.readFileSync(fileName, 'utf8');\n if (currentContents !== contents) {\n console.log(`- ${fileName} has changed`);\n hasChanges = true;\n continue;\n }\n }\n\n return hasChanges;\n}\n\nfunction writeMapToFiles(map: Map<string, string>, outputDir: string) {\n let success = true;\n\n outputDir = path.resolve(outputDir);\n const globbyDir = outputDir.replace(/\\\\/g, '/');\n\n // This ensures that we delete any generated files from modules that have been deleted\n const allExistingFiles = globby.sync(\n [`${globbyDir}/**`, `${globbyDir}/**/.*`],\n {absolute: true},\n );\n\n const allGeneratedFiles = [...map.keys()].map(_ => path.normalize(_)).sort();\n allExistingFiles.forEach(existingFile => {\n if (!allGeneratedFiles.includes(path.normalize(existingFile))) {\n console.log('Deleting ', existingFile);\n fs.unlinkSync(existingFile);\n }\n });\n\n for (const [fileName, contents] of map) {\n try {\n fs.mkdirSync(path.dirname(fileName), {recursive: true});\n\n if (fs.existsSync(fileName)) {\n const currentContents = fs.readFileSync(fileName, 'utf8');\n // Don't update the files if there are no changes as this breaks incremental builds\n if (currentContents === contents) {\n continue;\n }\n }\n\n console.log('Writing ', fileName);\n fs.writeFileSync(fileName, contents);\n } catch (error) {\n success = false;\n console.error(`Failed to write ${fileName} to ${fileName}`, error);\n }\n }\n\n return success;\n}\n\nexport function parseFile(filename: string): SchemaType {\n try {\n const isTypeScript =\n path.extname(filename) === '.ts' || path.extname(filename) === '.tsx';\n const contents = fs.readFileSync(filename, 'utf8');\n const schema = getParser(isTypeScript).parseString(contents, filename);\n // there will be at most one turbo module per file\n const moduleName = Object.keys(schema.modules)[0];\n if (moduleName) {\n const spec = schema.modules[moduleName];\n if (spec.type === 'NativeModule') {\n if (contents) {\n // This is a temporary implementation until such information is added to the schema in facebook/react-native\n if (contents.includes('TurboModuleRegistry.get<')) {\n setOptionalTurboModule(spec, true);\n } else if (contents.includes('TurboModuleRegistry.getEnforcing<')) {\n setOptionalTurboModule(spec, false);\n }\n }\n }\n }\n return schema;\n } catch (e) {\n if (e instanceof Error) {\n e.message = `(${filename}): ${e.message}`;\n }\n throw e;\n }\n}\n\nexport function combineSchemas(files: string[]): SchemaType {\n return files.reduce(\n (merged, filename) => {\n const contents = fs.readFileSync(filename, 'utf8');\n if (\n contents &&\n (/export\\s+default\\s+\\(?codegenNativeComponent</.test(contents) ||\n contents.includes('extends TurboModule'))\n ) {\n const schema = parseFile(filename);\n merged.modules = {...merged.modules, ...schema.modules};\n }\n return merged;\n },\n {modules: {}},\n );\n}\n\nexport function generate(\n {\n libraryName,\n methodOnly,\n modulesCxx,\n moduleSpecName,\n modulesTypeScriptTypes,\n modulesWindows,\n namespace,\n outputDirectory,\n schema,\n }: Options,\n {/*generators,*/ test}: Config,\n): boolean {\n schemaValidator.validate(schema);\n\n const componentOutputdir = path.join(\n outputDirectory,\n 'react/components',\n libraryName,\n );\n\n const generatedFiles = new Map<string, string>();\n\n generatedFiles.set(\n path.join(outputDirectory, '.clang-format'),\n 'DisableFormat: true\\nSortIncludes: false',\n );\n\n const generateNM2 = createNM2Generator({\n methodOnly,\n namespace,\n });\n\n const generateJsiModuleH = require(path.resolve(\n rncodegenPath,\n 'lib/generators/modules/GenerateModuleH',\n )).generate;\n const generateJsiModuleCpp = require(path.resolve(\n rncodegenPath,\n 'lib/generators/modules/GenerateModuleCpp',\n )).generate;\n const generatorPropsH = require(path.resolve(\n rncodegenPath,\n 'lib/generators/components/GeneratePropsH',\n )).generate;\n const generatorPropsCPP = require(path.resolve(\n rncodegenPath,\n 'lib/generators/components/GeneratePropsCPP',\n )).generate;\n const generatorShadowNodeH = require(path.resolve(\n rncodegenPath,\n 'lib/generators/components/GenerateShadowNodeH',\n )).generate;\n const generatorShadowNodeCPP = require(path.resolve(\n rncodegenPath,\n 'lib/generators/components/GenerateShadowNodeCPP',\n )).generate;\n const generatorComponentDescriptorH = require(path.resolve(\n rncodegenPath,\n 'lib/generators/components/GenerateComponentDescriptorH',\n )).generate;\n const generatorEventEmitterH = require(path.resolve(\n rncodegenPath,\n 'lib/generators/components/GenerateEventEmitterH',\n )).generate;\n const generatorEventEmitterCPP = require(path.resolve(\n rncodegenPath,\n 'lib/generators/components/GenerateEventEmitterCpp',\n )).generate;\n const generatorStateCPP = require(path.resolve(\n rncodegenPath,\n 'lib/generators/components/GenerateStateCpp',\n )).generate;\n const generatorStateH = require(path.resolve(\n rncodegenPath,\n 'lib/generators/components/GenerateStateH',\n )).generate;\n\n const moduleGenerators = [];\n\n if (modulesWindows) {\n moduleGenerators.push(generateNM2);\n }\n\n if (modulesCxx) {\n moduleGenerators.push(generateJsiModuleH);\n moduleGenerators.push(generateJsiModuleCpp);\n }\n\n if (modulesTypeScriptTypes) {\n moduleGenerators.push(generateTypeScript);\n }\n\n moduleGenerators.forEach(generator => {\n const generated: Map<string, string> = generator(\n libraryName,\n schema,\n moduleSpecName,\n );\n normalizeFileMap(generated, outputDirectory, generatedFiles);\n });\n\n if (\n Object.keys(schema.modules).some(\n moduleName => schema.modules[moduleName].type === 'Component',\n )\n ) {\n const componentGenerators = [\n generatorComponentDescriptorH,\n generatorEventEmitterCPP,\n generatorEventEmitterH,\n generatorPropsCPP,\n generatorPropsH,\n generatorShadowNodeCPP,\n generatorShadowNodeH,\n generatorStateCPP,\n generatorStateH,\n ];\n\n componentGenerators.forEach(generator => {\n const generated: Map<string, string> = generator(\n libraryName,\n schema,\n moduleSpecName,\n );\n normalizeFileMap(generated, componentOutputdir, generatedFiles);\n });\n }\n\n if (test === true) {\n return checkFilesForChanges(generatedFiles, outputDirectory);\n }\n\n return writeMapToFiles(generatedFiles, outputDirectory);\n}\n\nexport type CodeGenOptions = {\n file?: string;\n files?: string[];\n libraryName: string;\n methodOnly: boolean;\n modulesCxx: boolean;\n modulesTypeScriptTypes: boolean;\n modulesWindows: boolean;\n namespace: string;\n outputDirectory: string;\n test: boolean;\n};\n\nexport function runCodeGen(options: CodeGenOptions): boolean {\n if (!options.file && !options.files)\n throw new Error('Must specify file or files option');\n\n const schema = options.file\n ? parseFile(options.file)\n : combineSchemas(globby.sync(options.files!));\n\n const libraryName = options.libraryName;\n const moduleSpecName = 'moduleSpecName';\n const {\n methodOnly,\n modulesCxx,\n modulesTypeScriptTypes,\n modulesWindows,\n namespace,\n outputDirectory,\n } = options;\n return generate(\n {\n libraryName,\n methodOnly,\n modulesCxx,\n moduleSpecName,\n modulesTypeScriptTypes,\n modulesWindows,\n namespace,\n outputDirectory,\n schema,\n },\n {generators: [], test: options.test},\n );\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;AAEH,gDAAwB;AACxB,kEAA0C;AAC1C,oDAA4B;AAC5B,0DAA4D;AAC5D,wEAGyC;AAIzC,+CAA+C;AAC/C,MAAM,MAAM,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAAC;AAC1E,MAAM,aAAa,GAAG,cAAI,CAAC,OAAO,CAChC,OAAO,CAAC,OAAO,CAAC,oCAAoC,EAAE,EAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAC,CAAC,CACzE,CAAC;AAEF,SAAS,SAAS,CAAC,YAAqB;IACtC,IAAI,YAAY,EAAE;QAChB,MAAM,EAAE,GAAG,OAAO,CAAC,cAAI,CAAC,OAAO,CAC7B,aAAa,EACb,+BAA+B,CAChC,CAAC,CAAC;QACH,OAAO,IAAI,EAAE,CAAC,gBAAgB,EAAE,CAAC;KAClC;SAAM;QACL,MAAM,EAAE,GAAG,OAAO,CAAC,cAAI,CAAC,OAAO,CAAC,aAAa,EAAE,yBAAyB,CAAC,CAAC,CAAC;QAC3E,OAAO,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;KAC5B;AACH,CAAC;AAED,MAAM,eAAe,GAAG,OAAO,CAAC,cAAI,CAAC,OAAO,CAC1C,aAAa,EACb,qBAAqB,CACtB,CAAC,CAAC;AAmBH,SAAS,gBAAgB,CACvB,GAAwB,EACxB,SAAiB,EACjB,MAA2B;IAE3B,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,GAAG,EAAE;QACtC,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,CAAC,cAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;KAChD;AACH,CAAC;AAED,SAAS,oBAAoB,CAC3B,GAAwB,EACxB,SAAiB;IAEjB,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,SAAS,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAChD,MAAM,gBAAgB,GAAG,gBAAM;SAC5B,IAAI,CAAC,CAAC,GAAG,SAAS,KAAK,EAAE,GAAG,SAAS,QAAQ,CAAC,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;SACjE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,cAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,iBAAiB,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,cAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAE7E,IACE,gBAAgB,CAAC,MAAM,KAAK,iBAAiB,CAAC,MAAM;QACpD,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAClC,gBAAgB,CAAC,QAAQ,CACvB,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC,CACtD,CACF;QAED,OAAO,IAAI,CAAC;IAEd,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,GAAG,EAAE;QACtC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YAC5B,UAAU,GAAG,IAAI,CAAC;YAClB,SAAS;SACV;QAED,MAAM,eAAe,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1D,IAAI,eAAe,KAAK,QAAQ,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,cAAc,CAAC,CAAC;YACzC,UAAU,GAAG,IAAI,CAAC;YAClB,SAAS;SACV;KACF;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,eAAe,CAAC,GAAwB,EAAE,SAAiB;IAClE,IAAI,OAAO,GAAG,IAAI,CAAC;IAEnB,SAAS,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEhD,sFAAsF;IACtF,MAAM,gBAAgB,GAAG,gBAAM,CAAC,IAAI,CAClC,CAAC,GAAG,SAAS,KAAK,EAAE,GAAG,SAAS,QAAQ,CAAC,EACzC,EAAC,QAAQ,EAAE,IAAI,EAAC,CACjB,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,cAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7E,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;QACtC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,cAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE;YAC7D,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YACvC,YAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;SAC7B;IACH,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,GAAG,EAAE;QACtC,IAAI;YACF,YAAE,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;YAExD,IAAI,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;gBAC3B,MAAM,eAAe,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAC1D,mFAAmF;gBACnF,IAAI,eAAe,KAAK,QAAQ,EAAE;oBAChC,SAAS;iBACV;aACF;YAED,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAClC,YAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;SACtC;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,GAAG,KAAK,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,mBAAmB,QAAQ,OAAO,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;SACpE;KACF;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAgB,SAAS,CAAC,QAAgB;IACxC,IAAI;QACF,MAAM,YAAY,GAChB,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,KAAK,IAAI,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,MAAM,CAAC;QACxE,MAAM,QAAQ,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACvE,kDAAkD;QAClD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,UAAU,EAAE;YACd,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE;gBAChC,IAAI,QAAQ,EAAE;oBACZ,4GAA4G;oBAC5G,IAAI,QAAQ,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAE;wBACjD,IAAA,2CAAsB,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;qBACpC;yBAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,mCAAmC,CAAC,EAAE;wBACjE,IAAA,2CAAsB,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;qBACrC;iBACF;aACF;SACF;QACD,OAAO,MAAM,CAAC;KACf;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,CAAC,YAAY,KAAK,EAAE;YACtB,CAAC,CAAC,OAAO,GAAG,IAAI,QAAQ,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;SAC3C;QACD,MAAM,CAAC,CAAC;KACT;AACH,CAAC;AA5BD,8BA4BC;AAED,SAAgB,cAAc,CAAC,KAAe;IAC5C,OAAO,KAAK,CAAC,MAAM,CACjB,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;QACnB,MAAM,QAAQ,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnD,IACE,QAAQ;YACR,CAAC,+CAA+C,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAC7D,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,EAC3C;YACA,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;YACnC,MAAM,CAAC,OAAO,GAAG,EAAC,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,EAAC,CAAC;SACzD;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,EACD,EAAC,OAAO,EAAE,EAAE,EAAC,CACd,CAAC;AACJ,CAAC;AAhBD,wCAgBC;AAED,SAAgB,QAAQ,CACtB,EACE,WAAW,EACX,UAAU,EACV,UAAU,EACV,cAAc,EACd,sBAAsB,EACtB,cAAc,EACd,SAAS,EACT,eAAe,EACf,MAAM,GACE,EACV,EAAC,eAAe,CAAC,IAAI,EAAS;IAE9B,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEjC,MAAM,kBAAkB,GAAG,cAAI,CAAC,IAAI,CAClC,eAAe,EACf,kBAAkB,EAClB,WAAW,CACZ,CAAC;IAEF,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEjD,cAAc,CAAC,GAAG,CAChB,cAAI,CAAC,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,EAC3C,0CAA0C,CAC3C,CAAC;IAEF,MAAM,WAAW,GAAG,IAAA,gCAAkB,EAAC;QACrC,UAAU;QACV,SAAS;KACV,CAAC,CAAC;IAEH,MAAM,kBAAkB,GAAG,OAAO,CAAC,cAAI,CAAC,OAAO,CAC7C,aAAa,EACb,wCAAwC,CACzC,CAAC,CAAC,QAAQ,CAAC;IACZ,MAAM,oBAAoB,GAAG,OAAO,CAAC,cAAI,CAAC,OAAO,CAC/C,aAAa,EACb,0CAA0C,CAC3C,CAAC,CAAC,QAAQ,CAAC;IACZ,MAAM,eAAe,GAAG,OAAO,CAAC,cAAI,CAAC,OAAO,CAC1C,aAAa,EACb,0CAA0C,CAC3C,CAAC,CAAC,QAAQ,CAAC;IACZ,MAAM,iBAAiB,GAAG,OAAO,CAAC,cAAI,CAAC,OAAO,CAC5C,aAAa,EACb,4CAA4C,CAC7C,CAAC,CAAC,QAAQ,CAAC;IACZ,MAAM,oBAAoB,GAAG,OAAO,CAAC,cAAI,CAAC,OAAO,CAC/C,aAAa,EACb,+CAA+C,CAChD,CAAC,CAAC,QAAQ,CAAC;IACZ,MAAM,sBAAsB,GAAG,OAAO,CAAC,cAAI,CAAC,OAAO,CACjD,aAAa,EACb,iDAAiD,CAClD,CAAC,CAAC,QAAQ,CAAC;IACZ,MAAM,6BAA6B,GAAG,OAAO,CAAC,cAAI,CAAC,OAAO,CACxD,aAAa,EACb,wDAAwD,CACzD,CAAC,CAAC,QAAQ,CAAC;IACZ,MAAM,sBAAsB,GAAG,OAAO,CAAC,cAAI,CAAC,OAAO,CACjD,aAAa,EACb,iDAAiD,CAClD,CAAC,CAAC,QAAQ,CAAC;IACZ,MAAM,wBAAwB,GAAG,OAAO,CAAC,cAAI,CAAC,OAAO,CACnD,aAAa,EACb,mDAAmD,CACpD,CAAC,CAAC,QAAQ,CAAC;IACZ,MAAM,iBAAiB,GAAG,OAAO,CAAC,cAAI,CAAC,OAAO,CAC5C,aAAa,EACb,4CAA4C,CAC7C,CAAC,CAAC,QAAQ,CAAC;IACZ,MAAM,eAAe,GAAG,OAAO,CAAC,cAAI,CAAC,OAAO,CAC1C,aAAa,EACb,0CAA0C,CAC3C,CAAC,CAAC,QAAQ,CAAC;IAEZ,MAAM,gBAAgB,GAAG,EAAE,CAAC;IAE5B,IAAI,cAAc,EAAE;QAClB,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACpC;IAED,IAAI,UAAU,EAAE;QACd,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC1C,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;KAC7C;IAED,IAAI,sBAAsB,EAAE;QAC1B,gBAAgB,CAAC,IAAI,CAAC,uCAAkB,CAAC,CAAC;KAC3C;IAED,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QACnC,MAAM,SAAS,GAAwB,SAAS,CAC9C,WAAW,EACX,MAAM,EACN,cAAc,CACf,CAAC;QACF,gBAAgB,CAAC,SAAS,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,IACE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAC9B,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,WAAW,CAC9D,EACD;QACA,MAAM,mBAAmB,GAAG;YAC1B,6BAA6B;YAC7B,wBAAwB;YACxB,sBAAsB;YACtB,iBAAiB;YACjB,eAAe;YACf,sBAAsB;YACtB,oBAAoB;YACpB,iBAAiB;YACjB,eAAe;SAChB,CAAC;QAEF,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YACtC,MAAM,SAAS,GAAwB,SAAS,CAC9C,WAAW,EACX,MAAM,EACN,cAAc,CACf,CAAC;YACF,gBAAgB,CAAC,SAAS,EAAE,kBAAkB,EAAE,cAAc,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;KACJ;IAED,IAAI,IAAI,KAAK,IAAI,EAAE;QACjB,OAAO,oBAAoB,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;KAC9D;IAED,OAAO,eAAe,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AAC1D,CAAC;AAvID,4BAuIC;AAeD,SAAgB,UAAU,CAAC,OAAuB;IAChD,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK;QACjC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAEvD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI;QACzB,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;QACzB,CAAC,CAAC,cAAc,CAAC,gBAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAM,CAAC,CAAC,CAAC;IAEhD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACxC,MAAM,cAAc,GAAG,gBAAgB,CAAC;IACxC,MAAM,EACJ,UAAU,EACV,UAAU,EACV,sBAAsB,EACtB,cAAc,EACd,SAAS,EACT,eAAe,GAChB,GAAG,OAAO,CAAC;IACZ,OAAO,QAAQ,CACb;QACE,WAAW;QACX,UAAU;QACV,UAAU;QACV,cAAc;QACd,sBAAsB;QACtB,cAAc;QACd,SAAS;QACT,eAAe;QACf,MAAM;KACP,EACD,EAAC,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAC,CACrC,CAAC;AACJ,CAAC;AAhCD,gCAgCC","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * @format\n */\n\nimport path from 'path';\nimport fs from '@react-native-windows/fs';\nimport globby from 'globby';\nimport {createNM2Generator} from './generators/GenerateNM2';\nimport {\n generateTypeScript,\n setOptionalTurboModule,\n} from './generators/GenerateTypeScript';\nimport type {SchemaType} from '@react-native/codegen/lib/CodegenSchema';\nimport type {Parser} from '@react-native/codegen/lib/parsers/parser';\n\n// Load @react-native/codegen from react-native\nconst rnPath = path.dirname(require.resolve('react-native/package.json'));\nconst rncodegenPath = path.dirname(\n require.resolve('@react-native/codegen/package.json', {paths: [rnPath]}),\n);\n\nfunction getParser(isTypeScript: boolean): Parser {\n if (isTypeScript) {\n const fp = require(path.resolve(\n rncodegenPath,\n 'lib/parsers/typescript/parser',\n ));\n return new fp.TypeScriptParser();\n } else {\n const fp = require(path.resolve(rncodegenPath, 'lib/parsers/flow/parser'));\n return new fp.FlowParser();\n }\n}\n\nconst schemaValidator = require(path.resolve(\n rncodegenPath,\n 'lib/SchemaValidator',\n));\n\ninterface Options {\n libraryName: string;\n methodOnly: boolean;\n modulesCxx: boolean;\n moduleSpecName: string;\n modulesTypeScriptTypes: boolean;\n modulesWindows: boolean;\n namespace: string;\n outputDirectory: string;\n schema: SchemaType;\n}\n\ninterface Config {\n generators: any[] /*Generators[]*/;\n test?: boolean;\n}\n\nfunction normalizeFileMap(\n map: Map<string, string>,\n outputDir: string,\n outMap: Map<string, string>,\n): void {\n for (const [fileName, contents] of map) {\n const location = path.join(outputDir, fileName);\n outMap.set(path.normalize(location), contents);\n }\n}\n\nfunction checkFilesForChanges(\n map: Map<string, string>,\n outputDir: string,\n): boolean {\n let hasChanges = false;\n\n outputDir = path.resolve(outputDir);\n const globbyDir = outputDir.replace(/\\\\/g, '/');\n const allExistingFiles = globby\n .sync([`${globbyDir}/**`, `${globbyDir}/**/.*`], {absolute: true})\n .map(_ => path.normalize(_));\n const allGeneratedFiles = [...map.keys()].map(_ => path.normalize(_)).sort();\n\n if (\n allExistingFiles.length !== allGeneratedFiles.length ||\n !allGeneratedFiles.every(filepath =>\n allExistingFiles.includes(\n path.normalize(path.resolve(process.cwd(), filepath)),\n ),\n )\n )\n return true;\n\n for (const [fileName, contents] of map) {\n if (!fs.existsSync(fileName)) {\n hasChanges = true;\n continue;\n }\n\n const currentContents = fs.readFileSync(fileName, 'utf8');\n if (currentContents !== contents) {\n console.log(`- ${fileName} has changed`);\n hasChanges = true;\n continue;\n }\n }\n\n return hasChanges;\n}\n\nfunction writeMapToFiles(map: Map<string, string>, outputDir: string) {\n let success = true;\n\n outputDir = path.resolve(outputDir);\n const globbyDir = outputDir.replace(/\\\\/g, '/');\n\n // This ensures that we delete any generated files from modules that have been deleted\n const allExistingFiles = globby.sync(\n [`${globbyDir}/**`, `${globbyDir}/**/.*`],\n {absolute: true},\n );\n\n const allGeneratedFiles = [...map.keys()].map(_ => path.normalize(_)).sort();\n allExistingFiles.forEach(existingFile => {\n if (!allGeneratedFiles.includes(path.normalize(existingFile))) {\n console.log('Deleting ', existingFile);\n fs.unlinkSync(existingFile);\n }\n });\n\n for (const [fileName, contents] of map) {\n try {\n fs.mkdirSync(path.dirname(fileName), {recursive: true});\n\n if (fs.existsSync(fileName)) {\n const currentContents = fs.readFileSync(fileName, 'utf8');\n // Don't update the files if there are no changes as this breaks incremental builds\n if (currentContents === contents) {\n continue;\n }\n }\n\n console.log('Writing ', fileName);\n fs.writeFileSync(fileName, contents);\n } catch (error) {\n success = false;\n console.error(`Failed to write ${fileName} to ${fileName}`, error);\n }\n }\n\n return success;\n}\n\nexport function parseFile(filename: string): SchemaType {\n try {\n const isTypeScript =\n path.extname(filename) === '.ts' || path.extname(filename) === '.tsx';\n const contents = fs.readFileSync(filename, 'utf8');\n const schema = getParser(isTypeScript).parseString(contents, filename);\n // there will be at most one turbo module per file\n const moduleName = Object.keys(schema.modules)[0];\n if (moduleName) {\n const spec = schema.modules[moduleName];\n if (spec.type === 'NativeModule') {\n if (contents) {\n // This is a temporary implementation until such information is added to the schema in facebook/react-native\n if (contents.includes('TurboModuleRegistry.get<')) {\n setOptionalTurboModule(spec, true);\n } else if (contents.includes('TurboModuleRegistry.getEnforcing<')) {\n setOptionalTurboModule(spec, false);\n }\n }\n }\n }\n return schema;\n } catch (e) {\n if (e instanceof Error) {\n e.message = `(${filename}): ${e.message}`;\n }\n throw e;\n }\n}\n\nexport function combineSchemas(files: string[]): SchemaType {\n return files.reduce(\n (merged, filename) => {\n const contents = fs.readFileSync(filename, 'utf8');\n if (\n contents &&\n (/export\\s+default\\s+\\(?codegenNativeComponent</.test(contents) ||\n contents.includes('extends TurboModule'))\n ) {\n const schema = parseFile(filename);\n merged.modules = {...merged.modules, ...schema.modules};\n }\n return merged;\n },\n {modules: {}},\n );\n}\n\nexport function generate(\n {\n libraryName,\n methodOnly,\n modulesCxx,\n moduleSpecName,\n modulesTypeScriptTypes,\n modulesWindows,\n namespace,\n outputDirectory,\n schema,\n }: Options,\n {/*generators,*/ test}: Config,\n): boolean {\n schemaValidator.validate(schema);\n\n const componentOutputdir = path.join(\n outputDirectory,\n 'react/components',\n libraryName,\n );\n\n const generatedFiles = new Map<string, string>();\n\n generatedFiles.set(\n path.join(outputDirectory, '.clang-format'),\n 'DisableFormat: true\\nSortIncludes: false',\n );\n\n const generateNM2 = createNM2Generator({\n methodOnly,\n namespace,\n });\n\n const generateJsiModuleH = require(path.resolve(\n rncodegenPath,\n 'lib/generators/modules/GenerateModuleH',\n )).generate;\n const generateJsiModuleCpp = require(path.resolve(\n rncodegenPath,\n 'lib/generators/modules/GenerateModuleCpp',\n )).generate;\n const generatorPropsH = require(path.resolve(\n rncodegenPath,\n 'lib/generators/components/GeneratePropsH',\n )).generate;\n const generatorPropsCPP = require(path.resolve(\n rncodegenPath,\n 'lib/generators/components/GeneratePropsCPP',\n )).generate;\n const generatorShadowNodeH = require(path.resolve(\n rncodegenPath,\n 'lib/generators/components/GenerateShadowNodeH',\n )).generate;\n const generatorShadowNodeCPP = require(path.resolve(\n rncodegenPath,\n 'lib/generators/components/GenerateShadowNodeCPP',\n )).generate;\n const generatorComponentDescriptorH = require(path.resolve(\n rncodegenPath,\n 'lib/generators/components/GenerateComponentDescriptorH',\n )).generate;\n const generatorEventEmitterH = require(path.resolve(\n rncodegenPath,\n 'lib/generators/components/GenerateEventEmitterH',\n )).generate;\n const generatorEventEmitterCPP = require(path.resolve(\n rncodegenPath,\n 'lib/generators/components/GenerateEventEmitterCpp',\n )).generate;\n const generatorStateCPP = require(path.resolve(\n rncodegenPath,\n 'lib/generators/components/GenerateStateCpp',\n )).generate;\n const generatorStateH = require(path.resolve(\n rncodegenPath,\n 'lib/generators/components/GenerateStateH',\n )).generate;\n\n const moduleGenerators = [];\n\n if (modulesWindows) {\n moduleGenerators.push(generateNM2);\n }\n\n if (modulesCxx) {\n moduleGenerators.push(generateJsiModuleH);\n moduleGenerators.push(generateJsiModuleCpp);\n }\n\n if (modulesTypeScriptTypes) {\n moduleGenerators.push(generateTypeScript);\n }\n\n moduleGenerators.forEach(generator => {\n const generated: Map<string, string> = generator(\n libraryName,\n schema,\n moduleSpecName,\n );\n normalizeFileMap(generated, outputDirectory, generatedFiles);\n });\n\n if (\n Object.keys(schema.modules).some(\n moduleName => schema.modules[moduleName].type === 'Component',\n )\n ) {\n const componentGenerators = [\n generatorComponentDescriptorH,\n generatorEventEmitterCPP,\n generatorEventEmitterH,\n generatorPropsCPP,\n generatorPropsH,\n generatorShadowNodeCPP,\n generatorShadowNodeH,\n generatorStateCPP,\n generatorStateH,\n ];\n\n componentGenerators.forEach(generator => {\n const generated: Map<string, string> = generator(\n libraryName,\n schema,\n moduleSpecName,\n );\n normalizeFileMap(generated, componentOutputdir, generatedFiles);\n });\n }\n\n if (test === true) {\n return checkFilesForChanges(generatedFiles, outputDirectory);\n }\n\n return writeMapToFiles(generatedFiles, outputDirectory);\n}\n\nexport type CodeGenOptions = {\n file?: string;\n files?: string[];\n libraryName: string;\n methodOnly: boolean;\n modulesCxx: boolean;\n modulesTypeScriptTypes: boolean;\n modulesWindows: boolean;\n namespace: string;\n outputDirectory: string;\n test: boolean;\n};\n\nexport function runCodeGen(options: CodeGenOptions): boolean {\n if (!options.file && !options.files)\n throw new Error('Must specify file or files option');\n\n const schema = options.file\n ? parseFile(options.file)\n : combineSchemas(globby.sync(options.files!));\n\n const libraryName = options.libraryName;\n const moduleSpecName = 'moduleSpecName';\n const {\n methodOnly,\n modulesCxx,\n modulesTypeScriptTypes,\n modulesWindows,\n namespace,\n outputDirectory,\n } = options;\n return generate(\n {\n libraryName,\n methodOnly,\n modulesCxx,\n moduleSpecName,\n modulesTypeScriptTypes,\n modulesWindows,\n namespace,\n outputDirectory,\n schema,\n },\n {generators: [], test: options.test},\n );\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-native-windows/codegen",
3
- "version": "0.0.0-canary.54",
3
+ "version": "0.0.0-canary.56",
4
4
  "description": "Generators for react-native-codegen targeting react-native-windows",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "repository": {
@@ -22,7 +22,7 @@
22
22
  "react-native-windows-codegen": "./bin.js"
23
23
  },
24
24
  "dependencies": {
25
- "@react-native-windows/fs": "^0.0.0-canary.17",
25
+ "@react-native-windows/fs": "^0.0.0-canary.18",
26
26
  "chalk": "^4.1.0",
27
27
  "globby": "^11.0.4",
28
28
  "mustache": "^4.0.1",
@@ -30,13 +30,13 @@
30
30
  "yargs": "^16.2.0"
31
31
  },
32
32
  "devDependencies": {
33
- "@rnw-scripts/eslint-config": "1.1.15",
34
- "@rnw-scripts/jest-unittest-config": "1.5.1",
35
- "@rnw-scripts/just-task": "2.3.6",
36
- "@rnw-scripts/ts-config": "2.0.3",
33
+ "@rnw-scripts/eslint-config": "1.1.16",
34
+ "@rnw-scripts/jest-unittest-config": "1.5.2",
35
+ "@rnw-scripts/just-task": "2.3.7",
36
+ "@rnw-scripts/ts-config": "2.0.4",
37
37
  "@types/chalk": "^2.2.0",
38
38
  "@types/jest": "^29.2.2",
39
- "@types/node": "^14.14.22",
39
+ "@types/node": "^16.0.0",
40
40
  "@types/yargs": "16.0.0",
41
41
  "@typescript-eslint/eslint-plugin": "^5.30.5",
42
42
  "@typescript-eslint/parser": "^5.30.5",
@@ -66,6 +66,6 @@
66
66
  },
67
67
  "promoteRelease": true,
68
68
  "engines": {
69
- "node": ">= 14"
69
+ "node": ">= 16"
70
70
  }
71
71
  }
package/src/index.ts CHANGED
@@ -37,7 +37,7 @@ function getParser(isTypeScript: boolean): Parser {
37
37
 
38
38
  const schemaValidator = require(path.resolve(
39
39
  rncodegenPath,
40
- 'lib/schemaValidator',
40
+ 'lib/SchemaValidator',
41
41
  ));
42
42
 
43
43
  interface Options {