jsii-rosetta 5.4.32-dev.4 → 5.5.1-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/lib/commands/convert.js +1 -2
  2. package/lib/commands/convert.js.map +1 -1
  3. package/lib/commands/coverage.js +1 -2
  4. package/lib/commands/coverage.js.map +1 -1
  5. package/lib/commands/extract.js +2 -3
  6. package/lib/commands/extract.js.map +1 -1
  7. package/lib/commands/infuse.js +2 -2
  8. package/lib/commands/infuse.js.map +1 -1
  9. package/lib/commands/read.js +1 -2
  10. package/lib/commands/read.js.map +1 -1
  11. package/lib/commands/transliterate.js +1 -2
  12. package/lib/commands/transliterate.js.map +1 -1
  13. package/lib/commands/trim-cache.js +1 -2
  14. package/lib/commands/trim-cache.js.map +1 -1
  15. package/lib/find-utils.js +4 -5
  16. package/lib/find-utils.js.map +1 -1
  17. package/lib/fixtures.js +1 -2
  18. package/lib/fixtures.js.map +1 -1
  19. package/lib/jsii/assemblies.js +9 -9
  20. package/lib/jsii/assemblies.js.map +1 -1
  21. package/lib/jsii/jsii-types.js +2 -3
  22. package/lib/jsii/jsii-types.js.map +1 -1
  23. package/lib/jsii/jsii-utils.js +15 -16
  24. package/lib/jsii/jsii-utils.js.map +1 -1
  25. package/lib/jsii/packages.js +1 -2
  26. package/lib/jsii/packages.js.map +1 -1
  27. package/lib/json.d.ts +0 -2
  28. package/lib/json.js +2 -3
  29. package/lib/json.js.map +1 -1
  30. package/lib/languages/target-language.js +3 -3
  31. package/lib/languages/target-language.js.map +1 -1
  32. package/lib/logging.js +6 -6
  33. package/lib/logging.js.map +1 -1
  34. package/lib/markdown/escapes.js +2 -3
  35. package/lib/markdown/escapes.js.map +1 -1
  36. package/lib/markdown/extract-snippets.js +1 -2
  37. package/lib/markdown/extract-snippets.js.map +1 -1
  38. package/lib/markdown/index.js +3 -4
  39. package/lib/markdown/index.js.map +1 -1
  40. package/lib/markdown/markdown-renderer.js +5 -5
  41. package/lib/markdown/markdown-renderer.js.map +1 -1
  42. package/lib/markdown/markdown.js +5 -6
  43. package/lib/markdown/markdown.js.map +1 -1
  44. package/lib/o-tree.js +2 -2
  45. package/lib/o-tree.js.map +1 -1
  46. package/lib/renderer.js +2 -2
  47. package/lib/renderer.js.map +1 -1
  48. package/lib/rosetta-reader.d.ts +0 -1
  49. package/lib/snippet-dependencies.js +5 -6
  50. package/lib/snippet-dependencies.js.map +1 -1
  51. package/lib/snippet-selectors.js +4 -5
  52. package/lib/snippet-selectors.js.map +1 -1
  53. package/lib/snippet.js +11 -11
  54. package/lib/snippet.js.map +1 -1
  55. package/lib/strict.js +1 -2
  56. package/lib/strict.js.map +1 -1
  57. package/lib/support.js +1 -2
  58. package/lib/support.js.map +1 -1
  59. package/lib/tablets/key.js +1 -2
  60. package/lib/tablets/key.js.map +1 -1
  61. package/lib/translate.js +4 -4
  62. package/lib/translate.js.map +1 -1
  63. package/lib/translate_all.js +1 -2
  64. package/lib/translate_all.js.map +1 -1
  65. package/lib/translate_all_worker.js +1 -2
  66. package/lib/translate_all_worker.js.map +1 -1
  67. package/lib/typescript/ast-utils.d.ts +1 -1
  68. package/lib/typescript/ast-utils.js +23 -23
  69. package/lib/typescript/ast-utils.js.map +1 -1
  70. package/lib/typescript/imports.d.ts +2 -2
  71. package/lib/typescript/imports.js +2 -3
  72. package/lib/typescript/imports.js.map +1 -1
  73. package/lib/typescript/types.js +16 -17
  74. package/lib/typescript/types.js.map +1 -1
  75. package/lib/typescript/visible-spans.js +4 -4
  76. package/lib/typescript/visible-spans.js.map +1 -1
  77. package/lib/util.d.ts +0 -1
  78. package/lib/util.js +19 -19
  79. package/lib/util.js.map +1 -1
  80. package/package.json +3 -3
  81. package/releases.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/typescript/types.ts"],"names":[],"mappings":"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","sourcesContent":["import * as ts from 'typescript';\n\nimport { hasAllFlags, hasAnyFlag, resolveEnumLiteral, resolvedSymbolAtLocation } from '../jsii/jsii-utils';\nimport { isDefined } from '../util';\n\n/**\n * Return the first non-undefined type from a union\n */\nexport function firstTypeInUnion(typeChecker: ts.TypeChecker, type: ts.Type): ts.Type {\n type = typeChecker.getNonNullableType(type);\n\n if (!type.isUnion()) {\n return type;\n }\n\n return type.types[0];\n}\n\nexport type BuiltInType = 'any' | 'boolean' | 'number' | 'string' | 'void';\nexport function builtInTypeName(type: ts.Type): BuiltInType | undefined {\n if (hasAnyFlag(type.flags, ts.TypeFlags.Any | ts.TypeFlags.Unknown)) {\n return 'any';\n }\n if (hasAnyFlag(type.flags, ts.TypeFlags.BooleanLike)) {\n return 'boolean';\n }\n if (hasAnyFlag(type.flags, ts.TypeFlags.NumberLike)) {\n return 'number';\n }\n if (hasAnyFlag(type.flags, ts.TypeFlags.StringLike)) {\n return 'string';\n }\n return undefined;\n}\n\nexport function renderType(type: ts.Type): string {\n if (type.isClassOrInterface()) {\n return type.symbol.name;\n }\n if (type.isLiteral()) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n return `${type.value}`;\n }\n return renderTypeFlags(type);\n}\n\nexport function parameterAcceptsUndefined(param: ts.ParameterDeclaration, type?: ts.Type): boolean {\n if (param.initializer !== undefined) {\n return true;\n }\n if (param.questionToken !== undefined) {\n return true;\n }\n if (type) {\n return typeContainsUndefined(type);\n }\n return false;\n}\n\n/**\n * This is a simplified check that should be good enough for most purposes\n */\nexport function typeContainsUndefined(type: ts.Type): boolean {\n if (type.getFlags() & ts.TypeFlags.Undefined) {\n return true;\n }\n if (type.isUnion()) {\n return type.types.some(typeContainsUndefined);\n }\n return false;\n}\n\nexport function renderTypeFlags(type: ts.Type): string {\n return renderFlags(type.flags, ts.TypeFlags);\n}\n\nexport type MapAnalysis = { result: 'nonMap' } | { result: 'map'; elementType: ts.Type | undefined };\n\n/**\n * If this is a map type, return the type mapped *to* (key must always be `string` anyway).\n */\nexport function mapElementType(type: ts.Type, typeChecker: ts.TypeChecker): MapAnalysis {\n if (hasAnyFlag(type.flags, ts.TypeFlags.Object) && type.symbol) {\n if (type.symbol.name === '__type') {\n // Declared map type: {[k: string]: A}\n return { result: 'map', elementType: type.getStringIndexType() };\n }\n\n if (type.symbol.name === '__object') {\n // Derived map type from object literal: typeof({ k: \"value\" })\n // For every property, get the node that created it (PropertyAssignment), and get the type of the initializer of that node\n const initializerTypes = type.getProperties().map((p) => {\n const expression = p.valueDeclaration ?? p.declarations![0];\n return typeOfObjectLiteralProperty(typeChecker, expression);\n });\n return {\n result: 'map',\n elementType: typeIfSame([...initializerTypes, type.getStringIndexType()].filter(isDefined)),\n };\n }\n }\n\n return { result: 'nonMap' };\n}\n\n/**\n * Try to infer the map element type from the properties if they're all the same\n */\nexport function inferMapElementType(\n elements: readonly ts.ObjectLiteralElementLike[],\n typeChecker: ts.TypeChecker,\n): ts.Type | undefined {\n const types = elements.map((e) => typeOfObjectLiteralProperty(typeChecker, e)).filter(isDefined);\n\n return types.every((t) => isSameType(types[0], t)) ? types[0] : undefined;\n}\n\nfunction typeOfObjectLiteralProperty(typeChecker: ts.TypeChecker, el: ts.Node): ts.Type | undefined {\n if (ts.isPropertyAssignment(el)) {\n return typeOfExpression(typeChecker, el.initializer);\n }\n if (ts.isShorthandPropertyAssignment(el)) {\n return typeOfExpression(typeChecker, el.name);\n }\n return undefined;\n}\n\nfunction isSameType(a: ts.Type, b: ts.Type) {\n return a.flags === b.flags && a.symbol?.name === b.symbol?.name;\n}\n\nfunction typeIfSame(types: Array<ts.Type | undefined>): ts.Type | undefined {\n const ttypes = types.filter(isDefined);\n if (types.length === 0) {\n return undefined;\n }\n\n return ttypes.every((t) => isSameType(ttypes[0], t)) ? ttypes[0] : undefined;\n}\n\n/**\n * If this is an array type, return the element type of the array\n */\nexport function arrayElementType(type: ts.Type): ts.Type | undefined {\n if (type.symbol && type.symbol.name === 'Array') {\n const tr = type as ts.TypeReference;\n return tr.aliasTypeArguments && tr.aliasTypeArguments[0];\n }\n return undefined;\n}\n\nexport function typeOfExpression(typeChecker: ts.TypeChecker, node: ts.Expression) {\n const t = typeChecker.getContextualType(node) ?? typeChecker.getTypeAtLocation(node);\n return resolveEnumLiteral(typeChecker, t);\n}\n\n/**\n * Infer type of expression by the argument it is assigned to\n *\n * If the type of the expression can include undefined (if the value is\n * optional), `undefined` will be removed from the union.\n *\n * (Will return undefined for object literals not unified with a declared type)\n */\nexport function inferredTypeOfExpression(typeChecker: ts.TypeChecker, node: ts.Expression) {\n const type = typeChecker.getContextualType(node);\n return type ? typeChecker.getNonNullableType(type) : undefined;\n}\n\nexport function isNumber(x: any): x is number {\n return typeof x === 'number';\n}\n\nexport function isEnumAccess(typeChecker: ts.TypeChecker, access: ts.PropertyAccessExpression) {\n const symbol = resolvedSymbolAtLocation(typeChecker, access.expression);\n return symbol ? hasAnyFlag(symbol.flags, ts.SymbolFlags.Enum) : false;\n}\n\nexport function isStaticReadonlyAccess(typeChecker: ts.TypeChecker, access: ts.PropertyAccessExpression) {\n const symbol = resolvedSymbolAtLocation(typeChecker, access);\n const decl = symbol?.getDeclarations();\n if (decl && decl[0] && ts.isPropertyDeclaration(decl[0])) {\n const flags = ts.getCombinedModifierFlags(decl[0]);\n return hasAllFlags(flags, ts.ModifierFlags.Readonly | ts.ModifierFlags.Static);\n }\n return false;\n}\n\nexport function renderFlags(flags: number | undefined, flagObject: Record<string, number | string>) {\n if (flags === undefined) {\n return '';\n }\n\n return Object.values(flagObject)\n .filter(isNumber)\n .filter((f) => hasAllFlags(flags, f))\n .map((f) => flagObject[f])\n .join(',');\n}\n\nexport function determineReturnType(typeChecker: ts.TypeChecker, node: ts.SignatureDeclaration): ts.Type | undefined {\n const signature = typeChecker.getSignatureFromDeclaration(node);\n if (!signature) {\n return undefined;\n }\n return typeChecker.getReturnTypeOfSignature(signature);\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/typescript/types.ts"],"names":[],"mappings":"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","sourcesContent":["import * as ts from 'typescript';\n\nimport { hasAllFlags, hasAnyFlag, resolveEnumLiteral, resolvedSymbolAtLocation } from '../jsii/jsii-utils';\nimport { isDefined } from '../util';\n\n/**\n * Return the first non-undefined type from a union\n */\nexport function firstTypeInUnion(typeChecker: ts.TypeChecker, type: ts.Type): ts.Type {\n type = typeChecker.getNonNullableType(type);\n\n if (!type.isUnion()) {\n return type;\n }\n\n return type.types[0];\n}\n\nexport type BuiltInType = 'any' | 'boolean' | 'number' | 'string' | 'void';\nexport function builtInTypeName(type: ts.Type): BuiltInType | undefined {\n if (hasAnyFlag(type.flags, ts.TypeFlags.Any | ts.TypeFlags.Unknown)) {\n return 'any';\n }\n if (hasAnyFlag(type.flags, ts.TypeFlags.BooleanLike)) {\n return 'boolean';\n }\n if (hasAnyFlag(type.flags, ts.TypeFlags.NumberLike)) {\n return 'number';\n }\n if (hasAnyFlag(type.flags, ts.TypeFlags.StringLike)) {\n return 'string';\n }\n return undefined;\n}\n\nexport function renderType(type: ts.Type): string {\n if (type.isClassOrInterface()) {\n return type.symbol.name;\n }\n if (type.isLiteral()) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n return `${type.value}`;\n }\n return renderTypeFlags(type);\n}\n\nexport function parameterAcceptsUndefined(param: ts.ParameterDeclaration, type?: ts.Type): boolean {\n if (param.initializer !== undefined) {\n return true;\n }\n if (param.questionToken !== undefined) {\n return true;\n }\n if (type) {\n return typeContainsUndefined(type);\n }\n return false;\n}\n\n/**\n * This is a simplified check that should be good enough for most purposes\n */\nexport function typeContainsUndefined(type: ts.Type): boolean {\n if (type.getFlags() & ts.TypeFlags.Undefined) {\n return true;\n }\n if (type.isUnion()) {\n return type.types.some(typeContainsUndefined);\n }\n return false;\n}\n\nexport function renderTypeFlags(type: ts.Type): string {\n return renderFlags(type.flags, ts.TypeFlags);\n}\n\nexport type MapAnalysis = { result: 'nonMap' } | { result: 'map'; elementType: ts.Type | undefined };\n\n/**\n * If this is a map type, return the type mapped *to* (key must always be `string` anyway).\n */\nexport function mapElementType(type: ts.Type, typeChecker: ts.TypeChecker): MapAnalysis {\n if (hasAnyFlag(type.flags, ts.TypeFlags.Object) && type.symbol) {\n if (type.symbol.name === '__type') {\n // Declared map type: {[k: string]: A}\n return { result: 'map', elementType: type.getStringIndexType() };\n }\n\n if (type.symbol.name === '__object') {\n // Derived map type from object literal: typeof({ k: \"value\" })\n // For every property, get the node that created it (PropertyAssignment), and get the type of the initializer of that node\n const initializerTypes = type.getProperties().map((p) => {\n const expression = p.valueDeclaration ?? p.declarations![0];\n return typeOfObjectLiteralProperty(typeChecker, expression);\n });\n return {\n result: 'map',\n elementType: typeIfSame([...initializerTypes, type.getStringIndexType()].filter(isDefined)),\n };\n }\n }\n\n return { result: 'nonMap' };\n}\n\n/**\n * Try to infer the map element type from the properties if they're all the same\n */\nexport function inferMapElementType(\n elements: readonly ts.ObjectLiteralElementLike[],\n typeChecker: ts.TypeChecker,\n): ts.Type | undefined {\n const types = elements.map((e) => typeOfObjectLiteralProperty(typeChecker, e)).filter(isDefined);\n\n return types.every((t) => isSameType(types[0], t)) ? types[0] : undefined;\n}\n\nfunction typeOfObjectLiteralProperty(typeChecker: ts.TypeChecker, el: ts.Node): ts.Type | undefined {\n if (ts.isPropertyAssignment(el)) {\n return typeOfExpression(typeChecker, el.initializer);\n }\n if (ts.isShorthandPropertyAssignment(el)) {\n return typeOfExpression(typeChecker, el.name);\n }\n return undefined;\n}\n\nfunction isSameType(a: ts.Type, b: ts.Type) {\n return a.flags === b.flags && a.symbol?.name === b.symbol?.name;\n}\n\nfunction typeIfSame(types: Array<ts.Type | undefined>): ts.Type | undefined {\n const ttypes = types.filter(isDefined);\n if (types.length === 0) {\n return undefined;\n }\n\n return ttypes.every((t) => isSameType(ttypes[0], t)) ? ttypes[0] : undefined;\n}\n\n/**\n * If this is an array type, return the element type of the array\n */\nexport function arrayElementType(type: ts.Type): ts.Type | undefined {\n if (type.symbol && type.symbol.name === 'Array') {\n const tr = type as ts.TypeReference;\n return tr.aliasTypeArguments && tr.aliasTypeArguments[0];\n }\n return undefined;\n}\n\nexport function typeOfExpression(typeChecker: ts.TypeChecker, node: ts.Expression) {\n const t = typeChecker.getContextualType(node) ?? typeChecker.getTypeAtLocation(node);\n return resolveEnumLiteral(typeChecker, t);\n}\n\n/**\n * Infer type of expression by the argument it is assigned to\n *\n * If the type of the expression can include undefined (if the value is\n * optional), `undefined` will be removed from the union.\n *\n * (Will return undefined for object literals not unified with a declared type)\n */\nexport function inferredTypeOfExpression(typeChecker: ts.TypeChecker, node: ts.Expression) {\n const type = typeChecker.getContextualType(node);\n return type ? typeChecker.getNonNullableType(type) : undefined;\n}\n\nexport function isNumber(x: any): x is number {\n return typeof x === 'number';\n}\n\nexport function isEnumAccess(typeChecker: ts.TypeChecker, access: ts.PropertyAccessExpression) {\n const symbol = resolvedSymbolAtLocation(typeChecker, access.expression);\n return symbol ? hasAnyFlag(symbol.flags, ts.SymbolFlags.Enum) : false;\n}\n\nexport function isStaticReadonlyAccess(typeChecker: ts.TypeChecker, access: ts.PropertyAccessExpression) {\n const symbol = resolvedSymbolAtLocation(typeChecker, access);\n const decl = symbol?.getDeclarations();\n if (decl && decl[0] && ts.isPropertyDeclaration(decl[0])) {\n const flags = ts.getCombinedModifierFlags(decl[0]);\n return hasAllFlags(flags, ts.ModifierFlags.Readonly | ts.ModifierFlags.Static);\n }\n return false;\n}\n\nexport function renderFlags(flags: number | undefined, flagObject: Record<string, number | string>) {\n if (flags === undefined) {\n return '';\n }\n\n return Object.values(flagObject)\n .filter(isNumber)\n .filter((f) => hasAllFlags(flags, f))\n .map((f) => flagObject[f])\n .join(',');\n}\n\nexport function determineReturnType(typeChecker: ts.TypeChecker, node: ts.SignatureDeclaration): ts.Type | undefined {\n const signature = typeChecker.getSignatureFromDeclaration(node);\n if (!signature) {\n return undefined;\n }\n return typeChecker.getReturnTypeOfSignature(signature);\n}\n"]}
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.spanContains = exports.spanInside = exports.trimCompleteSourceToVisible = exports.Spans = void 0;
3
+ exports.Spans = void 0;
4
+ exports.trimCompleteSourceToVisible = trimCompleteSourceToVisible;
5
+ exports.spanInside = spanInside;
6
+ exports.spanContains = spanContains;
4
7
  /**
5
8
  * A class representing a set of non-overlapping Spans.
6
9
  */
@@ -84,7 +87,6 @@ function trimCompleteSourceToVisible(source) {
84
87
  .join('')
85
88
  .trimRight();
86
89
  }
87
- exports.trimCompleteSourceToVisible = trimCompleteSourceToVisible;
88
90
  function calculateMarkedSpans(source) {
89
91
  const regEx = /^[ \t]*[/]{3}[ \t]*(!(?:show|hide))[ \t]*$/gm;
90
92
  const ret = new Array();
@@ -120,9 +122,7 @@ function calculateMarkedSpans(source) {
120
122
  function spanInside(a, b) {
121
123
  return b.start <= a.start && a.end <= b.end;
122
124
  }
123
- exports.spanInside = spanInside;
124
125
  function spanContains(a, position) {
125
126
  return a.start <= position && position < a.end;
126
127
  }
127
- exports.spanContains = spanContains;
128
128
  //# sourceMappingURL=visible-spans.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"visible-spans.js","sourceRoot":"","sources":["../../src/typescript/visible-spans.ts"],"names":[],"mappings":";;;AAIA;;GAEG;AACH,MAAa,KAAK;IAChB;;OAEG;IACI,MAAM,CAAC,sBAAsB,CAAC,MAAc;QACjD,OAAO,IAAI,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,YAAoC,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAChD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAEzC,uBAAuB;QACvB,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAEhC,IAAI,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC/B,2CAA2C;gBAC3C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;oBACvB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,GAAG,EAAE,IAAI,CAAC,GAAG;iBACd,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,eAAe;gBACf,CAAC,EAAE,CAAC;YACN,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACI,iBAAiB,CAAC,IAAU;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,OAAO,CAAC,CAAC,SAAS,IAAI,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACpD,CAAC;IAEM,gBAAgB,CAAC,GAAW;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,CAAC,CAAC,SAAS,IAAI,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACrD,CAAC;IAED;;;;;OAKG;IACI,mBAAmB,CAAC,IAAa;QACtC,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChD,CAAC;IAED;;;;;OAKG;IACK,QAAQ,CAAC,QAAgB;QAC/B,yEAAyE;QACzE,wDAAwD;QACxD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YAC/D,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,QAAQ,EAAE,CAAC;YAChE,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC,EAAE,CAAC;QACN,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AA9ED,sBA8EC;AAED,SAAgB,2BAA2B,CAAC,MAAc;IACxD,MAAM,KAAK,GAAG,KAAK,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAEnD,OAAO,KAAK,CAAC,KAAK;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;SACrD,IAAI,CAAC,EAAE,CAAC;SACR,SAAS,EAAE,CAAC;AACjB,CAAC;AAPD,kEAOC;AAQD,SAAS,oBAAoB,CAAC,MAAc;IAC1C,MAAM,KAAK,GAAG,8CAA8C,CAAC;IAE7D,MAAM,GAAG,GAAG,IAAI,KAAK,EAAc,CAAC;IACpC,IAAI,KAAK,CAAC;IACV,IAAI,SAAS,CAAC;IACd,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5C,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC;QACnC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC;YACrC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,6EAA6E;gBAC7E,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACN,4CAA4C;gBAC5C,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC;YAC/D,CAAC;YACD,OAAO,GAAG,MAAM,CAAC;YAEjB,yCAAyC;YACzC,SAAS,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAEjE,gCAAgC;IAChC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,CAAO,EAAE,CAAO;IACzC,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC;AAC9C,CAAC;AAFD,gCAEC;AAED,SAAgB,YAAY,CAAC,CAAO,EAAE,QAAgB;IACpD,OAAO,CAAC,CAAC,KAAK,IAAI,QAAQ,IAAI,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC;AACjD,CAAC;AAFD,oCAEC","sourcesContent":["import * as ts from 'typescript';\n\nimport { Span } from '../o-tree';\n\n/**\n * A class representing a set of non-overlapping Spans.\n */\nexport class Spans {\n /**\n * Derive visible spans from marked source (`/// !show` and `/// !hide` directives).\n */\n public static visibleSpansFromSource(source: string) {\n return new Spans(calculateMarkedSpans(source).filter((s) => s.visible));\n }\n\n public constructor(private readonly _spans: Span[]) {\n _spans.sort((a, b) => a.start - b.start);\n\n // Merge adjacent spans\n let i = 0;\n while (i < this._spans.length - 1) {\n const current = this._spans[i];\n const next = this._spans[i + 1];\n\n if (current.end === next.start) {\n // Replace these two with a new, merged one\n this._spans.splice(i, 2, {\n start: current.start,\n end: next.end,\n });\n } else {\n // Else advance\n i++;\n }\n }\n }\n\n public get spans(): readonly Span[] {\n return this._spans;\n }\n\n /**\n * Whether another span is fully contained within this set of spans\n */\n public fullyContainsSpan(span: Span) {\n const candidate = this.findSpan(span.start);\n return !!candidate && spanInside(span, candidate);\n }\n\n public containsPosition(pos: number) {\n const candidate = this.findSpan(pos);\n return !!candidate && spanContains(candidate, pos);\n }\n\n /**\n * Return whether the START of the given node is visible\n *\n * For nodes that potentially span many lines (like class declarations)\n * this will check the first line.\n */\n public containsStartOfNode(node: ts.Node) {\n return this.containsPosition(node.getStart());\n }\n\n /**\n * Find the span that would contain the given position, if any\n *\n * Returns the highest span s.t. span.start <= position. Uses the fact that\n * spans are non-overlapping.\n */\n private findSpan(position: number): Span | undefined {\n // For now, using linear search as the amount of spans is rather trivial.\n // Change to binary search if this ever becomes an issue\n if (this.spans.length === 0 || position < this._spans[0].start) {\n return undefined;\n }\n\n let candidate = this._spans[0];\n let i = 1;\n while (i < this.spans.length && this.spans[i].start <= position) {\n candidate = this._spans[i];\n i++;\n }\n return candidate;\n }\n}\n\nexport function trimCompleteSourceToVisible(source: string): string {\n const spans = Spans.visibleSpansFromSource(source);\n\n return spans.spans\n .map((span) => source.substring(span.start, span.end))\n .join('')\n .trimRight();\n}\n\nexport interface MarkedSpan {\n start: number;\n end: number;\n visible: boolean;\n}\n\nfunction calculateMarkedSpans(source: string): MarkedSpan[] {\n const regEx = /^[ \\t]*[/]{3}[ \\t]*(!(?:show|hide))[ \\t]*$/gm;\n\n const ret = new Array<MarkedSpan>();\n let match;\n let spanStart;\n let visible = true;\n while ((match = regEx.exec(source)) != null) {\n const directiveStart = match.index;\n const directive = match[1].trim();\n if (['!hide', '!show'].includes(directive)) {\n const isShow = directive === '!show';\n if (spanStart === undefined) {\n // Add a span at the start which is the reverse of the actual first directive\n ret.push({ start: 0, end: directiveStart, visible: !isShow });\n } else {\n // Else add a span for the current directive\n ret.push({ start: spanStart, end: directiveStart, visible });\n }\n visible = isShow;\n\n // A directive eats its trailing newline.\n spanStart = match.index + match[0].length + 1;\n }\n }\n\n // Add the remainder under the last visibility\n ret.push({ start: spanStart ?? 0, end: source.length, visible });\n\n // Filter empty spans and return\n return ret.filter((s) => s.start < s.end);\n}\n\n/**\n * Whether span a is fully inside span b\n */\nexport function spanInside(a: Span, b: Span) {\n return b.start <= a.start && a.end <= b.end;\n}\n\nexport function spanContains(a: Span, position: number) {\n return a.start <= position && position < a.end;\n}\n"]}
1
+ {"version":3,"file":"visible-spans.js","sourceRoot":"","sources":["../../src/typescript/visible-spans.ts"],"names":[],"mappings":"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","sourcesContent":["import * as ts from 'typescript';\n\nimport { Span } from '../o-tree';\n\n/**\n * A class representing a set of non-overlapping Spans.\n */\nexport class Spans {\n /**\n * Derive visible spans from marked source (`/// !show` and `/// !hide` directives).\n */\n public static visibleSpansFromSource(source: string) {\n return new Spans(calculateMarkedSpans(source).filter((s) => s.visible));\n }\n\n public constructor(private readonly _spans: Span[]) {\n _spans.sort((a, b) => a.start - b.start);\n\n // Merge adjacent spans\n let i = 0;\n while (i < this._spans.length - 1) {\n const current = this._spans[i];\n const next = this._spans[i + 1];\n\n if (current.end === next.start) {\n // Replace these two with a new, merged one\n this._spans.splice(i, 2, {\n start: current.start,\n end: next.end,\n });\n } else {\n // Else advance\n i++;\n }\n }\n }\n\n public get spans(): readonly Span[] {\n return this._spans;\n }\n\n /**\n * Whether another span is fully contained within this set of spans\n */\n public fullyContainsSpan(span: Span) {\n const candidate = this.findSpan(span.start);\n return !!candidate && spanInside(span, candidate);\n }\n\n public containsPosition(pos: number) {\n const candidate = this.findSpan(pos);\n return !!candidate && spanContains(candidate, pos);\n }\n\n /**\n * Return whether the START of the given node is visible\n *\n * For nodes that potentially span many lines (like class declarations)\n * this will check the first line.\n */\n public containsStartOfNode(node: ts.Node) {\n return this.containsPosition(node.getStart());\n }\n\n /**\n * Find the span that would contain the given position, if any\n *\n * Returns the highest span s.t. span.start <= position. Uses the fact that\n * spans are non-overlapping.\n */\n private findSpan(position: number): Span | undefined {\n // For now, using linear search as the amount of spans is rather trivial.\n // Change to binary search if this ever becomes an issue\n if (this.spans.length === 0 || position < this._spans[0].start) {\n return undefined;\n }\n\n let candidate = this._spans[0];\n let i = 1;\n while (i < this.spans.length && this.spans[i].start <= position) {\n candidate = this._spans[i];\n i++;\n }\n return candidate;\n }\n}\n\nexport function trimCompleteSourceToVisible(source: string): string {\n const spans = Spans.visibleSpansFromSource(source);\n\n return spans.spans\n .map((span) => source.substring(span.start, span.end))\n .join('')\n .trimRight();\n}\n\nexport interface MarkedSpan {\n start: number;\n end: number;\n visible: boolean;\n}\n\nfunction calculateMarkedSpans(source: string): MarkedSpan[] {\n const regEx = /^[ \\t]*[/]{3}[ \\t]*(!(?:show|hide))[ \\t]*$/gm;\n\n const ret = new Array<MarkedSpan>();\n let match;\n let spanStart;\n let visible = true;\n while ((match = regEx.exec(source)) != null) {\n const directiveStart = match.index;\n const directive = match[1].trim();\n if (['!hide', '!show'].includes(directive)) {\n const isShow = directive === '!show';\n if (spanStart === undefined) {\n // Add a span at the start which is the reverse of the actual first directive\n ret.push({ start: 0, end: directiveStart, visible: !isShow });\n } else {\n // Else add a span for the current directive\n ret.push({ start: spanStart, end: directiveStart, visible });\n }\n visible = isShow;\n\n // A directive eats its trailing newline.\n spanStart = match.index + match[0].length + 1;\n }\n }\n\n // Add the remainder under the last visibility\n ret.push({ start: spanStart ?? 0, end: source.length, visible });\n\n // Filter empty spans and return\n return ret.filter((s) => s.start < s.end);\n}\n\n/**\n * Whether span a is fully inside span b\n */\nexport function spanInside(a: Span, b: Span) {\n return b.start <= a.start && a.end <= b.end;\n}\n\nexport function spanContains(a: Span, position: number) {\n return a.start <= position && position < a.end;\n}\n"]}
package/lib/util.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import * as ts from 'typescript';
3
2
  import { RosettaDiagnostic } from './translate';
4
3
  export declare function startsWithUppercase(x: string): boolean;
package/lib/util.js CHANGED
@@ -1,11 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.pathExists = exports.commentToken = exports.indexBy = exports.isDefined = exports.groupBy = exports.sortBy = exports.mapValues = exports.fmap = exports.mkDict = exports.setExtend = exports.partition = exports.flat = exports.divideEvenly = exports.hasStrictBranding = exports.annotateStrictDiagnostic = exports.StrictBrand = exports.formatList = exports.printDiagnostics = exports.startsWithUppercase = void 0;
3
+ exports.StrictBrand = void 0;
4
+ exports.startsWithUppercase = startsWithUppercase;
5
+ exports.printDiagnostics = printDiagnostics;
6
+ exports.formatList = formatList;
7
+ exports.annotateStrictDiagnostic = annotateStrictDiagnostic;
8
+ exports.hasStrictBranding = hasStrictBranding;
9
+ exports.divideEvenly = divideEvenly;
10
+ exports.flat = flat;
11
+ exports.partition = partition;
12
+ exports.setExtend = setExtend;
13
+ exports.mkDict = mkDict;
14
+ exports.fmap = fmap;
15
+ exports.mapValues = mapValues;
16
+ exports.sortBy = sortBy;
17
+ exports.groupBy = groupBy;
18
+ exports.isDefined = isDefined;
19
+ exports.indexBy = indexBy;
20
+ exports.commentToken = commentToken;
21
+ exports.pathExists = pathExists;
4
22
  const node_fs_1 = require("node:fs");
5
23
  function startsWithUppercase(x) {
6
24
  return /^[A-Z]/.exec(x) != null;
7
25
  }
8
- exports.startsWithUppercase = startsWithUppercase;
9
26
  function printDiagnostics(diags, stream, colors) {
10
27
  // Don't print too much, at some point it just clogs up the log
11
28
  const maxDiags = 50;
@@ -16,12 +33,10 @@ function printDiagnostics(diags, stream, colors) {
16
33
  stream.write(`(...and ${diags.length - maxDiags} more diagnostics not shown)`);
17
34
  }
18
35
  }
19
- exports.printDiagnostics = printDiagnostics;
20
36
  function formatList(xs, n = 5) {
21
37
  const tooMany = xs.length - n;
22
38
  return tooMany > 0 ? `${xs.slice(0, n).join(', ')} (and ${tooMany} more)` : xs.join(', ');
23
39
  }
24
- exports.formatList = formatList;
25
40
  exports.StrictBrand = 'jsii.strict';
26
41
  /**
27
42
  * Annotate a diagnostic with a magic property to indicate it's a strict diagnostic
@@ -34,14 +49,12 @@ function annotateStrictDiagnostic(diag) {
34
49
  writable: false,
35
50
  });
36
51
  }
37
- exports.annotateStrictDiagnostic = annotateStrictDiagnostic;
38
52
  /**
39
53
  * Return whether or not the given diagnostic was annotated with the magic strict property
40
54
  */
41
55
  function hasStrictBranding(diag) {
42
56
  return !!diag[exports.StrictBrand];
43
57
  }
44
- exports.hasStrictBranding = hasStrictBranding;
45
58
  /**
46
59
  * Chunk an array of elements into approximately equal groups
47
60
  */
@@ -53,11 +66,9 @@ function divideEvenly(groups, xs) {
53
66
  }
54
67
  return ret;
55
68
  }
56
- exports.divideEvenly = divideEvenly;
57
69
  function flat(xs) {
58
70
  return Array.prototype.concat.apply([], xs);
59
71
  }
60
- exports.flat = flat;
61
72
  /**
62
73
  * Partition a list in twain using a predicate
63
74
  *
@@ -76,13 +87,11 @@ function partition(xs, pred) {
76
87
  }
77
88
  return [truthy, falsy];
78
89
  }
79
- exports.partition = partition;
80
90
  function setExtend(xs, els) {
81
91
  for (const el of els) {
82
92
  xs.add(el);
83
93
  }
84
94
  }
85
- exports.setExtend = setExtend;
86
95
  function mkDict(xs) {
87
96
  const ret = {};
88
97
  for (const [key, value] of xs) {
@@ -90,14 +99,12 @@ function mkDict(xs) {
90
99
  }
91
100
  return ret;
92
101
  }
93
- exports.mkDict = mkDict;
94
102
  function fmap(value, fn) {
95
103
  if (value == null) {
96
104
  return undefined;
97
105
  }
98
106
  return fn(value);
99
107
  }
100
- exports.fmap = fmap;
101
108
  function mapValues(xs, fn) {
102
109
  const ret = {};
103
110
  for (const [key, value] of Object.entries(xs)) {
@@ -105,7 +112,6 @@ function mapValues(xs, fn) {
105
112
  }
106
113
  return ret;
107
114
  }
108
- exports.mapValues = mapValues;
109
115
  /**
110
116
  * Sort an array by a key function.
111
117
  *
@@ -138,7 +144,6 @@ function sortBy(xs, keyFn) {
138
144
  return aKey.length - bKey.length;
139
145
  });
140
146
  }
141
- exports.sortBy = sortBy;
142
147
  /**
143
148
  * Group elements by a key
144
149
  *
@@ -159,15 +164,12 @@ function groupBy(xs, keyFn) {
159
164
  }
160
165
  return ret;
161
166
  }
162
- exports.groupBy = groupBy;
163
167
  function isDefined(x) {
164
168
  return x !== undefined;
165
169
  }
166
- exports.isDefined = isDefined;
167
170
  function indexBy(xs, fn) {
168
171
  return mkDict(xs.map((x) => [fn(x), x]));
169
172
  }
170
- exports.indexBy = indexBy;
171
173
  function commentToken(language) {
172
174
  // This is future-proofed a bit, but don't read too much in this...
173
175
  switch (language) {
@@ -181,7 +183,6 @@ function commentToken(language) {
181
183
  return '//';
182
184
  }
183
185
  }
184
- exports.commentToken = commentToken;
185
186
  async function pathExists(path) {
186
187
  try {
187
188
  await node_fs_1.promises.stat(path);
@@ -197,7 +198,6 @@ async function pathExists(path) {
197
198
  throw err;
198
199
  }
199
200
  }
200
- exports.pathExists = pathExists;
201
201
  // Copy/pasted from the 'ansi-regex' package to avoid taking a dependency for this one line that will never change
202
202
  const ANSI_PATTERN = new RegExp([
203
203
  '[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)',
package/lib/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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","sourcesContent":["import { promises as fs } from 'node:fs';\nimport * as ts from 'typescript';\n\nimport { RosettaDiagnostic } from './translate';\n\nexport function startsWithUppercase(x: string): boolean {\n return /^[A-Z]/.exec(x) != null;\n}\n\nexport interface File {\n readonly contents: string;\n readonly fileName: string;\n}\n\nexport function printDiagnostics(diags: readonly RosettaDiagnostic[], stream: NodeJS.WritableStream, colors: boolean) {\n // Don't print too much, at some point it just clogs up the log\n const maxDiags = 50;\n\n for (const diag of diags.slice(0, maxDiags)) {\n stream.write(colors ? diag.formattedMessage : stripColorCodes(diag.formattedMessage));\n }\n\n if (diags.length > maxDiags) {\n stream.write(`(...and ${diags.length - maxDiags} more diagnostics not shown)`);\n }\n}\n\nexport function formatList(xs: string[], n = 5) {\n const tooMany = xs.length - n;\n\n return tooMany > 0 ? `${xs.slice(0, n).join(', ')} (and ${tooMany} more)` : xs.join(', ');\n}\n\nexport const StrictBrand = 'jsii.strict';\ninterface MaybeStrictDiagnostic {\n readonly [StrictBrand]?: boolean;\n}\n\n/**\n * Annotate a diagnostic with a magic property to indicate it's a strict diagnostic\n */\nexport function annotateStrictDiagnostic(diag: ts.Diagnostic) {\n Object.defineProperty(diag, StrictBrand, {\n configurable: false,\n enumerable: true,\n value: true,\n writable: false,\n });\n}\n\n/**\n * Return whether or not the given diagnostic was annotated with the magic strict property\n */\nexport function hasStrictBranding(diag: ts.Diagnostic) {\n return !!(diag as MaybeStrictDiagnostic)[StrictBrand];\n}\n\n/**\n * Chunk an array of elements into approximately equal groups\n */\nexport function divideEvenly<A>(groups: number, xs: A[]): A[][] {\n const chunkSize = Math.ceil(xs.length / groups);\n const ret: A[][] = [];\n\n for (let i = 0; i < groups; i++) {\n ret.push(xs.slice(i * chunkSize, (i + 1) * chunkSize));\n }\n\n return ret;\n}\n\nexport function flat<A>(xs: A[][]): A[] {\n return Array.prototype.concat.apply([], xs);\n}\n\n/**\n * Partition a list in twain using a predicate\n *\n * Returns [elements-matching-predicate, elements-not-matching-predicate];\n */\nexport function partition<A>(xs: A[], pred: (x: A) => boolean): [A[], A[]] {\n const truthy = new Array<A>();\n const falsy = new Array<A>();\n\n for (const x of xs) {\n if (pred(x)) {\n truthy.push(x);\n } else {\n falsy.push(x);\n }\n }\n\n return [truthy, falsy];\n}\n\nexport function setExtend<A>(xs: Set<A>, els: Iterable<A>) {\n for (const el of els) {\n xs.add(el);\n }\n}\n\nexport function mkDict<A extends string, B>(xs: Array<readonly [A, B]>): Record<A, B> {\n const ret: any = {};\n for (const [key, value] of xs) {\n ret[key] = value;\n }\n return ret;\n}\n\n/**\n * Apply a function to a value, as long as it's not `undefined`\n *\n * This is a companion helper to TypeScript's nice `??` and `?.` nullish\n * operators. Those operators are helpful if you're calling methods:\n *\n * object?.method() <- returns 'undefined' if 'object' is nullish\n *\n * But are no help when you want to use free functions:\n *\n * func(object) <- but what if 'object' is nullish and func\n * expects it not to be?\n *\n * Yes you can write `object ? func(object) : undefined` but the trailing\n * `: undefined` clutters your code. Instead, you write:\n *\n * fmap(object, func)\n *\n * The name `fmap` is taken from Haskell: it's a \"Functor-map\" (although\n * only for the `Maybe` Functor).\n */\nexport function fmap<A, B>(value: NonNullable<A>, fn: (x: NonNullable<A>) => B): B;\nexport function fmap<A, B>(value: undefined | null, fn: (x: NonNullable<A>) => B): undefined;\nexport function fmap<A, B>(value: A | undefined | null, fn: (x: A) => B): B | undefined;\nexport function fmap<A, B>(value: A, fn: (x: A) => B): B | undefined {\n if (value == null) {\n return undefined;\n }\n return fn(value);\n}\n\nexport function mapValues<A, B>(xs: Record<string, A>, fn: (x: A) => B): Record<string, B> {\n const ret: Record<string, B> = {};\n for (const [key, value] of Object.entries(xs)) {\n ret[key] = fn(value);\n }\n return ret;\n}\n\n/**\n * Sort an array by a key function.\n *\n * Instead of having to write your own comparators for your types any time you\n * want to sort, you supply a function that maps a value to a compound sort key\n * consisting of numbers or strings. The sorting will happen by that sort key\n * instead.\n */\nexport function sortBy<A>(xs: A[], keyFn: (x: A) => Array<string | number>) {\n return xs.sort((a, b) => {\n const aKey = keyFn(a);\n const bKey = keyFn(b);\n\n for (let i = 0; i < Math.min(aKey.length, bKey.length); i++) {\n // Compare aKey[i] to bKey[i]\n const av = aKey[i];\n const bv = bKey[i];\n\n if (av === bv) {\n continue;\n }\n\n if (typeof av !== typeof bv) {\n throw new Error(`Type of sort key ${JSON.stringify(aKey)} not same as ${JSON.stringify(bKey)}`);\n }\n\n if (typeof av === 'number' && typeof bv === 'number') {\n return av - bv;\n }\n\n if (typeof av === 'string' && typeof bv === 'string') {\n return av.localeCompare(bv);\n }\n }\n\n return aKey.length - bKey.length;\n });\n}\n\n/**\n * Group elements by a key\n *\n * Supply a function that maps each element to a key string.\n *\n * Returns a map of the key to the list of elements that map to that key.\n */\nexport function groupBy<A>(xs: A[], keyFn: (x: A) => string): Record<string, A[]> {\n const ret: Record<string, A[]> = {};\n for (const x of xs) {\n const key = keyFn(x);\n if (ret[key]) {\n ret[key].push(x);\n } else {\n ret[key] = [x];\n }\n }\n return ret;\n}\n\nexport function isDefined<A>(x: A): x is NonNullable<A> {\n return x !== undefined;\n}\n\nexport function indexBy<A>(xs: A[], fn: (x: A) => string): Record<string, A> {\n return mkDict(xs.map((x) => [fn(x), x] as const));\n}\n\nexport type Mutable<T> = { -readonly [P in keyof T]: Mutable<T[P]> };\n\nexport function commentToken(language: string) {\n // This is future-proofed a bit, but don't read too much in this...\n switch (language) {\n case 'python':\n case 'ruby':\n return '#';\n case 'csharp':\n case 'java':\n case 'go':\n default:\n return '//';\n }\n}\n\nexport async function pathExists(path: string): Promise<boolean> {\n try {\n await fs.stat(path);\n return true;\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n return false;\n }\n if (!err.stack) {\n Error.captureStackTrace(err);\n }\n throw err;\n }\n}\n\n// Copy/pasted from the 'ansi-regex' package to avoid taking a dependency for this one line that will never change\nconst ANSI_PATTERN = new RegExp(\n [\n '[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n '(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))',\n ].join('|'),\n 'g',\n);\n\nfunction stripColorCodes(x: string) {\n return x.replace(ANSI_PATTERN, '');\n}\n"]}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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","sourcesContent":["import { promises as fs } from 'node:fs';\nimport * as ts from 'typescript';\n\nimport { RosettaDiagnostic } from './translate';\n\nexport function startsWithUppercase(x: string): boolean {\n return /^[A-Z]/.exec(x) != null;\n}\n\nexport interface File {\n readonly contents: string;\n readonly fileName: string;\n}\n\nexport function printDiagnostics(diags: readonly RosettaDiagnostic[], stream: NodeJS.WritableStream, colors: boolean) {\n // Don't print too much, at some point it just clogs up the log\n const maxDiags = 50;\n\n for (const diag of diags.slice(0, maxDiags)) {\n stream.write(colors ? diag.formattedMessage : stripColorCodes(diag.formattedMessage));\n }\n\n if (diags.length > maxDiags) {\n stream.write(`(...and ${diags.length - maxDiags} more diagnostics not shown)`);\n }\n}\n\nexport function formatList(xs: string[], n = 5) {\n const tooMany = xs.length - n;\n\n return tooMany > 0 ? `${xs.slice(0, n).join(', ')} (and ${tooMany} more)` : xs.join(', ');\n}\n\nexport const StrictBrand = 'jsii.strict';\ninterface MaybeStrictDiagnostic {\n readonly [StrictBrand]?: boolean;\n}\n\n/**\n * Annotate a diagnostic with a magic property to indicate it's a strict diagnostic\n */\nexport function annotateStrictDiagnostic(diag: ts.Diagnostic) {\n Object.defineProperty(diag, StrictBrand, {\n configurable: false,\n enumerable: true,\n value: true,\n writable: false,\n });\n}\n\n/**\n * Return whether or not the given diagnostic was annotated with the magic strict property\n */\nexport function hasStrictBranding(diag: ts.Diagnostic) {\n return !!(diag as MaybeStrictDiagnostic)[StrictBrand];\n}\n\n/**\n * Chunk an array of elements into approximately equal groups\n */\nexport function divideEvenly<A>(groups: number, xs: A[]): A[][] {\n const chunkSize = Math.ceil(xs.length / groups);\n const ret: A[][] = [];\n\n for (let i = 0; i < groups; i++) {\n ret.push(xs.slice(i * chunkSize, (i + 1) * chunkSize));\n }\n\n return ret;\n}\n\nexport function flat<A>(xs: A[][]): A[] {\n return Array.prototype.concat.apply([], xs);\n}\n\n/**\n * Partition a list in twain using a predicate\n *\n * Returns [elements-matching-predicate, elements-not-matching-predicate];\n */\nexport function partition<A>(xs: A[], pred: (x: A) => boolean): [A[], A[]] {\n const truthy = new Array<A>();\n const falsy = new Array<A>();\n\n for (const x of xs) {\n if (pred(x)) {\n truthy.push(x);\n } else {\n falsy.push(x);\n }\n }\n\n return [truthy, falsy];\n}\n\nexport function setExtend<A>(xs: Set<A>, els: Iterable<A>) {\n for (const el of els) {\n xs.add(el);\n }\n}\n\nexport function mkDict<A extends string, B>(xs: Array<readonly [A, B]>): Record<A, B> {\n const ret: any = {};\n for (const [key, value] of xs) {\n ret[key] = value;\n }\n return ret;\n}\n\n/**\n * Apply a function to a value, as long as it's not `undefined`\n *\n * This is a companion helper to TypeScript's nice `??` and `?.` nullish\n * operators. Those operators are helpful if you're calling methods:\n *\n * object?.method() <- returns 'undefined' if 'object' is nullish\n *\n * But are no help when you want to use free functions:\n *\n * func(object) <- but what if 'object' is nullish and func\n * expects it not to be?\n *\n * Yes you can write `object ? func(object) : undefined` but the trailing\n * `: undefined` clutters your code. Instead, you write:\n *\n * fmap(object, func)\n *\n * The name `fmap` is taken from Haskell: it's a \"Functor-map\" (although\n * only for the `Maybe` Functor).\n */\nexport function fmap<A, B>(value: NonNullable<A>, fn: (x: NonNullable<A>) => B): B;\nexport function fmap<A, B>(value: undefined | null, fn: (x: NonNullable<A>) => B): undefined;\nexport function fmap<A, B>(value: A | undefined | null, fn: (x: A) => B): B | undefined;\nexport function fmap<A, B>(value: A, fn: (x: A) => B): B | undefined {\n if (value == null) {\n return undefined;\n }\n return fn(value);\n}\n\nexport function mapValues<A, B>(xs: Record<string, A>, fn: (x: A) => B): Record<string, B> {\n const ret: Record<string, B> = {};\n for (const [key, value] of Object.entries(xs)) {\n ret[key] = fn(value);\n }\n return ret;\n}\n\n/**\n * Sort an array by a key function.\n *\n * Instead of having to write your own comparators for your types any time you\n * want to sort, you supply a function that maps a value to a compound sort key\n * consisting of numbers or strings. The sorting will happen by that sort key\n * instead.\n */\nexport function sortBy<A>(xs: A[], keyFn: (x: A) => Array<string | number>) {\n return xs.sort((a, b) => {\n const aKey = keyFn(a);\n const bKey = keyFn(b);\n\n for (let i = 0; i < Math.min(aKey.length, bKey.length); i++) {\n // Compare aKey[i] to bKey[i]\n const av = aKey[i];\n const bv = bKey[i];\n\n if (av === bv) {\n continue;\n }\n\n if (typeof av !== typeof bv) {\n throw new Error(`Type of sort key ${JSON.stringify(aKey)} not same as ${JSON.stringify(bKey)}`);\n }\n\n if (typeof av === 'number' && typeof bv === 'number') {\n return av - bv;\n }\n\n if (typeof av === 'string' && typeof bv === 'string') {\n return av.localeCompare(bv);\n }\n }\n\n return aKey.length - bKey.length;\n });\n}\n\n/**\n * Group elements by a key\n *\n * Supply a function that maps each element to a key string.\n *\n * Returns a map of the key to the list of elements that map to that key.\n */\nexport function groupBy<A>(xs: A[], keyFn: (x: A) => string): Record<string, A[]> {\n const ret: Record<string, A[]> = {};\n for (const x of xs) {\n const key = keyFn(x);\n if (ret[key]) {\n ret[key].push(x);\n } else {\n ret[key] = [x];\n }\n }\n return ret;\n}\n\nexport function isDefined<A>(x: A): x is NonNullable<A> {\n return x !== undefined;\n}\n\nexport function indexBy<A>(xs: A[], fn: (x: A) => string): Record<string, A> {\n return mkDict(xs.map((x) => [fn(x), x] as const));\n}\n\nexport type Mutable<T> = { -readonly [P in keyof T]: Mutable<T[P]> };\n\nexport function commentToken(language: string) {\n // This is future-proofed a bit, but don't read too much in this...\n switch (language) {\n case 'python':\n case 'ruby':\n return '#';\n case 'csharp':\n case 'java':\n case 'go':\n default:\n return '//';\n }\n}\n\nexport async function pathExists(path: string): Promise<boolean> {\n try {\n await fs.stat(path);\n return true;\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n return false;\n }\n if (!err.stack) {\n Error.captureStackTrace(err);\n }\n throw err;\n }\n}\n\n// Copy/pasted from the 'ansi-regex' package to avoid taking a dependency for this one line that will never change\nconst ANSI_PATTERN = new RegExp(\n [\n '[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n '(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))',\n ].join('|'),\n 'g',\n);\n\nfunction stripColorCodes(x: string) {\n return x.replace(ANSI_PATTERN, '');\n}\n"]}
package/package.json CHANGED
@@ -71,11 +71,11 @@
71
71
  "chalk": "^4",
72
72
  "commonmark": "^0.31.1",
73
73
  "fast-glob": "^3.3.2",
74
- "jsii": "~5.4.0",
74
+ "jsii": "~5.5.0",
75
75
  "semver": "^7.6.3",
76
76
  "semver-intersect": "^1.5.0",
77
77
  "stream-json": "^1.8.0",
78
- "typescript": "~5.4",
78
+ "typescript": "~5.5",
79
79
  "workerpool": "^6.5.1",
80
80
  "yargs": "^17.7.2"
81
81
  },
@@ -88,7 +88,7 @@
88
88
  "publishConfig": {
89
89
  "access": "public"
90
90
  },
91
- "version": "5.4.32-dev.4",
91
+ "version": "5.5.1-dev.0",
92
92
  "types": "lib/index.d.ts",
93
93
  "exports": {
94
94
  ".": "./lib/index.js",
package/releases.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
- "current": "5.4",
3
- "currentMinVersionNumber": "5.4.0",
2
+ "current": "5.5",
3
+ "currentMinVersionNumber": "5.5.0",
4
4
  "maintenance": {
5
5
  "5.0": "2024-01-31T00:00:00.000Z",
6
6
  "5.1": "2024-04-30T00:00:00.000Z",