@ibyar/cli 3.1.1 → 5.0.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.
- package/LICENSE +1 -1
- package/compiler/compiler.d.ts +1 -1
- package/compiler/compiler.d.ts.map +1 -1
- package/compiler/compiler.js +1 -1
- package/compiler/compiler.js.map +1 -1
- package/package.json +14 -12
- package/transformer/after-declarations-component.d.ts +1 -1
- package/transformer/after-declarations-component.d.ts.map +1 -1
- package/transformer/after-declarations-component.js +1 -1
- package/transformer/after-declarations-component.js.map +1 -1
- package/transformer/after-declarations-directive.d.ts +1 -1
- package/transformer/after-declarations-directive.d.ts.map +1 -1
- package/transformer/after-declarations-directive.js +1 -1
- package/transformer/after-declarations-directive.js.map +1 -1
- package/transformer/before-component.d.ts +1 -1
- package/transformer/before-component.d.ts.map +1 -1
- package/transformer/before-component.js +1 -1
- package/transformer/before-component.js.map +1 -1
- package/transformer/before-directive.d.ts +1 -1
- package/transformer/before-directive.d.ts.map +1 -1
- package/transformer/before-directive.js +1 -1
- package/transformer/before-directive.js.map +1 -1
- package/transformer/factory.d.ts +1 -1
- package/transformer/factory.d.ts.map +1 -1
- package/transformer/factory.js +1 -1
- package/transformer/factory.js.map +1 -1
- package/transformer/helpers.d.ts +8 -1
- package/transformer/helpers.d.ts.map +1 -1
- package/transformer/helpers.js +11 -1
- package/transformer/helpers.js.map +1 -1
- package/transformer/modules.d.ts +5 -5
- package/transformer/modules.d.ts.map +1 -1
- package/transformer/modules.js.map +1 -1
- package/transformer/scan-directives.d.ts +1 -1
- package/transformer/scan-directives.d.ts.map +1 -1
- package/transformer/scan-directives.js +1 -1
- package/transformer/scan-directives.js.map +1 -1
- package/webpack/loader.js +1 -1
- package/webpack/loader.js.map +1 -1
package/LICENSE
CHANGED
package/compiler/compiler.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import '../directives/register.js';
|
|
2
|
-
import ts from 'typescript/lib/tsserverlibrary.js';
|
|
2
|
+
import ts from '@typescript/typescript6/lib/tsserverlibrary.js';
|
|
3
3
|
export declare function getTransformers(program: ts.Program): ts.CustomTransformers;
|
|
4
4
|
export declare function scanDirectives(program: ts.Program): void;
|
|
5
5
|
export declare function scanDirectivesOnceAsTransformer(): (program: ts.Program) => (context: ts.TransformationContext) => ts.Transformer<ts.SourceFile>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../../src/cli/compiler/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,CAAC;AACnC,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../../src/cli/compiler/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,CAAC;AACnC,OAAO,EAAE,MAAM,gDAAgD,CAAC;AAShE,wBAAgB,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,kBAAkB,CAY1E;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,QAEjD;AAED,wBAAgB,+BAA+B,KAGtC,SAAS,EAAE,CAAC,OAAO,eADO,EAAE,CAAC,qBAAqB,KAAG,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,CAS1F;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,QAG9C;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,eAAe,QAIjF;AAoBD,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,iBAAiB,QAejF;AAID,wBAAgB,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,QAcjD;AAED,wBAAgB,8CAA8C,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC,eAAe,GAAG,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,wCAAwC,GAAG,SAAS,EAAE,4BAA4B,CAAC,EAAE,SAAS,EAAE,CAAC,UAAU,EAAE,EAAE,iBAAiB,CAAC,EAAE,SAAS,EAAE,CAAC,gBAAgB,EAAE,GAAG,SAAS,+CAKtW;AAyCD,wBAAgB,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,iBAAiB,QAMhF;AAED,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,iBAAiB,QAMxF;AAED,wBAAgB,aAAa,WAkB5B;AAED,wBAAgB,WAAW,SAW1B;AAED,wBAAgB,mBAAmB,SAWlC"}
|
package/compiler/compiler.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import '../directives/register.js';
|
|
2
|
-
import ts from 'typescript/lib/tsserverlibrary.js';
|
|
2
|
+
import ts from '@typescript/typescript6/lib/tsserverlibrary.js';
|
|
3
3
|
import { afterDeclarationsCompileComponentOptions } from '../transformer/after-declarations-component.js';
|
|
4
4
|
import { afterDeclarationsCompileDirectiveOptions } from '../transformer/after-declarations-directive.js';
|
|
5
5
|
import { beforeCompileComponentOptions } from '../transformer/before-component.js';
|
package/compiler/compiler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../../src/cli/compiler/compiler.ts"],"names":[],"mappings":"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","sourcesContent":["import '../directives/register.js';\nimport ts from 'typescript/lib/tsserverlibrary.js';\nimport { afterDeclarationsCompileComponentOptions } from '../transformer/after-declarations-component.js';\nimport { afterDeclarationsCompileDirectiveOptions } from '../transformer/after-declarations-directive.js';\nimport { beforeCompileComponentOptions } from '../transformer/before-component.js';\nimport { beforeCompileDirectiveOptions } from '../transformer/before-directive.js';\nimport { scanDirectivesTypeVisitor } from '../transformer/scan-directives.js';\nimport { dirname, join, resolve, relative } from 'path';\nimport { existsSync } from 'fs';\n\nexport function getTransformers(program: ts.Program): ts.CustomTransformers {\n\treturn {\n\t\tbefore: [\n\t\t\tbeforeCompileDirectiveOptions(program),\n\t\t\tbeforeCompileComponentOptions(program),\n\t\t],\n\t\tafter: [],\n\t\tafterDeclarations: [\n\t\t\tafterDeclarationsCompileComponentOptions(program) as ts.TransformerFactory<ts.SourceFile | ts.Bundle>,\n\t\t\tafterDeclarationsCompileDirectiveOptions(program) as ts.TransformerFactory<ts.SourceFile | ts.Bundle>,\n\t\t],\n\t};\n}\n\nexport function scanDirectives(program: ts.Program) {\n\tprogram.getSourceFiles().forEach(scanDirectivesTypeVisitor);\n}\n\nexport function scanDirectivesOnceAsTransformer() {\n\tlet scanDone = false;\n\tlet ignoreTransformer = (context: ts.TransformationContext): ts.Transformer<ts.SourceFile> => sourceFile => sourceFile;\n\treturn (program: ts.Program) => {\n\t\tif (scanDone) {\n\t\t\treturn ignoreTransformer;\n\t\t}\n\t\tscanDone = true;\n\t\tscanDirectives(program);\n\t\treturn ignoreTransformer;\n\t};\n}\n\nexport function emitProgram(program: ts.Program) {\n\tscanDirectives(program);\n\tprogram.emit(undefined, undefined, undefined, undefined, getTransformers(program));\n}\n\nexport function compileFiles(files: readonly string[], options: ts.CompilerOptions) {\n\tconst host = ts.createCompilerHost(options);\n\tconst program = ts.createProgram(files, options, host);\n\temitProgram(program);\n}\n\nconst formatHost: ts.FormatDiagnosticsHost = {\n\tgetCanonicalFileName: path => path,\n\tgetCurrentDirectory: ts.sys.getCurrentDirectory,\n\tgetNewLine: () => ts.sys.newLine\n};\n\nfunction reportDiagnostic(diagnostic: ts.Diagnostic) {\n\tconsole.error(\"Error\", diagnostic.code, \":\", ts.flattenDiagnosticMessageText(diagnostic.messageText, formatHost.getNewLine()));\n}\n\n/**\n * Prints a diagnostic every time the watch status changes.\n * This is mainly for messages like \"Starting compilation\" or \"Compilation completed\".\n */\nfunction reportWatchStatusChanged(diagnostic: ts.Diagnostic) {\n\tconsole.info(ts.formatDiagnostic(diagnostic, formatHost));\n}\n\nexport function compileAndWatchFiles(configPath: string, cmd: ts.ParsedCommandLine) {\n\tconst createProgram = ts.createSemanticDiagnosticsBuilderProgram;\n\tconst host = ts.createWatchCompilerHost(\n\t\tconfigPath,\n\t\tcmd.options,\n\t\tts.sys,\n\t\tcreateProgram,\n\t\treportDiagnostic,\n\t\treportWatchStatusChanged,\n\t\tcmd.watchOptions,\n\t);\n\tconst programFactory = ts.createWatchProgram(host);\n\tconst programBuilder = programFactory.getProgram();\n\tconst program = programBuilder.getProgram();\n\temitProgram(program);\n}\n\ntype ProgramPatch = ts.Program & { __emit: (targetSourceFile?: ts.SourceFile, writeFile?: ts.WriteFileCallback, cancellationToken?: ts.CancellationToken, emitOnlyDtsFiles?: boolean, customTransformers?: ts.CustomTransformers) => ts.EmitResult };\n\nexport function patchProgram(tsProgram: ts.Program) {\n\tconst program = tsProgram as ProgramPatch;\n\tprogram.__emit = program.emit;\n\tconst programTransformers = getTransformers(program);\n\tprogram.emit = (targetSourceFile?: ts.SourceFile, writeFile?: ts.WriteFileCallback, cancellationToken?: ts.CancellationToken, emitOnlyDtsFiles?: boolean, customTransformers?: ts.CustomTransformers): ts.EmitResult => {\n\t\tif (!customTransformers) {\n\t\t\treturn program.__emit(targetSourceFile, writeFile, cancellationToken, emitOnlyDtsFiles, programTransformers);\n\t\t}\n\t\treturn program.__emit(targetSourceFile, writeFile, cancellationToken, emitOnlyDtsFiles, {\n\t\t\tbefore: [...(customTransformers?.before ?? []), ...programTransformers.before!],\n\t\t\tafter: [...(customTransformers?.after ?? []), ...programTransformers.after!],\n\t\t\tafterDeclarations: [...(customTransformers?.afterDeclarations ?? []), ...programTransformers.afterDeclarations!],\n\t\t});\n\t};\n}\n\nexport function createEmitAndSemanticDiagnosticsBuilderProgram(rootNames: readonly string[] | undefined, options: ts.CompilerOptions | undefined, host?: ts.CompilerHost, oldProgram?: ts.EmitAndSemanticDiagnosticsBuilderProgram | undefined, configFileParsingDiagnostics?: readonly ts.Diagnostic[], projectReferences?: readonly ts.ProjectReference[] | undefined) {\n\tconst program = ts.createEmitAndSemanticDiagnosticsBuilderProgram(rootNames, options, host, oldProgram, configFileParsingDiagnostics, projectReferences);\n\tscanDirectives(program.getProgram());\n\tpatchProgram(program.getProgram());\n\treturn program;\n}\n\n\nconst diagHost = {\n\tgetCanonicalFileName: function (fileName: string) {\n\t\treturn ts.sys.resolvePath(fileName)\n\t},\n\tgetCurrentDirectory: function () {\n\t\treturn ts.sys.getCurrentDirectory();\n\t},\n\tgetNewLine: function () {\n\t\treturn ts.sys.newLine;\n\t}\n};\n\nfunction getTime() {\n\tconst date = new Date();\n\treturn `[${date.toLocaleTimeString('en-US')}]`;\n}\n\nfunction reportDiag(diag: ts.Diagnostic) {\n\tlet output = ts.sys.writeOutputIsTTY?.() ?\n\t\tts.formatDiagnosticsWithColorAndContext([diag], diagHost) :\n\t\tts.formatDiagnostic(diag, diagHost);\n\toutput = output.replace(/^[\\r\\n]+/, '').replace(/[\\r\\n]+$/, '');\n\tts.sys.write(`${getTime()} ${output}` + '\\n');\n}\n\nfunction reportError(errorCount: number, filesInError: (ts.ReportFileInError | undefined)[]) {\n\tts.sys.write(`Error count: ${errorCount}\\n`);\n\tfilesInError.forEach(error => ts.sys.write(`Error file: ${error?.fileName}(${error?.line})\\n`));\n}\n\nfunction printProjects(solution: ts.SolutionBuilder<ts.EmitAndSemanticDiagnosticsBuilderProgram>) {\n\tconst projects = (solution as any)?.getBuildOrder() as string[];\n\tif (Array.isArray(projects) && projects?.length) {\n\t\tconsole.log(`${getTime()} Projects in this build: `);\n\t\tprojects.forEach(project => console.log(`\\t* ${relative(process.cwd(), project)}`));\n\t}\n}\n\nexport function compileSolution(configFilePath: string, cmd: ts.ParsedCommandLine) {\n\tconst rootNames = [dirname(configFilePath)];\n\tconst solutionHost = ts.createSolutionBuilderHost(ts.sys, createEmitAndSemanticDiagnosticsBuilderProgram, reportDiag, reportDiag, reportError);\n\tconst solution = ts.createSolutionBuilder(solutionHost, rootNames, {});\n\tprintProjects(solution);\n\tsolution.build();\n}\n\nexport function compileSolutionAndWatch(configFilePath: string, cmd: ts.ParsedCommandLine) {\n\tconst rootNames = [dirname(configFilePath)];\n\tconst solutionHost = ts.createSolutionBuilderWithWatchHost(ts.sys, createEmitAndSemanticDiagnosticsBuilderProgram, reportDiag, reportDiag, reportDiag);\n\tconst solution = ts.createSolutionBuilderWithWatch(solutionHost, rootNames, {}, cmd.watchOptions);\n\tprintProjects(solution);\n\tsolution.build();\n}\n\nexport function getConfigPath() {\n\tconst args = process.argv.slice(2);\n\tlet tsconfig = args.filter(arg => arg.includes('tsconfig'))[0];\n\tif (!tsconfig && args.length > 1 /** -b */) {\n\t\tconst path = join(args.at(-1)!, 'tsconfig.json');\n\t\tif (existsSync(path)) {\n\t\t\ttsconfig = resolve(path);\n\t\t}\n\t}\n\tconst configPath = ts.findConfigFile(\n\t\t'./',\t\t\t/*searchPath*/\n\t\tts.sys.fileExists,\n\t\ttsconfig ?? 'tsconfig.json'\n\t);\n\tif (!configPath) {\n\t\tthrow new Error(\"Could not find a valid 'tsconfig.json'.\");\n\t}\n\treturn configPath;\n}\n\nexport function compileArgs() {\n\tconst configPath = getConfigPath();\n\tconst cmd = ts.getParsedCommandLineOfConfigFile(configPath, {}, ts.sys as any);\n\tif (!cmd) {\n\t\treturn;\n\t}\n\tif (cmd.projectReferences?.length) {\n\t\tcompileSolution(configPath, cmd);\n\t} else {\n\t\tcompileFiles(cmd.fileNames, cmd.options);\n\t}\n}\n\nexport function compileAndWatchArgs() {\n\tconst configPath = getConfigPath();\n\tconst cmd = ts.getParsedCommandLineOfConfigFile(configPath, {}, ts.sys as any);\n\tif (!cmd) {\n\t\treturn;\n\t}\n\tif (cmd.projectReferences?.length) {\n\t\tcompileSolutionAndWatch(configPath, cmd);\n\t} else {\n\t\tcompileAndWatchFiles(configPath, cmd);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../../src/cli/compiler/compiler.ts"],"names":[],"mappings":"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","sourcesContent":["import '../directives/register.js';\nimport ts from '@typescript/typescript6/lib/tsserverlibrary.js';\nimport { afterDeclarationsCompileComponentOptions } from '../transformer/after-declarations-component.js';\nimport { afterDeclarationsCompileDirectiveOptions } from '../transformer/after-declarations-directive.js';\nimport { beforeCompileComponentOptions } from '../transformer/before-component.js';\nimport { beforeCompileDirectiveOptions } from '../transformer/before-directive.js';\nimport { scanDirectivesTypeVisitor } from '../transformer/scan-directives.js';\nimport { dirname, join, resolve, relative } from 'path';\nimport { existsSync } from 'fs';\n\nexport function getTransformers(program: ts.Program): ts.CustomTransformers {\n\treturn {\n\t\tbefore: [\n\t\t\tbeforeCompileDirectiveOptions(program),\n\t\t\tbeforeCompileComponentOptions(program),\n\t\t],\n\t\tafter: [],\n\t\tafterDeclarations: [\n\t\t\tafterDeclarationsCompileComponentOptions(program) as ts.TransformerFactory<ts.SourceFile | ts.Bundle>,\n\t\t\tafterDeclarationsCompileDirectiveOptions(program) as ts.TransformerFactory<ts.SourceFile | ts.Bundle>,\n\t\t],\n\t};\n}\n\nexport function scanDirectives(program: ts.Program) {\n\tprogram.getSourceFiles().forEach(scanDirectivesTypeVisitor);\n}\n\nexport function scanDirectivesOnceAsTransformer() {\n\tlet scanDone = false;\n\tlet ignoreTransformer = (context: ts.TransformationContext): ts.Transformer<ts.SourceFile> => sourceFile => sourceFile;\n\treturn (program: ts.Program) => {\n\t\tif (scanDone) {\n\t\t\treturn ignoreTransformer;\n\t\t}\n\t\tscanDone = true;\n\t\tscanDirectives(program);\n\t\treturn ignoreTransformer;\n\t};\n}\n\nexport function emitProgram(program: ts.Program) {\n\tscanDirectives(program);\n\tprogram.emit(undefined, undefined, undefined, undefined, getTransformers(program));\n}\n\nexport function compileFiles(files: readonly string[], options: ts.CompilerOptions) {\n\tconst host = ts.createCompilerHost(options);\n\tconst program = ts.createProgram(files, options, host);\n\temitProgram(program);\n}\n\nconst formatHost: ts.FormatDiagnosticsHost = {\n\tgetCanonicalFileName: path => path,\n\tgetCurrentDirectory: ts.sys.getCurrentDirectory,\n\tgetNewLine: () => ts.sys.newLine\n};\n\nfunction reportDiagnostic(diagnostic: ts.Diagnostic) {\n\tconsole.error(\"Error\", diagnostic.code, \":\", ts.flattenDiagnosticMessageText(diagnostic.messageText, formatHost.getNewLine()));\n}\n\n/**\n * Prints a diagnostic every time the watch status changes.\n * This is mainly for messages like \"Starting compilation\" or \"Compilation completed\".\n */\nfunction reportWatchStatusChanged(diagnostic: ts.Diagnostic) {\n\tconsole.info(ts.formatDiagnostic(diagnostic, formatHost));\n}\n\nexport function compileAndWatchFiles(configPath: string, cmd: ts.ParsedCommandLine) {\n\tconst createProgram = ts.createSemanticDiagnosticsBuilderProgram;\n\tconst host = ts.createWatchCompilerHost(\n\t\tconfigPath,\n\t\tcmd.options,\n\t\tts.sys,\n\t\tcreateProgram,\n\t\treportDiagnostic,\n\t\treportWatchStatusChanged,\n\t\tcmd.watchOptions,\n\t);\n\tconst programFactory = ts.createWatchProgram(host);\n\tconst programBuilder = programFactory.getProgram();\n\tconst program = programBuilder.getProgram();\n\temitProgram(program);\n}\n\ntype ProgramPatch = ts.Program & { __emit: (targetSourceFile?: ts.SourceFile, writeFile?: ts.WriteFileCallback, cancellationToken?: ts.CancellationToken, emitOnlyDtsFiles?: boolean, customTransformers?: ts.CustomTransformers) => ts.EmitResult };\n\nexport function patchProgram(tsProgram: ts.Program) {\n\tconst program = tsProgram as ProgramPatch;\n\tprogram.__emit = program.emit;\n\tconst programTransformers = getTransformers(program);\n\tprogram.emit = (targetSourceFile?: ts.SourceFile, writeFile?: ts.WriteFileCallback, cancellationToken?: ts.CancellationToken, emitOnlyDtsFiles?: boolean, customTransformers?: ts.CustomTransformers): ts.EmitResult => {\n\t\tif (!customTransformers) {\n\t\t\treturn program.__emit(targetSourceFile, writeFile, cancellationToken, emitOnlyDtsFiles, programTransformers);\n\t\t}\n\t\treturn program.__emit(targetSourceFile, writeFile, cancellationToken, emitOnlyDtsFiles, {\n\t\t\tbefore: [...(customTransformers?.before ?? []), ...programTransformers.before!],\n\t\t\tafter: [...(customTransformers?.after ?? []), ...programTransformers.after!],\n\t\t\tafterDeclarations: [...(customTransformers?.afterDeclarations ?? []), ...programTransformers.afterDeclarations!],\n\t\t});\n\t};\n}\n\nexport function createEmitAndSemanticDiagnosticsBuilderProgram(rootNames: readonly string[] | undefined, options: ts.CompilerOptions | undefined, host?: ts.CompilerHost, oldProgram?: ts.EmitAndSemanticDiagnosticsBuilderProgram | undefined, configFileParsingDiagnostics?: readonly ts.Diagnostic[], projectReferences?: readonly ts.ProjectReference[] | undefined) {\n\tconst program = ts.createEmitAndSemanticDiagnosticsBuilderProgram(rootNames, options, host, oldProgram, configFileParsingDiagnostics, projectReferences);\n\tscanDirectives(program.getProgram());\n\tpatchProgram(program.getProgram());\n\treturn program;\n}\n\n\nconst diagHost = {\n\tgetCanonicalFileName: function (fileName: string) {\n\t\treturn ts.sys.resolvePath(fileName)\n\t},\n\tgetCurrentDirectory: function () {\n\t\treturn ts.sys.getCurrentDirectory();\n\t},\n\tgetNewLine: function () {\n\t\treturn ts.sys.newLine;\n\t}\n};\n\nfunction getTime() {\n\tconst date = new Date();\n\treturn `[${date.toLocaleTimeString('en-US')}]`;\n}\n\nfunction reportDiag(diag: ts.Diagnostic) {\n\tlet output = ts.sys.writeOutputIsTTY?.() ?\n\t\tts.formatDiagnosticsWithColorAndContext([diag], diagHost) :\n\t\tts.formatDiagnostic(diag, diagHost);\n\toutput = output.replace(/^[\\r\\n]+/, '').replace(/[\\r\\n]+$/, '');\n\tts.sys.write(`${getTime()} ${output}` + '\\n');\n}\n\nfunction reportError(errorCount: number, filesInError: (ts.ReportFileInError | undefined)[]) {\n\tts.sys.write(`Error count: ${errorCount}\\n`);\n\tfilesInError.forEach(error => ts.sys.write(`Error file: ${error?.fileName}(${error?.line})\\n`));\n}\n\nfunction printProjects(solution: ts.SolutionBuilder<ts.EmitAndSemanticDiagnosticsBuilderProgram>) {\n\tconst projects = (solution as any)?.getBuildOrder() as string[];\n\tif (Array.isArray(projects) && projects?.length) {\n\t\tconsole.log(`${getTime()} Projects in this build: `);\n\t\tprojects.forEach(project => console.log(`\\t* ${relative(process.cwd(), project)}`));\n\t}\n}\n\nexport function compileSolution(configFilePath: string, cmd: ts.ParsedCommandLine) {\n\tconst rootNames = [dirname(configFilePath)];\n\tconst solutionHost = ts.createSolutionBuilderHost(ts.sys, createEmitAndSemanticDiagnosticsBuilderProgram, reportDiag, reportDiag, reportError);\n\tconst solution = ts.createSolutionBuilder(solutionHost, rootNames, {});\n\tprintProjects(solution);\n\tsolution.build();\n}\n\nexport function compileSolutionAndWatch(configFilePath: string, cmd: ts.ParsedCommandLine) {\n\tconst rootNames = [dirname(configFilePath)];\n\tconst solutionHost = ts.createSolutionBuilderWithWatchHost(ts.sys, createEmitAndSemanticDiagnosticsBuilderProgram, reportDiag, reportDiag, reportDiag);\n\tconst solution = ts.createSolutionBuilderWithWatch(solutionHost, rootNames, {}, cmd.watchOptions);\n\tprintProjects(solution);\n\tsolution.build();\n}\n\nexport function getConfigPath() {\n\tconst args = process.argv.slice(2);\n\tlet tsconfig = args.filter(arg => arg.includes('tsconfig'))[0];\n\tif (!tsconfig && args.length > 1 /** -b */) {\n\t\tconst path = join(args.at(-1)!, 'tsconfig.json');\n\t\tif (existsSync(path)) {\n\t\t\ttsconfig = resolve(path);\n\t\t}\n\t}\n\tconst configPath = ts.findConfigFile(\n\t\t'./',\t\t\t/*searchPath*/\n\t\tts.sys.fileExists,\n\t\ttsconfig ?? 'tsconfig.json'\n\t);\n\tif (!configPath) {\n\t\tthrow new Error(\"Could not find a valid 'tsconfig.json'.\");\n\t}\n\treturn configPath;\n}\n\nexport function compileArgs() {\n\tconst configPath = getConfigPath();\n\tconst cmd = ts.getParsedCommandLineOfConfigFile(configPath, {}, ts.sys as any);\n\tif (!cmd) {\n\t\treturn;\n\t}\n\tif (cmd.projectReferences?.length) {\n\t\tcompileSolution(configPath, cmd);\n\t} else {\n\t\tcompileFiles(cmd.fileNames, cmd.options);\n\t}\n}\n\nexport function compileAndWatchArgs() {\n\tconst configPath = getConfigPath();\n\tconst cmd = ts.getParsedCommandLineOfConfigFile(configPath, {}, ts.sys as any);\n\tif (!cmd) {\n\t\treturn;\n\t}\n\tif (cmd.projectReferences?.length) {\n\t\tcompileSolutionAndWatch(configPath, cmd);\n\t} else {\n\t\tcompileAndWatchFiles(configPath, cmd);\n\t}\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ibyar/cli",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "The Ibyar/Aurora CLI tool",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/ibyar/aurora",
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
"contributors": [
|
|
17
17
|
{
|
|
18
18
|
"name": "Muhammad Salem",
|
|
19
|
-
"email": "salem.ebo@gmail.com"
|
|
19
|
+
"email": "salem.ebo@gmail.com",
|
|
20
|
+
"url": "https://github.com/muhammad-salem"
|
|
20
21
|
}
|
|
21
22
|
],
|
|
22
23
|
"main": "./index.js",
|
|
@@ -36,17 +37,18 @@
|
|
|
36
37
|
"access": "public"
|
|
37
38
|
},
|
|
38
39
|
"dependencies": {
|
|
39
|
-
"@ibyar/core": "^
|
|
40
|
-
"@ibyar/decorators": "^
|
|
41
|
-
"@ibyar/directives": "^
|
|
42
|
-
"@ibyar/elements": "^
|
|
43
|
-
"@ibyar/expressions": "^
|
|
44
|
-
"@ibyar/pipes": "^
|
|
45
|
-
"
|
|
46
|
-
"
|
|
40
|
+
"@ibyar/core": "^5.0.0",
|
|
41
|
+
"@ibyar/decorators": "^5.0.0",
|
|
42
|
+
"@ibyar/directives": "^5.0.0",
|
|
43
|
+
"@ibyar/elements": "^5.0.0",
|
|
44
|
+
"@ibyar/expressions": "^5.0.0",
|
|
45
|
+
"@ibyar/pipes": "^5.0.0",
|
|
46
|
+
"@typescript/typescript6": "^6.0.2",
|
|
47
|
+
"tslib": "^2.9.1",
|
|
48
|
+
"typescript": "^7.0.2"
|
|
47
49
|
},
|
|
48
50
|
"devDependencies": {
|
|
49
|
-
"@types/node": "
|
|
51
|
+
"@types/node": "24.1.0"
|
|
50
52
|
},
|
|
51
53
|
"scripts": {
|
|
52
54
|
"build": "tsc --build --verbose",
|
|
@@ -77,5 +79,5 @@
|
|
|
77
79
|
"shadow-dom",
|
|
78
80
|
"typescript"
|
|
79
81
|
],
|
|
80
|
-
"gitHead": "
|
|
82
|
+
"gitHead": "c0e54a3bb5807191ee8d18c55835f4dee535d78d"
|
|
81
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"after-declarations-component.d.ts","sourceRoot":"","sources":["../../../src/cli/transformer/after-declarations-component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"after-declarations-component.d.ts","sourceRoot":"","sources":["../../../src/cli/transformer/after-declarations-component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,gDAAgD,CAAC;AAKhE;;;;GAIG;AACH,wBAAgB,wCAAwC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,UAAU,CAAC,CAiElH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"after-declarations-component.js","sourceRoot":"","sources":["../../../src/cli/transformer/after-declarations-component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"after-declarations-component.js","sourceRoot":"","sources":["../../../src/cli/transformer/after-declarations-component.ts"],"names":[],"mappings":"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","sourcesContent":["import ts from '@typescript/typescript6/lib/tsserverlibrary.js';\nimport { createStaticPropertyViewType, updateModuleTypeWithComponentView } from './factory.js';\nimport { moduleManger, ViewInfo } from './modules.js';\n\n\n/**\n * search for `@Component({})` and update definition files\n * @param program a ts program \n * @returns a transformer factory of source file\n */\nexport function afterDeclarationsCompileComponentOptions(program: ts.Program): ts.TransformerFactory<ts.SourceFile> {\n\tconst typeChecker = program.getTypeChecker();\n\treturn (context: ts.TransformationContext): ts.Transformer<ts.SourceFile> => {\n\t\treturn sourceFile => {\n\t\t\tconst moduleInfo = moduleManger.get(sourceFile.fileName);\n\t\t\tif (!moduleInfo?.classes?.length) {\n\t\t\t\treturn sourceFile;\n\t\t\t}\n\n\t\t\tconst classes = moduleInfo.classes.filter(c => c.type === 'component');\n\n\t\t\tconst sourceViewInfos: ViewInfo[] = classes.flatMap(c => c.views);\n\t\t\tconst updateSourceFile = ts.visitNode(sourceFile, (node: ts.SourceFile) => {\n\t\t\t\treturn ts.visitEachChild(node, (childNode) => {\n\t\t\t\t\tif (!ts.isClassDeclaration(childNode)) {\n\t\t\t\t\t\treturn childNode;\n\t\t\t\t\t}\n\t\t\t\t\tconst info = classes.find(c => c.name === childNode.name?.getText());\n\n\t\t\t\t\tif (!info) {\n\t\t\t\t\t\treturn childNode;\n\t\t\t\t\t}\n\t\t\t\t\tconst viewInfos: ViewInfo[] = info.views;\n\t\t\t\t\tconst staticMembers = viewInfos.map(viewInfo => ts.factory.createPropertyDeclaration(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tts.factory.createModifier(ts.SyntaxKind.StaticKeyword),\n\t\t\t\t\t\t\tts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword)\n\t\t\t\t\t\t],\n\t\t\t\t\t\tviewInfo.viewName,\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\tcreateStaticPropertyViewType(viewInfo.viewName),\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t)).map(staticMember => ts.setTextRange(staticMember, childNode));\n\t\t\t\t\treturn ts.factory.updateClassDeclaration(\n\t\t\t\t\t\tchildNode,\n\t\t\t\t\t\tchildNode.modifiers,\n\t\t\t\t\t\tchildNode.name,\n\t\t\t\t\t\tchildNode.typeParameters,\n\t\t\t\t\t\tchildNode.heritageClauses,\n\t\t\t\t\t\t[...staticMembers, ...childNode.members.slice()],\n\t\t\t\t\t);\n\t\t\t\t}, context);\n\t\t\t}) as ts.SourceFile;\n\t\t\tif (sourceViewInfos.length) {\n\t\t\t\tconst statements = updateSourceFile.statements?.slice() ?? [];\n\t\t\t\t// statements.push(createConstructorOfViewInterfaceDeclaration());\n\t\t\t\t// const interfaces = sourceViewInfos.map(info => {\n\t\t\t\t// \treturn ts.setTextRange(info.interFaceType, updateSourceFile);\n\t\t\t\t// });\n\t\t\t\t// statements.push(...interfaces);\n\t\t\t\t// statements.push(...updateGlobalHTMLElementTagNameMap(sourceViewInfos.map(v => ({ tagName: v.selector, viewName: v.viewName }))));\n\t\t\t\tstatements.push(...updateModuleTypeWithComponentView(classes));\n\t\t\t\treturn ts.factory.updateSourceFile(\n\t\t\t\t\tsourceFile,\n\t\t\t\t\tstatements,\n\t\t\t\t\tupdateSourceFile.isDeclarationFile,\n\t\t\t\t\tupdateSourceFile.typeReferenceDirectives,\n\t\t\t\t\tupdateSourceFile.referencedFiles,\n\t\t\t\t\tupdateSourceFile.hasNoDefaultLib,\n\t\t\t\t\tupdateSourceFile.libReferenceDirectives,\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn updateSourceFile;\n\t\t};\n\t};\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"after-declarations-directive.d.ts","sourceRoot":"","sources":["../../../src/cli/transformer/after-declarations-directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"after-declarations-directive.d.ts","sourceRoot":"","sources":["../../../src/cli/transformer/after-declarations-directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,gDAAgD,CAAC;AAKhE;;;;GAIG;AACH,wBAAgB,wCAAwC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,UAAU,CAAC,CA0BlH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"after-declarations-directive.js","sourceRoot":"","sources":["../../../src/cli/transformer/after-declarations-directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"after-declarations-directive.js","sourceRoot":"","sources":["../../../src/cli/transformer/after-declarations-directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,gDAAgD,CAAC;AAChE,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C;;;;GAIG;AACH,MAAM,UAAU,wCAAwC,CAAC,OAAmB;IAC3E,OAAO,CAAC,OAAiC,EAAiC,EAAE;QAC3E,OAAO,UAAU,CAAC,EAAE;YACnB,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACzD,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;gBAClC,OAAO,UAAU,CAAC;YACnB,CAAC;YAED,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;YACvE,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC3B,OAAO,UAAU,CAAC;YACnB,CAAC;YAED,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACxD,UAAU,CAAC,IAAI,CAAC,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5D,OAAO,EAAE,CAAC,OAAO,CAAC,gBAAgB,CACjC,UAAU,EACV,UAAU,EACV,UAAU,CAAC,iBAAiB,EAC5B,UAAU,CAAC,uBAAuB,EAClC,UAAU,CAAC,eAAe,EAC1B,UAAU,CAAC,eAAe,EAC1B,UAAU,CAAC,sBAAsB,CACjC,CAAC;QACH,CAAC,CAAC;IACH,CAAC,CAAC;AACH,CAAC","sourcesContent":["import ts from '@typescript/typescript6/lib/tsserverlibrary.js';\nimport { updateModuleTypeWithDirectives } from './factory.js';\nimport { moduleManger } from './modules.js';\n\n\n/**\n * search for `@Directive({})` and update definition files\n * @param program a ts program \n * @returns a transformer factory of source file\n */\nexport function afterDeclarationsCompileDirectiveOptions(program: ts.Program): ts.TransformerFactory<ts.SourceFile> {\n\treturn (context: ts.TransformationContext): ts.Transformer<ts.SourceFile> => {\n\t\treturn sourceFile => {\n\t\t\tconst moduleInfo = moduleManger.get(sourceFile.fileName);\n\t\t\tif (!moduleInfo?.classes?.length) {\n\t\t\t\treturn sourceFile;\n\t\t\t}\n\n\t\t\tconst classes = moduleInfo.classes.filter(c => c.type === 'directive');\n\t\t\tif (!(classes.length > 0)) {\n\t\t\t\treturn sourceFile;\n\t\t\t}\n\n\t\t\tconst statements = sourceFile.statements?.slice() ?? [];\n\t\t\tstatements.push(...updateModuleTypeWithDirectives(classes));\n\t\t\treturn ts.factory.updateSourceFile(\n\t\t\t\tsourceFile,\n\t\t\t\tstatements,\n\t\t\t\tsourceFile.isDeclarationFile,\n\t\t\t\tsourceFile.typeReferenceDirectives,\n\t\t\t\tsourceFile.referencedFiles,\n\t\t\t\tsourceFile.hasNoDefaultLib,\n\t\t\t\tsourceFile.libReferenceDirectives,\n\t\t\t);\n\t\t};\n\t};\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"before-component.d.ts","sourceRoot":"","sources":["../../../src/cli/transformer/before-component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"before-component.d.ts","sourceRoot":"","sources":["../../../src/cli/transformer/before-component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,gDAAgD,CAAC;AAmBhE;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,UAAU,CAAC,CAgNvG"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import ts from 'typescript/lib/tsserverlibrary.js';
|
|
1
|
+
import ts from '@typescript/typescript6/lib/tsserverlibrary.js';
|
|
2
2
|
import { buildExpressionNodes } from '@ibyar/core/node.js';
|
|
3
3
|
import { htmlParser } from '@ibyar/elements/node.js';
|
|
4
4
|
import { getExtendsTypeBySelector } from '../elements/tags.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"before-component.js","sourceRoot":"","sources":["../../../src/cli/transformer/before-component.ts"],"names":[],"mappings":"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","sourcesContent":["import ts from 'typescript/lib/tsserverlibrary.js';\nimport { buildExpressionNodes } from '@ibyar/core/node.js';\nimport { htmlParser } from '@ibyar/elements/node.js';\nimport { getExtendsTypeBySelector } from '../elements/tags.js';\nimport {\n\tcreateConstructorOfViewInterfaceDeclaration,\n\tconvertToProperties, createInterfaceType,\n\tcreateSignalsAssignment\n} from './factory.js';\nimport { moduleManger, ViewInfo, ClassInfo } from './modules.js';\nimport {\n\tgetInputs, getOutputs, scanSignals,\n\tgetTextValueFormLiteralProperty,\n\tisComponentDecorator\n} from './helpers.js';\nimport { SIGNAL_NAMES, SignalDetails, SignalKey } from './signals.js';\n\n\n\n/**\n * search for `@Component({})` and precompile the source code\n * @param program a ts program \n * @returns a transformer factory of source file\n */\nexport function beforeCompileComponentOptions(program: ts.Program): ts.TransformerFactory<ts.SourceFile> {\n\tconst typeChecker = program.getTypeChecker();\n\treturn (context: ts.TransformationContext): ts.Transformer<ts.SourceFile> => {\n\t\treturn sourceFile => {\n\t\t\tlet visitSourceFile = false;\n\t\t\tlet componentPropertyName: string;\n\t\t\tconst signals: SignalDetails = {};\n\t\t\tfor (const statement of sourceFile.statements) {\n\t\t\t\tif (ts.isImportDeclaration(statement)) {\n\t\t\t\t\tconst modulePath = statement.moduleSpecifier.getText();\n\t\t\t\t\tif (statement.importClause && modulePath.includes('@ibyar/aurora') || modulePath.includes('@ibyar/core')) {\n\t\t\t\t\t\tstatement.importClause?.namedBindings?.forEachChild(importSpecifier => {\n\t\t\t\t\t\t\tif (ts.isImportSpecifier(importSpecifier)) {\n\t\t\t\t\t\t\t\tconst importName = importSpecifier.propertyName?.getText() ?? importSpecifier.name.getText();\n\t\t\t\t\t\t\t\tif (importName === 'Component') {\n\t\t\t\t\t\t\t\t\tvisitSourceFile = true;\n\t\t\t\t\t\t\t\t\tcomponentPropertyName = importSpecifier.name.getText();\n\t\t\t\t\t\t\t\t} else if (SIGNAL_NAMES.includes(importName)) {\n\t\t\t\t\t\t\t\t\tsignals[importName as SignalKey] = importSpecifier.name.getText();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (visitSourceFile) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!visitSourceFile) {\n\t\t\t\treturn sourceFile;\n\t\t\t}\n\n\t\t\tconst classes: ClassInfo[] = [];\n\t\t\tconst updateSourceFile = ts.visitNode(sourceFile, (node: ts.SourceFile) => {\n\t\t\t\treturn ts.visitEachChild(node, (childNode) => {\n\t\t\t\t\tlet decoratorArguments: ts.ObjectLiteralElementLike[] | undefined;\n\t\t\t\t\tif (ts.isClassDeclaration(childNode)) {\n\t\t\t\t\t\tconst decorators = ts.getDecorators(childNode);\n\t\t\t\t\t\tif (!decorators || decorators.length === 0) {\n\t\t\t\t\t\t\treturn childNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst hasDecorator = decorators.some(decorator => isComponentDecorator(decorator, componentPropertyName));\n\t\t\t\t\t\tif (!hasDecorator) {\n\t\t\t\t\t\t\treturn childNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst viewInfos: ViewInfo[] = [];\n\t\t\t\t\t\tconst signalMetadata = scanSignals(childNode, signals);\n\t\t\t\t\t\tconst modifiers = childNode.modifiers?.map(modifier => {\n\t\t\t\t\t\t\tif (!ts.isDecorator(modifier)) {\n\t\t\t\t\t\t\t\treturn modifier;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst updateDecoratorOptions = (option: ts.ObjectLiteralExpression) => {\n\t\t\t\t\t\t\t\tconst selector = getTextValueFormLiteralProperty(option, 'selector');\n\t\t\t\t\t\t\t\tif (!selector) {\n\t\t\t\t\t\t\t\t\tconsole.error(`Component missing selector name: ${childNode.name?.getText()}`);\n\t\t\t\t\t\t\t\t\treturn option;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst viewName = `HTML${selector.split('-')\n\t\t\t\t\t\t\t\t\t.map(name => name.replace(/^\\w/, char => char.toUpperCase()))\n\t\t\t\t\t\t\t\t\t.join('')}Element`;\n\n\n\t\t\t\t\t\t\t\tconst extendProperty = option.properties.find(prop => prop.name?.getText() === 'extend') as ts.PropertyAssignment | undefined;\n\t\t\t\t\t\t\t\tconst extend = extendProperty?.initializer.getText().substring(1, extendProperty?.initializer.getText().length - 1);\n\t\t\t\t\t\t\t\tconst extendsType = getExtendsTypeBySelector(extend);\n\n\t\t\t\t\t\t\t\tconst formAssociatedProperty = option.properties.find(prop => prop.name?.getText() === 'formAssociated') as ts.PropertyAssignment | undefined;\n\t\t\t\t\t\t\t\tconst formAssociated = formAssociatedProperty?.initializer.getText().substring(1, formAssociatedProperty?.initializer.getText().length - 1);\n\n\t\t\t\t\t\t\t\tconst disabledFeaturesInitializer = (option.properties.find(prop => prop.name?.getText() === 'disabledFeatures') as ts.PropertyAssignment | undefined)?.initializer as ts.ArrayLiteralExpression | undefined;\n\t\t\t\t\t\t\t\tlet disabledFeatures: string[] | undefined = undefined;\n\t\t\t\t\t\t\t\tif (disabledFeaturesInitializer && ts.isArrayLiteralExpression(disabledFeaturesInitializer)) {\n\t\t\t\t\t\t\t\t\tdisabledFeatures = disabledFeaturesInitializer.elements.filter(ts.isStringLiteral).map(el => el.getText(sourceFile));\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tviewInfos.push({\n\t\t\t\t\t\t\t\t\tselector,\n\t\t\t\t\t\t\t\t\tviewName,\n\t\t\t\t\t\t\t\t\textendsType,\n\t\t\t\t\t\t\t\t\tinterfaceType: createInterfaceType(viewName, extendsType),\n\t\t\t\t\t\t\t\t\tformAssociated: 'true' == formAssociated,\n\t\t\t\t\t\t\t\t\tdisabledFeatures: disabledFeatures,\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tconst stylesProperty = option.properties.find(prop => prop.name?.getText() === 'styles') as ts.PropertyAssignment | undefined;\n\t\t\t\t\t\t\t\tconst styles = stylesProperty?.initializer.getText().substring(1, stylesProperty?.initializer.getText().length - 1);\n\n\t\t\t\t\t\t\t\tconst template = option.properties.find(prop => prop.name?.getText() === 'template');\n\t\t\t\t\t\t\t\tif (template && ts.isPropertyAssignment(template) && ts.isStringLiteralLike(template.initializer)) {\n\t\t\t\t\t\t\t\t\tconst text = template?.initializer.getText().substring(1, template?.initializer.getText().length - 1);\n\t\t\t\t\t\t\t\t\tconst html = styles\n\t\t\t\t\t\t\t\t\t\t? `<style>${styles}</style>${text}`\n\t\t\t\t\t\t\t\t\t\t: text;\n\t\t\t\t\t\t\t\t\tconst domNode = htmlParser.toDomRootNode(html);\n\t\t\t\t\t\t\t\t\tbuildExpressionNodes(domNode);\n\t\t\t\t\t\t\t\t\tconst serialized = JSON.stringify(domNode);\n\t\t\t\t\t\t\t\t\tconst json = JSON.parse(serialized);\n\t\t\t\t\t\t\t\t\tconst name = ts.factory.createIdentifier('compiledTemplate');\n\t\t\t\t\t\t\t\t\tconst initializer = ts.factory.createObjectLiteralExpression(convertToProperties(json));\n\t\t\t\t\t\t\t\t\tconst update = ts.factory.updatePropertyAssignment(template, name, initializer);\n\t\t\t\t\t\t\t\t\tconst signalsOption = createSignalsAssignment(signalMetadata);\n\t\t\t\t\t\t\t\t\tdecoratorArguments = option.properties.map(prop => {\n\t\t\t\t\t\t\t\t\t\tif (template === prop) {\n\t\t\t\t\t\t\t\t\t\t\treturn update;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn prop;\n\t\t\t\t\t\t\t\t\t}).filter(prop => {\n\t\t\t\t\t\t\t\t\t\tif (prop.name?.getText(sourceFile) === 'styles') {\n\t\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t}).concat([signalsOption]);\n\t\t\t\t\t\t\t\t\treturn ts.factory.updateObjectLiteralExpression(option, decoratorArguments);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn option;\n\n\t\t\t\t\t\t\t\t// options.properties.filter((prop: ts.PropertyAssignment) => {\n\t\t\t\t\t\t\t\t// \tswitch (prop.name.getText()) {\n\t\t\t\t\t\t\t\t// \t\tcase 'template':\n\t\t\t\t\t\t\t\t// \t\tcase 'templateUrl':\n\t\t\t\t\t\t\t\t// \t\tcase 'styles':\n\t\t\t\t\t\t\t\t// \t\t\treturn true;\n\t\t\t\t\t\t\t\t// \t\tdefault: return false;\n\t\t\t\t\t\t\t\t// \t}\n\t\t\t\t\t\t\t\t// })\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst decoratorCall = modifier.expression as ts.CallExpression;\n\t\t\t\t\t\t\tconst options = decoratorCall.arguments[0];\n\t\t\t\t\t\t\tlet argumentsOption: ts.Expression | undefined;\n\t\t\t\t\t\t\tif (ts.isArrayLiteralExpression(options)) {\n\t\t\t\t\t\t\t\tconst elements: ts.Expression[] = options.elements.map(element => {\n\t\t\t\t\t\t\t\t\tif (ts.isObjectLiteralExpression(element)) {\n\t\t\t\t\t\t\t\t\t\treturn updateDecoratorOptions(element);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn element;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\targumentsOption = ts.factory.updateArrayLiteralExpression(options, elements);\n\t\t\t\t\t\t\t} else if (ts.isObjectLiteralExpression(options)) {\n\t\t\t\t\t\t\t\targumentsOption = updateDecoratorOptions(options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (argumentsOption) {\n\t\t\t\t\t\t\t\treturn ts.factory.updateDecorator(\n\t\t\t\t\t\t\t\t\tmodifier,\n\t\t\t\t\t\t\t\t\tts.factory.updateCallExpression(\n\t\t\t\t\t\t\t\t\t\tdecoratorCall,\n\t\t\t\t\t\t\t\t\t\tdecoratorCall.expression,\n\t\t\t\t\t\t\t\t\t\tdecoratorCall.typeArguments,\n\t\t\t\t\t\t\t\t\t\t[argumentsOption]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn modifier;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tclasses.push({\n\t\t\t\t\t\t\ttype: 'component',\n\t\t\t\t\t\t\tname: childNode.name?.getText() ?? '',\n\t\t\t\t\t\t\tviews: viewInfos,\n\t\t\t\t\t\t\tinputs: getInputs(childNode, typeChecker),\n\t\t\t\t\t\t\toutputs: getOutputs(childNode, typeChecker),\n\t\t\t\t\t\t\tsignals: signalMetadata,\n\t\t\t\t\t\t});\n\t\t\t\t\t\t// const staticMembers = viewInfos.map(\n\t\t\t\t\t\t// \tviewInfo => ts.factory.createPropertyDeclaration(\n\t\t\t\t\t\t// \t\t[\n\t\t\t\t\t\t// \t\t\tts.factory.createModifier(ts.SyntaxKind.StaticKeyword),\n\t\t\t\t\t\t// \t\t\tts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword)\n\t\t\t\t\t\t// \t\t],\n\t\t\t\t\t\t// \t\tviewInfo.viewName,\n\t\t\t\t\t\t// \t\tundefined,\n\t\t\t\t\t\t// \t\tcreateStaticPropertyViewType(viewInfo.viewName),\n\t\t\t\t\t\t// \t\tundefined,\n\t\t\t\t\t\t// \t)\n\t\t\t\t\t\t// );\n\t\t\t\t\t\treturn ts.factory.updateClassDeclaration(\n\t\t\t\t\t\t\tchildNode,\n\t\t\t\t\t\t\tmodifiers ? ts.factory.createNodeArray(modifiers) : void 0,\n\t\t\t\t\t\t\tchildNode.name,\n\t\t\t\t\t\t\tchildNode.typeParameters,\n\t\t\t\t\t\t\tchildNode.heritageClauses,\n\t\t\t\t\t\t\t[/*...staticMembers,*/ ...childNode.members.slice()],\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn childNode;\n\t\t\t\t}, context);\n\t\t\t}) as ts.SourceFile;\n\t\t\tif (classes.length) {\n\t\t\t\tmoduleManger.add({ path: sourceFile.fileName, classes });\n\t\t\t\tconst statements = updateSourceFile.statements?.slice() ?? [];\n\t\t\t\tstatements.push(createConstructorOfViewInterfaceDeclaration());\n\t\t\t\tconst interfaces = classes.flatMap(s => s.views).map(info => {\n\t\t\t\t\treturn ts.setTextRange(info.interfaceType, updateSourceFile);\n\t\t\t\t});\n\t\t\t\tstatements.push(); //emit inputs and outputs for component and directives;\n\t\t\t\tstatements.push(...interfaces);\n\t\t\t\treturn ts.factory.updateSourceFile(\n\t\t\t\t\tsourceFile,\n\t\t\t\t\tstatements,\n\t\t\t\t\tupdateSourceFile.isDeclarationFile,\n\t\t\t\t\tupdateSourceFile.typeReferenceDirectives,\n\t\t\t\t\tupdateSourceFile.referencedFiles,\n\t\t\t\t\tupdateSourceFile.hasNoDefaultLib,\n\t\t\t\t\tupdateSourceFile.libReferenceDirectives,\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn updateSourceFile;\n\t\t};\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"before-component.js","sourceRoot":"","sources":["../../../src/cli/transformer/before-component.ts"],"names":[],"mappings":"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","sourcesContent":["import ts from '@typescript/typescript6/lib/tsserverlibrary.js';\nimport { buildExpressionNodes } from '@ibyar/core/node.js';\nimport { htmlParser } from '@ibyar/elements/node.js';\nimport { getExtendsTypeBySelector } from '../elements/tags.js';\nimport {\n\tcreateConstructorOfViewInterfaceDeclaration,\n\tconvertToProperties, createInterfaceType,\n\tcreateSignalsAssignment\n} from './factory.js';\nimport { moduleManger, ViewInfo, ClassInfo } from './modules.js';\nimport {\n\tgetInputs, getOutputs, scanSignals,\n\tgetTextValueFormLiteralProperty,\n\tisComponentDecorator\n} from './helpers.js';\nimport { SIGNAL_NAMES, SignalDetails, SignalKey } from './signals.js';\n\n\n\n/**\n * search for `@Component({})` and precompile the source code\n * @param program a ts program \n * @returns a transformer factory of source file\n */\nexport function beforeCompileComponentOptions(program: ts.Program): ts.TransformerFactory<ts.SourceFile> {\n\tconst typeChecker = program.getTypeChecker();\n\treturn (context: ts.TransformationContext): ts.Transformer<ts.SourceFile> => {\n\t\treturn sourceFile => {\n\t\t\tlet visitSourceFile = false;\n\t\t\tlet componentPropertyName: string;\n\t\t\tconst signals: SignalDetails = {};\n\t\t\tfor (const statement of sourceFile.statements) {\n\t\t\t\tif (ts.isImportDeclaration(statement)) {\n\t\t\t\t\tconst modulePath = statement.moduleSpecifier.getText();\n\t\t\t\t\tif (statement.importClause && modulePath.includes('@ibyar/aurora') || modulePath.includes('@ibyar/core')) {\n\t\t\t\t\t\tstatement.importClause?.namedBindings?.forEachChild(importSpecifier => {\n\t\t\t\t\t\t\tif (ts.isImportSpecifier(importSpecifier)) {\n\t\t\t\t\t\t\t\tconst importName = importSpecifier.propertyName?.getText() ?? importSpecifier.name.getText();\n\t\t\t\t\t\t\t\tif (importName === 'Component') {\n\t\t\t\t\t\t\t\t\tvisitSourceFile = true;\n\t\t\t\t\t\t\t\t\tcomponentPropertyName = importSpecifier.name.getText();\n\t\t\t\t\t\t\t\t} else if (SIGNAL_NAMES.includes(importName)) {\n\t\t\t\t\t\t\t\t\tsignals[importName as SignalKey] = importSpecifier.name.getText();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (visitSourceFile) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!visitSourceFile) {\n\t\t\t\treturn sourceFile;\n\t\t\t}\n\n\t\t\tconst classes: ClassInfo[] = [];\n\t\t\tconst updateSourceFile = ts.visitNode(sourceFile, (node: ts.SourceFile) => {\n\t\t\t\treturn ts.visitEachChild(node, (childNode) => {\n\t\t\t\t\tlet decoratorArguments: ts.ObjectLiteralElementLike[] | undefined;\n\t\t\t\t\tif (ts.isClassDeclaration(childNode)) {\n\t\t\t\t\t\tconst decorators = ts.getDecorators(childNode);\n\t\t\t\t\t\tif (!decorators || decorators.length === 0) {\n\t\t\t\t\t\t\treturn childNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst hasDecorator = decorators.some(decorator => isComponentDecorator(decorator, componentPropertyName));\n\t\t\t\t\t\tif (!hasDecorator) {\n\t\t\t\t\t\t\treturn childNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst viewInfos: ViewInfo[] = [];\n\t\t\t\t\t\tconst signalMetadata = scanSignals(childNode, signals);\n\t\t\t\t\t\tconst modifiers = childNode.modifiers?.map(modifier => {\n\t\t\t\t\t\t\tif (!ts.isDecorator(modifier)) {\n\t\t\t\t\t\t\t\treturn modifier;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst updateDecoratorOptions = (option: ts.ObjectLiteralExpression) => {\n\t\t\t\t\t\t\t\tconst selector = getTextValueFormLiteralProperty(option, 'selector');\n\t\t\t\t\t\t\t\tif (!selector) {\n\t\t\t\t\t\t\t\t\tconsole.error(`Component missing selector name: ${childNode.name?.getText()}`);\n\t\t\t\t\t\t\t\t\treturn option;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst viewName = `HTML${selector.split('-')\n\t\t\t\t\t\t\t\t\t.map(name => name.replace(/^\\w/, char => char.toUpperCase()))\n\t\t\t\t\t\t\t\t\t.join('')}Element`;\n\n\n\t\t\t\t\t\t\t\tconst extendProperty = option.properties.find(prop => prop.name?.getText() === 'extend') as ts.PropertyAssignment | undefined;\n\t\t\t\t\t\t\t\tconst extend = extendProperty?.initializer.getText().substring(1, extendProperty?.initializer.getText().length - 1);\n\t\t\t\t\t\t\t\tconst extendsType = getExtendsTypeBySelector(extend);\n\n\t\t\t\t\t\t\t\tconst formAssociatedProperty = option.properties.find(prop => prop.name?.getText() === 'formAssociated') as ts.PropertyAssignment | undefined;\n\t\t\t\t\t\t\t\tconst formAssociated = formAssociatedProperty?.initializer.getText().substring(1, formAssociatedProperty?.initializer.getText().length - 1);\n\n\t\t\t\t\t\t\t\tconst disabledFeaturesInitializer = (option.properties.find(prop => prop.name?.getText() === 'disabledFeatures') as ts.PropertyAssignment | undefined)?.initializer as ts.ArrayLiteralExpression | undefined;\n\t\t\t\t\t\t\t\tlet disabledFeatures: string[] | undefined = undefined;\n\t\t\t\t\t\t\t\tif (disabledFeaturesInitializer && ts.isArrayLiteralExpression(disabledFeaturesInitializer)) {\n\t\t\t\t\t\t\t\t\tdisabledFeatures = disabledFeaturesInitializer.elements.filter(ts.isStringLiteral).map(el => el.getText(sourceFile));\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tviewInfos.push({\n\t\t\t\t\t\t\t\t\tselector,\n\t\t\t\t\t\t\t\t\tviewName,\n\t\t\t\t\t\t\t\t\textendsType,\n\t\t\t\t\t\t\t\t\tinterfaceType: createInterfaceType(viewName, extendsType),\n\t\t\t\t\t\t\t\t\tformAssociated: 'true' == formAssociated,\n\t\t\t\t\t\t\t\t\tdisabledFeatures: disabledFeatures,\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tconst stylesProperty = option.properties.find(prop => prop.name?.getText() === 'styles') as ts.PropertyAssignment | undefined;\n\t\t\t\t\t\t\t\tconst styles = stylesProperty?.initializer.getText().substring(1, stylesProperty?.initializer.getText().length - 1);\n\n\t\t\t\t\t\t\t\tconst template = option.properties.find(prop => prop.name?.getText() === 'template');\n\t\t\t\t\t\t\t\tif (template && ts.isPropertyAssignment(template) && ts.isStringLiteralLike(template.initializer)) {\n\t\t\t\t\t\t\t\t\tconst text = template?.initializer.getText().substring(1, template?.initializer.getText().length - 1);\n\t\t\t\t\t\t\t\t\tconst html = styles\n\t\t\t\t\t\t\t\t\t\t? `<style>${styles}</style>${text}`\n\t\t\t\t\t\t\t\t\t\t: text;\n\t\t\t\t\t\t\t\t\tconst domNode = htmlParser.toDomRootNode(html);\n\t\t\t\t\t\t\t\t\tbuildExpressionNodes(domNode);\n\t\t\t\t\t\t\t\t\tconst serialized = JSON.stringify(domNode);\n\t\t\t\t\t\t\t\t\tconst json = JSON.parse(serialized);\n\t\t\t\t\t\t\t\t\tconst name = ts.factory.createIdentifier('compiledTemplate');\n\t\t\t\t\t\t\t\t\tconst initializer = ts.factory.createObjectLiteralExpression(convertToProperties(json));\n\t\t\t\t\t\t\t\t\tconst update = ts.factory.updatePropertyAssignment(template, name, initializer);\n\t\t\t\t\t\t\t\t\tconst signalsOption = createSignalsAssignment(signalMetadata);\n\t\t\t\t\t\t\t\t\tdecoratorArguments = option.properties.map(prop => {\n\t\t\t\t\t\t\t\t\t\tif (template === prop) {\n\t\t\t\t\t\t\t\t\t\t\treturn update;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn prop;\n\t\t\t\t\t\t\t\t\t}).filter(prop => {\n\t\t\t\t\t\t\t\t\t\tif (prop.name?.getText(sourceFile) === 'styles') {\n\t\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t}).concat([signalsOption]);\n\t\t\t\t\t\t\t\t\treturn ts.factory.updateObjectLiteralExpression(option, decoratorArguments);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn option;\n\n\t\t\t\t\t\t\t\t// options.properties.filter((prop: ts.PropertyAssignment) => {\n\t\t\t\t\t\t\t\t// \tswitch (prop.name.getText()) {\n\t\t\t\t\t\t\t\t// \t\tcase 'template':\n\t\t\t\t\t\t\t\t// \t\tcase 'templateUrl':\n\t\t\t\t\t\t\t\t// \t\tcase 'styles':\n\t\t\t\t\t\t\t\t// \t\t\treturn true;\n\t\t\t\t\t\t\t\t// \t\tdefault: return false;\n\t\t\t\t\t\t\t\t// \t}\n\t\t\t\t\t\t\t\t// })\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst decoratorCall = modifier.expression as ts.CallExpression;\n\t\t\t\t\t\t\tconst options = decoratorCall.arguments[0];\n\t\t\t\t\t\t\tlet argumentsOption: ts.Expression | undefined;\n\t\t\t\t\t\t\tif (ts.isArrayLiteralExpression(options)) {\n\t\t\t\t\t\t\t\tconst elements: ts.Expression[] = options.elements.map(element => {\n\t\t\t\t\t\t\t\t\tif (ts.isObjectLiteralExpression(element)) {\n\t\t\t\t\t\t\t\t\t\treturn updateDecoratorOptions(element);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn element;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\targumentsOption = ts.factory.updateArrayLiteralExpression(options, elements);\n\t\t\t\t\t\t\t} else if (ts.isObjectLiteralExpression(options)) {\n\t\t\t\t\t\t\t\targumentsOption = updateDecoratorOptions(options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (argumentsOption) {\n\t\t\t\t\t\t\t\treturn ts.factory.updateDecorator(\n\t\t\t\t\t\t\t\t\tmodifier,\n\t\t\t\t\t\t\t\t\tts.factory.updateCallExpression(\n\t\t\t\t\t\t\t\t\t\tdecoratorCall,\n\t\t\t\t\t\t\t\t\t\tdecoratorCall.expression,\n\t\t\t\t\t\t\t\t\t\tdecoratorCall.typeArguments,\n\t\t\t\t\t\t\t\t\t\t[argumentsOption]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn modifier;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tclasses.push({\n\t\t\t\t\t\t\ttype: 'component',\n\t\t\t\t\t\t\tname: childNode.name?.getText() ?? '',\n\t\t\t\t\t\t\tviews: viewInfos,\n\t\t\t\t\t\t\tinputs: getInputs(childNode, typeChecker),\n\t\t\t\t\t\t\toutputs: getOutputs(childNode, typeChecker),\n\t\t\t\t\t\t\tsignals: signalMetadata,\n\t\t\t\t\t\t});\n\t\t\t\t\t\t// const staticMembers = viewInfos.map(\n\t\t\t\t\t\t// \tviewInfo => ts.factory.createPropertyDeclaration(\n\t\t\t\t\t\t// \t\t[\n\t\t\t\t\t\t// \t\t\tts.factory.createModifier(ts.SyntaxKind.StaticKeyword),\n\t\t\t\t\t\t// \t\t\tts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword)\n\t\t\t\t\t\t// \t\t],\n\t\t\t\t\t\t// \t\tviewInfo.viewName,\n\t\t\t\t\t\t// \t\tundefined,\n\t\t\t\t\t\t// \t\tcreateStaticPropertyViewType(viewInfo.viewName),\n\t\t\t\t\t\t// \t\tundefined,\n\t\t\t\t\t\t// \t)\n\t\t\t\t\t\t// );\n\t\t\t\t\t\treturn ts.factory.updateClassDeclaration(\n\t\t\t\t\t\t\tchildNode,\n\t\t\t\t\t\t\tmodifiers ? ts.factory.createNodeArray(modifiers) : void 0,\n\t\t\t\t\t\t\tchildNode.name,\n\t\t\t\t\t\t\tchildNode.typeParameters,\n\t\t\t\t\t\t\tchildNode.heritageClauses,\n\t\t\t\t\t\t\t[/*...staticMembers,*/ ...childNode.members.slice()],\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn childNode;\n\t\t\t\t}, context);\n\t\t\t}) as ts.SourceFile;\n\t\t\tif (classes.length) {\n\t\t\t\tmoduleManger.add({ path: sourceFile.fileName, classes });\n\t\t\t\tconst statements = updateSourceFile.statements?.slice() ?? [];\n\t\t\t\tstatements.push(createConstructorOfViewInterfaceDeclaration());\n\t\t\t\tconst interfaces = classes.flatMap(s => s.views).map(info => {\n\t\t\t\t\treturn ts.setTextRange(info.interfaceType, updateSourceFile);\n\t\t\t\t});\n\t\t\t\tstatements.push(); //emit inputs and outputs for component and directives;\n\t\t\t\tstatements.push(...interfaces);\n\t\t\t\treturn ts.factory.updateSourceFile(\n\t\t\t\t\tsourceFile,\n\t\t\t\t\tstatements,\n\t\t\t\t\tupdateSourceFile.isDeclarationFile,\n\t\t\t\t\tupdateSourceFile.typeReferenceDirectives,\n\t\t\t\t\tupdateSourceFile.referencedFiles,\n\t\t\t\t\tupdateSourceFile.hasNoDefaultLib,\n\t\t\t\t\tupdateSourceFile.libReferenceDirectives,\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn updateSourceFile;\n\t\t};\n\t};\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"before-directive.d.ts","sourceRoot":"","sources":["../../../src/cli/transformer/before-directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"before-directive.d.ts","sourceRoot":"","sources":["../../../src/cli/transformer/before-directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,gDAAgD,CAAC;AAahE;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,UAAU,CAAC,CAwFvG"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import ts from 'typescript/lib/tsserverlibrary.js';
|
|
1
|
+
import ts from '@typescript/typescript6/lib/tsserverlibrary.js';
|
|
2
2
|
import { moduleManger } from './modules.js';
|
|
3
3
|
import { getInputs, getOutputs, scanSignals, getTextValueFormArrayLiteralProperty, getTextValueFormLiteralProperty, isDirectiveDecorator } from './helpers.js';
|
|
4
4
|
import { registerDirectiveCall } from '../directives/register.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"before-directive.js","sourceRoot":"","sources":["../../../src/cli/transformer/before-directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"before-directive.js","sourceRoot":"","sources":["../../../src/cli/transformer/before-directive.ts"],"names":[],"mappings":"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","sourcesContent":["import ts from '@typescript/typescript6/lib/tsserverlibrary.js';\nimport { ClassInfo, moduleManger } from './modules.js';\nimport {\n\tgetInputs, getOutputs, scanSignals,\n\tgetTextValueFormArrayLiteralProperty,\n\tgetTextValueFormLiteralProperty,\n\tisDirectiveDecorator\n} from './helpers.js';\nimport { registerDirectiveCall } from '../directives/register.js';\nimport { SIGNAL_NAMES, SignalDetails, SignalKey } from './signals.js';\nimport { createSignalsAssignment } from './factory.js';\n\n\n/**\n * search for `@Directive({})` and to register with the html parser\n * @param program a ts program \n * @returns a transformer factory of source file\n */\nexport function beforeCompileDirectiveOptions(program: ts.Program): ts.TransformerFactory<ts.SourceFile> {\n\tconst typeChecker = program.getTypeChecker();\n\treturn (context: ts.TransformationContext): ts.Transformer<ts.SourceFile> => {\n\t\treturn sourceFile => {\n\t\t\tlet visitSourceFile = false;\n\t\t\tlet directivePropertyName: string;\n\t\t\tconst signals: SignalDetails = {};\n\t\t\tfor (const statement of sourceFile.statements) {\n\t\t\t\tif (ts.isImportDeclaration(statement)) {\n\t\t\t\t\tconst modulePath = statement.moduleSpecifier.getText();\n\t\t\t\t\tif (statement.importClause && modulePath.includes('@ibyar/aurora') || modulePath.includes('@ibyar/core')) {\n\t\t\t\t\t\tstatement.importClause?.namedBindings?.forEachChild(importSpecifier => {\n\t\t\t\t\t\t\tif (ts.isImportSpecifier(importSpecifier)) {\n\t\t\t\t\t\t\t\tconst importName = importSpecifier.propertyName?.getText() ?? importSpecifier.name.getText();\n\t\t\t\t\t\t\t\tif (importName === 'Directive') {\n\t\t\t\t\t\t\t\t\tvisitSourceFile = true;\n\t\t\t\t\t\t\t\t\tdirectivePropertyName = importSpecifier.name.getText();\n\t\t\t\t\t\t\t\t} else if (SIGNAL_NAMES.includes(importName)) {\n\t\t\t\t\t\t\t\t\tsignals[importName as SignalKey] = importSpecifier.name.getText();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (visitSourceFile) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!visitSourceFile) {\n\t\t\t\treturn sourceFile;\n\t\t\t}\n\t\t\tconst classes: ClassInfo[] = [];\n\t\t\tts.visitNode(sourceFile, (node: ts.SourceFile) => {\n\t\t\t\treturn ts.visitEachChild(node, (childNode) => {\n\t\t\t\t\tif (ts.isClassDeclaration(childNode)) {\n\t\t\t\t\t\tconst decorators = ts.getDecorators(childNode);\n\t\t\t\t\t\tif (!decorators || decorators.length === 0) {\n\t\t\t\t\t\t\treturn childNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst hasDecorator = decorators.some(decorator => isDirectiveDecorator(decorator, directivePropertyName));\n\t\t\t\t\t\tif (!hasDecorator) {\n\t\t\t\t\t\t\treturn childNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchildNode.modifiers?.forEach(modifier => {\n\t\t\t\t\t\t\tif (ts.isDecorator(modifier) && isDirectiveDecorator(modifier, directivePropertyName)) {\n\t\t\t\t\t\t\t\tconst options = (modifier.expression as ts.CallExpression).arguments[0];\n\t\t\t\t\t\t\t\tif (ts.isObjectLiteralExpression(options)) {\n\t\t\t\t\t\t\t\t\tconst selector = getTextValueFormLiteralProperty(options, 'selector');\n\t\t\t\t\t\t\t\t\tif (selector) {\n\t\t\t\t\t\t\t\t\t\tconst successors = getTextValueFormArrayLiteralProperty(options, 'successors');\n\t\t\t\t\t\t\t\t\t\tconst inputs = getInputs(childNode, typeChecker);\n\t\t\t\t\t\t\t\t\t\tconst outputs = getOutputs(childNode, typeChecker);\n\t\t\t\t\t\t\t\t\t\tconst signalDetails = scanSignals(childNode, signals);\n\t\t\t\t\t\t\t\t\t\tconst signalsOption = createSignalsAssignment(signalDetails);\n\t\t\t\t\t\t\t\t\t\tconst allInputs = (inputs ?? [])\n\t\t\t\t\t\t\t\t\t\t\t.concat(signalDetails.input ?? [])\n\t\t\t\t\t\t\t\t\t\t\t.concat(signalDetails.formValue ?? []);\n\t\t\t\t\t\t\t\t\t\tconst allOutputs = (outputs ?? []).\n\t\t\t\t\t\t\t\t\t\t\tconcat(signalDetails.output ?? []);\n\t\t\t\t\t\t\t\t\t\tregisterDirectiveCall({\n\t\t\t\t\t\t\t\t\t\t\tselector,\n\t\t\t\t\t\t\t\t\t\t\tsuccessors,\n\t\t\t\t\t\t\t\t\t\t\tinputs: allInputs,\n\t\t\t\t\t\t\t\t\t\t\toutputs: allOutputs,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tclasses.push({\n\t\t\t\t\t\t\t\t\t\t\ttype: 'directive',\n\t\t\t\t\t\t\t\t\t\t\tname: selector,\n\t\t\t\t\t\t\t\t\t\t\tsuccessors,\n\t\t\t\t\t\t\t\t\t\t\tinputs: allInputs,\n\t\t\t\t\t\t\t\t\t\t\toutputs: allOutputs,\n\t\t\t\t\t\t\t\t\t\t\tviews: [],\n\t\t\t\t\t\t\t\t\t\t\tsignals: signalDetails\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn childNode;\n\t\t\t\t}, context);\n\t\t\t});\n\t\t\tif (classes.length) {\n\t\t\t\tmoduleManger.add({ path: sourceFile.fileName, classes });\n\t\t\t}\n\t\t\treturn sourceFile;\n\t\t};\n\t};\n}\n"]}
|
package/transformer/factory.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import ts from 'typescript/lib/tsserverlibrary.js';
|
|
1
|
+
import ts from '@typescript/typescript6/lib/tsserverlibrary.js';
|
|
2
2
|
import { ClassInfo, SignalInfo } from './modules.js';
|
|
3
3
|
import { SignalKey } from './signals.js';
|
|
4
4
|
export declare function convertToProperties(json: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/cli/transformer/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/cli/transformer/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,gDAAgD,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,EAAE,CAAC,wBAAwB,EAAE,CAG/F;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,EAAE,CAAC,wBAAwB,CAEpF;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,GAAG,GAAG,EAAE,CAAC,UAAU,CAmB3D;AAGD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,2BAQxE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,sBAWjD;AAED;;;;;;;;;GASG;AACH,wBAAgB,2CAA2C,4BAY1D;AAED,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,wBAG5D;AAGD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,kBAAyB,EAAE,UAAU,gBAAmB,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAEvJ;AAED,wBAAgB,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,kBAAyB,EAAE,UAAU,gBAAmB,GAAG,CAAC,CAErI;AAED;;;;;;GAMG;AAEH,wBAAgB,iCAAiC,CAAC,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAQ5H;AAED,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAsClG;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAwB/F;AAGD,wBAAgB,wBAAwB,CAAC,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;;;;;;IAkBhG;AAED,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC,yBAE/F"}
|
package/transformer/factory.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/cli/transformer/factory.ts"],"names":[],"mappings":"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","sourcesContent":["import ts from 'typescript/lib/tsserverlibrary.js';\nimport { ToCamelCase } from '@ibyar/core/node.js';\nimport { ClassInfo, SignalInfo } from './modules.js';\nimport { SignalKey } from './signals.js';\n\n\nexport function convertToProperties(json: { [key: string]: any }): ts.ObjectLiteralElementLike[] {\n\tconst keys = Object.keys(json);\n\treturn keys.map(key => createProperty(key, json[key]));\n}\n\nexport function createProperty(name: string, value: any): ts.ObjectLiteralElementLike {\n\treturn ts.factory.createPropertyAssignment(name, createInitializer(value));\n}\n\nexport function createInitializer(value: any): ts.Expression {\n\tif (Array.isArray(value)) {\n\t\tconst elements = value.map(createInitializer);\n\t\treturn ts.factory.createArrayLiteralExpression(elements);\n\t}\n\tswitch (typeof value) {\n\t\tcase 'string': return ts.factory.createStringLiteral(value);\n\t\tcase 'number': return ts.factory.createNumericLiteral(value);\n\t\tcase 'bigint': return ts.factory.createBigIntLiteral(value.toString());\n\t\tcase 'boolean': return value ? ts.factory.createTrue() : ts.factory.createFalse();\n\t\tcase 'object': {\n\t\t\tif (!value) {\n\t\t\t\treturn ts.factory.createNull();\n\t\t\t}\n\t\t\tconst properties = convertToProperties(value);\n\t\t\treturn ts.factory.createObjectLiteralExpression(properties);\n\t\t};\n\t}\n\treturn ts.factory.createNull();\n}\n\n\nexport function createInterfaceType(viewName: string, extendsType: string) {\n\tconst identifier = ts.factory.createIdentifier(extendsType);\n\tconst expressionWithTypeArguments = ts.factory.createExpressionWithTypeArguments(identifier, undefined);\n\tconst heritageClause = ts.factory.createHeritageClause(ts.SyntaxKind.ExtendsKeyword, [expressionWithTypeArguments]);\n\treturn ts.factory.createInterfaceDeclaration(undefined, viewName, undefined, [heritageClause], []);\n\t// const exportModifier: ts.ModifierSyntaxKind = ts.SyntaxKind.ExportKeyword;\n\t// const modifier = ts.factory.createModifier(exportModifier);\n\t// return ts.factory.createInterfaceDeclaration([modifier], viewName, undefined, [heritageClause], []);\n}\n\nexport function createTypeLiteral(typeName: string) {\n\tconst members: ts.TypeElement[] = [\n\t\tts.factory.createConstructSignature(undefined, [], ts.factory.createTypeReferenceNode(typeName)),\n\t\tts.factory.createPropertySignature(\n\t\t\t[ts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword)],\n\t\t\t'prototype',\n\t\t\tundefined,\n\t\t\tts.factory.createTypeReferenceNode(typeName)\n\t\t),\n\t];\n\treturn ts.factory.createTypeLiteralNode(members);\n}\n\n/**\n * create view constructor interface of Type `T`\n * \n * ```ts\n * interface ConstructorOfView<T> {\n * \tnew(): T;\n * \treadonly prototype: T;\n * }\n * ```\n */\nexport function createConstructorOfViewInterfaceDeclaration() {\n\tconst typeParameter = ts.factory.createTypeParameterDeclaration(undefined, 'T');\n\tconst members: ts.TypeElement[] = [\n\t\tts.factory.createConstructSignature(undefined, [], ts.factory.createTypeReferenceNode('T')),\n\t\tts.factory.createPropertySignature(\n\t\t\t[ts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword)],\n\t\t\t'prototype',\n\t\t\tundefined,\n\t\t\tts.factory.createTypeReferenceNode('T')\n\t\t),\n\t];\n\treturn ts.factory.createInterfaceDeclaration(undefined, 'ConstructorOfView', [typeParameter], undefined, members);\n}\n\nexport function createStaticPropertyViewType(typeName: string) {\n\tconst typeArgument = ts.factory.createTypeReferenceNode(typeName);\n\treturn ts.factory.createTypeReferenceNode('ConstructorOfView', [typeArgument]);\n}\n\n\nexport function generateStatements(sourceText: string, scriptTarget = ts.ScriptTarget.ES2020, scriptKind = ts.ScriptKind.TS): ts.NodeArray<ts.Statement> {\n\treturn ts.createSourceFile('temp', sourceText, scriptTarget, false, scriptKind).statements;\n}\n\nexport function generateNode<T = ts.Node>(sourceText: string, scriptTarget = ts.ScriptTarget.ES2020, scriptKind = ts.ScriptKind.TS): T {\n\treturn generateStatements(sourceText, scriptTarget, scriptKind)[0] as T;\n}\n\n/**\n * declare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'user-view': HTMLUserViewElement;\n\t}\n}\n */\n\nexport function updateGlobalHTMLElementTagNameMap(views: { tagName: string, viewName: string }[]): ts.NodeArray<ts.Statement> {\n\tconst sourceCode = `\n\t\tdeclare global {\n\t\t\tinterface HTMLElementTagNameMap {\n\t\t\t\t${views.map(view => `['${view.tagName}']: ${view.viewName};`).join('\\n')}\n\t\t\t}\n\t\t}`;\n\treturn generateStatements(sourceCode);\n}\n\nexport function updateModuleTypeWithComponentView(classes: ClassInfo[]): ts.NodeArray<ts.Statement> {\n\tconst viewClassDeclarations = classes.map(c => {\n\t\tconst inputs = c.inputs.map(input => input.aliasName);\n\t\tconst outputs = c.outputs.map(input => input.aliasName).map(output => 'on' + ToCamelCase(output));\n\t\tconst attributes = [...inputs, ...outputs].map(s => `'${s}'`).join(' | ');\n\t\tconst observedAttributes = attributes.length ? `public static observedAttributes: (${attributes})[];` : '';\n\t\tconst interfaceBody = `\n\t\t\t${observedAttributes}\n\n\t\t\t${c.inputs.map(input => `public ${input.aliasName}${input.type ? `: ${input.type}` : ''};`).join('\\n')}\n\n\t\t\t${c.outputs.map(output => `public on${ToCamelCase(output.aliasName)}${output.type ? `: ${output.type}` : ''};`).join('\\n')}\n\t\t\t\n\t\t`;\n\t\t// need to fix @FormValue type;\n\t\treturn c.views.map(view => {\n\t\t\tconst disabledFeatures = (Array.isArray(view.disabledFeatures) && view.disabledFeatures.length > 0)\n\t\t\t\t? `public static disabledFeatures: ('${view.disabledFeatures.join(' | ')}')[];`\n\t\t\t\t: '';\n\t\t\treturn `\n\t\t\tdeclare class ${view.viewName} extends ${view.extendsType} {\n\t\t\t\t${disabledFeatures}\n\t\t\t\t${interfaceBody.trim()}\n\t\t\t}\n\t\t\tdeclare interface ${view.viewName} extends ${view.formAssociated ? `BaseFormAssociatedComponent<${c.name}>, ` : ''}BaseComponent<${c.name}> {}\n\t\t`;\n\t\t});\n\t});\n\tconst views = classes.flatMap(c => c.views.map(v => ({ tagName: v.selector, viewName: v.viewName })));\n\tconst sourceCode = `\n\t\timport { BaseComponent, BaseFormAssociatedComponent, ConstructorOfView } from '@ibyar/core';\n\t\t${viewClassDeclarations.join('\\n')}\n\t\tdeclare global {\n\t\t\tinterface HTMLElementTagNameMap {\n\t\t\t\t${views.map(view => `['${view.tagName}']: ${view.viewName};`).join('\\n')}\n\t\t\t}\n\t\t}`;\n\treturn generateStatements(sourceCode);\n}\n\n/**\n * create new type with name `ɵɵ0Directives0ɵɵ`\n * \n * example:\n * ```ts\n * export type ɵɵ0IfDirective0ɵɵ = {\n * \tselector: '*if';\n * \tsuccessor: '*else',\n * \tinputs: [\n * \t\t{ name: 'ifCondition', aliasName: 'if' },\n * \t\t{ name: 'thenTemplateRef', aliasName: 'then' },\n * \t\t{ name: 'elseTemplateRef', aliasName: 'else' },\n * \t],\n * \toutputs: [],\n * };\n * ```\n * @param classes directive class information\n * @returns new array of statements\n */\nexport function updateModuleTypeWithDirectives(classes: ClassInfo[]): ts.NodeArray<ts.Statement> {\n\tconst nodes: string[] | undefined = classes.map(directive => {\n\t\tconst inputs: string[] = directive.inputs.map(input => `{name: '${input.name}', aliasName: '${input.aliasName}'}`);\n\t\tconst outputs: string[] = directive.outputs.map(output => `{name: '${output.name}', aliasName: '${output.aliasName}'}`);\n\t\tconst temp: string[] = [`selector: '${directive.name}'`];\n\t\tif (directive.successors) {\n\t\t\ttemp.push(`successors: [${directive.successors.map(successor => `'${successor}'`).join(',')}]`);\n\t\t}\n\t\tif (directive.inputs.length > 0) {\n\t\t\ttemp.push(`inputs: [${inputs.join(',')}]`);\n\t\t}\n\t\tif (directive.outputs.length > 0) {\n\t\t\ttemp.push(`outputs: [${outputs.join(',')}]`);\n\t\t}\n\t\tlet directiveTypeName = directive.name.startsWith('*')\n\t\t\t? directive.name.substring(1)\n\t\t\t: directive.name;\n\t\tdirectiveTypeName = directiveTypeName.replaceAll('-', ' ')\n\t\t\t.split(' ')\n\t\t\t.map(str => str.charAt(0).toUpperCase() + str.substring(1))\n\t\t\t.join('');\n\t\treturn `export type ɵɵ0${ToCamelCase(directiveTypeName)}Directive0ɵɵ = {${temp.join(',')}};`;\n\t});\n\treturn generateStatements(nodes.join());\n}\n\n\nexport function convertToRuntimeMetadata(signalMetadata: Partial<Record<SignalKey, SignalInfo[]>>) {\n\treturn Object.entries(signalMetadata).flatMap(([key, infos]) => {\n\t\tconst optional = infos.filter(info => !info.necessity);\n\t\tconst optionalItem = {\n\t\t\tsignal: key,\n\t\t\toptions: optional.map(info => ({ name: info.name, alias: info.aliasName })),\n\t\t};\n\t\tconst required = infos.filter(info => info.necessity);\n\t\tif (!required.length) {\n\t\t\treturn [optionalItem];\n\t\t}\n\t\tconst requiredItem = {\n\t\t\tsignal: key,\n\t\t\tnecessity: 'required',\n\t\t\toptions: required.map(info => ({ name: info.name, alias: info.aliasName })),\n\t\t};\n\t\treturn [optionalItem, requiredItem];\n\t});\n}\n\nexport function createSignalsAssignment(signalMetadata: Partial<Record<SignalKey, SignalInfo[]>>) {\n\treturn ts.factory.createPropertyAssignment('signals', createInitializer(convertToRuntimeMetadata(signalMetadata)));\n}\n"]}
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/cli/transformer/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,gDAAgD,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAKlD,MAAM,UAAU,mBAAmB,CAAC,IAA4B;IAC/D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,KAAU;IACtD,OAAO,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAAC,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAU;IAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC9C,OAAO,EAAE,CAAC,OAAO,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;IACD,QAAQ,OAAO,KAAK,EAAE,CAAC;QACtB,KAAK,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC5D,KAAK,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC7D,KAAK,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvE,KAAK,SAAS,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAClF,KAAK,QAAQ;YAAE,CAAC;gBACf,IAAI,CAAC,KAAK,EAAE,CAAC;oBACZ,OAAO,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;gBAChC,CAAC;gBACD,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;gBAC9C,OAAO,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC;YAC7D,CAAC;YAAA,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;AAChC,CAAC;AAGD,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,WAAmB;IACxE,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC5D,MAAM,2BAA2B,GAAG,EAAE,CAAC,OAAO,CAAC,iCAAiC,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACxG,MAAM,cAAc,GAAG,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACpH,OAAO,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;IACnG,6EAA6E;IAC7E,8DAA8D;IAC9D,uGAAuG;AACxG,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IACjD,MAAM,OAAO,GAAqB;QACjC,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAChG,EAAE,CAAC,OAAO,CAAC,uBAAuB,CACjC,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,EAC1D,WAAW,EACX,SAAS,EACT,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAC5C;KACD,CAAC;IACF,OAAO,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,2CAA2C;IAC1D,MAAM,aAAa,GAAG,EAAE,CAAC,OAAO,CAAC,8BAA8B,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAChF,MAAM,OAAO,GAAqB;QACjC,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;QAC3F,EAAE,CAAC,OAAO,CAAC,uBAAuB,CACjC,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,EAC1D,WAAW,EACX,SAAS,EACT,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC,CACvC;KACD,CAAC;IACF,OAAO,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,SAAS,EAAE,mBAAmB,EAAE,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACnH,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,QAAgB;IAC5D,MAAM,YAAY,GAAG,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAClE,OAAO,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,mBAAmB,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAChF,CAAC;AAGD,MAAM,UAAU,kBAAkB,CAAC,UAAkB,EAAE,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE;IAC1H,OAAO,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,UAAU,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,YAAY,CAAc,UAAkB,EAAE,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE;IACjI,OAAO,kBAAkB,CAAC,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,CAAM,CAAC;AACzE,CAAC;AAED;;;;;;GAMG;AAEH,MAAM,UAAU,iCAAiC,CAAC,KAA8C;IAC/F,MAAM,UAAU,GAAG;;;MAGd,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,OAAO,OAAO,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;IAExE,CAAC;IACJ,OAAO,kBAAkB,CAAC,UAAU,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,OAAoB;IACrE,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAC7C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAClG,MAAM,UAAU,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1E,MAAM,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,sCAAsC,UAAU,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3G,MAAM,aAAa,GAAG;KACnB,kBAAkB;;KAElB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;KAEpG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;GAE1H,CAAC;QACF,+BAA+B;QAC/B,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACzB,MAAM,gBAAgB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;gBAClG,CAAC,CAAC,qCAAqC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO;gBAC/E,CAAC,CAAC,EAAE,CAAC;YACN,OAAO;mBACS,IAAI,CAAC,QAAQ,YAAY,IAAI,CAAC,WAAW;MACtD,gBAAgB;MAChB,aAAa,CAAC,IAAI,EAAE;;uBAEH,IAAI,CAAC,QAAQ,YAAY,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,IAAI;GACzI,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;IACtG,MAAM,UAAU,GAAG;;IAEhB,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;;;MAG9B,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,OAAO,OAAO,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;IAExE,CAAC;IACJ,OAAO,kBAAkB,CAAC,UAAU,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,8BAA8B,CAAC,OAAoB;IAClE,MAAM,KAAK,GAAyB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;QAC3D,MAAM,MAAM,GAAa,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,KAAK,CAAC,IAAI,kBAAkB,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC;QACnH,MAAM,OAAO,GAAa,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,MAAM,CAAC,IAAI,kBAAkB,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;QACxH,MAAM,IAAI,GAAa,CAAC,cAAc,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC;QACzD,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,gBAAgB,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjG,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,aAAa,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,iBAAiB,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YACrD,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YAC7B,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;QAClB,iBAAiB,GAAG,iBAAiB,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;aACxD,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aAC1D,IAAI,CAAC,EAAE,CAAC,CAAC;QACX,OAAO,kBAAkB,WAAW,CAAC,iBAAiB,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IAC9F,CAAC,CAAC,CAAC;IACH,OAAO,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC;AAGD,MAAM,UAAU,wBAAwB,CAAC,cAAwD;IAChG,OAAO,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC9D,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvD,MAAM,YAAY,GAAG;YACpB,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;SAC3E,CAAC;QACF,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACtB,OAAO,CAAC,YAAY,CAAC,CAAC;QACvB,CAAC;QACD,MAAM,YAAY,GAAG;YACpB,MAAM,EAAE,GAAG;YACX,SAAS,EAAE,UAAU;YACrB,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;SAC3E,CAAC;QACF,OAAO,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,cAAwD;IAC/F,OAAO,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAAC,SAAS,EAAE,iBAAiB,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AACpH,CAAC","sourcesContent":["import ts from '@typescript/typescript6/lib/tsserverlibrary.js';\nimport { ToCamelCase } from '@ibyar/core/node.js';\nimport { ClassInfo, SignalInfo } from './modules.js';\nimport { SignalKey } from './signals.js';\n\n\nexport function convertToProperties(json: { [key: string]: any }): ts.ObjectLiteralElementLike[] {\n\tconst keys = Object.keys(json);\n\treturn keys.map(key => createProperty(key, json[key]));\n}\n\nexport function createProperty(name: string, value: any): ts.ObjectLiteralElementLike {\n\treturn ts.factory.createPropertyAssignment(name, createInitializer(value));\n}\n\nexport function createInitializer(value: any): ts.Expression {\n\tif (Array.isArray(value)) {\n\t\tconst elements = value.map(createInitializer);\n\t\treturn ts.factory.createArrayLiteralExpression(elements);\n\t}\n\tswitch (typeof value) {\n\t\tcase 'string': return ts.factory.createStringLiteral(value);\n\t\tcase 'number': return ts.factory.createNumericLiteral(value);\n\t\tcase 'bigint': return ts.factory.createBigIntLiteral(value.toString());\n\t\tcase 'boolean': return value ? ts.factory.createTrue() : ts.factory.createFalse();\n\t\tcase 'object': {\n\t\t\tif (!value) {\n\t\t\t\treturn ts.factory.createNull();\n\t\t\t}\n\t\t\tconst properties = convertToProperties(value);\n\t\t\treturn ts.factory.createObjectLiteralExpression(properties);\n\t\t};\n\t}\n\treturn ts.factory.createNull();\n}\n\n\nexport function createInterfaceType(viewName: string, extendsType: string) {\n\tconst identifier = ts.factory.createIdentifier(extendsType);\n\tconst expressionWithTypeArguments = ts.factory.createExpressionWithTypeArguments(identifier, undefined);\n\tconst heritageClause = ts.factory.createHeritageClause(ts.SyntaxKind.ExtendsKeyword, [expressionWithTypeArguments]);\n\treturn ts.factory.createInterfaceDeclaration(undefined, viewName, undefined, [heritageClause], []);\n\t// const exportModifier: ts.ModifierSyntaxKind = ts.SyntaxKind.ExportKeyword;\n\t// const modifier = ts.factory.createModifier(exportModifier);\n\t// return ts.factory.createInterfaceDeclaration([modifier], viewName, undefined, [heritageClause], []);\n}\n\nexport function createTypeLiteral(typeName: string) {\n\tconst members: ts.TypeElement[] = [\n\t\tts.factory.createConstructSignature(undefined, [], ts.factory.createTypeReferenceNode(typeName)),\n\t\tts.factory.createPropertySignature(\n\t\t\t[ts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword)],\n\t\t\t'prototype',\n\t\t\tundefined,\n\t\t\tts.factory.createTypeReferenceNode(typeName)\n\t\t),\n\t];\n\treturn ts.factory.createTypeLiteralNode(members);\n}\n\n/**\n * create view constructor interface of Type `T`\n * \n * ```ts\n * interface ConstructorOfView<T> {\n * \tnew(): T;\n * \treadonly prototype: T;\n * }\n * ```\n */\nexport function createConstructorOfViewInterfaceDeclaration() {\n\tconst typeParameter = ts.factory.createTypeParameterDeclaration(undefined, 'T');\n\tconst members: ts.TypeElement[] = [\n\t\tts.factory.createConstructSignature(undefined, [], ts.factory.createTypeReferenceNode('T')),\n\t\tts.factory.createPropertySignature(\n\t\t\t[ts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword)],\n\t\t\t'prototype',\n\t\t\tundefined,\n\t\t\tts.factory.createTypeReferenceNode('T')\n\t\t),\n\t];\n\treturn ts.factory.createInterfaceDeclaration(undefined, 'ConstructorOfView', [typeParameter], undefined, members);\n}\n\nexport function createStaticPropertyViewType(typeName: string) {\n\tconst typeArgument = ts.factory.createTypeReferenceNode(typeName);\n\treturn ts.factory.createTypeReferenceNode('ConstructorOfView', [typeArgument]);\n}\n\n\nexport function generateStatements(sourceText: string, scriptTarget = ts.ScriptTarget.ES2020, scriptKind = ts.ScriptKind.TS): ts.NodeArray<ts.Statement> {\n\treturn ts.createSourceFile('temp', sourceText, scriptTarget, false, scriptKind).statements;\n}\n\nexport function generateNode<T = ts.Node>(sourceText: string, scriptTarget = ts.ScriptTarget.ES2020, scriptKind = ts.ScriptKind.TS): T {\n\treturn generateStatements(sourceText, scriptTarget, scriptKind)[0] as T;\n}\n\n/**\n * declare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'user-view': HTMLUserViewElement;\n\t}\n}\n */\n\nexport function updateGlobalHTMLElementTagNameMap(views: { tagName: string, viewName: string }[]): ts.NodeArray<ts.Statement> {\n\tconst sourceCode = `\n\t\tdeclare global {\n\t\t\tinterface HTMLElementTagNameMap {\n\t\t\t\t${views.map(view => `['${view.tagName}']: ${view.viewName};`).join('\\n')}\n\t\t\t}\n\t\t}`;\n\treturn generateStatements(sourceCode);\n}\n\nexport function updateModuleTypeWithComponentView(classes: ClassInfo[]): ts.NodeArray<ts.Statement> {\n\tconst viewClassDeclarations = classes.map(c => {\n\t\tconst inputs = c.inputs.map(input => input.aliasName);\n\t\tconst outputs = c.outputs.map(input => input.aliasName).map(output => 'on' + ToCamelCase(output));\n\t\tconst attributes = [...inputs, ...outputs].map(s => `'${s}'`).join(' | ');\n\t\tconst observedAttributes = attributes.length ? `public static observedAttributes: (${attributes})[];` : '';\n\t\tconst interfaceBody = `\n\t\t\t${observedAttributes}\n\n\t\t\t${c.inputs.map(input => `public ${input.aliasName}${input.type ? `: ${input.type}` : ''};`).join('\\n')}\n\n\t\t\t${c.outputs.map(output => `public on${ToCamelCase(output.aliasName)}${output.type ? `: ${output.type}` : ''};`).join('\\n')}\n\t\t\t\n\t\t`;\n\t\t// need to fix @FormValue type;\n\t\treturn c.views.map(view => {\n\t\t\tconst disabledFeatures = (Array.isArray(view.disabledFeatures) && view.disabledFeatures.length > 0)\n\t\t\t\t? `public static disabledFeatures: ('${view.disabledFeatures.join(' | ')}')[];`\n\t\t\t\t: '';\n\t\t\treturn `\n\t\t\tdeclare class ${view.viewName} extends ${view.extendsType} {\n\t\t\t\t${disabledFeatures}\n\t\t\t\t${interfaceBody.trim()}\n\t\t\t}\n\t\t\tdeclare interface ${view.viewName} extends ${view.formAssociated ? `BaseFormAssociatedComponent<${c.name}>, ` : ''}BaseComponent<${c.name}> {}\n\t\t`;\n\t\t});\n\t});\n\tconst views = classes.flatMap(c => c.views.map(v => ({ tagName: v.selector, viewName: v.viewName })));\n\tconst sourceCode = `\n\t\timport { BaseComponent, BaseFormAssociatedComponent, ConstructorOfView } from '@ibyar/core';\n\t\t${viewClassDeclarations.join('\\n')}\n\t\tdeclare global {\n\t\t\tinterface HTMLElementTagNameMap {\n\t\t\t\t${views.map(view => `['${view.tagName}']: ${view.viewName};`).join('\\n')}\n\t\t\t}\n\t\t}`;\n\treturn generateStatements(sourceCode);\n}\n\n/**\n * create new type with name `ɵɵ0Directives0ɵɵ`\n * \n * example:\n * ```ts\n * export type ɵɵ0IfDirective0ɵɵ = {\n * \tselector: '*if';\n * \tsuccessor: '*else',\n * \tinputs: [\n * \t\t{ name: 'ifCondition', aliasName: 'if' },\n * \t\t{ name: 'thenTemplateRef', aliasName: 'then' },\n * \t\t{ name: 'elseTemplateRef', aliasName: 'else' },\n * \t],\n * \toutputs: [],\n * };\n * ```\n * @param classes directive class information\n * @returns new array of statements\n */\nexport function updateModuleTypeWithDirectives(classes: ClassInfo[]): ts.NodeArray<ts.Statement> {\n\tconst nodes: string[] | undefined = classes.map(directive => {\n\t\tconst inputs: string[] = directive.inputs.map(input => `{name: '${input.name}', aliasName: '${input.aliasName}'}`);\n\t\tconst outputs: string[] = directive.outputs.map(output => `{name: '${output.name}', aliasName: '${output.aliasName}'}`);\n\t\tconst temp: string[] = [`selector: '${directive.name}'`];\n\t\tif (directive.successors) {\n\t\t\ttemp.push(`successors: [${directive.successors.map(successor => `'${successor}'`).join(',')}]`);\n\t\t}\n\t\tif (directive.inputs.length > 0) {\n\t\t\ttemp.push(`inputs: [${inputs.join(',')}]`);\n\t\t}\n\t\tif (directive.outputs.length > 0) {\n\t\t\ttemp.push(`outputs: [${outputs.join(',')}]`);\n\t\t}\n\t\tlet directiveTypeName = directive.name.startsWith('*')\n\t\t\t? directive.name.substring(1)\n\t\t\t: directive.name;\n\t\tdirectiveTypeName = directiveTypeName.replaceAll('-', ' ')\n\t\t\t.split(' ')\n\t\t\t.map(str => str.charAt(0).toUpperCase() + str.substring(1))\n\t\t\t.join('');\n\t\treturn `export type ɵɵ0${ToCamelCase(directiveTypeName)}Directive0ɵɵ = {${temp.join(',')}};`;\n\t});\n\treturn generateStatements(nodes.join());\n}\n\n\nexport function convertToRuntimeMetadata(signalMetadata: Partial<Record<SignalKey, SignalInfo[]>>) {\n\treturn Object.entries(signalMetadata).flatMap(([key, infos]) => {\n\t\tconst optional = infos.filter(info => !info.necessity);\n\t\tconst optionalItem = {\n\t\t\tsignal: key,\n\t\t\toptions: optional.map(info => ({ name: info.name, alias: info.aliasName })),\n\t\t};\n\t\tconst required = infos.filter(info => info.necessity);\n\t\tif (!required.length) {\n\t\t\treturn [optionalItem];\n\t\t}\n\t\tconst requiredItem = {\n\t\t\tsignal: key,\n\t\t\tnecessity: 'required',\n\t\t\toptions: required.map(info => ({ name: info.name, alias: info.aliasName })),\n\t\t};\n\t\treturn [optionalItem, requiredItem];\n\t});\n}\n\nexport function createSignalsAssignment(signalMetadata: Partial<Record<SignalKey, SignalInfo[]>>) {\n\treturn ts.factory.createPropertyAssignment('signals', createInitializer(convertToRuntimeMetadata(signalMetadata)));\n}\n"]}
|
package/transformer/helpers.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import ts from 'typescript/lib/tsserverlibrary.js';
|
|
1
|
+
import ts from '@typescript/typescript6/lib/tsserverlibrary.js';
|
|
2
2
|
import { DecoratorInfo, SignalMetadata, SignalInfo } from './modules.js';
|
|
3
3
|
import { SignalDetails } from './signals.js';
|
|
4
4
|
/**
|
|
@@ -30,6 +30,13 @@ export declare function isPipeDecorator(decorator: ts.Decorator, pipeName?: stri
|
|
|
30
30
|
* @returns
|
|
31
31
|
*/
|
|
32
32
|
export declare function isInjectableDecorator(decorator: ts.Decorator, injectableName?: string): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* check if a decorator is a `@Service` decorator;
|
|
35
|
+
* @param decorator
|
|
36
|
+
* @param injectableName
|
|
37
|
+
* @returns
|
|
38
|
+
*/
|
|
39
|
+
export declare function isServiceDecorator(decorator: ts.Decorator, injectableName?: string): boolean;
|
|
33
40
|
/**
|
|
34
41
|
* check if Decorator is `@Input` or `@FormValue`
|
|
35
42
|
* @param decorator
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/cli/transformer/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/cli/transformer/helpers.ts"],"names":[],"mappings":"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"}
|
package/transformer/helpers.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import ts from 'typescript/lib/tsserverlibrary.js';
|
|
1
|
+
import ts from '@typescript/typescript6/lib/tsserverlibrary.js';
|
|
2
2
|
/**
|
|
3
3
|
* check if a decorator is a `@Component` decorator;
|
|
4
4
|
* @param decorator
|
|
@@ -43,6 +43,16 @@ export function isInjectableDecorator(decorator, injectableName = 'Injectable')
|
|
|
43
43
|
return ts.isCallExpression(decorator.expression) && decorator.expression.expression.getText() === injectableName;
|
|
44
44
|
}
|
|
45
45
|
;
|
|
46
|
+
/**
|
|
47
|
+
* check if a decorator is a `@Service` decorator;
|
|
48
|
+
* @param decorator
|
|
49
|
+
* @param injectableName
|
|
50
|
+
* @returns
|
|
51
|
+
*/
|
|
52
|
+
export function isServiceDecorator(decorator, injectableName = 'Service') {
|
|
53
|
+
return ts.isCallExpression(decorator.expression) && decorator.expression.expression.getText() === injectableName;
|
|
54
|
+
}
|
|
55
|
+
;
|
|
46
56
|
/**
|
|
47
57
|
* check if Decorator is `@Input` or `@FormValue`
|
|
48
58
|
* @param decorator
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/cli/transformer/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import ts from 'typescript/lib/tsserverlibrary.js';\nimport { DecoratorInfo, SignalMetadata, SignalInfo } from './modules.js';\nimport { SignalDetails, SignalKey } from './signals.js';\n\n\n/**\n * check if a decorator is a `@Component` decorator;\n * @param decorator \n * @param expressionName \n * @returns \n */\nexport function isComponentDecorator(decorator: ts.Decorator, componentName = 'Component'): boolean {\n\treturn ts.isCallExpression(decorator.expression) && decorator.expression.expression.getText() === componentName;\n};\n\n\n/**\n * check if a decorator is a `@Directive` decorator;\n * @param decorator \n * @param directiveName \n * @returns \n */\nexport function isDirectiveDecorator(decorator: ts.Decorator, directiveName = 'Directive'): boolean {\n\treturn ts.isCallExpression(decorator.expression) && decorator.expression.expression.getText() === directiveName;\n};\n\nexport function isComponentOrDirectiveDecorator(decorator: ts.Decorator, componentName = 'Component', directiveName = 'Directive'): boolean {\n\treturn isComponentDecorator(decorator, componentName) || isDirectiveDecorator(decorator, directiveName);\n};\n\n\n/**\n * check if a decorator is a `@Pipe` decorator;\n * @param decorator \n * @param pipeName \n * @returns \n */\nexport function isPipeDecorator(decorator: ts.Decorator, pipeName = 'Pipe'): boolean {\n\treturn ts.isCallExpression(decorator.expression) && decorator.expression.expression.getText() === pipeName;\n};\n\n/**\n * check if a decorator is a `@Injectable` decorator;\n * @param decorator \n * @param injectableName \n * @returns \n */\nexport function isInjectableDecorator(decorator: ts.Decorator, injectableName = 'Injectable'): boolean {\n\treturn ts.isCallExpression(decorator.expression) && decorator.expression.expression.getText() === injectableName;\n};\n\n\n/**\n * check if Decorator is `@Input` or `@FormValue`\n * @param decorator \n * @returns \n */\nexport function isInputDecorator(decorator: ts.Decorator): boolean {\n\treturn ts.isCallExpression(decorator.expression) && (\n\t\tdecorator.expression.expression.getText() === 'Input'\n\t\t|| decorator.expression.expression.getText() === 'FormValue'\n\t);\n}\n\n/**\n * check if Decorator is `@Output`\n * @param decorator \n * @returns \n */\nexport function isOutputDecorator(decorator: ts.Decorator): boolean {\n\treturn ts.isCallExpression(decorator.expression) && decorator.expression.expression.getText() === 'Output';\n}\n\nexport function getMapByDecoratorForPropertyDeclaration(member: ts.PropertyDeclaration, checker: ts.TypeChecker, decoratorFilter: ((decorator: ts.Decorator) => boolean)): DecoratorInfo[] {\n\tconst infos: DecoratorInfo[] = [];\n\tconst decorators = ts.getDecorators(member);\n\tif (!decorators) {\n\t\treturn infos;\n\t}\n\tconst inputDecorators = decorators.filter(decoratorFilter);\n\tif (!inputDecorators.length) {\n\t\treturn infos;\n\t}\n\tlet inputType = member.type?.getText();\n\tif (!inputType && member.initializer) {\n\t\tinputType = checker.typeToString(checker.getTypeAtLocation(member.initializer), member.initializer, undefined);\n\t}\n\tinputDecorators.forEach(input => {\n\t\tconst decoratorCall = input.expression as ts.CallExpression;\n\t\tconst aliasName = decoratorCall.arguments[0] as ts.StringLiteralLike;\n\t\tconst alias = aliasName ? aliasName.text : member.name.getText();\n\t\tinfos.push({ name: member.name.getText(), aliasName: alias, type: inputType });\n\t});\n\treturn infos;\n}\n\nexport function getMapByDecoratorForSetAccessorDeclaration(member: ts.SetAccessorDeclaration, checker: ts.TypeChecker, decoratorFilter: ((decorator: ts.Decorator) => boolean)): DecoratorInfo[] {\n\tconst infos: DecoratorInfo[] = [];\n\tconst decorators = ts.getDecorators(member);\n\tif (!decorators) {\n\t\treturn infos;\n\t}\n\tconst inputDecorators = decorators.filter(decoratorFilter);\n\tif (!inputDecorators.length) {\n\t\treturn infos;\n\t}\n\n\tlet memberName: string;\n\tif (ts.isIdentifier(member.name)) {\n\t\tmemberName = member.name.getText();\n\t} else if (ts.isComputedPropertyName(member.name) && ts.isStringLiteral(member.name.expression)) {\n\t\tmemberName = member.name.expression.getText();\n\t} else {\n\t\treturn infos;\n\t}\n\n\tlet inputType = checker.typeToString(checker.getTypeAtLocation(member.parameters[0]), member.parameters[0], undefined);\n\tinputDecorators.forEach(input => {\n\t\tconst decoratorCall = input.expression as ts.CallExpression;\n\t\tconst aliasName = decoratorCall.arguments[0] as ts.StringLiteralLike;\n\t\tconst alias = aliasName ? aliasName.text : memberName;\n\t\tinfos.push({ name: memberName, aliasName: alias, type: inputType });\n\t});\n\treturn infos;\n}\n\nexport function getMapByDecorator(classNode: ts.ClassDeclaration, checker: ts.TypeChecker, decoratorFilter: ((decorator: ts.Decorator) => boolean)): DecoratorInfo[] {\n\tconst infos: DecoratorInfo[] = [];\n\tclassNode.members.forEach(member => {\n\t\tif (ts.isPropertyDeclaration(member)) {\n\t\t\tinfos.push(...getMapByDecoratorForPropertyDeclaration(member, checker, decoratorFilter));\n\t\t} else if (ts.isSetAccessorDeclaration(member)) {\n\t\t\tinfos.push(...getMapByDecoratorForSetAccessorDeclaration(member, checker, decoratorFilter));\n\t\t}\n\t})\n\treturn infos;\n}\n\n/**\n * get a component or directive inputs that is annotated by `@Input` or `@FormValue`.\n * @param classNode \n * @param checker \n * @returns \n */\nexport function getInputs(classNode: ts.ClassDeclaration, checker: ts.TypeChecker): DecoratorInfo[] {\n\treturn getMapByDecorator(classNode, checker, isInputDecorator);\n}\n\n/**\n * get a component or directive input names that is annotated by `@Input` or `@FormValue`.\n * @param classNode \n * @param checker \n * @returns \n */\nexport function getInputNames(classNode: ts.ClassDeclaration, checker: ts.TypeChecker): string[] {\n\treturn getInputs(classNode, checker).map(info => info.aliasName);\n}\n\n/**\n * get a component or directive outputs that is annotated by `@Output`.\n * @param classNode \n * @param checker \n * @returns \n */\nexport function getOutputs(classNode: ts.ClassDeclaration, checker: ts.TypeChecker): DecoratorInfo[] {\n\treturn getMapByDecorator(classNode, checker, isOutputDecorator);\n}\n\n/**\n * get a component or directive output names that is annotated by `@Output`.\n * @param classNode \n * @param checker \n * @returns \n */\nexport function getOutputNames(classNode: ts.ClassDeclaration, checker: ts.TypeChecker): string[] {\n\treturn getOutputs(classNode, checker).map(info => info.aliasName);\n}\n\n/**\n * get text value for a property in ObjectLiteralExpression\n * @param option \n * @param property \n * @returns \n */\nexport function getTextValueFormLiteralProperty(option: ts.ObjectLiteralExpression, property: string): string | undefined {\n\tconst selectorProperty = option.properties\n\t\t.find(prop => prop.name?.getText() === property) as ts.PropertyAssignment | undefined;\n\n\tconst initializer = selectorProperty?.initializer.getText();\n\tif (!initializer) {\n\t\treturn;\n\t}\n\treturn initializer?.substring(1, initializer.length - 1);\n}\n\n\n/**\n * get text value for a property in ObjectLiteralExpression\n * @param option \n * @param property \n * @returns \n */\nexport function getTextValueFormArrayLiteralProperty(option: ts.ObjectLiteralExpression, property: string): string[] {\n\tconst selectorProperty = option.properties\n\t\t.find(prop => prop.name?.getText() === property) as ts.PropertyAssignment | undefined;\n\tif (!selectorProperty?.initializer || !ts.isArrayLiteralExpression(selectorProperty.initializer)) {\n\t\treturn [];\n\t}\n\treturn selectorProperty.initializer.elements\n\t\t.map(initializer => initializer.getText())\n\t\t.map(initializer => initializer.substring(1, initializer.length - 1));\n}\n\n\nexport function scanAliasName(call: ts.CallExpression): string | void {\n\tconst alias = call.arguments\n\t\t.filter(expr => ts.isObjectLiteralExpression(expr))\n\t\t.flatMap(expr => expr.properties)\n\t\t.filter(expr => ts.isPropertyAssignment(expr) && ts.isStringLiteral(expr.initializer) && ts.isIdentifier(expr.name) && expr.name.getText() === 'alias')\n\t\t.at(0) as ts.PropertyAssignment | undefined;\n\tconst initializer = alias?.initializer.getText();\n\treturn initializer?.substring(1, initializer.length - 1);\n}\n\nexport function scanSignalCall(call: ts.CallExpression, signalKey: string, name: string): SignalInfo | false {\n\tconst type = call.typeArguments?.[0].getText();\n\tif (ts.isIdentifier(call.expression) && call.expression.getText() === signalKey) {\n\t\treturn { name, type, aliasName: scanAliasName(call) ?? name } as SignalInfo;\n\t} else if (ts.isPropertyAccessExpression(call.expression)\n\t\t&& ts.isIdentifier(call.expression.expression) && call.expression.expression.getText() === signalKey\n\t\t&& ts.isIdentifier(call.expression.name) && call.expression.name.getText() === 'required') {\n\t\treturn { name, type, necessity: 'required', aliasName: scanAliasName(call) ?? name } as SignalInfo;\n\t} else if (ts.isElementAccessExpression(call.expression)\n\t\t&& ts.isIdentifier(call.expression.expression) && call.expression.expression.getText() === signalKey\n\t\t&& ts.isIdentifier(call.expression.argumentExpression) && call.expression.argumentExpression.getText() === 'required') {\n\t\treturn { name, type, necessity: 'required', aliasName: scanAliasName(call) ?? name } as SignalInfo;\n\t}\n\treturn false;\n}\n\n/**\n * get component and directive signals that is evaluated with `input`, `output`, ... etc.\n * @param classNode \n * @param signals \n * @returns \n */\nexport function scanSignals(classNode: ts.ClassDeclaration, signals: SignalDetails): SignalMetadata {\n\tconst infos: SignalMetadata = {};\n\tconst members = classNode.members\n\t\t.filter(member => ts.isPropertyDeclaration(member)\n\t\t\t&& member.initializer\n\t\t\t&& ts.isCallExpression(member.initializer)\n\t\t) as ts.PropertyDeclaration[];\n\tObject.entries(signals).forEach(([alias, signal]) => {\n\t\tmembers.forEach(member => {\n\t\t\tconst name = (ts.isComputedPropertyName(member.name) && ts.isStringLiteral(member.name.expression))\n\t\t\t\t? member.name.expression.getText()\n\t\t\t\t: member.name.getText()\n\t\t\tconst info = scanSignalCall(member.initializer as ts.CallExpression, alias, checkAndRemoveQuotations(name));\n\t\t\tinfo && (infos[signal as SignalKey] ??= []).push(info);\n\t\t});\n\t});\n\treturn infos;\n}\n\nfunction checkAndRemoveQuotations(string: string) {\n\tif (/(^'.*'$)|(^\".*\"$)|(^`.*`$)/.test(string)) {\n\t\treturn string.substring(1, string.length - 1);\n\t}\n\treturn string;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/cli/transformer/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,gDAAgD,CAAC;AAKhE;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAuB,EAAE,aAAa,GAAG,WAAW;IACxF,OAAO,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,aAAa,CAAC;AACjH,CAAC;AAAA,CAAC;AAGF;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAuB,EAAE,aAAa,GAAG,WAAW;IACxF,OAAO,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,aAAa,CAAC;AACjH,CAAC;AAAA,CAAC;AAEF,MAAM,UAAU,+BAA+B,CAAC,SAAuB,EAAE,aAAa,GAAG,WAAW,EAAE,aAAa,GAAG,WAAW;IAChI,OAAO,oBAAoB,CAAC,SAAS,EAAE,aAAa,CAAC,IAAI,oBAAoB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AACzG,CAAC;AAAA,CAAC;AAGF;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,SAAuB,EAAE,QAAQ,GAAG,MAAM;IACzE,OAAO,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC;AAC5G,CAAC;AAAA,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAAuB,EAAE,cAAc,GAAG,YAAY;IAC3F,OAAO,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,cAAc,CAAC;AAClH,CAAC;AAAA,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAuB,EAAE,cAAc,GAAG,SAAS;IACrF,OAAO,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,cAAc,CAAC;AAClH,CAAC;AAAA,CAAC;AAGF;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAuB;IACvD,OAAO,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CACnD,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,OAAO;WAClD,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,WAAW,CAC5D,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAuB;IACxD,OAAO,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC;AAC5G,CAAC;AAED,MAAM,UAAU,uCAAuC,CAAC,MAA8B,EAAE,OAAuB,EAAE,eAAuD;IACvK,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAC3D,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACd,CAAC;IACD,IAAI,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;IACvC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACtC,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAChH,CAAC;IACD,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC/B,MAAM,aAAa,GAAG,KAAK,CAAC,UAA+B,CAAC;QAC5D,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAyB,CAAC;QACrE,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACjE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,UAAU,0CAA0C,CAAC,MAAiC,EAAE,OAAuB,EAAE,eAAuD;IAC7K,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAC3D,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACd,CAAC;IAED,IAAI,UAAkB,CAAC;IACvB,IAAI,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACpC,CAAC;SAAM,IAAI,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACjG,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IAC/C,CAAC;SAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACd,CAAC;IAED,IAAI,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACvH,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC/B,MAAM,aAAa,GAAG,KAAK,CAAC,UAA+B,CAAC;QAC5D,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAyB,CAAC;QACrE,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,SAA8B,EAAE,OAAuB,EAAE,eAAuD;IACjJ,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAClC,IAAI,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,GAAG,uCAAuC,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;QAC1F,CAAC;aAAM,IAAI,EAAE,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,GAAG,0CAA0C,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;QAC7F,CAAC;IACF,CAAC,CAAC,CAAA;IACF,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,SAA8B,EAAE,OAAuB;IAChF,OAAO,iBAAiB,CAAC,SAAS,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAChE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,SAA8B,EAAE,OAAuB;IACpF,OAAO,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAClE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,SAA8B,EAAE,OAAuB;IACjF,OAAO,iBAAiB,CAAC,SAAS,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;AACjE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,SAA8B,EAAE,OAAuB;IACrF,OAAO,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACnE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,+BAA+B,CAAC,MAAkC,EAAE,QAAgB;IACnG,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU;SACxC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,QAAQ,CAAsC,CAAC;IAEvF,MAAM,WAAW,GAAG,gBAAgB,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC;IAC5D,IAAI,CAAC,WAAW,EAAE,CAAC;QAClB,OAAO;IACR,CAAC;IACD,OAAO,WAAW,EAAE,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC1D,CAAC;AAGD;;;;;GAKG;AACH,MAAM,UAAU,oCAAoC,CAAC,MAAkC,EAAE,QAAgB;IACxG,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU;SACxC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,QAAQ,CAAsC,CAAC;IACvF,IAAI,CAAC,gBAAgB,EAAE,WAAW,IAAI,CAAC,EAAE,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC;QAClG,OAAO,EAAE,CAAC;IACX,CAAC;IACD,OAAO,gBAAgB,CAAC,WAAW,CAAC,QAAQ;SAC1C,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;SACzC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC;AAGD,MAAM,UAAU,aAAa,CAAC,IAAuB;IACpD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS;SAC1B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;SAClD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;SAChC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO,CAAC;SACtJ,EAAE,CAAC,CAAC,CAAsC,CAAC;IAC7C,MAAM,WAAW,GAAG,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC;IACjD,OAAO,WAAW,EAAE,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAuB,EAAE,SAAiB,EAAE,IAAY;IACtF,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC/C,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,SAAS,EAAE,CAAC;QACjF,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,EAAgB,CAAC;IAC7E,CAAC;SAAM,IAAI,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC;WACrD,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,SAAS;WACjG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;QAC5F,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,EAAgB,CAAC;IACpG,CAAC;SAAM,IAAI,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC;WACpD,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,SAAS;WACjG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;QACxH,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,EAAgB,CAAC;IACpG,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,SAA8B,EAAE,OAAsB;IACjF,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO;SAC/B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC;WAC9C,MAAM,CAAC,WAAW;WAClB,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CACd,CAAC;IAC/B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE;QACnD,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACxB,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAClG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;gBAClC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAA;YACxB,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,WAAgC,EAAE,KAAK,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5G,IAAI,IAAI,CAAC,KAAK,CAAC,MAAmB,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,wBAAwB,CAAC,MAAc;IAC/C,IAAI,4BAA4B,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/C,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC","sourcesContent":["import ts from '@typescript/typescript6/lib/tsserverlibrary.js';\nimport { DecoratorInfo, SignalMetadata, SignalInfo } from './modules.js';\nimport { SignalDetails, SignalKey } from './signals.js';\n\n\n/**\n * check if a decorator is a `@Component` decorator;\n * @param decorator \n * @param expressionName \n * @returns \n */\nexport function isComponentDecorator(decorator: ts.Decorator, componentName = 'Component'): boolean {\n\treturn ts.isCallExpression(decorator.expression) && decorator.expression.expression.getText() === componentName;\n};\n\n\n/**\n * check if a decorator is a `@Directive` decorator;\n * @param decorator \n * @param directiveName \n * @returns \n */\nexport function isDirectiveDecorator(decorator: ts.Decorator, directiveName = 'Directive'): boolean {\n\treturn ts.isCallExpression(decorator.expression) && decorator.expression.expression.getText() === directiveName;\n};\n\nexport function isComponentOrDirectiveDecorator(decorator: ts.Decorator, componentName = 'Component', directiveName = 'Directive'): boolean {\n\treturn isComponentDecorator(decorator, componentName) || isDirectiveDecorator(decorator, directiveName);\n};\n\n\n/**\n * check if a decorator is a `@Pipe` decorator;\n * @param decorator \n * @param pipeName \n * @returns \n */\nexport function isPipeDecorator(decorator: ts.Decorator, pipeName = 'Pipe'): boolean {\n\treturn ts.isCallExpression(decorator.expression) && decorator.expression.expression.getText() === pipeName;\n};\n\n/**\n * check if a decorator is a `@Injectable` decorator;\n * @param decorator \n * @param injectableName \n * @returns \n */\nexport function isInjectableDecorator(decorator: ts.Decorator, injectableName = 'Injectable'): boolean {\n\treturn ts.isCallExpression(decorator.expression) && decorator.expression.expression.getText() === injectableName;\n};\n\n/**\n * check if a decorator is a `@Service` decorator;\n * @param decorator \n * @param injectableName \n * @returns \n */\nexport function isServiceDecorator(decorator: ts.Decorator, injectableName = 'Service'): boolean {\n\treturn ts.isCallExpression(decorator.expression) && decorator.expression.expression.getText() === injectableName;\n};\n\n\n/**\n * check if Decorator is `@Input` or `@FormValue`\n * @param decorator \n * @returns \n */\nexport function isInputDecorator(decorator: ts.Decorator): boolean {\n\treturn ts.isCallExpression(decorator.expression) && (\n\t\tdecorator.expression.expression.getText() === 'Input'\n\t\t|| decorator.expression.expression.getText() === 'FormValue'\n\t);\n}\n\n/**\n * check if Decorator is `@Output`\n * @param decorator \n * @returns \n */\nexport function isOutputDecorator(decorator: ts.Decorator): boolean {\n\treturn ts.isCallExpression(decorator.expression) && decorator.expression.expression.getText() === 'Output';\n}\n\nexport function getMapByDecoratorForPropertyDeclaration(member: ts.PropertyDeclaration, checker: ts.TypeChecker, decoratorFilter: ((decorator: ts.Decorator) => boolean)): DecoratorInfo[] {\n\tconst infos: DecoratorInfo[] = [];\n\tconst decorators = ts.getDecorators(member);\n\tif (!decorators) {\n\t\treturn infos;\n\t}\n\tconst inputDecorators = decorators.filter(decoratorFilter);\n\tif (!inputDecorators.length) {\n\t\treturn infos;\n\t}\n\tlet inputType = member.type?.getText();\n\tif (!inputType && member.initializer) {\n\t\tinputType = checker.typeToString(checker.getTypeAtLocation(member.initializer), member.initializer, undefined);\n\t}\n\tinputDecorators.forEach(input => {\n\t\tconst decoratorCall = input.expression as ts.CallExpression;\n\t\tconst aliasName = decoratorCall.arguments[0] as ts.StringLiteralLike;\n\t\tconst alias = aliasName ? aliasName.text : member.name.getText();\n\t\tinfos.push({ name: member.name.getText(), aliasName: alias, type: inputType });\n\t});\n\treturn infos;\n}\n\nexport function getMapByDecoratorForSetAccessorDeclaration(member: ts.SetAccessorDeclaration, checker: ts.TypeChecker, decoratorFilter: ((decorator: ts.Decorator) => boolean)): DecoratorInfo[] {\n\tconst infos: DecoratorInfo[] = [];\n\tconst decorators = ts.getDecorators(member);\n\tif (!decorators) {\n\t\treturn infos;\n\t}\n\tconst inputDecorators = decorators.filter(decoratorFilter);\n\tif (!inputDecorators.length) {\n\t\treturn infos;\n\t}\n\n\tlet memberName: string;\n\tif (ts.isIdentifier(member.name)) {\n\t\tmemberName = member.name.getText();\n\t} else if (ts.isComputedPropertyName(member.name) && ts.isStringLiteral(member.name.expression)) {\n\t\tmemberName = member.name.expression.getText();\n\t} else {\n\t\treturn infos;\n\t}\n\n\tlet inputType = checker.typeToString(checker.getTypeAtLocation(member.parameters[0]), member.parameters[0], undefined);\n\tinputDecorators.forEach(input => {\n\t\tconst decoratorCall = input.expression as ts.CallExpression;\n\t\tconst aliasName = decoratorCall.arguments[0] as ts.StringLiteralLike;\n\t\tconst alias = aliasName ? aliasName.text : memberName;\n\t\tinfos.push({ name: memberName, aliasName: alias, type: inputType });\n\t});\n\treturn infos;\n}\n\nexport function getMapByDecorator(classNode: ts.ClassDeclaration, checker: ts.TypeChecker, decoratorFilter: ((decorator: ts.Decorator) => boolean)): DecoratorInfo[] {\n\tconst infos: DecoratorInfo[] = [];\n\tclassNode.members.forEach(member => {\n\t\tif (ts.isPropertyDeclaration(member)) {\n\t\t\tinfos.push(...getMapByDecoratorForPropertyDeclaration(member, checker, decoratorFilter));\n\t\t} else if (ts.isSetAccessorDeclaration(member)) {\n\t\t\tinfos.push(...getMapByDecoratorForSetAccessorDeclaration(member, checker, decoratorFilter));\n\t\t}\n\t})\n\treturn infos;\n}\n\n/**\n * get a component or directive inputs that is annotated by `@Input` or `@FormValue`.\n * @param classNode \n * @param checker \n * @returns \n */\nexport function getInputs(classNode: ts.ClassDeclaration, checker: ts.TypeChecker): DecoratorInfo[] {\n\treturn getMapByDecorator(classNode, checker, isInputDecorator);\n}\n\n/**\n * get a component or directive input names that is annotated by `@Input` or `@FormValue`.\n * @param classNode \n * @param checker \n * @returns \n */\nexport function getInputNames(classNode: ts.ClassDeclaration, checker: ts.TypeChecker): string[] {\n\treturn getInputs(classNode, checker).map(info => info.aliasName);\n}\n\n/**\n * get a component or directive outputs that is annotated by `@Output`.\n * @param classNode \n * @param checker \n * @returns \n */\nexport function getOutputs(classNode: ts.ClassDeclaration, checker: ts.TypeChecker): DecoratorInfo[] {\n\treturn getMapByDecorator(classNode, checker, isOutputDecorator);\n}\n\n/**\n * get a component or directive output names that is annotated by `@Output`.\n * @param classNode \n * @param checker \n * @returns \n */\nexport function getOutputNames(classNode: ts.ClassDeclaration, checker: ts.TypeChecker): string[] {\n\treturn getOutputs(classNode, checker).map(info => info.aliasName);\n}\n\n/**\n * get text value for a property in ObjectLiteralExpression\n * @param option \n * @param property \n * @returns \n */\nexport function getTextValueFormLiteralProperty(option: ts.ObjectLiteralExpression, property: string): string | undefined {\n\tconst selectorProperty = option.properties\n\t\t.find(prop => prop.name?.getText() === property) as ts.PropertyAssignment | undefined;\n\n\tconst initializer = selectorProperty?.initializer.getText();\n\tif (!initializer) {\n\t\treturn;\n\t}\n\treturn initializer?.substring(1, initializer.length - 1);\n}\n\n\n/**\n * get text value for a property in ObjectLiteralExpression\n * @param option \n * @param property \n * @returns \n */\nexport function getTextValueFormArrayLiteralProperty(option: ts.ObjectLiteralExpression, property: string): string[] {\n\tconst selectorProperty = option.properties\n\t\t.find(prop => prop.name?.getText() === property) as ts.PropertyAssignment | undefined;\n\tif (!selectorProperty?.initializer || !ts.isArrayLiteralExpression(selectorProperty.initializer)) {\n\t\treturn [];\n\t}\n\treturn selectorProperty.initializer.elements\n\t\t.map(initializer => initializer.getText())\n\t\t.map(initializer => initializer.substring(1, initializer.length - 1));\n}\n\n\nexport function scanAliasName(call: ts.CallExpression): string | void {\n\tconst alias = call.arguments\n\t\t.filter(expr => ts.isObjectLiteralExpression(expr))\n\t\t.flatMap(expr => expr.properties)\n\t\t.filter(expr => ts.isPropertyAssignment(expr) && ts.isStringLiteral(expr.initializer) && ts.isIdentifier(expr.name) && expr.name.getText() === 'alias')\n\t\t.at(0) as ts.PropertyAssignment | undefined;\n\tconst initializer = alias?.initializer.getText();\n\treturn initializer?.substring(1, initializer.length - 1);\n}\n\nexport function scanSignalCall(call: ts.CallExpression, signalKey: string, name: string): SignalInfo | false {\n\tconst type = call.typeArguments?.[0].getText();\n\tif (ts.isIdentifier(call.expression) && call.expression.getText() === signalKey) {\n\t\treturn { name, type, aliasName: scanAliasName(call) ?? name } as SignalInfo;\n\t} else if (ts.isPropertyAccessExpression(call.expression)\n\t\t&& ts.isIdentifier(call.expression.expression) && call.expression.expression.getText() === signalKey\n\t\t&& ts.isIdentifier(call.expression.name) && call.expression.name.getText() === 'required') {\n\t\treturn { name, type, necessity: 'required', aliasName: scanAliasName(call) ?? name } as SignalInfo;\n\t} else if (ts.isElementAccessExpression(call.expression)\n\t\t&& ts.isIdentifier(call.expression.expression) && call.expression.expression.getText() === signalKey\n\t\t&& ts.isIdentifier(call.expression.argumentExpression) && call.expression.argumentExpression.getText() === 'required') {\n\t\treturn { name, type, necessity: 'required', aliasName: scanAliasName(call) ?? name } as SignalInfo;\n\t}\n\treturn false;\n}\n\n/**\n * get component and directive signals that is evaluated with `input`, `output`, ... etc.\n * @param classNode \n * @param signals \n * @returns \n */\nexport function scanSignals(classNode: ts.ClassDeclaration, signals: SignalDetails): SignalMetadata {\n\tconst infos: SignalMetadata = {};\n\tconst members = classNode.members\n\t\t.filter(member => ts.isPropertyDeclaration(member)\n\t\t\t&& member.initializer\n\t\t\t&& ts.isCallExpression(member.initializer)\n\t\t) as ts.PropertyDeclaration[];\n\tObject.entries(signals).forEach(([alias, signal]) => {\n\t\tmembers.forEach(member => {\n\t\t\tconst name = (ts.isComputedPropertyName(member.name) && ts.isStringLiteral(member.name.expression))\n\t\t\t\t? member.name.expression.getText()\n\t\t\t\t: member.name.getText()\n\t\t\tconst info = scanSignalCall(member.initializer as ts.CallExpression, alias, checkAndRemoveQuotations(name));\n\t\t\tinfo && (infos[signal as SignalKey] ??= []).push(info);\n\t\t});\n\t});\n\treturn infos;\n}\n\nfunction checkAndRemoveQuotations(string: string) {\n\tif (/(^'.*'$)|(^\".*\"$)|(^`.*`$)/.test(string)) {\n\t\treturn string.substring(1, string.length - 1);\n\t}\n\treturn string;\n}\n"]}
|
package/transformer/modules.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type ts from 'typescript/lib/tsserverlibrary.js';
|
|
1
|
+
import type ts from '@typescript/typescript6/lib/tsserverlibrary.js';
|
|
2
2
|
import { SignalKey } from './signals.js';
|
|
3
3
|
export type ViewInfo = {
|
|
4
4
|
selector: string;
|
|
@@ -31,7 +31,7 @@ export type ModuleInfo = {
|
|
|
31
31
|
classes?: ClassInfo[];
|
|
32
32
|
};
|
|
33
33
|
declare class ModuleManger implements Map<string, ModuleInfo> {
|
|
34
|
-
[Symbol.iterator]():
|
|
34
|
+
[Symbol.iterator](): MapIterator<[string, ModuleInfo]>;
|
|
35
35
|
[Symbol.toStringTag]: string;
|
|
36
36
|
get size(): number;
|
|
37
37
|
private map;
|
|
@@ -42,9 +42,9 @@ declare class ModuleManger implements Map<string, ModuleInfo> {
|
|
|
42
42
|
get(key: string): ModuleInfo | undefined;
|
|
43
43
|
has(key: string): boolean;
|
|
44
44
|
set(key: string, value: ModuleInfo): this;
|
|
45
|
-
entries():
|
|
46
|
-
keys():
|
|
47
|
-
values():
|
|
45
|
+
entries(): MapIterator<[string, ModuleInfo]>;
|
|
46
|
+
keys(): MapIterator<string>;
|
|
47
|
+
values(): MapIterator<ModuleInfo>;
|
|
48
48
|
}
|
|
49
49
|
export declare const moduleManger: ModuleManger;
|
|
50
50
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../../../src/cli/transformer/modules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../../../src/cli/transformer/modules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,gDAAgD,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,MAAM,QAAQ,GAAG;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,EAAE,CAAC,oBAAoB,CAAC;IACvC,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAC/E,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG;IAAE,SAAS,CAAC,EAAE,UAAU,CAAC;CAAE,CAAC;AACrE,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;AAEtE,MAAM,MAAM,SAAS,GAAG;IACvB,IAAI,EAAE,WAAW,GAAG,WAAW,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,OAAO,EAAE,cAAc,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;CAAE,CAAA;AAEjE,cAAM,YAAa,YAAW,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;IACpD,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAGtD,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,CAAiB;IAE7C,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,OAAO,CAAC,GAAG,CAAiC;IAE5C,GAAG,CAAC,IAAI,EAAE,UAAU;IAGpB,KAAK,IAAI,IAAI;IAGb,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAG5B,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IAGhH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAGxC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAGzB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAIzC,OAAO,IAAI,WAAW,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAG5C,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC;IAG3B,MAAM,IAAI,WAAW,CAAC,UAAU,CAAC;CAGjC;AAED,eAAO,MAAM,YAAY,cAAqB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modules.js","sourceRoot":"","sources":["../../../src/cli/transformer/modules.ts"],"names":[],"mappings":"AA4BA,MAAM,YAAY;IACjB,CAAC,MAAM,CAAC,QAAQ,CAAC;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IACpC,CAAC;IACD,CAAC,MAAM,CAAC,WAAW,CAAC,GAAW,aAAa,CAAC;IAE7C,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACtB,CAAC;IAEO,GAAG,GAAG,IAAI,GAAG,EAAsB,CAAC;IAE5C,GAAG,CAAC,IAAgB;QACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,KAAK;QACJ,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IACD,MAAM,CAAC,GAAW;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,CAAC,UAAkF,EAAE,OAAa;QACxG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IACD,GAAG,CAAC,GAAW;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,GAAG,CAAC,GAAW;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,GAAG,CAAC,GAAW,EAAE,KAAiB;QACjC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IACD,MAAM;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;IAC1B,CAAC;CACD;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC","sourcesContent":["import type ts from 'typescript/lib/tsserverlibrary.js';\nimport { SignalKey } from './signals.js';\n\nexport type ViewInfo = {\n\tselector: string;\n\textendsType: string;\n\tviewName: string;\n\tinterfaceType: ts.InterfaceDeclaration;\n\tformAssociated: boolean;\n\tdisabledFeatures?: string[];\n};\n\nexport type DecoratorInfo = { name: string, aliasName: string, type?: string };\nexport type SignalInfo = DecoratorInfo & { necessity?: 'required'; };\nexport type SignalMetadata = Partial<Record<SignalKey, SignalInfo[]>>;\n\nexport type ClassInfo = {\n\ttype: 'component' | 'directive';\n\tname: string,\n\tsuccessors?: string[];\n\tviews: ViewInfo[];\n\tinputs: DecoratorInfo[];\n\toutputs: DecoratorInfo[];\n\tsignals: SignalMetadata;\n};\n\nexport type ModuleInfo = { path: string; classes?: ClassInfo[]; }\n\nclass ModuleManger implements Map<string, ModuleInfo> {\n\t[Symbol.iterator]():
|
|
1
|
+
{"version":3,"file":"modules.js","sourceRoot":"","sources":["../../../src/cli/transformer/modules.ts"],"names":[],"mappings":"AA4BA,MAAM,YAAY;IACjB,CAAC,MAAM,CAAC,QAAQ,CAAC;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IACpC,CAAC;IACD,CAAC,MAAM,CAAC,WAAW,CAAC,GAAW,aAAa,CAAC;IAE7C,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACtB,CAAC;IAEO,GAAG,GAAG,IAAI,GAAG,EAAsB,CAAC;IAE5C,GAAG,CAAC,IAAgB;QACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,KAAK;QACJ,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IACD,MAAM,CAAC,GAAW;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,CAAC,UAAkF,EAAE,OAAa;QACxG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IACD,GAAG,CAAC,GAAW;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,GAAG,CAAC,GAAW;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,GAAG,CAAC,GAAW,EAAE,KAAiB;QACjC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IACD,MAAM;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;IAC1B,CAAC;CACD;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC","sourcesContent":["import type ts from '@typescript/typescript6/lib/tsserverlibrary.js';\nimport { SignalKey } from './signals.js';\n\nexport type ViewInfo = {\n\tselector: string;\n\textendsType: string;\n\tviewName: string;\n\tinterfaceType: ts.InterfaceDeclaration;\n\tformAssociated: boolean;\n\tdisabledFeatures?: string[];\n};\n\nexport type DecoratorInfo = { name: string, aliasName: string, type?: string };\nexport type SignalInfo = DecoratorInfo & { necessity?: 'required'; };\nexport type SignalMetadata = Partial<Record<SignalKey, SignalInfo[]>>;\n\nexport type ClassInfo = {\n\ttype: 'component' | 'directive';\n\tname: string,\n\tsuccessors?: string[];\n\tviews: ViewInfo[];\n\tinputs: DecoratorInfo[];\n\toutputs: DecoratorInfo[];\n\tsignals: SignalMetadata;\n};\n\nexport type ModuleInfo = { path: string; classes?: ClassInfo[]; }\n\nclass ModuleManger implements Map<string, ModuleInfo> {\n\t[Symbol.iterator](): MapIterator<[string, ModuleInfo]> {\n\t\treturn this.map[Symbol.iterator]();\n\t}\n\t[Symbol.toStringTag]: string = 'Module Info';\n\n\tget size(): number {\n\t\treturn this.map.size;\n\t}\n\n\tprivate map = new Map<string, ModuleInfo>();\n\n\tadd(info: ModuleInfo) {\n\t\tthis.map.set(info.path, info);\n\t}\n\tclear(): void {\n\t\tthis.map.clear();\n\t}\n\tdelete(key: string): boolean {\n\t\treturn this.map.delete(key);\n\t}\n\tforEach(callbackfn: (value: ModuleInfo, key: string, map: Map<string, ModuleInfo>) => void, thisArg?: any): void {\n\t\tthis.map.forEach(callbackfn, thisArg);\n\t}\n\tget(key: string): ModuleInfo | undefined {\n\t\treturn this.map.get(key);\n\t}\n\thas(key: string): boolean {\n\t\treturn this.map.has(key);\n\t}\n\tset(key: string, value: ModuleInfo): this {\n\t\tthis.map.set(key, value);\n\t\treturn this;\n\t}\n\tentries(): MapIterator<[string, ModuleInfo]> {\n\t\treturn this.map.entries();\n\t}\n\tkeys(): MapIterator<string> {\n\t\treturn this.map.keys();\n\t}\n\tvalues(): MapIterator<ModuleInfo> {\n\t\treturn this.map.values();\n\t}\n}\n\nexport const moduleManger = new ModuleManger();\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan-directives.d.ts","sourceRoot":"","sources":["../../../src/cli/transformer/scan-directives.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"scan-directives.d.ts","sourceRoot":"","sources":["../../../src/cli/transformer/scan-directives.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,gDAAgD,CAAC;AAsDhE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,IAAI,CAMzE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import ts from 'typescript/lib/tsserverlibrary.js';
|
|
1
|
+
import ts from '@typescript/typescript6/lib/tsserverlibrary.js';
|
|
2
2
|
import { registerDirectiveCall } from '../directives/register.js';
|
|
3
3
|
function removeQuotations(string) {
|
|
4
4
|
return string.substring(1, string.length - 1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan-directives.js","sourceRoot":"","sources":["../../../src/cli/transformer/scan-directives.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"scan-directives.js","sourceRoot":"","sources":["../../../src/cli/transformer/scan-directives.ts"],"names":[],"mappings":"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","sourcesContent":["import ts from '@typescript/typescript6/lib/tsserverlibrary.js';\nimport { DirectiveInfo, registerDirectiveCall } from '../directives/register.js';\n\n\nfunction removeQuotations(string: string) {\n\treturn string.substring(1, string.length - 1);\n}\n\nfunction extractDirectives(alias: ts.TypeAliasDeclaration, sourceFile: ts.SourceFile) {\n\tconst elm = alias.type;\n\tif (!ts.isTypeLiteralNode(elm)) {\n\t\treturn;\n\t}\n\tconst info = {} as DirectiveInfo;\n\telm.members.forEach(member => {\n\t\tif (!ts.isPropertySignature(member)) {\n\t\t\treturn;\n\t\t}\n\t\tconst name = member.name.getText(sourceFile);\n\t\tif ((name === 'selector') && member.type && ts.isLiteralTypeNode(member.type)) {\n\t\t\tconst value = member.type.literal.getText(sourceFile);\n\t\t\tinfo[name] = removeQuotations(value);\n\t\t} else if ((name === 'successors') && member.type && ts.isArrayLiteralExpression(member.type)) {\n\t\t\tconst values = member.type.elements.map(elm => elm.getText(sourceFile));\n\t\t\tinfo[name] = values.map(removeQuotations);\n\t\t} else if ((name === 'inputs' || name === 'outputs') && member.type && ts.isTupleTypeNode(member.type)) {\n\t\t\ttype Item = { name: string, aliasName: string };\n\t\t\tconst value: Item[] = [];\n\t\t\tmember.type.elements.forEach(item => {\n\t\t\t\tif (!ts.isTypeLiteralNode(item)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst itemObject = {} as Item;\n\t\t\t\titem.members.forEach(property => {\n\t\t\t\t\tif (!ts.isPropertySignature(property)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst key = property.name.getText(sourceFile);\n\t\t\t\t\tif ((key === 'name' || key == 'aliasName') && property.type && ts.isLiteralTypeNode(property.type)) {\n\t\t\t\t\t\tconst keyValue = property.type.literal.getText(sourceFile);\n\t\t\t\t\t\titemObject[key] = removeQuotations(keyValue);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tvalue.push(itemObject);\n\t\t\t});\n\t\t\tinfo[name] = value;\n\t\t}\n\t});\n\tif (!info.selector) {\n\t\treturn;\n\t}\n\tregisterDirectiveCall(info);\n}\n\n/**\n * search for `ɵɵ0Directive.*0ɵɵ` type\n * \n * example:\n * ```ts\n * export type ɵɵ0IfDirective0ɵɵ = {\n * \tselector: '*if';\n * \tsuccessor: '*else',\n * \tinputs: [\n * \t\t{ name: 'ifCondition', aliasName: 'if' },\n * \t\t{ name: 'thenTemplateRef', aliasName: 'then' },\n * \t\t{ name: 'elseTemplateRef', aliasName: 'else' },\n * \t],\n * \toutputs: [],\n * };\n * ```\n * @param program a ts program \n * @returns a transformer factory of source file\n */\nexport function scanDirectivesTypeVisitor(sourceFile: ts.SourceFile): void {\n\tts.forEachChild(sourceFile, node => {\n\t\tif (ts.isTypeAliasDeclaration(node) && node.name.getText(sourceFile).endsWith('Directive0ɵɵ')) {\n\t\t\textractDirectives(node, sourceFile);\n\t\t}\n\t});\n}\n"]}
|
package/webpack/loader.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { normalize } from 'path';
|
|
2
|
-
import ts from 'typescript/lib/tsserverlibrary.js';
|
|
2
|
+
import ts from '@typescript/typescript6/lib/tsserverlibrary.js';
|
|
3
3
|
import { getConfigPath, getTransformers, scanDirectives } from '../compiler/compiler.js';
|
|
4
4
|
let host;
|
|
5
5
|
let program;
|
package/webpack/loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/cli/webpack/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/cli/webpack/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,MAAM,gDAAgD,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzF,IAAI,IAAqB,CAAC;AAC1B,IAAI,OAAmB,CAAC;AACxB,IAAI,YAAkC,CAAC;AACvC,IAAI,YAAmC,CAAC;AAYxC;;GAEG;AAEH,MAAM,UAAU,cAAc;IAC7B,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,GAAG,GAAG,EAAE,CAAC,gCAAgC,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,GAAU,CAAC,CAAC;IAC/E,IAAI,CAAC,GAAG,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC1C,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;IAC9B,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7D,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACxC,cAAc,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,MAAM,CAA6B,QAAgB,EAAE,cAAoC;IACxG,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,IAAI,CAAC;YACJ,cAAc,EAAE,CAAC;QAClB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,IAAI,CAAC,QAAQ,CAAC,CAAU,CAAC,CAAC;QAC3B,CAAC;IACF,CAAC;IACD,IAAI,OAA2B,EAAE,SAA6B,CAAC;IAC/D,IAAI,CAAC,SAAS,GAAG,CAAC,QAAgB,EAAE,QAAgB,EAAE,EAAE;QACvD,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,SAAS,GAAG,QAAQ,CAAC;QACtB,CAAC;aAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO,GAAG,QAAQ,CAAC;QACpB,CAAC;IACF,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC9C,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAC7F,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACxC,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC;AAC/B,CAAC","sourcesContent":["import { normalize } from 'path';\nimport ts from '@typescript/typescript6/lib/tsserverlibrary.js';\nimport { getConfigPath, getTransformers, scanDirectives } from '../compiler/compiler.js';\n\nlet host: ts.CompilerHost;\nlet program: ts.Program;\nlet orgWriteFile: ts.WriteFileCallback;\nlet transformers: ts.CustomTransformers;\n\ninterface webpackLoaderContext {\n\n\tresourcePath: string;\n\n\tcallback(e: Error): void;\n\n\tcallback(e: null, content?: string, sourceMap?: string): void;\n\n}\n\n/**\n * The entry point for ts-loader\n */\n\nexport function initTypeScript() {\n\tconst configPath = getConfigPath();\n\tconst cmd = ts.getParsedCommandLineOfConfigFile(configPath, {}, ts.sys as any);\n\tif (!cmd) {\n\t\tconsole.log(`can't parse command line `);\n\t\tthrow new Error('');\n\t}\n\thost = ts.createCompilerHost(cmd.options);\n\torgWriteFile = host.writeFile;\n\tprogram = ts.createProgram(cmd.fileNames, cmd.options, host);\n\ttransformers = getTransformers(program);\n\tscanDirectives(program);\n}\n\nexport function loader(this: webpackLoaderContext, contents: string, inputSourceMap?: Record<string, any>) {\n\tif (!program) {\n\t\ttry {\n\t\t\tinitTypeScript();\n\t\t} catch (e) {\n\t\t\tthis.callback(e as Error);\n\t\t}\n\t}\n\tlet content: string | undefined, sourceMap: string | undefined;\n\thost.writeFile = (fileName: string, contents: string) => {\n\t\tif (fileName.endsWith('.map')) {\n\t\t\tsourceMap = contents;\n\t\t} else if (fileName.endsWith('.js')) {\n\t\t\tcontent = contents;\n\t\t}\n\t};\n\tconst filePath = normalize(this.resourcePath);\n\tprogram.emit(program.getSourceFile(filePath), undefined, undefined, undefined, transformers);\n\tthis.callback(null, content, sourceMap);\n\thost.writeFile = orgWriteFile;\n}\n"]}
|