jsii-rosetta 5.2.7 → 5.3.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/README.md +50 -43
- package/lib/commands/coverage.js.map +1 -1
- package/lib/commands/extract.js.map +1 -1
- package/lib/commands/infuse.js.map +1 -1
- package/lib/commands/read.js.map +1 -1
- package/lib/commands/transliterate.js.map +1 -1
- package/lib/find-utils.js.map +1 -1
- package/lib/fixtures.js.map +1 -1
- package/lib/jsii/assemblies.js.map +1 -1
- package/lib/jsii/fingerprinting.js.map +1 -1
- package/lib/jsii/jsii-types.js.map +1 -1
- package/lib/jsii/jsii-utils.js +1 -1
- package/lib/jsii/jsii-utils.js.map +1 -1
- package/lib/jsii/packages.js.map +1 -1
- package/lib/languages/csharp.js +1 -1
- package/lib/languages/csharp.js.map +1 -1
- package/lib/languages/default.js.map +1 -1
- package/lib/languages/go.js +1 -1
- package/lib/languages/go.js.map +1 -1
- package/lib/languages/java.js +1 -1
- package/lib/languages/java.js.map +1 -1
- package/lib/languages/python.js.map +1 -1
- package/lib/languages/record-references.js.map +1 -1
- package/lib/languages/target-language.js.map +1 -1
- package/lib/logging.js.map +1 -1
- package/lib/main.js.map +1 -1
- package/lib/markdown/escapes.js.map +1 -1
- package/lib/markdown/markdown-renderer.js.map +1 -1
- package/lib/markdown/markdown.js.map +1 -1
- package/lib/markdown/replace-typescript-transform.js.map +1 -1
- package/lib/markdown/structure-renderer.js.map +1 -1
- package/lib/markdown/xml-comment-renderer.js.map +1 -1
- package/lib/o-tree.js.map +1 -1
- package/lib/renderer.js.map +1 -1
- package/lib/rosetta-reader.js.map +1 -1
- package/lib/rosetta-translator.js.map +1 -1
- package/lib/snippet-dependencies.js.map +1 -1
- package/lib/snippet-selectors.js.map +1 -1
- package/lib/snippet.js.map +1 -1
- package/lib/submodule-reference.js.map +1 -1
- package/lib/support.js.map +1 -1
- package/lib/tablets/tablets.js.map +1 -1
- package/lib/translate.js.map +1 -1
- package/lib/translate_all.js.map +1 -1
- package/lib/translate_all_worker.js.map +1 -1
- package/lib/typescript/ast-utils.js.map +1 -1
- package/lib/typescript/imports.js +1 -1
- package/lib/typescript/imports.js.map +1 -1
- package/lib/typescript/syntax-kind-counter.js.map +1 -1
- package/lib/typescript/ts-compiler.js +2 -2
- package/lib/typescript/ts-compiler.js.map +1 -1
- package/lib/typescript/types.js.map +1 -1
- package/lib/typescript/visible-spans.js.map +1 -1
- package/lib/util.js.map +1 -1
- package/package.json +8 -6
- package/releases.json +4 -2
package/lib/logging.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../src/logging.ts"],"names":[],"mappings":";;;AAAA,kCAAkC;AAElC,IAAY,KAMX;AAND,WAAY,KAAK;IACf,oCAAU,CAAA;IACV,kCAAS,CAAA;IACT,mCAAS,CAAA;IACT,iCAAQ,CAAA;IACR,uCAAW,CAAA;AACb,CAAC,EANW,KAAK,qBAAL,KAAK,QAMhB;AAEY,QAAA,UAAU,GAAW,KAAK,CAAC,IAAI,CAAC;AAChC,QAAA,aAAa,GAAW,KAAK,CAAC,OAAO,CAAC;AAEnD,4DAA4D;AACjD,QAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAE/B,SAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAoB;IAC7D,aAAK,GAAG,QAAQ,CAAC;AACnB,CAAC;AAFD,8BAEC;AAED,SAAgB,IAAI,CAAC,GAAW,EAAE,GAAG,IAAW;IAC9C,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AAChC,CAAC;AAFD,oBAEC;AAED,SAAgB,KAAK,CAAC,GAAW,EAAE,GAAG,IAAW;IAC/C,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AACjC,CAAC;AAFD,sBAEC;AAED,SAAgB,IAAI,CAAC,GAAW,EAAE,GAAG,IAAW;IAC9C,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AAChC,CAAC;AAFD,oBAEC;AAED,SAAgB,KAAK,CAAC,GAAW,EAAE,GAAG,IAAW;IAC/C,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AACnC,CAAC;AAFD,sBAEC;AAED,SAAS,GAAG,CAAC,YAAmB,EAAE,GAAW,EAAE,GAAG,IAAW;IAC3D,IAAI,aAAK,IAAI,YAAY,EAAE;
|
|
1
|
+
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../src/logging.ts"],"names":[],"mappings":";;;AAAA,kCAAkC;AAElC,IAAY,KAMX;AAND,WAAY,KAAK;IACf,oCAAU,CAAA;IACV,kCAAS,CAAA;IACT,mCAAS,CAAA;IACT,iCAAQ,CAAA;IACR,uCAAW,CAAA;AACb,CAAC,EANW,KAAK,qBAAL,KAAK,QAMhB;AAEY,QAAA,UAAU,GAAW,KAAK,CAAC,IAAI,CAAC;AAChC,QAAA,aAAa,GAAW,KAAK,CAAC,OAAO,CAAC;AAEnD,4DAA4D;AACjD,QAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAE/B,SAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAoB;IAC7D,aAAK,GAAG,QAAQ,CAAC;AACnB,CAAC;AAFD,8BAEC;AAED,SAAgB,IAAI,CAAC,GAAW,EAAE,GAAG,IAAW;IAC9C,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AAChC,CAAC;AAFD,oBAEC;AAED,SAAgB,KAAK,CAAC,GAAW,EAAE,GAAG,IAAW;IAC/C,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AACjC,CAAC;AAFD,sBAEC;AAED,SAAgB,IAAI,CAAC,GAAW,EAAE,GAAG,IAAW;IAC9C,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AAChC,CAAC;AAFD,oBAEC;AAED,SAAgB,KAAK,CAAC,GAAW,EAAE,GAAG,IAAW;IAC/C,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AACnC,CAAC;AAFD,sBAEC;AAED,SAAS,GAAG,CAAC,YAAmB,EAAE,GAAW,EAAE,GAAG,IAAW;IAC3D,IAAI,aAAK,IAAI,YAAY,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;QACtC,wFAAwF;QACxF,gCAAgC;QAChC,OAAO,CAAC,KAAK,CAAC,mBAAmB,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC","sourcesContent":["import * as util from 'node:util';\n\nexport enum Level {\n ERROR = -2,\n WARN = -1,\n QUIET = 0,\n INFO = 1,\n VERBOSE = 2,\n}\n\nexport const LEVEL_INFO: number = Level.INFO;\nexport const LEVEL_VERBOSE: number = Level.VERBOSE;\n\n/** The minimal logging level for messages to be emitted. */\nexport let level = Level.QUIET;\n\nexport function configure({ level: newLevel }: { level: Level }) {\n level = newLevel;\n}\n\nexport function warn(fmt: string, ...args: any[]) {\n log(Level.WARN, fmt, ...args);\n}\n\nexport function error(fmt: string, ...args: any[]) {\n log(Level.ERROR, fmt, ...args);\n}\n\nexport function info(fmt: string, ...args: any[]) {\n log(Level.INFO, fmt, ...args);\n}\n\nexport function debug(fmt: string, ...args: any[]) {\n log(Level.VERBOSE, fmt, ...args);\n}\n\nfunction log(messageLevel: Level, fmt: string, ...args: any[]) {\n if (level >= messageLevel) {\n const levelName = Level[messageLevel];\n // `console.error` will automatically be transported from worker child to worker parent,\n // process.stderr.write() won't.\n console.error(`[jsii-rosetta] [${levelName}] ${util.format(fmt, ...args)}`);\n }\n}\n"]}
|
package/lib/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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","sourcesContent":["import '@jsii/check-node/run';\n\nimport { promises as fs } from 'node:fs';\nimport * as path from 'node:path';\nimport * as yargs from 'yargs';\n\nimport { translateMarkdown } from './commands/convert';\nimport { checkCoverage } from './commands/coverage';\nimport { extractAndInfuse, extractSnippets, ExtractOptions } from './commands/extract';\nimport { infuse, DEFAULT_INFUSION_RESULTS_NAME } from './commands/infuse';\nimport { readTablet } from './commands/read';\nimport { transliterateAssembly } from './commands/transliterate';\nimport { trimCache } from './commands/trim-cache';\nimport { TranslateResult, translateTypeScript, RosettaDiagnostic } from './index';\nimport { TargetLanguage } from './languages';\nimport { PythonVisitor } from './languages/python';\nimport { VisualizeAstVisitor } from './languages/visualize';\nimport * as logging from './logging';\nimport { emitSupportPolicyInformation } from './support';\nimport { File, fmap, printDiagnostics } from './util';\n\nasync function main() {\n await emitSupportPolicyInformation();\n\n const argv = yargs\n .usage('$0 <cmd> [args]')\n .option('verbose', {\n alias: 'v',\n type: 'boolean',\n desc: 'Increase logging verbosity',\n count: true,\n default: 0,\n })\n .command(\n 'snippet FILE',\n 'Translate a single snippet',\n (command) =>\n command\n .positional('FILE', {\n type: 'string',\n describe: 'The file to translate (leave out for stdin)',\n })\n .option('python', {\n alias: 'p',\n boolean: true,\n description: 'Translate snippets to Python',\n }),\n wrapHandler(async (args) => {\n const result = translateTypeScript(await makeFileSource(args.FILE ?? '-', 'stdin.ts'), makeVisitor(args));\n handleSingleResult(result);\n }),\n )\n .command(\n 'markdown FILE',\n 'Translate a MarkDown file',\n (command) =>\n command\n .positional('FILE', {\n type: 'string',\n describe: 'The file to translate (leave out for stdin)',\n })\n .option('python', {\n alias: 'p',\n boolean: true,\n description: 'Translate snippets to Python',\n }),\n wrapHandler(async (args) => {\n const result = translateMarkdown(await makeFileSource(args.FILE ?? '-', 'stdin.md'), makeVisitor(args));\n handleSingleResult(result);\n }),\n )\n .command(\n 'infuse [ASSEMBLY..]',\n '(EXPERIMENTAL) mutates one or more assemblies by adding documentation examples to top-level types',\n (command) =>\n command\n .positional('ASSEMBLY', {\n type: 'string',\n array: true,\n default: [],\n describe: 'Assembly or directory to mutate',\n })\n .option('log-file', {\n alias: 'l',\n type: 'string',\n describe: 'Output file to store logging results. Ignored if -log is not true',\n default: DEFAULT_INFUSION_RESULTS_NAME,\n })\n .option('cache-from', {\n alias: 'C',\n type: 'string',\n // eslint-disable-next-line prettier/prettier\n describe:\n 'Reuse translations from the given tablet file if the snippet and type definitions did not change',\n requiresArg: true,\n default: undefined,\n })\n .option('cache-to', {\n alias: 'o',\n type: 'string',\n describe: 'Append all translated snippets to the given tablet file',\n requiresArg: true,\n default: undefined,\n })\n .option('cache', {\n alias: 'k',\n type: 'string',\n describe: 'Alias for --cache-from and --cache-to together',\n requiresArg: true,\n default: undefined,\n })\n .conflicts('cache', 'cache-from')\n .conflicts('cache', 'cache-to'),\n wrapHandler(async (args) => {\n const absAssemblies = (args.ASSEMBLY.length > 0 ? args.ASSEMBLY : ['.']).map((x) => path.resolve(x));\n const absCacheFrom = fmap(args.cache ?? args['cache-from'], path.resolve);\n const absCacheTo = fmap(args.cache ?? args['cache-to'], path.resolve);\n const result = await infuse(absAssemblies, {\n logFile: args['log-file'],\n cacheToFile: absCacheTo,\n cacheFromFile: absCacheFrom,\n });\n\n let totalTypes = 0;\n let insertedExamples = 0;\n for (const [directory, map] of Object.entries(result.coverageResults)) {\n const commonName = directory.split('/').pop()!;\n const newCoverage = roundPercentage(map.typesWithInsertedExamples / map.types);\n process.stdout.write(\n `${commonName}: Added ${map.typesWithInsertedExamples} examples to ${map.types} types.\\n`,\n );\n process.stdout.write(`${commonName}: New coverage: ${newCoverage}%.\\n`);\n\n insertedExamples += map.typesWithInsertedExamples;\n totalTypes += map.types;\n }\n const newCoverage = roundPercentage(insertedExamples / totalTypes);\n process.stdout.write(`\\n\\nFinal Stats:\\nNew coverage: ${newCoverage}%.\\n`);\n }),\n )\n .command(\n ['extract [ASSEMBLY..]', '$0 [ASSEMBLY..]'],\n 'Extract code snippets from one or more assemblies into language tablets',\n (command) =>\n command\n .positional('ASSEMBLY', {\n type: 'string',\n array: true,\n default: [],\n describe: 'Assembly or directory to extract from',\n })\n .option('output', {\n type: 'string',\n describe: 'Additional output file where to store translated samples (deprecated, alias for --cache-to)',\n requiresArg: true,\n default: undefined,\n })\n .option('compile', {\n alias: 'c',\n type: 'boolean',\n describe: 'Try compiling (on by default, use --no-compile to switch off)',\n default: true,\n })\n .option('directory', {\n alias: 'd',\n type: 'string',\n describe: 'Working directory (for require() etc)',\n })\n .option('include', {\n alias: 'i',\n type: 'string',\n array: true,\n describe: 'Extract only snippets with given ids',\n default: [],\n })\n .option('infuse', {\n type: 'boolean',\n describe: 'bundle this command with the infuse command',\n default: false,\n })\n .option('fail', {\n alias: 'f',\n type: 'boolean',\n describe: 'Fail if there are compilation errors',\n default: false,\n })\n .option('validate-assemblies', {\n type: 'boolean',\n describe: 'Whether to validate loaded assemblies or not (this can be slow)',\n default: false,\n })\n .option('cache-from', {\n alias: 'C',\n type: 'string',\n // eslint-disable-next-line prettier/prettier\n describe:\n 'Reuse translations from the given tablet file if the snippet and type definitions did not change',\n requiresArg: true,\n default: undefined,\n })\n .option('cache-to', {\n alias: 'o',\n type: 'string',\n describe: 'Append all translated snippets to the given tablet file',\n requiresArg: true,\n default: undefined,\n })\n .conflicts('cache-to', 'output')\n .option('cache', {\n alias: 'k',\n type: 'string',\n describe: 'Alias for --cache-from and --cache-to together',\n requiresArg: true,\n default: undefined,\n })\n .conflicts('cache', 'cache-from')\n .conflicts('cache', 'cache-to')\n .option('trim-cache', {\n alias: 'T',\n type: 'boolean',\n describe: 'Remove translations that are not referenced by any of the assemblies anymore from the cache',\n })\n .option('strict', {\n alias: 'S',\n type: 'boolean',\n describe:\n 'Require all code samples compile, and fail if one does not. Strict mode always enables --compile and --fail',\n default: false,\n })\n .options('loose', {\n alias: 'l',\n describe: 'Ignore missing fixtures and literate markdown files instead of failing',\n type: 'boolean',\n })\n .options('compress-tablet', {\n alias: 'z',\n type: 'boolean',\n describe: 'Compress the implicit tablet file',\n default: false,\n })\n .options('compress-cache', {\n type: 'boolean',\n describe: 'Compress the cache-to file',\n default: false,\n })\n .options('cleanup', {\n type: 'boolean',\n describe: 'Clean up temporary directories',\n default: true,\n })\n .conflicts('loose', 'strict')\n .conflicts('loose', 'fail'),\n wrapHandler(async (args) => {\n // `--strict` is short for `--compile --fail`, and we'll override those even if they're set to `false`, such as\n // using `--no-(compile|fail)`, because yargs does not quite give us a better option that does not hurt CX.\n if (args.strict) {\n args.compile = args.c = true;\n args.fail = args.f = true;\n }\n\n const absAssemblies = (args.ASSEMBLY.length > 0 ? args.ASSEMBLY : ['.']).map((x) => path.resolve(x));\n\n const absCacheFrom = fmap(args.cache ?? args['cache-from'], path.resolve);\n const absCacheTo = fmap(args.cache ?? args['cache-to'] ?? args.output, path.resolve);\n\n const extractOptions: ExtractOptions = {\n compilationDirectory: args.directory,\n includeCompilerDiagnostics: !!args.compile,\n validateAssemblies: args['validate-assemblies'],\n only: args.include,\n cacheFromFile: absCacheFrom,\n cacheToFile: absCacheTo,\n trimCache: args['trim-cache'],\n loose: args.loose,\n compressTablet: args['compress-tablet'],\n compressCacheToFile: args['compress-cache'],\n cleanup: args.cleanup,\n };\n\n const result = args.infuse\n ? await extractAndInfuse(absAssemblies, extractOptions)\n : await extractSnippets(absAssemblies, extractOptions);\n\n handleDiagnostics(result.diagnostics, args.fail, result.tablet.count);\n }),\n )\n .command(\n 'transliterate [ASSEMBLY..]',\n '(EXPERIMENTAL) Transliterates the designated assemblies',\n (command) =>\n command\n .positional('ASSEMBLY', {\n type: 'string',\n array: true,\n default: [],\n required: true,\n describe: 'Assembly to transliterate',\n })\n .option('language', {\n type: 'string',\n array: true,\n default: [],\n describe: 'Language ID to transliterate to',\n })\n .options('strict', {\n alias: 's',\n conflicts: 'loose',\n describe:\n 'Fail if an example that needs live transliteration fails to compile (which could cause incorrect transpilation results)',\n type: 'boolean',\n })\n .options('loose', {\n alias: 'l',\n conflicts: 'strict',\n describe: 'Ignore missing fixtures and literate markdown files instead of failing',\n type: 'boolean',\n })\n .option('tablet', {\n alias: 't',\n type: 'string',\n describe:\n 'Language tablet containing pre-translated code examples to use (these are generated by the `extract` command)',\n }),\n wrapHandler((args) => {\n const assemblies = (args.ASSEMBLY.length > 0 ? args.ASSEMBLY : ['.']).map((dir) =>\n path.resolve(process.cwd(), dir),\n );\n const languages =\n args.language.length > 0\n ? args.language\n .map((lang) => lang.toUpperCase())\n .map((lang) => {\n const target = Object.entries(TargetLanguage).find(([k]) => k === lang)?.[1];\n if (target == null) {\n throw new Error(\n `Unknown target language: ${lang}. Expected one of ${Object.keys(TargetLanguage).join(', ')}`,\n );\n }\n return target;\n })\n : Object.values(TargetLanguage);\n return transliterateAssembly(assemblies, languages, args);\n }),\n )\n .command(\n 'trim-cache <TABLET> [ASSEMBLY..]',\n 'Retain only those snippets in the cache which occur in one of the given assemblies',\n (command) =>\n command\n .positional('TABLET', {\n type: 'string',\n required: true,\n describe: 'Language tablet to trim',\n })\n .positional('ASSEMBLY', {\n type: 'string',\n array: true,\n default: [],\n describe: 'Assembly or directory to search',\n })\n .demandOption('TABLET'),\n wrapHandler(async (args) => {\n await trimCache({\n cacheFile: args.TABLET,\n assemblyLocations: args.ASSEMBLY,\n });\n }),\n )\n .command(\n 'coverage [ASSEMBLY..]',\n 'Check the translation coverage of implicit tablets for the given assemblies',\n (command) =>\n command.positional('ASSEMBLY', {\n type: 'string',\n array: true,\n default: ['.'],\n describe: 'Assembly or directory to search',\n }),\n wrapHandler(async (args) => {\n const absAssemblies = (args.ASSEMBLY.length > 0 ? args.ASSEMBLY : ['.']).map((x) => path.resolve(x));\n await checkCoverage(absAssemblies);\n }),\n )\n .command(\n 'read <TABLET> [KEY] [LANGUAGE]',\n 'Display snippets in a language tablet file',\n (command) =>\n command\n .positional('TABLET', {\n type: 'string',\n required: true,\n describe: 'Language tablet to read',\n })\n .positional('KEY', {\n type: 'string',\n describe: 'Snippet key to read',\n })\n .positional('LANGUAGE', {\n type: 'string',\n describe: 'Language ID to read',\n })\n .demandOption('TABLET'),\n wrapHandler(async (args) => {\n await readTablet(args.TABLET, args.KEY, args.LANGUAGE);\n }),\n )\n .command(\n 'configure-strict [PACKAGE]',\n \"Enables strict mode for a package's assembly\",\n (command) =>\n command.positional('PACKAGE', {\n type: 'string',\n describe: 'The path to the package to configure',\n required: false,\n default: '.',\n normalize: true,\n }),\n wrapHandler(async (args) => {\n const packageJsonPath = (await fs.stat(args.PACKAGE)).isDirectory()\n ? path.join(args.PACKAGE, 'package.json')\n : args.PACKAGE;\n const packageJson = JSON.parse(await fs.readFile(packageJsonPath, 'utf-8'));\n if (packageJson.jsii == null) {\n console.error(\n `The package in ${args.PACKAGE} does not have a jsii configuration! You can set it up using jsii-config.`,\n );\n process.exitCode = 1;\n return Promise.resolve();\n }\n if (packageJson.jsii.metadata?.jsii?.rosetta?.strict) {\n // Nothing to do - it's already configured, so we assert idempotent success!\n return Promise.resolve();\n }\n const md = (packageJson.jsii.metadata = packageJson.jsii.metadata ?? {});\n const mdJsii = (md.jsii = md.jsii ?? {});\n const mdRosetta = (mdJsii.rosetta = mdJsii.rosetta ?? {});\n mdRosetta.strict = true;\n\n return fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2));\n }),\n )\n .demandCommand()\n .help()\n .strict() // Error on wrong command\n // eslint-disable-next-line @typescript-eslint/no-require-imports,@typescript-eslint/no-var-requires\n .version(require('../package.json').version)\n .showHelpOnFail(false).argv;\n\n // Evaluating .argv triggers the parsing but the command gets implicitly executed,\n // so we don't need the output.\n Array.isArray(argv);\n}\n\n/**\n * Wrap a command's handler with standard pre- and post-work\n */\nfunction wrapHandler<A extends { verbose?: number }, R>(handler: (x: A) => Promise<R>) {\n return (argv: A) => {\n logging.configure({ level: argv.verbose !== undefined ? argv.verbose : 0 });\n handler(argv).catch((e) => {\n logging.error(e.message);\n logging.error(e.stack);\n process.exitCode = 1;\n });\n };\n}\n\nfunction makeVisitor(args: { python?: boolean }) {\n if (args.python) {\n return new PythonVisitor();\n }\n // Default to visualizing AST, including nodes we don't recognize yet\n return new VisualizeAstVisitor();\n}\n\nasync function makeFileSource(fileName: string, stdinName: string): Promise<File> {\n if (fileName === '-') {\n return {\n contents: await readStdin(),\n fileName: stdinName,\n };\n }\n return {\n contents: await fs.readFile(fileName, { encoding: 'utf-8' }),\n fileName: fileName,\n };\n}\n\nasync function readStdin(): Promise<string> {\n process.stdin.setEncoding('utf8');\n\n const parts: Buffer[] = [];\n\n return new Promise((resolve, reject) => {\n process.stdin.on('readable', () => {\n const chunk = process.stdin.read();\n if (chunk !== null) {\n parts.push(Buffer.from(chunk));\n }\n });\n\n process.stdin.on('error', reject);\n process.stdin.on('end', () => resolve(Buffer.concat(parts).toString('utf-8')));\n });\n}\n\nfunction handleSingleResult(result: TranslateResult) {\n process.stdout.write(`${result.translation}\\n`);\n\n // For a single result, we always request implicit failure.\n handleDiagnostics(result.diagnostics, 'implicit');\n}\n\n/**\n * Print diagnostics and set exit code\n *\n * 'fail' is whether or not the user passed '--fail' for commands that accept\n * it, or 'implicit' for commands that should always fail. 'implicit' will be\n * treated as 'fail=true, but will not print to the user that the '--fail' is\n * set (because for this particular command that switch does not exist and so it\n * would be confusing).\n */\nfunction handleDiagnostics(diagnostics: readonly RosettaDiagnostic[], fail: boolean | 'implicit', snippetCount = 1) {\n if (fail !== false) {\n // Fail on any diagnostic\n if (diagnostics.length > 0) {\n printDiagnostics(diagnostics, process.stderr, process.stderr.isTTY);\n logging.error(\n [\n `${diagnostics.length} diagnostics encountered in ${snippetCount} snippets`,\n ...(fail === true ? [\"(running with '--fail')\"] : []),\n ].join(' '),\n );\n process.exitCode = 1;\n }\n\n return;\n }\n\n // Otherwise fail only on strict diagnostics. If we have strict diagnostics, print only those\n // (so it's very clear what is failing the build), otherwise print everything.\n const strictDiagnostics = diagnostics.filter((diag) => diag.isFromStrictAssembly);\n if (strictDiagnostics.length > 0) {\n printDiagnostics(strictDiagnostics, process.stderr, process.stderr.isTTY);\n const remaining = diagnostics.length - strictDiagnostics.length;\n logging.warn(\n [\n `${strictDiagnostics.length} diagnostics from assemblies with 'strict' mode on`,\n ...(remaining > 0 ? [`(and ${remaining} more non-strict diagnostics)`] : []),\n ].join(' '),\n );\n process.exitCode = 1;\n return;\n }\n\n if (diagnostics.length > 0) {\n printDiagnostics(diagnostics, process.stderr, process.stderr.isTTY);\n logging.warn(`${diagnostics.length} diagnostics encountered in ${snippetCount} snippets`);\n }\n}\n\n/**\n * Rounds a decimal number to two decimal points.\n * The function is useful for fractions that need to be outputted as percentages.\n */\nfunction roundPercentage(num: number): number {\n return Math.round(10000 * num) / 100;\n}\n\nmain().catch((cause) => {\n console.error(cause);\n process.exitCode = -1;\n});\n"]}
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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","sourcesContent":["import '@jsii/check-node/run';\n\nimport { promises as fs } from 'node:fs';\nimport * as path from 'node:path';\nimport * as yargs from 'yargs';\n\nimport { translateMarkdown } from './commands/convert';\nimport { checkCoverage } from './commands/coverage';\nimport { extractAndInfuse, extractSnippets, ExtractOptions } from './commands/extract';\nimport { infuse, DEFAULT_INFUSION_RESULTS_NAME } from './commands/infuse';\nimport { readTablet } from './commands/read';\nimport { transliterateAssembly } from './commands/transliterate';\nimport { trimCache } from './commands/trim-cache';\nimport { TranslateResult, translateTypeScript, RosettaDiagnostic } from './index';\nimport { TargetLanguage } from './languages';\nimport { PythonVisitor } from './languages/python';\nimport { VisualizeAstVisitor } from './languages/visualize';\nimport * as logging from './logging';\nimport { emitSupportPolicyInformation } from './support';\nimport { File, fmap, printDiagnostics } from './util';\n\nasync function main() {\n await emitSupportPolicyInformation();\n\n const argv = yargs\n .usage('$0 <cmd> [args]')\n .option('verbose', {\n alias: 'v',\n type: 'boolean',\n desc: 'Increase logging verbosity',\n count: true,\n default: 0,\n })\n .command(\n 'snippet FILE',\n 'Translate a single snippet',\n (command) =>\n command\n .positional('FILE', {\n type: 'string',\n describe: 'The file to translate (leave out for stdin)',\n })\n .option('python', {\n alias: 'p',\n boolean: true,\n description: 'Translate snippets to Python',\n }),\n wrapHandler(async (args) => {\n const result = translateTypeScript(await makeFileSource(args.FILE ?? '-', 'stdin.ts'), makeVisitor(args));\n handleSingleResult(result);\n }),\n )\n .command(\n 'markdown FILE',\n 'Translate a MarkDown file',\n (command) =>\n command\n .positional('FILE', {\n type: 'string',\n describe: 'The file to translate (leave out for stdin)',\n })\n .option('python', {\n alias: 'p',\n boolean: true,\n description: 'Translate snippets to Python',\n }),\n wrapHandler(async (args) => {\n const result = translateMarkdown(await makeFileSource(args.FILE ?? '-', 'stdin.md'), makeVisitor(args));\n handleSingleResult(result);\n }),\n )\n .command(\n 'infuse [ASSEMBLY..]',\n '(EXPERIMENTAL) mutates one or more assemblies by adding documentation examples to top-level types',\n (command) =>\n command\n .positional('ASSEMBLY', {\n type: 'string',\n array: true,\n default: [],\n describe: 'Assembly or directory to mutate',\n })\n .option('log-file', {\n alias: 'l',\n type: 'string',\n describe: 'Output file to store logging results. Ignored if -log is not true',\n default: DEFAULT_INFUSION_RESULTS_NAME,\n })\n .option('cache-from', {\n alias: 'C',\n type: 'string',\n // eslint-disable-next-line prettier/prettier\n describe:\n 'Reuse translations from the given tablet file if the snippet and type definitions did not change',\n requiresArg: true,\n default: undefined,\n })\n .option('cache-to', {\n alias: 'o',\n type: 'string',\n describe: 'Append all translated snippets to the given tablet file',\n requiresArg: true,\n default: undefined,\n })\n .option('cache', {\n alias: 'k',\n type: 'string',\n describe: 'Alias for --cache-from and --cache-to together',\n requiresArg: true,\n default: undefined,\n })\n .conflicts('cache', 'cache-from')\n .conflicts('cache', 'cache-to'),\n wrapHandler(async (args) => {\n const absAssemblies = (args.ASSEMBLY.length > 0 ? args.ASSEMBLY : ['.']).map((x) => path.resolve(x));\n const absCacheFrom = fmap(args.cache ?? args['cache-from'], path.resolve);\n const absCacheTo = fmap(args.cache ?? args['cache-to'], path.resolve);\n const result = await infuse(absAssemblies, {\n logFile: args['log-file'],\n cacheToFile: absCacheTo,\n cacheFromFile: absCacheFrom,\n });\n\n let totalTypes = 0;\n let insertedExamples = 0;\n for (const [directory, map] of Object.entries(result.coverageResults)) {\n const commonName = directory.split('/').pop()!;\n const newCoverage = roundPercentage(map.typesWithInsertedExamples / map.types);\n process.stdout.write(\n `${commonName}: Added ${map.typesWithInsertedExamples} examples to ${map.types} types.\\n`,\n );\n process.stdout.write(`${commonName}: New coverage: ${newCoverage}%.\\n`);\n\n insertedExamples += map.typesWithInsertedExamples;\n totalTypes += map.types;\n }\n const newCoverage = roundPercentage(insertedExamples / totalTypes);\n process.stdout.write(`\\n\\nFinal Stats:\\nNew coverage: ${newCoverage}%.\\n`);\n }),\n )\n .command(\n ['extract [ASSEMBLY..]', '$0 [ASSEMBLY..]'],\n 'Extract code snippets from one or more assemblies into language tablets',\n (command) =>\n command\n .positional('ASSEMBLY', {\n type: 'string',\n array: true,\n default: [],\n describe: 'Assembly or directory to extract from',\n })\n .option('output', {\n type: 'string',\n describe: 'Additional output file where to store translated samples (deprecated, alias for --cache-to)',\n requiresArg: true,\n default: undefined,\n })\n .option('compile', {\n alias: 'c',\n type: 'boolean',\n describe: 'Try compiling (on by default, use --no-compile to switch off)',\n default: true,\n })\n .option('directory', {\n alias: 'd',\n type: 'string',\n describe: 'Working directory (for require() etc)',\n })\n .option('include', {\n alias: 'i',\n type: 'string',\n array: true,\n describe: 'Extract only snippets with given ids',\n default: [],\n })\n .option('infuse', {\n type: 'boolean',\n describe: 'bundle this command with the infuse command',\n default: false,\n })\n .option('fail', {\n alias: 'f',\n type: 'boolean',\n describe: 'Fail if there are compilation errors',\n default: false,\n })\n .option('validate-assemblies', {\n type: 'boolean',\n describe: 'Whether to validate loaded assemblies or not (this can be slow)',\n default: false,\n })\n .option('cache-from', {\n alias: 'C',\n type: 'string',\n // eslint-disable-next-line prettier/prettier\n describe:\n 'Reuse translations from the given tablet file if the snippet and type definitions did not change',\n requiresArg: true,\n default: undefined,\n })\n .option('cache-to', {\n alias: 'o',\n type: 'string',\n describe: 'Append all translated snippets to the given tablet file',\n requiresArg: true,\n default: undefined,\n })\n .conflicts('cache-to', 'output')\n .option('cache', {\n alias: 'k',\n type: 'string',\n describe: 'Alias for --cache-from and --cache-to together',\n requiresArg: true,\n default: undefined,\n })\n .conflicts('cache', 'cache-from')\n .conflicts('cache', 'cache-to')\n .option('trim-cache', {\n alias: 'T',\n type: 'boolean',\n describe: 'Remove translations that are not referenced by any of the assemblies anymore from the cache',\n })\n .option('strict', {\n alias: 'S',\n type: 'boolean',\n describe:\n 'Require all code samples compile, and fail if one does not. Strict mode always enables --compile and --fail',\n default: false,\n })\n .options('loose', {\n alias: 'l',\n describe: 'Ignore missing fixtures and literate markdown files instead of failing',\n type: 'boolean',\n })\n .options('compress-tablet', {\n alias: 'z',\n type: 'boolean',\n describe: 'Compress the implicit tablet file',\n default: false,\n })\n .options('compress-cache', {\n type: 'boolean',\n describe: 'Compress the cache-to file',\n default: false,\n })\n .options('cleanup', {\n type: 'boolean',\n describe: 'Clean up temporary directories',\n default: true,\n })\n .conflicts('loose', 'strict')\n .conflicts('loose', 'fail'),\n wrapHandler(async (args) => {\n // `--strict` is short for `--compile --fail`, and we'll override those even if they're set to `false`, such as\n // using `--no-(compile|fail)`, because yargs does not quite give us a better option that does not hurt CX.\n if (args.strict) {\n args.compile = args.c = true;\n args.fail = args.f = true;\n }\n\n const absAssemblies = (args.ASSEMBLY.length > 0 ? args.ASSEMBLY : ['.']).map((x) => path.resolve(x));\n\n const absCacheFrom = fmap(args.cache ?? args['cache-from'], path.resolve);\n const absCacheTo = fmap(args.cache ?? args['cache-to'] ?? args.output, path.resolve);\n\n const extractOptions: ExtractOptions = {\n compilationDirectory: args.directory,\n includeCompilerDiagnostics: !!args.compile,\n validateAssemblies: args['validate-assemblies'],\n only: args.include,\n cacheFromFile: absCacheFrom,\n cacheToFile: absCacheTo,\n trimCache: args['trim-cache'],\n loose: args.loose,\n compressTablet: args['compress-tablet'],\n compressCacheToFile: args['compress-cache'],\n cleanup: args.cleanup,\n };\n\n const result = args.infuse\n ? await extractAndInfuse(absAssemblies, extractOptions)\n : await extractSnippets(absAssemblies, extractOptions);\n\n handleDiagnostics(result.diagnostics, args.fail, result.tablet.count);\n }),\n )\n .command(\n 'transliterate [ASSEMBLY..]',\n '(EXPERIMENTAL) Transliterates the designated assemblies',\n (command) =>\n command\n .positional('ASSEMBLY', {\n type: 'string',\n array: true,\n default: [],\n required: true,\n describe: 'Assembly to transliterate',\n })\n .option('language', {\n type: 'string',\n array: true,\n default: [],\n describe: 'Language ID to transliterate to',\n })\n .options('strict', {\n alias: 's',\n conflicts: 'loose',\n describe:\n 'Fail if an example that needs live transliteration fails to compile (which could cause incorrect transpilation results)',\n type: 'boolean',\n })\n .options('loose', {\n alias: 'l',\n conflicts: 'strict',\n describe: 'Ignore missing fixtures and literate markdown files instead of failing',\n type: 'boolean',\n })\n .option('tablet', {\n alias: 't',\n type: 'string',\n describe:\n 'Language tablet containing pre-translated code examples to use (these are generated by the `extract` command)',\n }),\n wrapHandler((args) => {\n const assemblies = (args.ASSEMBLY.length > 0 ? args.ASSEMBLY : ['.']).map((dir) =>\n path.resolve(process.cwd(), dir),\n );\n const languages =\n args.language.length > 0\n ? args.language\n .map((lang) => lang.toUpperCase())\n .map((lang) => {\n const target = Object.entries(TargetLanguage).find(([k]) => k === lang)?.[1];\n if (target == null) {\n throw new Error(\n `Unknown target language: ${lang}. Expected one of ${Object.keys(TargetLanguage).join(', ')}`,\n );\n }\n return target;\n })\n : Object.values(TargetLanguage);\n return transliterateAssembly(assemblies, languages, args);\n }),\n )\n .command(\n 'trim-cache <TABLET> [ASSEMBLY..]',\n 'Retain only those snippets in the cache which occur in one of the given assemblies',\n (command) =>\n command\n .positional('TABLET', {\n type: 'string',\n required: true,\n describe: 'Language tablet to trim',\n })\n .positional('ASSEMBLY', {\n type: 'string',\n array: true,\n default: [],\n describe: 'Assembly or directory to search',\n })\n .demandOption('TABLET'),\n wrapHandler(async (args) => {\n await trimCache({\n cacheFile: args.TABLET,\n assemblyLocations: args.ASSEMBLY,\n });\n }),\n )\n .command(\n 'coverage [ASSEMBLY..]',\n 'Check the translation coverage of implicit tablets for the given assemblies',\n (command) =>\n command.positional('ASSEMBLY', {\n type: 'string',\n array: true,\n default: ['.'],\n describe: 'Assembly or directory to search',\n }),\n wrapHandler(async (args) => {\n const absAssemblies = (args.ASSEMBLY.length > 0 ? args.ASSEMBLY : ['.']).map((x) => path.resolve(x));\n await checkCoverage(absAssemblies);\n }),\n )\n .command(\n 'read <TABLET> [KEY] [LANGUAGE]',\n 'Display snippets in a language tablet file',\n (command) =>\n command\n .positional('TABLET', {\n type: 'string',\n required: true,\n describe: 'Language tablet to read',\n })\n .positional('KEY', {\n type: 'string',\n describe: 'Snippet key to read',\n })\n .positional('LANGUAGE', {\n type: 'string',\n describe: 'Language ID to read',\n })\n .demandOption('TABLET'),\n wrapHandler(async (args) => {\n await readTablet(args.TABLET, args.KEY, args.LANGUAGE);\n }),\n )\n .command(\n 'configure-strict [PACKAGE]',\n \"Enables strict mode for a package's assembly\",\n (command) =>\n command.positional('PACKAGE', {\n type: 'string',\n describe: 'The path to the package to configure',\n required: false,\n default: '.',\n normalize: true,\n }),\n wrapHandler(async (args) => {\n const packageJsonPath = (await fs.stat(args.PACKAGE)).isDirectory()\n ? path.join(args.PACKAGE, 'package.json')\n : args.PACKAGE;\n const packageJson = JSON.parse(await fs.readFile(packageJsonPath, 'utf-8'));\n if (packageJson.jsii == null) {\n console.error(\n `The package in ${args.PACKAGE} does not have a jsii configuration! You can set it up using jsii-config.`,\n );\n process.exitCode = 1;\n return Promise.resolve();\n }\n if (packageJson.jsii.metadata?.jsii?.rosetta?.strict) {\n // Nothing to do - it's already configured, so we assert idempotent success!\n return Promise.resolve();\n }\n const md = (packageJson.jsii.metadata = packageJson.jsii.metadata ?? {});\n const mdJsii = (md.jsii = md.jsii ?? {});\n const mdRosetta = (mdJsii.rosetta = mdJsii.rosetta ?? {});\n mdRosetta.strict = true;\n\n return fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2));\n }),\n )\n .demandCommand()\n .help()\n .strict() // Error on wrong command\n // eslint-disable-next-line @typescript-eslint/no-require-imports,@typescript-eslint/no-var-requires\n .version(require('../package.json').version)\n .showHelpOnFail(false).argv;\n\n // Evaluating .argv triggers the parsing but the command gets implicitly executed,\n // so we don't need the output.\n Array.isArray(argv);\n}\n\n/**\n * Wrap a command's handler with standard pre- and post-work\n */\nfunction wrapHandler<A extends { verbose?: number }, R>(handler: (x: A) => Promise<R>) {\n return (argv: A) => {\n logging.configure({ level: argv.verbose !== undefined ? argv.verbose : 0 });\n handler(argv).catch((e) => {\n logging.error(e.message);\n logging.error(e.stack);\n process.exitCode = 1;\n });\n };\n}\n\nfunction makeVisitor(args: { python?: boolean }) {\n if (args.python) {\n return new PythonVisitor();\n }\n // Default to visualizing AST, including nodes we don't recognize yet\n return new VisualizeAstVisitor();\n}\n\nasync function makeFileSource(fileName: string, stdinName: string): Promise<File> {\n if (fileName === '-') {\n return {\n contents: await readStdin(),\n fileName: stdinName,\n };\n }\n return {\n contents: await fs.readFile(fileName, { encoding: 'utf-8' }),\n fileName: fileName,\n };\n}\n\nasync function readStdin(): Promise<string> {\n process.stdin.setEncoding('utf8');\n\n const parts: Buffer[] = [];\n\n return new Promise((resolve, reject) => {\n process.stdin.on('readable', () => {\n const chunk = process.stdin.read();\n if (chunk !== null) {\n parts.push(Buffer.from(chunk));\n }\n });\n\n process.stdin.on('error', reject);\n process.stdin.on('end', () => resolve(Buffer.concat(parts).toString('utf-8')));\n });\n}\n\nfunction handleSingleResult(result: TranslateResult) {\n process.stdout.write(`${result.translation}\\n`);\n\n // For a single result, we always request implicit failure.\n handleDiagnostics(result.diagnostics, 'implicit');\n}\n\n/**\n * Print diagnostics and set exit code\n *\n * 'fail' is whether or not the user passed '--fail' for commands that accept\n * it, or 'implicit' for commands that should always fail. 'implicit' will be\n * treated as 'fail=true, but will not print to the user that the '--fail' is\n * set (because for this particular command that switch does not exist and so it\n * would be confusing).\n */\nfunction handleDiagnostics(diagnostics: readonly RosettaDiagnostic[], fail: boolean | 'implicit', snippetCount = 1) {\n if (fail !== false) {\n // Fail on any diagnostic\n if (diagnostics.length > 0) {\n printDiagnostics(diagnostics, process.stderr, process.stderr.isTTY);\n logging.error(\n [\n `${diagnostics.length} diagnostics encountered in ${snippetCount} snippets`,\n ...(fail === true ? [\"(running with '--fail')\"] : []),\n ].join(' '),\n );\n process.exitCode = 1;\n }\n\n return;\n }\n\n // Otherwise fail only on strict diagnostics. If we have strict diagnostics, print only those\n // (so it's very clear what is failing the build), otherwise print everything.\n const strictDiagnostics = diagnostics.filter((diag) => diag.isFromStrictAssembly);\n if (strictDiagnostics.length > 0) {\n printDiagnostics(strictDiagnostics, process.stderr, process.stderr.isTTY);\n const remaining = diagnostics.length - strictDiagnostics.length;\n logging.warn(\n [\n `${strictDiagnostics.length} diagnostics from assemblies with 'strict' mode on`,\n ...(remaining > 0 ? [`(and ${remaining} more non-strict diagnostics)`] : []),\n ].join(' '),\n );\n process.exitCode = 1;\n return;\n }\n\n if (diagnostics.length > 0) {\n printDiagnostics(diagnostics, process.stderr, process.stderr.isTTY);\n logging.warn(`${diagnostics.length} diagnostics encountered in ${snippetCount} snippets`);\n }\n}\n\n/**\n * Rounds a decimal number to two decimal points.\n * The function is useful for fractions that need to be outputted as percentages.\n */\nfunction roundPercentage(num: number): number {\n return Math.round(10000 * num) / 100;\n}\n\nmain().catch((cause) => {\n console.error(cause);\n process.exitCode = -1;\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"escapes.js","sourceRoot":"","sources":["../../src/markdown/escapes.ts"],"names":[],"mappings":";;;AAoBA;;GAEG;AACH,SAAgB,cAAc;IAC5B,MAAM,IAAI,GAAY,CAAC,GAAG,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC;IAE9C,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QAChC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QACrC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;KAC3C,CAAC;AACJ,CAAC;AARD,wCAQC;AAED;;;;;GAKG;AACH,SAAgB,eAAe;IAC7B,MAAM,QAAQ,GAAY,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAY,CAAC,GAAG,QAAQ,EAAE,GAAG,SAAS,CAAC,CAAC;IAEtD,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;KAC3C,CAAC;AACJ,CAAC;AATD,0CASC;AAID,MAAM,IAAI,GAAY;IACpB,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAC/B,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAC9B,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,mGAAmG;AACnG,MAAM,SAAS,GAAY;IACzB,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC;IAChC,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC;CACjC,CAAC;AAEF,SAAS,UAAU,CAAC,GAAY,EAAE,IAAmB;IACnD,IAAI,CAAC,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"escapes.js","sourceRoot":"","sources":["../../src/markdown/escapes.ts"],"names":[],"mappings":";;;AAoBA;;GAEG;AACH,SAAgB,cAAc;IAC5B,MAAM,IAAI,GAAY,CAAC,GAAG,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC;IAE9C,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QAChC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QACrC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;KAC3C,CAAC;AACJ,CAAC;AARD,wCAQC;AAED;;;;;GAKG;AACH,SAAgB,eAAe;IAC7B,MAAM,QAAQ,GAAY,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAY,CAAC,GAAG,QAAQ,EAAE,GAAG,SAAS,CAAC,CAAC;IAEtD,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;KAC3C,CAAC;AACJ,CAAC;AATD,0CASC;AAID,MAAM,IAAI,GAAY;IACpB,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAC/B,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAC9B,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,mGAAmG;AACnG,MAAM,SAAS,GAAY;IACzB,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC;IAChC,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC;CACjC,CAAC;AAEF,SAAS,UAAU,CAAC,GAAY,EAAE,IAAmB;IACnD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QAC7B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["export interface Escaper {\n /**\n * Escape for use in XML/HTML text\n */\n text(x: string | null): string;\n\n /**\n * Escape for use in XML/HTML attributes\n */\n attribute(x: string | null): string;\n\n /**\n * Re-escape a string that has been escaped for text to be escaped for attributes\n *\n * Conceptually this unescapes text back to raw and re-escapes for attributes,\n * but for speed in practice we just do the additional escapes.\n */\n text2attr(x: string | null): string;\n}\n\n/**\n * Make a generic XML escaper\n */\nexport function makeXmlEscaper(): Escaper {\n const attr: Escapes = [...TEXT, ...ATTR_ADDL];\n\n return {\n text: (x) => escapeText(TEXT, x),\n attribute: (x) => escapeText(attr, x),\n text2attr: (x) => escapeText(ATTR_ADDL, x),\n };\n}\n\n/**\n * Make a Java specific escaper\n *\n * This one also escapes '@' because that triggers parsing of comment directives\n * in Java.\n */\nexport function makeJavaEscaper(): Escaper {\n const javaText: Escapes = [...TEXT, [new RegExp('@', 'g'), '@']];\n const javaAttr: Escapes = [...javaText, ...ATTR_ADDL];\n\n return {\n text: (x) => escapeText(javaText, x),\n attribute: (x) => escapeText(javaAttr, x),\n text2attr: (x) => escapeText(ATTR_ADDL, x),\n };\n}\n\ntype Escapes = Array<[RegExp, string]>;\n\nconst TEXT: Escapes = [\n [new RegExp('&', 'g'), '&'],\n [new RegExp('<', 'g'), '<'],\n [new RegExp('>', 'g'), '>'],\n];\n\n// Additional escapes (in addition to the text escapes) which need to be escaped inside attributes.\nconst ATTR_ADDL: Escapes = [\n [new RegExp('\"', 'g'), '"'],\n [new RegExp(\"'\", 'g'), '''],\n];\n\nfunction escapeText(set: Escapes, what: string | null): string {\n if (!what) {\n return '';\n }\n\n for (const [re, repl] of set) {\n what = what.replace(re, repl);\n }\n\n return what;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-renderer.js","sourceRoot":"","sources":["../../src/markdown/markdown-renderer.ts"],"names":[],"mappings":";;;AAEA,yCAA8F;AAE9F;;GAEG;AACH,MAAa,gBAAgB;IACpB,WAAW,CAAC,KAAc,EAAE,OAAwB;QACzD,OAAO,IAAI,CAAC,IAAA,sBAAW,EAAC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAEM,IAAI,CAAC,IAAa,EAAE,QAAyB;QAClD,OAAO,KAAK,IAAI,CAAC,OAAO,IAAI,CAAC;IAC/B,CAAC;IAEM,UAAU,CAAC,IAAa,EAAE,QAAyB;QACxD,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC,OAAO,QAAQ,CAAC,CAAC;IACjE,CAAC;IAEM,IAAI,CAAC,IAAa,EAAE,QAAyB;QAClD,OAAO,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IAC5B,CAAC;IAEM,SAAS,CAAC,KAAc,EAAE,QAAyB;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,SAAS,CAAC,KAAc,EAAE,QAAyB;QACxD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,IAAI,CAAC,KAAc,EAAE,OAAwB;QAClD,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;IAClC,CAAC;IAEM,MAAM,CAAC,KAAc,EAAE,OAAwB;QACpD,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;IACpC,CAAC;IAEM,WAAW,CAAC,IAAa,EAAE,QAAyB;QACzD,OAAO,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IAC5B,CAAC;IAEM,UAAU,CAAC,IAAa,EAAE,QAAyB;QACxD,OAAO,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IAC5B,CAAC;IAEM,IAAI,CAAC,IAAa,EAAE,OAAwB;QACjD,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,WAAW,IAAI,EAAE,GAAG,CAAC;IAC7D,CAAC;IAEM,KAAK,CAAC,IAAa,EAAE,OAAwB;QAClD,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,WAAW,IAAI,EAAE,GAAG,CAAC;IAC9D,CAAC;IAEM,QAAQ,CAAC,KAAc,EAAE,OAAwB;QACtD,OAAO,uBAAuB,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IAEM,SAAS,CAAC,KAAc,EAAE,OAAwB;QACvD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACjC,CAAC;IAEM,IAAI,CAAC,IAAa,EAAE,OAAwB;QACjD,0EAA0E;QAC1E,iDAAiD;QACjD,MAAM,KAAK,GAAG,EAAE,CAAC;QAEjB,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,MAAM,IAAI,IAAI,IAAA,yBAAc,EAAC,IAAI,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"markdown-renderer.js","sourceRoot":"","sources":["../../src/markdown/markdown-renderer.ts"],"names":[],"mappings":"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","sourcesContent":["import * as cm from 'commonmark';\n\nimport { cmNodeChildren, CommonMarkRenderer, prefixLines, RendererContext } from './markdown';\n\n/**\n * A renderer that will render a CommonMark tree back to MarkDown\n */\nexport class MarkdownRenderer implements CommonMarkRenderer {\n public block_quote(_node: cm.Node, context: RendererContext) {\n return para(prefixLines('> ', collapsePara(context.content())));\n }\n\n public code(node: cm.Node, _context: RendererContext) {\n return `\\`${node.literal}\\``;\n }\n\n public code_block(node: cm.Node, _context: RendererContext) {\n return para(`\\`\\`\\`${node.info ?? ''}\\n${node.literal}\\`\\`\\``);\n }\n\n public text(node: cm.Node, _context: RendererContext) {\n return node.literal ?? '';\n }\n\n public softbreak(_node: cm.Node, _context: RendererContext) {\n return '\\n';\n }\n\n public linebreak(_node: cm.Node, _context: RendererContext) {\n return '\\\\\\n';\n }\n\n public emph(_node: cm.Node, context: RendererContext) {\n return `*${context.content()}*`;\n }\n\n public strong(_node: cm.Node, context: RendererContext) {\n return `**${context.content()}**`;\n }\n\n public html_inline(node: cm.Node, _context: RendererContext) {\n return node.literal ?? '';\n }\n\n public html_block(node: cm.Node, _context: RendererContext) {\n return node.literal ?? '';\n }\n\n public link(node: cm.Node, context: RendererContext) {\n return `[${context.content()}](${node.destination ?? ''})`;\n }\n\n public image(node: cm.Node, context: RendererContext) {\n return ``;\n }\n\n public document(_node: cm.Node, context: RendererContext) {\n return stripTrailingWhitespace(collapsePara(context.content()));\n }\n\n public paragraph(_node: cm.Node, context: RendererContext) {\n return para(context.content());\n }\n\n public list(node: cm.Node, context: RendererContext) {\n // A list is not wrapped in a paragraph, but items may contain paragraphs.\n // All elements of a list are definitely 'item's.\n const items = [];\n\n let i = 1;\n for (const item of cmNodeChildren(node)) {\n const firstLinePrefix = determineItemPrefix(node, i);\n const hangingPrefix = ' '.repeat(firstLinePrefix.length);\n\n const rendered = context.recurse(item);\n // Prefix the first line with a different text than subsequent lines\n const prefixed = firstLinePrefix + prefixLines(hangingPrefix, rendered).slice(hangingPrefix.length);\n\n items.push(prefixed);\n\n i += 1;\n }\n\n return para(items.join('\\n'));\n }\n\n public item(_node: cm.Node, context: RendererContext) {\n return collapsePara(context.content());\n }\n\n public heading(node: cm.Node, context: RendererContext) {\n return para(`${'#'.repeat(node.level)} ${context.content()}`);\n }\n\n public thematic_break(_node: cm.Node, _context: RendererContext) {\n return '---\\n';\n }\n\n public custom_block(_node: cm.Node, context: RendererContext) {\n return `<custom>${context.content()}</custom>`;\n }\n\n public custom_inline(_node: cm.Node, context: RendererContext) {\n return `<custom>${context.content()}</custom>`;\n }\n}\n\nconst PARA_BREAK = '\\u001d';\n\nexport function para(x: string) {\n return `${PARA_BREAK}${x}${PARA_BREAK}`;\n}\n\n/**\n * Collapse paragraph markers\n */\nexport function collapsePara(x: string, brk = '\\n\\n') {\n /* eslint-disable no-control-regex */\n return x\n .replace(/^\\u001d+/, '')\n .replace(/\\u001d+$/, '')\n .replace(/\\u001d+/g, brk);\n /* eslint-enable no-control-regex */\n}\n\n/**\n * Strip paragraph markers from start and end\n */\nexport function stripPara(x: string) {\n /* eslint-disable-next-line no-control-regex */\n return x.replace(/^\\u001d+/, '').replace(/\\u001d+$/, '');\n}\n\nfunction determineItemPrefix(listNode: cm.Node, index: number) {\n if (listNode.listType === 'bullet') {\n return '* ';\n }\n return `${index}${listNode.listDelimiter} `;\n}\n\nexport function stripTrailingWhitespace(x: string) {\n return x.replace(/[ \\t]+$/gm, '');\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/markdown/markdown.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AAEjC,SAAgB,iBAAiB,CAAC,MAAc,EAAE,QAA4B,EAAE,SAA6B;IAC3G,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,SAAS,EAAE;
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/markdown/markdown.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AAEjC,SAAgB,iBAAiB,CAAC,MAAc,EAAE,QAA4B,EAAE,SAA6B;IAC3G,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,SAAS,EAAE,CAAC;QACd,mBAAmB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,oBAAoB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAPD,8CAOC;AA+BD,SAAgB,oBAAoB,CAAC,IAAa,EAAE,QAA4B;IAC9E,MAAM,OAAO,GAAoB;QAC/B,OAAO,CAAC,CAAU;YAChB,OAAO,oBAAoB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO;YACL,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClC,CAAC;QAED,QAAQ;YACN,MAAM,KAAK,GAAG,EAAE,CAAC;YACjB,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;YACpD,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAC;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AApBD,oDAoBC;AAED,SAAgB,mBAAmB,CAAC,IAAa,EAAE,OAA0B;IAC3E,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AALD,kDAKC;AAED,SAAgB,WAAW,CAAC,MAAc,EAAE,CAAS;IACnD,OAAO,CAAC;SACL,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;SACtB,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AALD,kCAKC;AAED,QAAe,CAAC,CAAC,cAAc,CAAC,IAAa;IAC3C,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QACrE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAJD,wCAIC","sourcesContent":["import * as cm from 'commonmark';\n\nexport function transformMarkdown(source: string, renderer: CommonMarkRenderer, transform?: CommonMarkVisitor) {\n const parser = new cm.Parser();\n const doc = parser.parse(source);\n if (transform) {\n visitCommonMarkTree(doc, transform);\n }\n return renderCommonMarkTree(doc, renderer);\n}\n\nexport interface RendererContext {\n recurse(node: cm.Node): string;\n children(): string[];\n content(): string;\n}\n\nexport interface CommonMarkRenderer {\n block_quote(node: cm.Node, context: RendererContext): string;\n code(node: cm.Node, context: RendererContext): string;\n code_block(node: cm.Node, context: RendererContext): string;\n text(node: cm.Node, context: RendererContext): string;\n softbreak(node: cm.Node, context: RendererContext): string;\n linebreak(node: cm.Node, context: RendererContext): string;\n emph(node: cm.Node, context: RendererContext): string;\n strong(node: cm.Node, context: RendererContext): string;\n html_inline(node: cm.Node, context: RendererContext): string;\n html_block(node: cm.Node, context: RendererContext): string;\n link(node: cm.Node, context: RendererContext): string;\n image(node: cm.Node, context: RendererContext): string;\n document(node: cm.Node, context: RendererContext): string;\n paragraph(node: cm.Node, context: RendererContext): string;\n list(node: cm.Node, context: RendererContext): string;\n item(node: cm.Node, context: RendererContext): string;\n heading(node: cm.Node, context: RendererContext): string;\n thematic_break(node: cm.Node, context: RendererContext): string;\n custom_block(node: cm.Node, context: RendererContext): string;\n custom_inline(node: cm.Node, context: RendererContext): string;\n}\n\nexport function renderCommonMarkTree(node: cm.Node, renderer: CommonMarkRenderer) {\n const context: RendererContext = {\n recurse(n: cm.Node): string {\n return renderCommonMarkTree(n, renderer);\n },\n\n content() {\n return this.children().join('');\n },\n\n children() {\n const parts = [];\n for (const child of cmNodeChildren(node)) {\n parts.push(renderCommonMarkTree(child, renderer));\n }\n return parts;\n },\n };\n\n return renderer[node.type](node, context);\n}\n\nexport function visitCommonMarkTree(node: cm.Node, visitor: CommonMarkVisitor) {\n visitor[node.type](node);\n for (const child of cmNodeChildren(node)) {\n visitCommonMarkTree(child, visitor);\n }\n}\n\nexport function prefixLines(prefix: string, x: string) {\n return x\n .split('\\n')\n .map((l) => prefix + l)\n .join('\\n');\n}\n\nexport function* cmNodeChildren(node: cm.Node): IterableIterator<cm.Node> {\n for (let child = node.firstChild; child !== null; child = child.next) {\n yield child;\n }\n}\n\nexport interface CommonMarkVisitor {\n block_quote(node: cm.Node): void;\n code(node: cm.Node): void;\n code_block(node: cm.Node): void;\n text(node: cm.Node): void;\n softbreak(node: cm.Node): void;\n linebreak(node: cm.Node): void;\n emph(node: cm.Node): void;\n strong(node: cm.Node): void;\n html_inline(node: cm.Node): void;\n html_block(node: cm.Node): void;\n link(node: cm.Node): void;\n image(node: cm.Node): void;\n document(node: cm.Node): void;\n paragraph(node: cm.Node): void;\n list(node: cm.Node): void;\n item(node: cm.Node): void;\n heading(node: cm.Node): void;\n thematic_break(node: cm.Node): void;\n custom_block(node: cm.Node): void;\n custom_inline(node: cm.Node): void;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replace-typescript-transform.js","sourceRoot":"","sources":["../../src/markdown/replace-typescript-transform.ts"],"names":[],"mappings":";;;AAAA,mEAA+D;AAE/D,wCAA4G;AAI5G;;GAEG;AACH,MAAa,0BAA2B,SAAQ,4CAAoB;IAClE,YAAmB,GAAgB,EAAE,MAAe,EAAE,QAA4B;QAChF,KAAK,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACpB,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,YAAY,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"replace-typescript-transform.js","sourceRoot":"","sources":["../../src/markdown/replace-typescript-transform.ts"],"names":[],"mappings":";;;AAAA,mEAA+D;AAE/D,wCAA4G;AAI5G;;GAEG;AACH,MAAa,0BAA2B,SAAQ,4CAAoB;IAClE,YAAmB,GAAgB,EAAE,MAAe,EAAE,QAA4B;QAChF,KAAK,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACpB,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,YAAY,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACnE,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,SAAS,GAAG,IAAA,qCAA2B,EAC3C,KAAK,CAAC,MAAM,EACZ,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAC3C,MAAM,EACN,IAAA,2BAAiB,EAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAC1C,CAAC;YAEF,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAlBD,gEAkBC","sourcesContent":["import { ReplaceCodeTransform } from './replace-code-renderer';\nimport { CodeBlock } from './types';\nimport { TypeScriptSnippet, typeScriptSnippetFromSource, parseKeyValueList, ApiLocation } from '../snippet';\n\nexport type TypeScriptReplacer = (code: TypeScriptSnippet) => CodeBlock | undefined;\n\n/**\n * A specialization of ReplaceCodeTransform that maintains state about TypeScript snippets\n */\nexport class ReplaceTypeScriptTransform extends ReplaceCodeTransform {\n public constructor(api: ApiLocation, strict: boolean, replacer: TypeScriptReplacer) {\n super((block, line) => {\n const languageParts = block.language ? block.language.split(' ') : [];\n if (languageParts[0] !== 'typescript' && languageParts[0] !== 'ts') {\n return block;\n }\n\n const tsSnippet = typeScriptSnippetFromSource(\n block.source,\n { api, field: { field: 'markdown', line } },\n strict,\n parseKeyValueList(languageParts.slice(1)),\n );\n\n return replacer(tsSnippet) ?? block;\n });\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structure-renderer.js","sourceRoot":"","sources":["../../src/markdown/structure-renderer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"structure-renderer.js","sourceRoot":"","sources":["../../src/markdown/structure-renderer.ts"],"names":[],"mappings":"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","sourcesContent":["import * as cm from 'commonmark';\n\nimport { CommonMarkRenderer, prefixLines, RendererContext } from './markdown';\n\n/**\n * A renderer that will render a CommonMark tree to show its structure\n */\nexport class StructureRenderer implements CommonMarkRenderer {\n public block_quote(node: cm.Node, context: RendererContext) {\n return this.handle('block_quote', node, context);\n }\n public code(node: cm.Node, context: RendererContext) {\n return this.handle('code', node, context);\n }\n public code_block(node: cm.Node, context: RendererContext) {\n return this.handle('code_block', node, context);\n }\n public text(node: cm.Node, context: RendererContext) {\n return this.handle('text', node, context);\n }\n public softbreak(node: cm.Node, context: RendererContext) {\n return this.handle('softbreak', node, context);\n }\n public linebreak(node: cm.Node, context: RendererContext) {\n return this.handle('linebreak', node, context);\n }\n public emph(node: cm.Node, context: RendererContext) {\n return this.handle('emph', node, context);\n }\n public strong(node: cm.Node, context: RendererContext) {\n return this.handle('strong', node, context);\n }\n public html_inline(node: cm.Node, context: RendererContext) {\n return this.handle('html_inline', node, context);\n }\n public html_block(node: cm.Node, context: RendererContext) {\n return this.handle('html_block', node, context);\n }\n public link(node: cm.Node, context: RendererContext) {\n return this.handle('link', node, context);\n }\n public image(node: cm.Node, context: RendererContext) {\n return this.handle('image', node, context);\n }\n public document(node: cm.Node, context: RendererContext) {\n return this.handle('document', node, context);\n }\n public paragraph(node: cm.Node, context: RendererContext) {\n return this.handle('paragraph', node, context);\n }\n public list(node: cm.Node, context: RendererContext) {\n return this.handle('list', node, context);\n }\n public item(node: cm.Node, context: RendererContext) {\n return this.handle('item', node, context);\n }\n public heading(node: cm.Node, context: RendererContext) {\n return this.handle('heading', node, context);\n }\n public thematic_break(node: cm.Node, context: RendererContext) {\n return this.handle('thematic_break', node, context);\n }\n public custom_block(node: cm.Node, context: RendererContext) {\n return this.handle('custom_block', node, context);\n }\n public custom_inline(node: cm.Node, context: RendererContext) {\n return this.handle('custom_inline', node, context);\n }\n\n private handle(name: string, node: cm.Node, context: RendererContext) {\n const contents = context.content();\n\n const enterText = [name, inspectNode(node)].filter((x) => x).join(' ');\n\n if (contents) {\n return `(${enterText}\\n${prefixLines(' ', contents)})\\n`;\n }\n return `(${enterText})\\n`;\n }\n}\n\nfunction inspectNode(n: cm.Node): string {\n const INTERESTING_KEYS = [\n 'literal',\n 'destination',\n 'title',\n 'info',\n 'level',\n 'listType',\n 'listTight',\n 'listStart',\n 'listDelimiter',\n ];\n const ret: any = {};\n // tslint:disable-next-line:forin\n for (const key of INTERESTING_KEYS) {\n const value = (n as any)[key];\n if (typeof value === 'string' || typeof value === 'number') {\n ret[key] = value;\n }\n }\n return JSON.stringify(ret);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xml-comment-renderer.js","sourceRoot":"","sources":["../../src/markdown/xml-comment-renderer.ts"],"names":[],"mappings":";;;AAEA,uCAA2C;AAC3C,yCAA0D;AAC1D,2DAAwE;AAExE,MAAM,MAAM,GAAG,IAAA,wBAAc,GAAE,CAAC;AAEhC,2CAA2C;AAC3C,uGAAuG;AACvG,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAE/D;;;;;GAKG;AACH,MAAa,wBAAyB,SAAQ,oCAAgB;IAC5C,WAAW,CAAC,KAAc,EAAE,OAAwB;QAClE,OAAO,IAAA,wBAAI,EAAC,IAAA,sBAAW,EAAC,MAAM,EAAE,IAAA,6BAAS,EAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IAEe,IAAI,CAAC,IAAa,EAAE,QAAyB;QAC3D,OAAO,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC/C,CAAC;IAEe,UAAU,CAAC,IAAa,EAAE,QAAyB;QACjE,OAAO,IAAA,wBAAI,EAAC,oBAAoB,IAAI,CAAC,OAAO,YAAY,CAAC,CAAC;IAC5D,CAAC;IAEe,IAAI,CAAC,IAAa,EAAE,QAAyB;QAC3D,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACzC,CAAC;IAEe,IAAI,CAAC,IAAa,EAAE,OAAwB;QAC1D,OAAO,YAAY,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1F,CAAC;IAEe,KAAK,CAAC,IAAa,EAAE,OAAwB;QAC3D,OAAO,aAAa,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,UAAU,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC;IAClH,CAAC;IAEe,IAAI,CAAC,KAAc,EAAE,OAAwB;QAC3D,OAAO,OAAO,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;IACzC,CAAC;IAEe,MAAM,CAAC,KAAc,EAAE,OAAwB;QAC7D,OAAO,WAAW,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC;IACjD,CAAC;IAEe,OAAO,CAAC,IAAa,EAAE,OAAwB;QAC7D,OAAO,IAAA,wBAAI,EAAC,KAAK,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACvE,CAAC;IAEe,IAAI,CAAC,IAAa,EAAE,OAAwB;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QAElE,OAAO,IAAA,wBAAI,EAAC,eAAe,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACxE,CAAC;IAEe,IAAI,CAAC,KAAc,EAAE,OAAwB;QAC3D,OAAO,gBAAgB,IAAA,6BAAS,EAAC,OAAO,CAAC,OAAO,EAAE,CAAC,kBAAkB,CAAC;IACxE,CAAC;IAEe,cAAc,CAAC,KAAc,EAAE,QAAyB;QACtE,OAAO,IAAA,wBAAI,EAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;IAED;;;;;OAKG;IACa,WAAW,CAAC,IAAa,EAAE,QAAyB;QAClE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QAChC,IAAI;
|
|
1
|
+
{"version":3,"file":"xml-comment-renderer.js","sourceRoot":"","sources":["../../src/markdown/xml-comment-renderer.ts"],"names":[],"mappings":"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","sourcesContent":["import * as cm from 'commonmark';\n\nimport { makeXmlEscaper } from './escapes';\nimport { prefixLines, RendererContext } from './markdown';\nimport { MarkdownRenderer, para, stripPara } from './markdown-renderer';\n\nconst ESCAPE = makeXmlEscaper();\n\n// The types for 'xmldom' are not complete.\n/* eslint-disable-next-line @typescript-eslint/no-var-requires,@typescript-eslint/no-require-imports */\nconst { DOMParser, XMLSerializer } = require('@xmldom/xmldom');\n\n/**\n * A renderer that will render a CommonMark tree to .NET XML comments\n *\n * Mostly concerns itself with code annotations and escaping; tags that the\n * XML formatter doesn't have equivalents for will be rendered back to MarkDown.\n */\nexport class CSharpXmlCommentRenderer extends MarkdownRenderer {\n public override block_quote(_node: cm.Node, context: RendererContext) {\n return para(prefixLines(' ', stripPara(context.content())));\n }\n\n public override code(node: cm.Node, _context: RendererContext) {\n return `<c>${ESCAPE.text(node.literal)}</c>`;\n }\n\n public override code_block(node: cm.Node, _context: RendererContext) {\n return para(`<code><![CDATA[\\n${node.literal}]]></code>`);\n }\n\n public override text(node: cm.Node, _context: RendererContext) {\n return ESCAPE.text(node.literal) ?? '';\n }\n\n public override link(node: cm.Node, context: RendererContext) {\n return `<a href=\"${ESCAPE.attribute(node.destination) ?? ''}\">${context.content()}</a>`;\n }\n\n public override image(node: cm.Node, context: RendererContext) {\n return `<img alt=\"${ESCAPE.text2attr(context.content())}\" src=\"${ESCAPE.attribute(node.destination) ?? ''}\" />`;\n }\n\n public override emph(_node: cm.Node, context: RendererContext) {\n return `<em>${context.content()}</em>`;\n }\n\n public override strong(_node: cm.Node, context: RendererContext) {\n return `<strong>${context.content()}</strong>`;\n }\n\n public override heading(node: cm.Node, context: RendererContext) {\n return para(`<h${node.level}>${context.content()}</h${node.level}>`);\n }\n\n public override list(node: cm.Node, context: RendererContext) {\n const listType = node.listType === 'bullet' ? 'bullet' : 'number';\n\n return para(`<list type=\"${listType}\">\\n${context.content()}</list>`);\n }\n\n public override item(_node: cm.Node, context: RendererContext) {\n return `<description>${stripPara(context.content())}</description>\\n`;\n }\n\n public override thematic_break(_node: cm.Node, _context: RendererContext) {\n return para('<hr />');\n }\n\n /**\n * HTML needs to be converted to XML\n *\n * If we don't do this, the parser will reject the whole XML block once it seens an unclosed\n * <img> tag.\n */\n public override html_inline(node: cm.Node, _context: RendererContext) {\n const html = node.literal ?? '';\n try {\n const doc = new DOMParser().parseFromString(html, 'text/html');\n return new XMLSerializer().serializeToString(doc);\n } catch {\n // Could not parse - we'll escape unsafe XML entities here...\n return html.replace(/[<>&]/g, (char: string) => {\n switch (char) {\n case '&':\n return '&';\n case '<':\n return '<';\n case '>':\n return '>';\n default:\n return char;\n }\n });\n }\n }\n\n /**\n * HTML needs to be converted to XML\n *\n * If we don't do this, the parser will reject the whole XML block once it seens an unclosed\n * <img> tag.\n */\n public override html_block(node: cm.Node, context: RendererContext) {\n return this.html_inline(node, context);\n }\n}\n"]}
|
package/lib/o-tree.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"o-tree.js","sourceRoot":"","sources":["../src/o-tree.ts"],"names":[],"mappings":"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","sourcesContent":["import { Spans } from './typescript/visible-spans';\n\nexport interface OTreeOptions {\n /**\n * Adjust indentation with the given number\n *\n * Indentation affects children.\n *\n * @default 0\n */\n indent?: number;\n\n /**\n * Separate children with the given string\n *\n * @default ''\n */\n separator?: string;\n\n /**\n * Whether trailing separators should be output. This imples children will be\n * writen each on a new line.\n *\n * @default false\n */\n trailingSeparator?: boolean;\n\n /**\n * Suffix the token after outdenting\n *\n * @default ''\n */\n suffix?: string;\n\n /**\n * Whether this part of the generated syntax is okay to insert newlines and comments\n *\n * @default false\n */\n canBreakLine?: boolean;\n\n /**\n * If set, a unique key which will cause only one node with the given key to be rendered.\n *\n * The outermost key is the one that will be rendered.\n *\n * Used to make it easier to keep the state necessary to render comments\n * only once in the output tree, rather than keep the state in the\n * language rendered.\n *\n * @default No conditional rendering\n */\n renderOnce?: string;\n}\n\n/**\n * \"Output\" Tree\n *\n * Tree-like structure that holds sequences of trees and strings, which\n * can be rendered to an output sink.\n */\nexport class OTree implements OTree {\n public static simplify(xs: Array<OTree | string | undefined>): Array<OTree | string> {\n return xs.filter(notUndefined).filter(notEmpty);\n }\n\n public readonly attachComment: boolean;\n\n private readonly prefix: Array<OTree | string>;\n private readonly children: Array<OTree | string>;\n private span?: Span;\n\n public constructor(\n prefix: Array<OTree | string | undefined>,\n children?: Array<OTree | string | undefined>,\n private readonly options: OTreeOptions = {},\n ) {\n this.prefix = OTree.simplify(prefix);\n this.children = OTree.simplify(children ?? []);\n this.attachComment = !!options.canBreakLine;\n }\n\n /**\n * Set the span in the source file this tree node relates to\n */\n public setSpan(start: number, end: number) {\n this.span = { start, end };\n }\n\n public write(sink: OTreeSink) {\n if (!sink.tagOnce(this.options.renderOnce)) {\n return;\n }\n\n const meVisible = sink.renderingForSpan(this.span);\n\n for (const x of this.prefix) {\n sink.write(x);\n }\n\n const popIndent = sink.requestIndentChange(meVisible ? this.options.indent ?? 0 : 0);\n let mark = sink.mark();\n\n for (const child of this.children ?? []) {\n if (this.options.separator) {\n if (this.options.trailingSeparator) {\n sink.ensureNewLine();\n } else if (mark.wroteNonWhitespaceSinceMark) {\n sink.write(this.options.separator);\n }\n }\n mark = sink.mark();\n\n sink.write(child);\n\n if (this.options.separator && this.options.trailingSeparator) {\n sink.write(this.options.separator.trimEnd());\n }\n }\n\n popIndent();\n\n if (this.options.suffix) {\n if (this.options.separator && this.options.trailingSeparator) {\n sink.ensureNewLine();\n }\n sink.renderingForSpan(this.span);\n sink.write(this.options.suffix);\n }\n }\n\n public get isEmpty() {\n return this.prefix.length + this.children.length === 0;\n }\n\n public toString() {\n return `<INCORRECTLY STRINGIFIED ${this.prefix.toString()}>`;\n }\n}\n\nexport const NO_SYNTAX = new OTree([]);\n\nexport class UnknownSyntax extends OTree {}\n\nexport interface SinkMark {\n readonly wroteNonWhitespaceSinceMark: boolean;\n}\n\nexport interface OTreeSinkOptions {\n /**\n * @default ' '\n */\n indentChar?: ' ' | '\\t';\n visibleSpans?: Spans;\n}\n\ninterface ConditionalNewLine {\n readonly conditionalNewLine: {\n readonly indent: number;\n };\n}\n\n/**\n * Output sink for OTree objects\n *\n * Maintains state about what has been rendered supports suppressing code\n * fragments based on their tagged source location.\n *\n * Basically: manages the state that was too hard to manage in the\n * tree :).\n */\nexport class OTreeSink {\n private readonly indentChar: ' ' | '\\t';\n private readonly indentLevels: number[] = [0];\n private readonly fragments = new Array<string | ConditionalNewLine>();\n private readonly singletonsRendered = new Set<string>();\n private pendingIndentChange = 0;\n private rendering = true;\n\n public constructor(private readonly options: OTreeSinkOptions = {}) {\n this.indentChar = options.indentChar ?? ' ';\n }\n\n public tagOnce(key: string | undefined): boolean {\n if (key === undefined) {\n return true;\n }\n if (this.singletonsRendered.has(key)) {\n return false;\n }\n this.singletonsRendered.add(key);\n return true;\n }\n\n /**\n * Get a mark for the current sink output location\n *\n * Marks can be used to query about things that have been written to output.\n */\n public mark(): SinkMark {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n const markIndex = this.fragments.length;\n\n return {\n get wroteNonWhitespaceSinceMark(): boolean {\n return self.fragments.slice(markIndex).some((s) => typeof s !== 'object' && /[^\\s]/.exec(s) != null);\n },\n };\n }\n\n public write(text: string | OTree) {\n if (text instanceof OTree) {\n text.write(this);\n } else {\n if (!this.rendering) {\n return;\n }\n\n if (containsNewline(text)) {\n this.applyPendingIndentChange();\n }\n this.append(text.replace(/\\n/g, `\\n${this.indentChar.repeat(this.currentIndent)}`));\n }\n }\n\n /**\n * Ensures the following tokens will be output on a new line (emits a new line\n * and indent unless immediately preceded or followed by a newline, ignoring\n * surrounding white space).\n */\n public ensureNewLine(): void {\n this.applyPendingIndentChange();\n this.fragments.push({ conditionalNewLine: { indent: this.currentIndent } });\n }\n\n public renderingForSpan(span?: Span): boolean {\n if (span && this.options.visibleSpans) {\n this.rendering = this.options.visibleSpans.fullyContainsSpan(span);\n }\n return this.rendering;\n }\n\n public requestIndentChange(x: number): () => void {\n if (x === 0) {\n return () => undefined;\n }\n\n this.pendingIndentChange = x;\n const currentIndentState = this.indentLevels.length;\n\n // Return a pop function which will reset to the current indent state,\n // regardless of whether the indent was actually applied or not.\n return () => {\n this.indentLevels.splice(currentIndentState);\n this.pendingIndentChange = 0;\n };\n }\n\n public toString() {\n // Strip trailing whitespace from every line, and empty lines from the start and end\n return this.fragments\n .map((item, index, fragments) => {\n if (typeof item !== 'object') {\n return item;\n }\n const ignore = '';\n\n const leading = fragments.slice(0, index).reverse();\n for (const fragment of leading) {\n if (typeof fragment === 'object') {\n // We don't emit if there was already a conditional newline just before\n return ignore;\n }\n // If there's a trailing newline, then we don't emit this one\n if (/\\n\\s*$/m.exec(fragment)) {\n return ignore;\n }\n // If it contained non-whitespace characters, we need to check trailing data...\n if (/[^\\s]/.exec(fragment)) {\n break;\n }\n }\n\n const newlineAndIndent = `\\n${this.indentChar.repeat(item.conditionalNewLine.indent)}`;\n\n const trailing = fragments.slice(index + 1);\n for (const fragment of trailing) {\n if (typeof fragment === 'object') {\n // We're the first of a sequence, so we must emit (unless we returned earlier, of course)\n return newlineAndIndent;\n }\n // If there's a leading newline, then we don't emit this one\n if (/^\\s*\\n/m.exec(fragment)) {\n return ignore;\n }\n // If it contained non-whitespace characters, we emit this one\n if (/[^\\s]/.exec(fragment)) {\n return newlineAndIndent;\n }\n }\n\n return ignore;\n })\n .join('')\n .replace(/[ \\t]+$/gm, '')\n .replace(/^\\n+/, '')\n .replace(/\\n+$/, '');\n }\n\n private append(x: string) {\n this.fragments.push(x);\n }\n\n private applyPendingIndentChange() {\n if (this.pendingIndentChange !== 0) {\n this.indentLevels.push(this.currentIndent + this.pendingIndentChange);\n this.pendingIndentChange = 0;\n }\n }\n\n private get currentIndent() {\n return this.indentLevels[this.indentLevels.length - 1];\n }\n}\n\nfunction notUndefined<T>(x: T | undefined): x is T {\n return x !== undefined;\n}\n\nfunction notEmpty(x: OTree | string) {\n return x instanceof OTree ? !x.isEmpty : x !== '';\n}\n\nexport function renderTree(tree: OTree, options?: OTreeSinkOptions): string {\n const sink = new OTreeSink(options);\n tree.write(sink);\n return sink.toString();\n}\n\nfunction containsNewline(x: string) {\n return x.includes('\\n');\n}\n\nexport interface Span {\n readonly start: number;\n readonly end: number;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"o-tree.js","sourceRoot":"","sources":["../src/o-tree.ts"],"names":[],"mappings":"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","sourcesContent":["import { Spans } from './typescript/visible-spans';\n\nexport interface OTreeOptions {\n /**\n * Adjust indentation with the given number\n *\n * Indentation affects children.\n *\n * @default 0\n */\n indent?: number;\n\n /**\n * Separate children with the given string\n *\n * @default ''\n */\n separator?: string;\n\n /**\n * Whether trailing separators should be output. This imples children will be\n * writen each on a new line.\n *\n * @default false\n */\n trailingSeparator?: boolean;\n\n /**\n * Suffix the token after outdenting\n *\n * @default ''\n */\n suffix?: string;\n\n /**\n * Whether this part of the generated syntax is okay to insert newlines and comments\n *\n * @default false\n */\n canBreakLine?: boolean;\n\n /**\n * If set, a unique key which will cause only one node with the given key to be rendered.\n *\n * The outermost key is the one that will be rendered.\n *\n * Used to make it easier to keep the state necessary to render comments\n * only once in the output tree, rather than keep the state in the\n * language rendered.\n *\n * @default No conditional rendering\n */\n renderOnce?: string;\n}\n\n/**\n * \"Output\" Tree\n *\n * Tree-like structure that holds sequences of trees and strings, which\n * can be rendered to an output sink.\n */\nexport class OTree implements OTree {\n public static simplify(xs: Array<OTree | string | undefined>): Array<OTree | string> {\n return xs.filter(notUndefined).filter(notEmpty);\n }\n\n public readonly attachComment: boolean;\n\n private readonly prefix: Array<OTree | string>;\n private readonly children: Array<OTree | string>;\n private span?: Span;\n\n public constructor(\n prefix: Array<OTree | string | undefined>,\n children?: Array<OTree | string | undefined>,\n private readonly options: OTreeOptions = {},\n ) {\n this.prefix = OTree.simplify(prefix);\n this.children = OTree.simplify(children ?? []);\n this.attachComment = !!options.canBreakLine;\n }\n\n /**\n * Set the span in the source file this tree node relates to\n */\n public setSpan(start: number, end: number) {\n this.span = { start, end };\n }\n\n public write(sink: OTreeSink) {\n if (!sink.tagOnce(this.options.renderOnce)) {\n return;\n }\n\n const meVisible = sink.renderingForSpan(this.span);\n\n for (const x of this.prefix) {\n sink.write(x);\n }\n\n const popIndent = sink.requestIndentChange(meVisible ? this.options.indent ?? 0 : 0);\n let mark = sink.mark();\n\n for (const child of this.children ?? []) {\n if (this.options.separator) {\n if (this.options.trailingSeparator) {\n sink.ensureNewLine();\n } else if (mark.wroteNonWhitespaceSinceMark) {\n sink.write(this.options.separator);\n }\n }\n mark = sink.mark();\n\n sink.write(child);\n\n if (this.options.separator && this.options.trailingSeparator) {\n sink.write(this.options.separator.trimEnd());\n }\n }\n\n popIndent();\n\n if (this.options.suffix) {\n if (this.options.separator && this.options.trailingSeparator) {\n sink.ensureNewLine();\n }\n sink.renderingForSpan(this.span);\n sink.write(this.options.suffix);\n }\n }\n\n public get isEmpty() {\n return this.prefix.length + this.children.length === 0;\n }\n\n public toString() {\n return `<INCORRECTLY STRINGIFIED ${this.prefix.toString()}>`;\n }\n}\n\nexport const NO_SYNTAX = new OTree([]);\n\nexport class UnknownSyntax extends OTree {}\n\nexport interface SinkMark {\n readonly wroteNonWhitespaceSinceMark: boolean;\n}\n\nexport interface OTreeSinkOptions {\n /**\n * @default ' '\n */\n indentChar?: ' ' | '\\t';\n visibleSpans?: Spans;\n}\n\ninterface ConditionalNewLine {\n readonly conditionalNewLine: {\n readonly indent: number;\n };\n}\n\n/**\n * Output sink for OTree objects\n *\n * Maintains state about what has been rendered supports suppressing code\n * fragments based on their tagged source location.\n *\n * Basically: manages the state that was too hard to manage in the\n * tree :).\n */\nexport class OTreeSink {\n private readonly indentChar: ' ' | '\\t';\n private readonly indentLevels: number[] = [0];\n private readonly fragments = new Array<string | ConditionalNewLine>();\n private readonly singletonsRendered = new Set<string>();\n private pendingIndentChange = 0;\n private rendering = true;\n\n public constructor(private readonly options: OTreeSinkOptions = {}) {\n this.indentChar = options.indentChar ?? ' ';\n }\n\n public tagOnce(key: string | undefined): boolean {\n if (key === undefined) {\n return true;\n }\n if (this.singletonsRendered.has(key)) {\n return false;\n }\n this.singletonsRendered.add(key);\n return true;\n }\n\n /**\n * Get a mark for the current sink output location\n *\n * Marks can be used to query about things that have been written to output.\n */\n public mark(): SinkMark {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n const markIndex = this.fragments.length;\n\n return {\n get wroteNonWhitespaceSinceMark(): boolean {\n return self.fragments.slice(markIndex).some((s) => typeof s !== 'object' && /[^\\s]/.exec(s) != null);\n },\n };\n }\n\n public write(text: string | OTree) {\n if (text instanceof OTree) {\n text.write(this);\n } else {\n if (!this.rendering) {\n return;\n }\n\n if (containsNewline(text)) {\n this.applyPendingIndentChange();\n }\n this.append(text.replace(/\\n/g, `\\n${this.indentChar.repeat(this.currentIndent)}`));\n }\n }\n\n /**\n * Ensures the following tokens will be output on a new line (emits a new line\n * and indent unless immediately preceded or followed by a newline, ignoring\n * surrounding white space).\n */\n public ensureNewLine(): void {\n this.applyPendingIndentChange();\n this.fragments.push({ conditionalNewLine: { indent: this.currentIndent } });\n }\n\n public renderingForSpan(span?: Span): boolean {\n if (span && this.options.visibleSpans) {\n this.rendering = this.options.visibleSpans.fullyContainsSpan(span);\n }\n return this.rendering;\n }\n\n public requestIndentChange(x: number): () => void {\n if (x === 0) {\n return () => undefined;\n }\n\n this.pendingIndentChange = x;\n const currentIndentState = this.indentLevels.length;\n\n // Return a pop function which will reset to the current indent state,\n // regardless of whether the indent was actually applied or not.\n return () => {\n this.indentLevels.splice(currentIndentState);\n this.pendingIndentChange = 0;\n };\n }\n\n public toString() {\n // Strip trailing whitespace from every line, and empty lines from the start and end\n return this.fragments\n .map((item, index, fragments) => {\n if (typeof item !== 'object') {\n return item;\n }\n const ignore = '';\n\n const leading = fragments.slice(0, index).reverse();\n for (const fragment of leading) {\n if (typeof fragment === 'object') {\n // We don't emit if there was already a conditional newline just before\n return ignore;\n }\n // If there's a trailing newline, then we don't emit this one\n if (/\\n\\s*$/m.exec(fragment)) {\n return ignore;\n }\n // If it contained non-whitespace characters, we need to check trailing data...\n if (/[^\\s]/.exec(fragment)) {\n break;\n }\n }\n\n const newlineAndIndent = `\\n${this.indentChar.repeat(item.conditionalNewLine.indent)}`;\n\n const trailing = fragments.slice(index + 1);\n for (const fragment of trailing) {\n if (typeof fragment === 'object') {\n // We're the first of a sequence, so we must emit (unless we returned earlier, of course)\n return newlineAndIndent;\n }\n // If there's a leading newline, then we don't emit this one\n if (/^\\s*\\n/m.exec(fragment)) {\n return ignore;\n }\n // If it contained non-whitespace characters, we emit this one\n if (/[^\\s]/.exec(fragment)) {\n return newlineAndIndent;\n }\n }\n\n return ignore;\n })\n .join('')\n .replace(/[ \\t]+$/gm, '')\n .replace(/^\\n+/, '')\n .replace(/\\n+$/, '');\n }\n\n private append(x: string) {\n this.fragments.push(x);\n }\n\n private applyPendingIndentChange() {\n if (this.pendingIndentChange !== 0) {\n this.indentLevels.push(this.currentIndent + this.pendingIndentChange);\n this.pendingIndentChange = 0;\n }\n }\n\n private get currentIndent() {\n return this.indentLevels[this.indentLevels.length - 1];\n }\n}\n\nfunction notUndefined<T>(x: T | undefined): x is T {\n return x !== undefined;\n}\n\nfunction notEmpty(x: OTree | string) {\n return x instanceof OTree ? !x.isEmpty : x !== '';\n}\n\nexport function renderTree(tree: OTree, options?: OTreeSinkOptions): string {\n const sink = new OTreeSink(options);\n tree.write(sink);\n return sink.toString();\n}\n\nfunction containsNewline(x: string) {\n return x.includes('\\n');\n}\n\nexport interface Span {\n readonly start: number;\n readonly end: number;\n}\n"]}
|