projen 0.91.28 → 0.91.30

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 (164) hide show
  1. package/.jsii +42 -17
  2. package/lib/awscdk/auto-discover.js +5 -5
  3. package/lib/awscdk/awscdk-app-java.js +1 -1
  4. package/lib/awscdk/awscdk-app-py.js +1 -1
  5. package/lib/awscdk/awscdk-app-ts.js +1 -1
  6. package/lib/awscdk/awscdk-construct.js +2 -2
  7. package/lib/awscdk/awscdk-deps-java.js +1 -1
  8. package/lib/awscdk/awscdk-deps-js.js +1 -1
  9. package/lib/awscdk/awscdk-deps-py.js +1 -1
  10. package/lib/awscdk/awscdk-deps.js +1 -1
  11. package/lib/awscdk/cdk-config.js +1 -1
  12. package/lib/awscdk/cdk-tasks.js +1 -1
  13. package/lib/awscdk/integration-test.js +1 -1
  14. package/lib/awscdk/lambda-extension.js +1 -1
  15. package/lib/awscdk/lambda-function.js +2 -2
  16. package/lib/build/build-workflow.js +1 -1
  17. package/lib/cdk/auto-discover-base.js +2 -2
  18. package/lib/cdk/construct-lib.js +1 -1
  19. package/lib/cdk/integration-test-base.js +1 -1
  20. package/lib/cdk/jsii-docgen.js +1 -1
  21. package/lib/cdk/jsii-project.js +1 -1
  22. package/lib/cdk8s/auto-discover.js +2 -2
  23. package/lib/cdk8s/cdk8s-app-py.js +1 -1
  24. package/lib/cdk8s/cdk8s-app-ts.js +1 -1
  25. package/lib/cdk8s/cdk8s-construct.js +1 -1
  26. package/lib/cdk8s/cdk8s-deps-py.js +1 -1
  27. package/lib/cdk8s/cdk8s-deps.js +1 -1
  28. package/lib/cdk8s/integration-test.js +1 -1
  29. package/lib/cdktf/cdktf-construct.js +1 -1
  30. package/lib/circleci/circleci.js +1 -1
  31. package/lib/component.js +1 -1
  32. package/lib/dependencies.js +1 -1
  33. package/lib/dev-env.js +1 -1
  34. package/lib/docker-compose/docker-compose-service.js +1 -1
  35. package/lib/docker-compose/docker-compose.js +1 -1
  36. package/lib/file.js +1 -1
  37. package/lib/gitattributes.js +1 -1
  38. package/lib/github/actions-provider.js +1 -1
  39. package/lib/github/auto-approve.js +1 -1
  40. package/lib/github/auto-merge.js +1 -1
  41. package/lib/github/auto-queue.js +1 -1
  42. package/lib/github/dependabot.js +1 -1
  43. package/lib/github/github-credentials.js +1 -1
  44. package/lib/github/github-project.js +1 -1
  45. package/lib/github/github.js +1 -1
  46. package/lib/github/merge-queue.js +1 -1
  47. package/lib/github/mergify.js +1 -1
  48. package/lib/github/pr-template.js +1 -1
  49. package/lib/github/pull-request-backport.js +1 -1
  50. package/lib/github/pull-request-lint.d.ts +7 -0
  51. package/lib/github/pull-request-lint.js +3 -2
  52. package/lib/github/stale.js +1 -1
  53. package/lib/github/task-workflow-job.js +1 -1
  54. package/lib/github/task-workflow.js +1 -1
  55. package/lib/github/workflow-actions.js +1 -1
  56. package/lib/github/workflow-jobs.js +1 -1
  57. package/lib/github/workflow-steps.js +1 -1
  58. package/lib/github/workflows.js +1 -1
  59. package/lib/gitlab/configuration.js +1 -1
  60. package/lib/gitlab/gitlab-configuration.js +1 -1
  61. package/lib/gitlab/nested-configuration.js +1 -1
  62. package/lib/gitpod.js +1 -1
  63. package/lib/ignore-file.js +1 -1
  64. package/lib/ini.js +1 -1
  65. package/lib/java/java-project.js +1 -1
  66. package/lib/java/junit.js +1 -1
  67. package/lib/java/maven-compile.js +1 -1
  68. package/lib/java/maven-packaging.js +1 -1
  69. package/lib/java/maven-sample.js +1 -1
  70. package/lib/java/pom.js +2 -2
  71. package/lib/java/projenrc.js +1 -1
  72. package/lib/javascript/bundler.js +1 -1
  73. package/lib/javascript/eslint.js +1 -1
  74. package/lib/javascript/jest.js +4 -4
  75. package/lib/javascript/license-checker.js +1 -1
  76. package/lib/javascript/node-package.js +1 -1
  77. package/lib/javascript/node-project.js +1 -1
  78. package/lib/javascript/npm-config.js +1 -1
  79. package/lib/javascript/prettier.js +1 -1
  80. package/lib/javascript/projenrc.js +1 -1
  81. package/lib/javascript/typescript-config.js +2 -2
  82. package/lib/javascript/upgrade-dependencies.js +2 -2
  83. package/lib/javascript/yarnrc.js +1 -1
  84. package/lib/json-patch.js +1 -1
  85. package/lib/json.js +1 -1
  86. package/lib/license.js +1 -1
  87. package/lib/logger.js +1 -1
  88. package/lib/makefile.js +1 -1
  89. package/lib/object-file.js +1 -1
  90. package/lib/project-build.js +1 -1
  91. package/lib/project-tree.js +1 -1
  92. package/lib/project.js +1 -1
  93. package/lib/projects.js +1 -1
  94. package/lib/projenrc-json.js +2 -2
  95. package/lib/projenrc.js +1 -1
  96. package/lib/python/pip.js +1 -1
  97. package/lib/python/poetry.js +2 -2
  98. package/lib/python/projenrc.js +1 -1
  99. package/lib/python/pytest-sample.js +1 -1
  100. package/lib/python/pytest.js +1 -1
  101. package/lib/python/python-project.js +1 -1
  102. package/lib/python/python-sample.js +1 -1
  103. package/lib/python/requirements-file.js +1 -1
  104. package/lib/python/setuppy.js +1 -1
  105. package/lib/python/setuptools.js +1 -1
  106. package/lib/python/venv.js +1 -1
  107. package/lib/readme.js +1 -1
  108. package/lib/release/publisher.js +1 -1
  109. package/lib/release/release-trigger.js +1 -1
  110. package/lib/release/release.js +1 -1
  111. package/lib/renovatebot.js +1 -1
  112. package/lib/run-task.cjs +451 -1
  113. package/lib/sample-file.js +2 -2
  114. package/lib/semver.js +1 -1
  115. package/lib/source-code.js +1 -1
  116. package/lib/task-runtime.js +4 -3
  117. package/lib/task.js +1 -1
  118. package/lib/tasks.js +1 -1
  119. package/lib/testing.js +1 -1
  120. package/lib/textfile.js +1 -1
  121. package/lib/toml.js +1 -1
  122. package/lib/typescript/projenrc-ts.js +1 -1
  123. package/lib/typescript/projenrc.js +1 -1
  124. package/lib/typescript/typescript-typedoc.js +1 -1
  125. package/lib/typescript/typescript.js +6 -6
  126. package/lib/version.js +2 -2
  127. package/lib/vscode/devcontainer.js +1 -1
  128. package/lib/vscode/extensions.js +1 -1
  129. package/lib/vscode/launch-config.js +1 -1
  130. package/lib/vscode/settings.js +1 -1
  131. package/lib/vscode/vscode.js +1 -1
  132. package/lib/web/next.js +3 -3
  133. package/lib/web/postcss.js +1 -1
  134. package/lib/web/react.js +4 -4
  135. package/lib/web/tailwind.js +1 -1
  136. package/lib/xmlfile.js +1 -1
  137. package/lib/yaml.js +1 -1
  138. package/node_modules/just-diff/CHANGELOG.md +49 -0
  139. package/node_modules/just-diff/LICENSE +21 -0
  140. package/node_modules/just-diff/README.md +86 -0
  141. package/node_modules/just-diff/index.cjs +230 -0
  142. package/node_modules/just-diff/index.d.ts +20 -0
  143. package/node_modules/just-diff/index.mjs +227 -0
  144. package/node_modules/just-diff/index.tests.ts +65 -0
  145. package/node_modules/just-diff/package.json +33 -0
  146. package/node_modules/just-diff/rollup.config.js +3 -0
  147. package/node_modules/just-diff-apply/CHANGELOG.md +43 -0
  148. package/node_modules/just-diff-apply/LICENSE +21 -0
  149. package/node_modules/just-diff-apply/README.md +69 -0
  150. package/node_modules/just-diff-apply/index.cjs +161 -0
  151. package/node_modules/just-diff-apply/index.d.ts +17 -0
  152. package/node_modules/just-diff-apply/index.mjs +158 -0
  153. package/node_modules/just-diff-apply/index.tests.ts +108 -0
  154. package/node_modules/just-diff-apply/package.json +34 -0
  155. package/node_modules/just-diff-apply/rollup.config.js +3 -0
  156. package/node_modules/parse-conflict-json/LICENSE.md +20 -0
  157. package/node_modules/parse-conflict-json/README.md +42 -0
  158. package/node_modules/parse-conflict-json/lib/index.js +104 -0
  159. package/node_modules/parse-conflict-json/node_modules/json-parse-even-better-errors/LICENSE.md +25 -0
  160. package/node_modules/parse-conflict-json/node_modules/json-parse-even-better-errors/README.md +96 -0
  161. package/node_modules/parse-conflict-json/node_modules/json-parse-even-better-errors/lib/index.js +137 -0
  162. package/node_modules/parse-conflict-json/node_modules/json-parse-even-better-errors/package.json +50 -0
  163. package/node_modules/parse-conflict-json/package.json +51 -0
  164. package/package.json +4 -1
package/lib/run-task.cjs CHANGED
@@ -1578,6 +1578,451 @@ var require_source = __commonJS({
1578
1578
  }
1579
1579
  });
1580
1580
 
1581
+ // node_modules/parse-conflict-json/node_modules/json-parse-even-better-errors/lib/index.js
1582
+ var require_lib = __commonJS({
1583
+ "node_modules/parse-conflict-json/node_modules/json-parse-even-better-errors/lib/index.js"(exports2, module2) {
1584
+ "use strict";
1585
+ var INDENT = Symbol.for("indent");
1586
+ var NEWLINE = Symbol.for("newline");
1587
+ var DEFAULT_NEWLINE = "\n";
1588
+ var DEFAULT_INDENT = " ";
1589
+ var BOM = /^\uFEFF/;
1590
+ var FORMAT = /^\s*[{[]((?:\r?\n)+)([\s\t]*)/;
1591
+ var EMPTY = /^(?:\{\}|\[\])((?:\r?\n)+)?$/;
1592
+ var UNEXPECTED_TOKEN = /^Unexpected token '?(.)'?(,)? /i;
1593
+ var hexify = (char) => {
1594
+ const h = char.charCodeAt(0).toString(16).toUpperCase();
1595
+ return `0x${h.length % 2 ? "0" : ""}${h}`;
1596
+ };
1597
+ var stripBOM = (txt) => String(txt).replace(BOM, "");
1598
+ var makeParsedError = (msg, parsing, position = 0) => ({
1599
+ message: `${msg} while parsing ${parsing}`,
1600
+ position
1601
+ });
1602
+ var parseError = (e, txt, context = 20) => {
1603
+ let msg = e.message;
1604
+ if (!txt) {
1605
+ return makeParsedError(msg, "empty string");
1606
+ }
1607
+ const badTokenMatch = msg.match(UNEXPECTED_TOKEN);
1608
+ const badIndexMatch = msg.match(/ position\s+(\d+)/i);
1609
+ if (badTokenMatch) {
1610
+ msg = msg.replace(
1611
+ UNEXPECTED_TOKEN,
1612
+ `Unexpected token ${JSON.stringify(badTokenMatch[1])} (${hexify(badTokenMatch[1])})$2 `
1613
+ );
1614
+ }
1615
+ let errIdx;
1616
+ if (badIndexMatch) {
1617
+ errIdx = +badIndexMatch[1];
1618
+ } else if (msg.match(/^Unexpected end of JSON.*/i)) {
1619
+ errIdx = txt.length - 1;
1620
+ }
1621
+ if (errIdx == null) {
1622
+ return makeParsedError(msg, `'${txt.slice(0, context * 2)}'`);
1623
+ }
1624
+ const start = errIdx <= context ? 0 : errIdx - context;
1625
+ const end = errIdx + context >= txt.length ? txt.length : errIdx + context;
1626
+ const slice = `${start ? "..." : ""}${txt.slice(start, end)}${end === txt.length ? "" : "..."}`;
1627
+ return makeParsedError(
1628
+ msg,
1629
+ `${txt === slice ? "" : "near "}${JSON.stringify(slice)}`,
1630
+ errIdx
1631
+ );
1632
+ };
1633
+ var JSONParseError = class extends SyntaxError {
1634
+ constructor(er, txt, context, caller) {
1635
+ const metadata = parseError(er, txt, context);
1636
+ super(metadata.message);
1637
+ Object.assign(this, metadata);
1638
+ this.code = "EJSONPARSE";
1639
+ this.systemError = er;
1640
+ Error.captureStackTrace(this, caller || this.constructor);
1641
+ }
1642
+ get name() {
1643
+ return this.constructor.name;
1644
+ }
1645
+ set name(n) {
1646
+ }
1647
+ get [Symbol.toStringTag]() {
1648
+ return this.constructor.name;
1649
+ }
1650
+ };
1651
+ var parseJson = (txt, reviver) => {
1652
+ const result = JSON.parse(txt, reviver);
1653
+ if (result && typeof result === "object") {
1654
+ const match = txt.match(EMPTY) || txt.match(FORMAT) || [null, "", ""];
1655
+ result[NEWLINE] = match[1] ?? DEFAULT_NEWLINE;
1656
+ result[INDENT] = match[2] ?? DEFAULT_INDENT;
1657
+ }
1658
+ return result;
1659
+ };
1660
+ var parseJsonError = (raw, reviver, context) => {
1661
+ const txt = stripBOM(raw);
1662
+ try {
1663
+ return parseJson(txt, reviver);
1664
+ } catch (e) {
1665
+ if (typeof raw !== "string" && !Buffer.isBuffer(raw)) {
1666
+ const msg = Array.isArray(raw) && raw.length === 0 ? "an empty array" : String(raw);
1667
+ throw Object.assign(
1668
+ new TypeError(`Cannot parse ${msg}`),
1669
+ { code: "EJSONPARSE", systemError: e }
1670
+ );
1671
+ }
1672
+ throw new JSONParseError(e, txt, context, parseJsonError);
1673
+ }
1674
+ };
1675
+ module2.exports = parseJsonError;
1676
+ parseJsonError.JSONParseError = JSONParseError;
1677
+ parseJsonError.noExceptions = (raw, reviver) => {
1678
+ try {
1679
+ return parseJson(stripBOM(raw), reviver);
1680
+ } catch {
1681
+ }
1682
+ };
1683
+ }
1684
+ });
1685
+
1686
+ // node_modules/just-diff/index.cjs
1687
+ var require_just_diff = __commonJS({
1688
+ "node_modules/just-diff/index.cjs"(exports2, module2) {
1689
+ module2.exports = {
1690
+ diff,
1691
+ jsonPatchPathConverter
1692
+ };
1693
+ function diff(obj1, obj2, pathConverter) {
1694
+ if (!obj1 || typeof obj1 != "object" || !obj2 || typeof obj2 != "object") {
1695
+ throw new Error("both arguments must be objects or arrays");
1696
+ }
1697
+ pathConverter || (pathConverter = function(arr) {
1698
+ return arr;
1699
+ });
1700
+ function getDiff({ obj1: obj12, obj2: obj22, basePath, basePathForRemoves, diffs: diffs2 }) {
1701
+ var obj1Keys = Object.keys(obj12);
1702
+ var obj1KeysLength = obj1Keys.length;
1703
+ var obj2Keys = Object.keys(obj22);
1704
+ var obj2KeysLength = obj2Keys.length;
1705
+ var path2;
1706
+ var lengthDelta = obj12.length - obj22.length;
1707
+ if (trimFromRight(obj12, obj22)) {
1708
+ for (var i = 0; i < obj1KeysLength; i++) {
1709
+ var key = Array.isArray(obj12) ? Number(obj1Keys[i]) : obj1Keys[i];
1710
+ if (!(key in obj22)) {
1711
+ path2 = basePathForRemoves.concat(key);
1712
+ diffs2.remove.push({
1713
+ op: "remove",
1714
+ path: pathConverter(path2)
1715
+ });
1716
+ }
1717
+ }
1718
+ for (var i = 0; i < obj2KeysLength; i++) {
1719
+ var key = Array.isArray(obj22) ? Number(obj2Keys[i]) : obj2Keys[i];
1720
+ pushReplaces({
1721
+ key,
1722
+ obj1: obj12,
1723
+ obj2: obj22,
1724
+ path: basePath.concat(key),
1725
+ pathForRemoves: basePath.concat(key),
1726
+ diffs: diffs2
1727
+ });
1728
+ }
1729
+ } else {
1730
+ for (var i = 0; i < lengthDelta; i++) {
1731
+ path2 = basePathForRemoves.concat(i);
1732
+ diffs2.remove.push({
1733
+ op: "remove",
1734
+ path: pathConverter(path2)
1735
+ });
1736
+ }
1737
+ var obj1Trimmed = obj12.slice(lengthDelta);
1738
+ ;
1739
+ for (var i = 0; i < obj2KeysLength; i++) {
1740
+ pushReplaces({
1741
+ key: i,
1742
+ obj1: obj1Trimmed,
1743
+ obj2: obj22,
1744
+ path: basePath.concat(i),
1745
+ // since list of removes are reversed before presenting result,
1746
+ // we need to ignore existing parent removes when doing nested removes
1747
+ pathForRemoves: basePath.concat(i + lengthDelta),
1748
+ diffs: diffs2
1749
+ });
1750
+ }
1751
+ }
1752
+ }
1753
+ var diffs = { remove: [], replace: [], add: [] };
1754
+ getDiff({
1755
+ obj1,
1756
+ obj2,
1757
+ basePath: [],
1758
+ basePathForRemoves: [],
1759
+ diffs
1760
+ });
1761
+ return diffs.remove.reverse().concat(diffs.replace).concat(diffs.add);
1762
+ function pushReplaces({ key, obj1: obj12, obj2: obj22, path: path2, pathForRemoves, diffs: diffs2 }) {
1763
+ var obj1AtKey = obj12[key];
1764
+ var obj2AtKey = obj22[key];
1765
+ if (!(key in obj12) && key in obj22) {
1766
+ var obj2Value = obj2AtKey;
1767
+ diffs2.add.push({
1768
+ op: "add",
1769
+ path: pathConverter(path2),
1770
+ value: obj2Value
1771
+ });
1772
+ } else if (obj1AtKey !== obj2AtKey) {
1773
+ if (Object(obj1AtKey) !== obj1AtKey || Object(obj2AtKey) !== obj2AtKey || differentTypes(obj1AtKey, obj2AtKey)) {
1774
+ pushReplace(path2, diffs2, obj2AtKey);
1775
+ } else {
1776
+ if (!Object.keys(obj1AtKey).length && !Object.keys(obj2AtKey).length && String(obj1AtKey) != String(obj2AtKey)) {
1777
+ pushReplace(path2, diffs2, obj2AtKey);
1778
+ } else {
1779
+ getDiff({
1780
+ obj1: obj12[key],
1781
+ obj2: obj22[key],
1782
+ basePath: path2,
1783
+ basePathForRemoves: pathForRemoves,
1784
+ diffs: diffs2
1785
+ });
1786
+ }
1787
+ }
1788
+ }
1789
+ }
1790
+ function pushReplace(path2, diffs2, newValue) {
1791
+ diffs2.replace.push({
1792
+ op: "replace",
1793
+ path: pathConverter(path2),
1794
+ value: newValue
1795
+ });
1796
+ }
1797
+ }
1798
+ function jsonPatchPathConverter(arrayPath) {
1799
+ return [""].concat(arrayPath).join("/");
1800
+ }
1801
+ function differentTypes(a, b) {
1802
+ return Object.prototype.toString.call(a) != Object.prototype.toString.call(b);
1803
+ }
1804
+ function trimFromRight(obj1, obj2) {
1805
+ var lengthDelta = obj1.length - obj2.length;
1806
+ if (Array.isArray(obj1) && Array.isArray(obj2) && lengthDelta > 0) {
1807
+ var leftMatches = 0;
1808
+ var rightMatches = 0;
1809
+ for (var i = 0; i < obj2.length; i++) {
1810
+ if (String(obj1[i]) === String(obj2[i])) {
1811
+ leftMatches++;
1812
+ } else {
1813
+ break;
1814
+ }
1815
+ }
1816
+ for (var j = obj2.length; j > 0; j--) {
1817
+ if (String(obj1[j + lengthDelta]) === String(obj2[j])) {
1818
+ rightMatches++;
1819
+ } else {
1820
+ break;
1821
+ }
1822
+ }
1823
+ return leftMatches >= rightMatches;
1824
+ }
1825
+ return true;
1826
+ }
1827
+ }
1828
+ });
1829
+
1830
+ // node_modules/just-diff-apply/index.cjs
1831
+ var require_just_diff_apply = __commonJS({
1832
+ "node_modules/just-diff-apply/index.cjs"(exports2, module2) {
1833
+ module2.exports = {
1834
+ diffApply,
1835
+ jsonPatchPathConverter
1836
+ };
1837
+ var REMOVE = "remove";
1838
+ var REPLACE = "replace";
1839
+ var ADD = "add";
1840
+ var MOVE = "move";
1841
+ function diffApply(obj, diff, pathConverter) {
1842
+ if (!obj || typeof obj != "object") {
1843
+ throw new Error("base object must be an object or an array");
1844
+ }
1845
+ if (!Array.isArray(diff)) {
1846
+ throw new Error("diff must be an array");
1847
+ }
1848
+ var diffLength = diff.length;
1849
+ for (var i = 0; i < diffLength; i++) {
1850
+ var thisDiff = diff[i];
1851
+ var subObject = obj;
1852
+ var thisOp = thisDiff.op;
1853
+ var thisPath = transformPath(pathConverter, thisDiff.path);
1854
+ var thisFromPath = thisDiff.from && transformPath(pathConverter, thisDiff.from);
1855
+ var toPath, toPathCopy, lastToProp, subToObject, valueToMove;
1856
+ if (thisFromPath) {
1857
+ toPath = thisPath;
1858
+ thisPath = thisFromPath;
1859
+ toPathCopy = toPath.slice();
1860
+ lastToProp = toPathCopy.pop();
1861
+ prototypeCheck(lastToProp);
1862
+ if (lastToProp == null) {
1863
+ return false;
1864
+ }
1865
+ var thisToProp;
1866
+ while ((thisToProp = toPathCopy.shift()) != null) {
1867
+ prototypeCheck(thisToProp);
1868
+ if (!(thisToProp in subToObject)) {
1869
+ subToObject[thisToProp] = {};
1870
+ }
1871
+ subToObject = subToObject[thisToProp];
1872
+ }
1873
+ }
1874
+ var pathCopy = thisPath.slice();
1875
+ var lastProp = pathCopy.pop();
1876
+ prototypeCheck(lastProp);
1877
+ if (lastProp == null) {
1878
+ return false;
1879
+ }
1880
+ var thisProp;
1881
+ while ((thisProp = pathCopy.shift()) != null) {
1882
+ prototypeCheck(thisProp);
1883
+ if (!(thisProp in subObject)) {
1884
+ subObject[thisProp] = {};
1885
+ }
1886
+ subObject = subObject[thisProp];
1887
+ }
1888
+ if (thisOp === REMOVE || thisOp === REPLACE || thisOp === MOVE) {
1889
+ var path2 = thisOp === MOVE ? thisDiff.from : thisDiff.path;
1890
+ if (!subObject.hasOwnProperty(lastProp)) {
1891
+ throw new Error(["expected to find property", path2, "in object", obj].join(" "));
1892
+ }
1893
+ }
1894
+ if (thisOp === REMOVE || thisOp === MOVE) {
1895
+ if (thisOp === MOVE) {
1896
+ valueToMove = subObject[lastProp];
1897
+ }
1898
+ Array.isArray(subObject) ? subObject.splice(lastProp, 1) : delete subObject[lastProp];
1899
+ }
1900
+ if (thisOp === REPLACE || thisOp === ADD) {
1901
+ subObject[lastProp] = thisDiff.value;
1902
+ }
1903
+ if (thisOp === MOVE) {
1904
+ subObject[lastToProp] = valueToMove;
1905
+ }
1906
+ }
1907
+ return subObject;
1908
+ }
1909
+ function transformPath(pathConverter, thisPath) {
1910
+ if (pathConverter) {
1911
+ thisPath = pathConverter(thisPath);
1912
+ if (!Array.isArray(thisPath)) {
1913
+ throw new Error([
1914
+ "pathConverter must return an array, returned:",
1915
+ thisPath
1916
+ ].join(" "));
1917
+ }
1918
+ } else {
1919
+ if (!Array.isArray(thisPath)) {
1920
+ throw new Error([
1921
+ "diff path",
1922
+ thisPath,
1923
+ "must be an array, consider supplying a path converter"
1924
+ ].join(" "));
1925
+ }
1926
+ }
1927
+ return thisPath;
1928
+ }
1929
+ function jsonPatchPathConverter(stringPath) {
1930
+ return stringPath.split("/").slice(1);
1931
+ }
1932
+ function prototypeCheck(prop) {
1933
+ if (prop == "__proto__" || prop == "constructor" || prop == "prototype") {
1934
+ throw new Error("setting of prototype values not supported");
1935
+ }
1936
+ }
1937
+ }
1938
+ });
1939
+
1940
+ // node_modules/parse-conflict-json/lib/index.js
1941
+ var require_lib2 = __commonJS({
1942
+ "node_modules/parse-conflict-json/lib/index.js"(exports2, module2) {
1943
+ var parseJSON = require_lib();
1944
+ var { diff } = require_just_diff();
1945
+ var { diffApply } = require_just_diff_apply();
1946
+ var globalObjectProperties = Object.getOwnPropertyNames(Object.prototype);
1947
+ var stripBOM = (content) => {
1948
+ content = content.toString();
1949
+ if (content.charCodeAt(0) === 65279) {
1950
+ content = content.slice(1);
1951
+ }
1952
+ return content;
1953
+ };
1954
+ var PARENT_RE = /\|{7,}/g;
1955
+ var OURS_RE = /<{7,}/g;
1956
+ var THEIRS_RE = /={7,}/g;
1957
+ var END_RE = />{7,}/g;
1958
+ var isDiff = (str) => str.match(OURS_RE) && str.match(THEIRS_RE) && str.match(END_RE);
1959
+ var parseConflictJSON2 = (str, reviver, prefer) => {
1960
+ prefer = prefer || "ours";
1961
+ if (prefer !== "theirs" && prefer !== "ours") {
1962
+ throw new TypeError('prefer param must be "ours" or "theirs" if set');
1963
+ }
1964
+ str = stripBOM(str);
1965
+ if (!isDiff(str)) {
1966
+ return parseJSON(str);
1967
+ }
1968
+ const pieces = str.split(/[\n\r]+/g).reduce((acc, line) => {
1969
+ if (line.match(PARENT_RE)) {
1970
+ acc.state = "parent";
1971
+ } else if (line.match(OURS_RE)) {
1972
+ acc.state = "ours";
1973
+ } else if (line.match(THEIRS_RE)) {
1974
+ acc.state = "theirs";
1975
+ } else if (line.match(END_RE)) {
1976
+ acc.state = "top";
1977
+ } else {
1978
+ if (acc.state === "top" || acc.state === "ours") {
1979
+ acc.ours += line;
1980
+ }
1981
+ if (acc.state === "top" || acc.state === "theirs") {
1982
+ acc.theirs += line;
1983
+ }
1984
+ if (acc.state === "top" || acc.state === "parent") {
1985
+ acc.parent += line;
1986
+ }
1987
+ }
1988
+ return acc;
1989
+ }, {
1990
+ state: "top",
1991
+ ours: "",
1992
+ theirs: "",
1993
+ parent: ""
1994
+ });
1995
+ const parent = parseJSON(pieces.parent, reviver);
1996
+ const ours = parseJSON(pieces.ours, reviver);
1997
+ const theirs = parseJSON(pieces.theirs, reviver);
1998
+ return prefer === "ours" ? resolve2(parent, ours, theirs) : resolve2(parent, theirs, ours);
1999
+ };
2000
+ var isObj = (obj) => obj && typeof obj === "object";
2001
+ var copyPath = (to, from, path2, i) => {
2002
+ const p = path2[i];
2003
+ if (isObj(to[p]) && isObj(from[p]) && Array.isArray(to[p]) === Array.isArray(from[p])) {
2004
+ return copyPath(to[p], from[p], path2, i + 1);
2005
+ }
2006
+ to[p] = from[p];
2007
+ };
2008
+ var resolve2 = (parent, ours, theirs) => {
2009
+ const dours = diff(parent, ours);
2010
+ for (let i = 0; i < dours.length; i++) {
2011
+ if (globalObjectProperties.find((prop) => dours[i].path.includes(prop))) {
2012
+ continue;
2013
+ }
2014
+ try {
2015
+ diffApply(theirs, [dours[i]]);
2016
+ } catch (e) {
2017
+ copyPath(theirs, ours, dours[i].path, 0);
2018
+ }
2019
+ }
2020
+ return theirs;
2021
+ };
2022
+ module2.exports = Object.assign(parseConflictJSON2, { isDiff });
2023
+ }
2024
+ });
2025
+
1581
2026
  // src/task-runtime.ts
1582
2027
  var task_runtime_exports = {};
1583
2028
  __export(task_runtime_exports, {
@@ -1590,6 +2035,7 @@ var import_path = require("path");
1590
2035
  var path = __toESM(require("path"));
1591
2036
  var import_util = require("util");
1592
2037
  var import_chalk = __toESM(require_source());
2038
+ var parseConflictJSON = __toESM(require_lib2());
1593
2039
 
1594
2040
  // src/common.ts
1595
2041
  var PROJEN_DIR = ".projen";
@@ -1649,7 +2095,11 @@ var TaskRuntime = class _TaskRuntime {
1649
2095
  constructor(workdir) {
1650
2096
  this.workdir = (0, import_path.resolve)(workdir);
1651
2097
  const manifestPath = (0, import_path.join)(this.workdir, _TaskRuntime.MANIFEST_FILE);
1652
- this.manifest = (0, import_fs.existsSync)(manifestPath) ? JSON.parse((0, import_fs.readFileSync)(manifestPath, "utf-8")) : { tasks: {} };
2098
+ this.manifest = (0, import_fs.existsSync)(manifestPath) ? parseConflictJSON(
2099
+ (0, import_fs.readFileSync)(manifestPath, "utf-8"),
2100
+ void 0,
2101
+ "theirs"
2102
+ ) : { tasks: {} };
1653
2103
  }
1654
2104
  /**
1655
2105
  * The tasks in this project.
@@ -58,7 +58,7 @@ class SampleFile extends component_1.Component {
58
58
  }
59
59
  exports.SampleFile = SampleFile;
60
60
  _a = JSII_RTTI_SYMBOL_1;
61
- SampleFile[_a] = { fqn: "projen.SampleFile", version: "0.91.28" };
61
+ SampleFile[_a] = { fqn: "projen.SampleFile", version: "0.91.30" };
62
62
  /**
63
63
  * Renders the given files into the directory if the directory does not exist. Use this to create sample code files
64
64
  */
@@ -106,5 +106,5 @@ class SampleDir extends component_1.Component {
106
106
  }
107
107
  exports.SampleDir = SampleDir;
108
108
  _b = JSII_RTTI_SYMBOL_1;
109
- SampleDir[_b] = { fqn: "projen.SampleDir", version: "0.91.28" };
109
+ SampleDir[_b] = { fqn: "projen.SampleDir", version: "0.91.30" };
110
110
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FtcGxlLWZpbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc2FtcGxlLWZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLDZCQUE2QjtBQUM3QiwyQ0FBd0M7QUFFeEMsaUNBQXVEO0FBeUJ2RDs7O0dBR0c7QUFDSCxNQUFhLFVBQVcsU0FBUSxxQkFBUztJQUl2Qzs7Ozs7T0FLRztJQUNILFlBQVksT0FBZ0IsRUFBRSxRQUFnQixFQUFFLE9BQTBCO1FBQ3hFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLElBQUksT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM3QyxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7UUFDMUUsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFFTSxVQUFVO1FBQ2YsSUFBSSxRQUFRLENBQUM7UUFDYixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDMUIsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQ25DLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbkMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLHFCQUFxQixDQUN4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QUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUMzRSxDQUFDO0lBQ0gsQ0FBQzs7QUFyREgsOEJBc0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgKiBhcyBnbG9iIGZyb20gXCJnbG9iXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRcIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwiLi9wcm9qZWN0XCI7XG5pbXBvcnQgeyBnZXRGaWxlUGVybWlzc2lvbnMsIHdyaXRlRmlsZSB9IGZyb20gXCIuL3V0aWxcIjtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgU2FtcGxlRmlsZSBvYmplY3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2FtcGxlRmlsZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIHRvIHdyaXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudHM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFic29sdXRlIHBhdGggdG8gYSBmaWxlIHRvIGNvcHkgdGhlIGNvbnRlbnRzIGZyb20gKGRvZXMgbm90IG5lZWQgdG8gYmVcbiAgICogYSB0ZXh0IGZpbGUpLlxuICAgKlxuICAgKiBJZiB5b3VyIHByb2plY3QgaXMgVHlwZXNjcmlwdC1iYXNlZCBhbmQgaGFzIGNvbmZpZ3VyZWQgYHRlc3RkaXJgIHRvIGJlIGFcbiAgICogc3ViZGlyZWN0b3J5IG9mIGBzcmNgLCBzYW1wbGUgZmlsZXMgc2hvdWxkIG91dHNpZGUgb2YgdGhlIGBzcmNgIGRpcmVjdG9yeSxcbiAgICogb3RoZXJ3aXNlIHRoZXkgbWF5IG5vdCBiZSBjb3BpZWQuIEZvciBleGFtcGxlOlxuICAgKiBgYGBcbiAgICogbmV3IFNhbXBsZUZpbGUodGhpcywgJ2Fzc2V0cy9pY29uLnBuZycsIHsgc291cmNlUGF0aDogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJ3NhbXBsZS1hc3NldHMnLCAnaWNvbi5wbmcnKSB9KTtcbiAgICogYGBgXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VQYXRoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb2R1Y2VzIGEgZmlsZSB3aXRoIHRoZSBnaXZlbiBjb250ZW50cyBidXQgb25seSBvbmNlLCBpZiB0aGUgZmlsZSBkb2Vzbid0IGFscmVhZHkgZXhpc3QuXG4gKiBVc2UgdGhpcyBmb3IgY3JlYXRpbmcgZXhhbXBsZSBjb2RlIGZpbGVzIG9yIG90aGVyIHJlc291cmNlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNhbXBsZUZpbGUgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbGVQYXRoOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogU2FtcGxlRmlsZU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgU2FtcGxlRmlsZSBvYmplY3RcbiAgICogQHBhcmFtIHByb2plY3QgLSB0aGUgcHJvamVjdCB0byB0aWUgdGhpcyBmaWxlIHRvLlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSB0aGUgcmVsYXRpdmUgcGF0aCBpbiB0aGUgcHJvamVjdCB0byBwdXQgdGhlIGZpbGVcbiAgICogQHBhcmFtIG9wdGlvbnMgLSB0aGUgb3B0aW9ucyBmb3IgdGhlIGZpbGUuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBmaWxlUGF0aDogc3RyaW5nLCBvcHRpb25zOiBTYW1wbGVGaWxlT3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgaWYgKG9wdGlvbnMuY29udGVudHMgJiYgb3B0aW9ucy5zb3VyY2VQYXRoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3Qgc3BlY2lmeSBib3RoICdjb250ZW50cycgYW5kICdzb3VyY2UnIGZpZWxkcy5cIik7XG4gICAgfVxuICAgIGlmICghb3B0aW9ucy5jb250ZW50cyAmJiAhb3B0aW9ucy5zb3VyY2VQYXRoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNdXN0IHNwZWNpZnkgYXQgbGVhc3Qgb25lIG9mICdjb250ZW50cycgb3IgJ3NvdXJjZScuXCIpO1xuICAgIH1cbiAgICB0aGlzLmZpbGVQYXRoID0gZmlsZVBhdGg7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIHB1YmxpYyBzeW50aGVzaXplKCkge1xuICAgIGxldCBjb250ZW50cztcbiAgICBpZiAodGhpcy5vcHRpb25zLmNvbnRlbnRzKSB7XG4gICAgICBjb250ZW50cyA9IHRoaXMub3B0aW9ucy5jb250ZW50cztcbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9ucy5zb3VyY2VQYXRoKSB7XG4gICAgICBjb250ZW50cyA9IGZzLnJlYWRGaWxlU3luYyh0aGlzLm9wdGlvbnMuc291cmNlUGF0aCk7XG4gICAgfVxuICAgIHRoaXMud3JpdGVPbmNlRmlsZUNvbnRlbnRzKFxuICAgICAgdGhpcy5wcm9qZWN0Lm91dGRpcixcbiAgICAgIHRoaXMuZmlsZVBhdGgsXG4gICAgICBjb250ZW50cyA/PyBcIlwiXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIGhlbHBlciBmdW5jdGlvbiB0aGF0IHdpbGwgd3JpdGUgdGhlIGZpbGUgb25jZSBhbmQgcmV0dXJuIGlmIGl0IHdhcyB3cml0dGVuIG9yIG5vdC5cbiAgICogQHBhcmFtIGRpciAtIHRoZSBkaXJlY3RvcnkgZm9yIHRoZSBuZXcgZmlsZVxuICAgKiBAcGFyYW0gZmlsZW5hbWUgLSB0aGUgZmlsZW5hbWUgZm9yIHRoZSBuZXcgZmlsZVxuICAgKiBAcGFyYW0gY29udGVudHMgLSB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgdG8gd3JpdGVcbiAgICogQHJldHVybiBib29sZWFuIC0gd2hldGhlciBhIG5ldyBmaWxlIHdhcyB3cml0dGVuIG9yIG5vdC5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgd3JpdGVPbmNlRmlsZUNvbnRlbnRzKGRpcjogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nLCBjb250ZW50czogYW55KSB7XG4gICAgY29uc3QgZnVsbEZpbGVuYW1lID0gcGF0aC5qb2luKGRpciwgZmlsZW5hbWUpO1xuICAgIGlmIChmcy5leGlzdHNTeW5jKGZ1bGxGaWxlbmFtZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgd3JpdGVGaWxlKGZ1bGxGaWxlbmFtZSwgY29udGVudHMsIHsgcmVhZG9ubHk6IGZhbHNlIH0pO1xuICB9XG59XG5cbi8qKlxuICogU2FtcGxlRGlyIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYW1wbGVEaXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBmaWxlcyB0byByZW5kZXIgaW50byB0aGUgZGlyZWN0b3J5LiBUaGVzZSBmaWxlcyBnZXQgYWRkZWQgYWZ0ZXJcbiAgICogYW55IGZpbGVzIGZyb20gYHNvdXJjZWAgaWYgdGhhdCBvcHRpb24gaXMgc3BlY2lmaWVkIChyZXBsYWNpbmcgaWYgbmFtZXNcbiAgICogb3ZlcmxhcCkuXG4gICAqL1xuICByZWFkb25seSBmaWxlcz86IHsgW2ZpbGVOYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQWJzb2x1dGUgcGF0aCB0byBhIGRpcmVjdG9yeSB0byBjb3B5IGZpbGVzIGZyb20gKGRvZXMgbm90IG5lZWQgdG8gYmUgdGV4dFxuICAgKiBmaWxlcykuXG4gICAqXG4gICAqIElmIHlvdXIgcHJvamVjdCBpcyB0eXBlc2NyaXB0LWJhc2VkIGFuZCBoYXMgY29uZmlndXJlZCBgdGVzdGRpcmAgdG8gYmUgYVxuICAgKiBzdWJkaXJlY3Rvcnkgb2YgYHNyY2AsIHNhbXBsZSBmaWxlcyBzaG91bGQgb3V0c2lkZSBvZiB0aGUgYHNyY2AgZGlyZWN0b3J5XG4gICAqIG90aGVyd2lzZSB0aGV5IG1heSBub3QgYmUgY29waWVkLiBGb3IgZXhhbXBsZTpcbiAgICogYGBgXG4gICAqIG5ldyBTYW1wbGVEaXIodGhpcywgJ3B1YmxpYycsIHsgc291cmNlOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnc2FtcGxlLWFzc2V0cycpIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZURpcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZW5kZXJzIHRoZSBnaXZlbiBmaWxlcyBpbnRvIHRoZSBkaXJlY3RvcnkgaWYgdGhlIGRpcmVjdG9yeSBkb2VzIG5vdCBleGlzdC4gVXNlIHRoaXMgdG8gY3JlYXRlIHNhbXBsZSBjb2RlIGZpbGVzXG4gKi9cbmV4cG9ydCBjbGFzcyBTYW1wbGVEaXIgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGRpcjogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IFNhbXBsZURpck9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBzYW1wbGUgZmlsZXMgaW4gdGhlIGdpdmVuIGRpcmVjdG9yeSBpZiB0aGUgZ2l2ZW4gZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0XG4gICAqIEBwYXJhbSBwcm9qZWN0IFBhcmVudCBwcm9qZWN0IHRvIGFkZCBmaWxlcyB0by5cbiAgICogQHBhcmFtIGRpciBkaXJlY3RvcnkgdG8gYWRkIGZpbGVzIHRvLiBJZiBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHMsIG5vdGhpbmcgaXMgYWRkZWQuXG4gICAqIEBwYXJhbSBvcHRpb25zIG9wdGlvbnMgZm9yIHdoaWNoIGZpbGVzIHRvIGNyZWF0ZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIGRpcjogc3RyaW5nLCBvcHRpb25zOiBTYW1wbGVEaXJPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG4gICAgaWYgKCFvcHRpb25zLmZpbGVzICYmICFvcHRpb25zLnNvdXJjZURpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTXVzdCBzcGVjaWZ5IGF0IGxlYXN0IG9uZSBvZiAnZmlsZXMnIG9yICdzb3VyY2UnLlwiKTtcbiAgICB9XG5cbiAgICB0aGlzLmRpciA9IGRpcjtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICB9XG5cbiAgcHVibGljIHN5bnRoZXNpemUoKSB7XG4gICAgY29uc3QgZnVsbE91dGRpciA9IHBhdGguam9pbih0aGlzLnByb2plY3Qub3V0ZGlyLCB0aGlzLmRpcik7XG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoZnVsbE91dGRpcikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBwcmV2aW91c2x5IGNyZWF0aW5nIHRoZSBkaXJlY3RvcnkgdG8gYWxsb3cgZW1wdHkgZGlycyB0byBiZSBjcmVhdGVkXG4gICAgZnMubWtkaXJTeW5jKGZ1bGxPdXRkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5zb3VyY2VEaXIpIHtcbiAgICAgIGNvbnN0IGJhc2VkaXIgPSB0aGlzLm9wdGlvbnMuc291cmNlRGlyO1xuICAgICAgY29uc3QgZmlsZXMgPSBnbG9iLnN5bmMoXCIqKlwiLCB7XG4gICAgICAgIGN3ZDogYmFzZWRpcixcbiAgICAgICAgbm9kaXI6IHRydWUsXG4gICAgICAgIGRvdDogdHJ1ZSxcbiAgICAgIH0pOyAvLyByZXR1cm5zIHJlbGF0aXZlIGZpbGUgcGF0aHMgd2l0aCBQT1NJWCBzZXBhcmF0b3JzXG5cbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICBjb25zdCBzb3VyY2VQYXRoID0gcGF0aC5qb2luKGJhc2VkaXIsIGZpbGUpO1xuICAgICAgICBjb25zdCB0YXJnZXRQYXRoID0gcGF0aC5qb2luKGZ1bGxPdXRkaXIsIGZpbGUpO1xuXG4gICAgICAgIGZzLm1rZGlyU3luYyhwYXRoLmRpcm5hbWUodGFyZ2V0UGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgICBmcy5jb3B5RmlsZVN5bmMoc291cmNlUGF0aCwgdGFyZ2V0UGF0aCk7XG4gICAgICAgIGZzLmNobW9kU3luYyhcbiAgICAgICAgICB0YXJnZXRQYXRoLFxuICAgICAgICAgIGdldEZpbGVQZXJtaXNzaW9ucyh7IHJlYWRvbmx5OiBmYWxzZSwgZXhlY3V0YWJsZTogZmFsc2UgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIGluIHRoaXMub3B0aW9ucy5maWxlcykge1xuICAgICAgd3JpdGVGaWxlKHBhdGguam9pbihmdWxsT3V0ZGlyLCBmaWxlbmFtZSksIHRoaXMub3B0aW9ucy5maWxlc1tmaWxlbmFtZV0pO1xuICAgIH1cbiAgfVxufVxuIl19
package/lib/semver.js CHANGED
@@ -52,5 +52,5 @@ class Semver {
52
52
  }
53
53
  exports.Semver = Semver;
54
54
  _a = JSII_RTTI_SYMBOL_1;
55
- Semver[_a] = { fqn: "projen.Semver", version: "0.91.28" };
55
+ Semver[_a] = { fqn: "projen.Semver", version: "0.91.30" };
56
56
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VtdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlbXZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlDQUFpQztBQUVqQzs7OztHQUlHO0FBQ0gsTUFBYSxNQUFNO0lBQ1YsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFZO1FBQzNCLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLE1BQU07UUFDbEIsT0FBTyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQWU7UUFDbEMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQWU7UUFDakMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFlO1FBQ2pDLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFJRCxZQUFvQyxJQUFZO1FBQVosU0FBSSxHQUFKLElBQUksQ0FBUTtJQUFHLENBQUM7SUFFcEQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQy9DLENBQUM7O0FBN0NILHdCQThDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHNlbXZlciBmcm9tIFwic2VtdmVyXCI7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVGhpcyBjbGFzcyB3aWxsIGJlIHJlbW92ZWQgaW4gdXBjb21pbmcgcmVsZWFzZXMuIGlmIHlvdSB3aXNoIHRvXG4gKiBzcGVjaWZ5IHNlbXZlciByZXF1aXJlbWVudHMgaW4gYGRlcHNgLCBgZGV2RGVwc2AsIGV0Yywgc3BlY2lmeSB0aGVtIGxpa2Ugc29cbiAqIGBleHByZXNzQF4yLjFgLlxuICovXG5leHBvcnQgY2xhc3MgU2VtdmVyIHtcbiAgcHVibGljIHN0YXRpYyBvZihzcGVjOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IFNlbXZlcihzcGVjKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMYXRlc3QgdmVyc2lvbi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbGF0ZXN0KCkge1xuICAgIHJldHVybiBuZXcgU2VtdmVyKFwiKlwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY2NlcHQgb25seSBhbiBleGFjdCB2ZXJzaW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHBpbm5lZCh2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IFNlbXZlcih2ZXJzaW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY2NlcHQgYW55IG1pbm9yIHZlcnNpb24uXG4gICAqXG4gICAqID49IHZlcnNpb25cbiAgICogPCBuZXh0IG1ham9yIHZlcnNpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY2FyZXQodmVyc2lvbjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBTZW12ZXIoYF4ke3ZlcnNpb259YCk7XG4gIH1cblxuICAvKipcbiAgICogQWNjZXB0IHBhdGNoZXMuXG4gICAqXG4gICAqID49IHZlcnNpb25cbiAgICogPCBuZXh0IG1pbm9yIHZlcnNpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdGlsZGUodmVyc2lvbjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBTZW12ZXIoYH4ke3ZlcnNpb259YCk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgbW9kZT86IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBzcGVjOiBzdHJpbmcpIHt9XG5cbiAgcHVibGljIGdldCB2ZXJzaW9uKCkge1xuICAgIHJldHVybiBzZW12ZXIubWluVmVyc2lvbih0aGlzLnNwZWMpPy52ZXJzaW9uO1xuICB9XG59XG4iXX0=
@@ -58,5 +58,5 @@ class SourceCode extends component_1.Component {
58
58
  }
59
59
  exports.SourceCode = SourceCode;
60
60
  _a = JSII_RTTI_SYMBOL_1;
61
- SourceCode[_a] = { fqn: "projen.SourceCode", version: "0.91.28" };
61
+ SourceCode[_a] = { fqn: "projen.SourceCode", version: "0.91.30" };
62
62
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLWNvZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc291cmNlLWNvZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwyQ0FBd0M7QUFFeEMseUNBQXNDO0FBb0J0Qzs7R0FFRztBQUNILE1BQWEsVUFBVyxTQUFRLHFCQUFTO0lBS3ZDLFlBQ0UsT0FBZ0IsRUFDQSxRQUFnQixFQUNoQyxVQUE2QixFQUFFO1FBRS9CLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUhDLGFBQVEsR0FBUixRQUFRLENBQVE7UUFMMUIsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFTdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksbUJBQVEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFO1lBQzFDLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUk7U0FDbkMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLElBQUksQ0FBQyxJQUFhO1FBQ3ZCLE1BQU0sTUFBTSxHQUFXLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUN0RCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLElBQUksQ0FBQyxJQUFhO1FBQ3ZCLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsSUFBYTtRQUN4QixJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFbkIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7O0FBMURILGdDQTJEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gXCIuL3Byb2plY3RcIjtcbmltcG9ydCB7IFRleHRGaWxlIH0gZnJvbSBcIi4vdGV4dGZpbGVcIjtcblxuLyoqXG4gKiBPcHRpb25zIGZvciBgU291cmNlQ29kZUZpbGVgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNvdXJjZUNvZGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIEluZGVudGF0aW9uIHNpemUuXG4gICAqIEBkZWZhdWx0IDJcbiAgICovXG4gIHJlYWRvbmx5IGluZGVudD86IG51bWJlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZ2VuZXJhdGVkIGZpbGUgc2hvdWxkIGJlIHJlYWRvbmx5LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSByZWFkb25seT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNvdXJjZSBmaWxlLlxuICovXG5leHBvcnQgY2xhc3MgU291cmNlQ29kZSBleHRlbmRzIENvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZmlsZTogVGV4dEZpbGU7XG4gIHByaXZhdGUgaW5kZW50TGV2ZWwgPSAwO1xuICBwcml2YXRlIHJlYWRvbmx5IGluZGVudDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb2plY3Q6IFByb2plY3QsXG4gICAgcHVibGljIHJlYWRvbmx5IGZpbGVQYXRoOiBzdHJpbmcsXG4gICAgb3B0aW9uczogU291cmNlQ29kZU9wdGlvbnMgPSB7fVxuICApIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcbiAgICB0aGlzLmluZGVudCA9IG9wdGlvbnMuaW5kZW50ID8/IDI7XG4gICAgdGhpcy5maWxlID0gbmV3IFRleHRGaWxlKHByb2plY3QsIGZpbGVQYXRoLCB7XG4gICAgICByZWFkb25seTogb3B0aW9ucy5yZWFkb25seSA/PyB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCBtYXJrZXIoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5maWxlLm1hcmtlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0IGEgbGluZSBvZiBjb2RlLlxuICAgKiBAcGFyYW0gY29kZSBUaGUgY29udGVudHMsIGlmIG5vdCBzcGVjaWZpZWQsIGp1c3QgYWRkcyBhIG5ld2xpbmVcbiAgICovXG4gIHB1YmxpYyBsaW5lKGNvZGU/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBzcGFjZXM6IG51bWJlciA9IHRoaXMuaW5kZW50ICogdGhpcy5pbmRlbnRMZXZlbDtcbiAgICBjb25zdCBwcmVmaXggPSBcIiBcIi5yZXBlYXQoc3BhY2VzKTtcbiAgICB0aGlzLmZpbGUuYWRkTGluZSgocHJlZml4ICsgKGNvZGUgPz8gXCJcIikpLnRyaW1FbmQoKSk7XG4gIH1cblxuICAvKipcbiAgICogT3BlbnMgYSBjb2RlIGJsb2NrIGFuZCBpbmNyZWFzZXMgdGhlIGluZGVudGF0aW9uIGxldmVsLlxuICAgKlxuICAgKiBAcGFyYW0gY29kZSBUaGUgY29kZSBiZWZvcmUgdGhlIGJsb2NrIHN0YXJ0cyAoZS5nLiBgZXhwb3J0IGNsYXNzIHtgKS5cbiAgICovXG4gIHB1YmxpYyBvcGVuKGNvZGU/OiBzdHJpbmcpIHtcbiAgICBpZiAoY29kZSkge1xuICAgICAgdGhpcy5saW5lKGNvZGUpO1xuICAgIH1cblxuICAgIHRoaXMuaW5kZW50TGV2ZWwrKztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNyZWFzZXMgdGhlIGluZGVudGF0aW9uIGxldmVsIGFuZCBjbG9zZXMgYSBjb2RlIGJsb2NrLlxuICAgKlxuICAgKiBAcGFyYW0gY29kZSBUaGUgY29kZSBhZnRlciB0aGUgYmxvY2sgaXMgY2xvc2VkIChlLmcuIGB9YCkuXG4gICAqL1xuICBwdWJsaWMgY2xvc2UoY29kZT86IHN0cmluZykge1xuICAgIGlmICh0aGlzLmluZGVudExldmVsID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgZGVjcmVhc2UgaW5kZW50IGxldmVsIGJlbG93IHplcm9cIik7XG4gICAgfVxuICAgIHRoaXMuaW5kZW50TGV2ZWwtLTtcblxuICAgIGlmIChjb2RlKSB7XG4gICAgICB0aGlzLmxpbmUoY29kZSk7XG4gICAgfVxuICB9XG59XG4iXX0=