@powerhousedao/codegen 6.0.0-dev.130 → 6.0.0-dev.131
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{file-builders-BRJcuumC.mjs → file-builders-DTtl0nnu.mjs} +54 -68
- package/dist/file-builders-DTtl0nnu.mjs.map +1 -0
- package/dist/index-bxxFsCxV.d.mts.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +12 -4424
- package/dist/index.mjs.map +1 -1
- package/dist/src/file-builders/index.mjs +2 -2
- package/dist/src/templates/index.d.mts +15 -4
- package/dist/src/templates/index.d.mts.map +1 -1
- package/dist/src/templates/index.mjs +2 -2
- package/dist/src/utils/index.d.mts.map +1 -1
- package/dist/src/utils/index.mjs +7 -1
- package/dist/src/utils/index.mjs.map +1 -1
- package/dist/{templates-BYDhXDXu.mjs → templates-CKdxigVj.mjs} +104 -125
- package/dist/templates-CKdxigVj.mjs.map +1 -0
- package/package.json +12 -11
- package/dist/file-builders-BRJcuumC.mjs.map +0 -1
- package/dist/templates-BYDhXDXu.mjs.map +0 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["#message","#input","#jsonParseError","#codeFrame","#getCodeFrame","#rawCodeFrame","#o","#m","#A","#d","#g","#y","#s","#i","#t","#a","#u","#l","#h","#b","#e","#G","#D","#F","#O","#p","#c","#_","#n","#L","#U","#w","#C","#S","#v","#r","#T","#I","#f","#B","#j","#N","#E","#R","#z","#W","#P","#M","#x","#H","#k","#V","#gitHosts","#protocols","#fill","URL","execFileCallback","fsPromises","path","claudeTemplate","fs","path","fs"],"sources":["../../../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js","../../../node_modules/.pnpm/js-tokens@4.0.0/node_modules/js-tokens/index.js","../../../node_modules/.pnpm/@babel+helper-validator-identifier@7.28.5/node_modules/@babel/helper-validator-identifier/lib/identifier.js","../../../node_modules/.pnpm/@babel+helper-validator-identifier@7.28.5/node_modules/@babel/helper-validator-identifier/lib/keyword.js","../../../node_modules/.pnpm/@babel+helper-validator-identifier@7.28.5/node_modules/@babel/helper-validator-identifier/lib/index.js","../../../node_modules/.pnpm/@babel+code-frame@7.29.0/node_modules/@babel/code-frame/lib/index.js","../../../node_modules/.pnpm/index-to-position@1.2.0/node_modules/index-to-position/index.js","../../../node_modules/.pnpm/parse-json@8.3.0/node_modules/parse-json/index.js","../../../node_modules/.pnpm/spdx-license-ids@3.0.23/node_modules/spdx-license-ids/index.json","../../../node_modules/.pnpm/spdx-license-ids@3.0.23/node_modules/spdx-license-ids/deprecated.json","../../../node_modules/.pnpm/spdx-exceptions@2.5.0/node_modules/spdx-exceptions/index.json","../../../node_modules/.pnpm/spdx-expression-parse@3.0.1/node_modules/spdx-expression-parse/scan.js","../../../node_modules/.pnpm/spdx-expression-parse@3.0.1/node_modules/spdx-expression-parse/parse.js","../../../node_modules/.pnpm/spdx-expression-parse@3.0.1/node_modules/spdx-expression-parse/index.js","../../../node_modules/.pnpm/spdx-correct@3.2.0/node_modules/spdx-correct/index.js","../../../node_modules/.pnpm/validate-npm-package-license@3.0.4/node_modules/validate-npm-package-license/index.js","../../../node_modules/.pnpm/lru-cache@11.2.6/node_modules/lru-cache/dist/commonjs/index.min.js","../../../node_modules/.pnpm/hosted-git-info@9.0.2/node_modules/hosted-git-info/lib/hosts.js","../../../node_modules/.pnpm/hosted-git-info@9.0.2/node_modules/hosted-git-info/lib/parse-url.js","../../../node_modules/.pnpm/hosted-git-info@9.0.2/node_modules/hosted-git-info/lib/from-url.js","../../../node_modules/.pnpm/hosted-git-info@9.0.2/node_modules/hosted-git-info/lib/index.js","../../../node_modules/.pnpm/normalize-package-data@8.0.0/node_modules/normalize-package-data/lib/extract_description.js","../../../node_modules/.pnpm/normalize-package-data@8.0.0/node_modules/normalize-package-data/lib/typos.json","../../../node_modules/.pnpm/normalize-package-data@8.0.0/node_modules/normalize-package-data/lib/fixer.js","../../../node_modules/.pnpm/normalize-package-data@8.0.0/node_modules/normalize-package-data/lib/warning_messages.json","../../../node_modules/.pnpm/normalize-package-data@8.0.0/node_modules/normalize-package-data/lib/make_warning.js","../../../node_modules/.pnpm/normalize-package-data@8.0.0/node_modules/normalize-package-data/lib/normalize.js","../../../node_modules/.pnpm/unicorn-magic@0.4.0/node_modules/unicorn-magic/node.js","../../../node_modules/.pnpm/read-pkg@10.1.0/node_modules/read-pkg/index.js","../src/codegen/utils.ts","../src/codegen/generate.ts","../src/codegen/kysely.ts","../src/create-lib/utils.ts","../src/create-lib/checkout-project.ts","../src/templates/boilerplate/document-models/upgrade-manifests.ts","../src/create-lib/create-project.ts","../src/ts-morph-generator/core/FileGenerator.ts","../src/ts-morph-generator/core/ReducerGenerator.ts","../src/ts-morph-generator/utilities/DeclarationManager.ts","../src/ts-morph-generator/utilities/DirectoryManager.ts","../src/ts-morph-generator/utilities/ImportManager.ts","../src/ts-morph-generator/core/TSMorphCodeGenerator.ts"],"sourcesContent":["let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n","// Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell\n// License: MIT. (See LICENSE.)\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n})\n\n// This regex comes from regex.coffee, and is inserted here by generate-index.js\n// (run `npm run build`).\nexports.default = /((['\"])(?:(?!\\2|\\\\).|\\\\(?:\\r\\n|[\\s\\S]))*(\\2)?|`(?:[^`\\\\$]|\\\\[\\s\\S]|\\$(?!\\{)|\\$\\{(?:[^{}]|\\{[^}]*\\}?)*\\}?)*(`)?)|(\\/\\/.*)|(\\/\\*(?:[^*]|\\*(?!\\/))*(\\*\\/)?)|(\\/(?!\\*)(?:\\[(?:(?![\\]\\\\]).|\\\\.)*\\]|(?![\\/\\]\\\\]).|\\\\.)+\\/(?:(?!\\s*(?:\\b|[\\u0080-\\uFFFF$\\\\'\"~({]|[+\\-!](?!=)|\\.?\\d))|[gmiyus]{1,6}\\b(?![\\u0080-\\uFFFF$\\\\]|\\s*(?:[+\\-*%&|^<>!=?({]|\\/(?![\\/*])))))|(0[xX][\\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][+-]?\\d+)?)|((?!\\d)(?:(?!\\s)[$\\w\\u0080-\\uFFFF]|\\\\u[\\da-fA-F]{4}|\\\\u\\{[\\da-fA-F]+\\})+)|(--|\\+\\+|&&|\\|\\||=>|\\.{3}|(?:[+\\-\\/%&|^]|\\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\\](){}])|(\\s+)|(^$|[\\s\\S])/g\n\nexports.matchToToken = function(match) {\n var token = {type: \"invalid\", value: match[0], closed: undefined}\n if (match[ 1]) token.type = \"string\" , token.closed = !!(match[3] || match[4])\n else if (match[ 5]) token.type = \"comment\"\n else if (match[ 6]) token.type = \"comment\", token.closed = !!match[7]\n else if (match[ 8]) token.type = \"regex\"\n else if (match[ 9]) token.type = \"number\"\n else if (match[10]) token.type = \"name\"\n else if (match[11]) token.type = \"punctuator\"\n else if (match[12]) token.type = \"whitespace\"\n return token\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isIdentifierChar = isIdentifierChar;\nexports.isIdentifierName = isIdentifierName;\nexports.isIdentifierStart = isIdentifierStart;\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088f\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5c\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdc-\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c8a\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7dc\\ua7f1-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\nlet nonASCIIidentifierChars = \"\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0897-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1add\\u1ae0-\\u1aeb\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\nconst nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nconst nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\nconst astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 7, 25, 39, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 5, 57, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 24, 43, 261, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 33, 24, 3, 24, 45, 74, 6, 0, 67, 12, 65, 1, 2, 0, 15, 4, 10, 7381, 42, 31, 98, 114, 8702, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 208, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 225, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4381, 3, 5773, 3, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 8489];\nconst astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 78, 5, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 199, 7, 137, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 55, 9, 266, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 233, 0, 3, 0, 8, 1, 6, 0, 475, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];\nfunction isInAstralSet(code, set) {\n let pos = 0x10000;\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n return false;\n}\nfunction isIdentifierStart(code) {\n if (code < 65) return code === 36;\n if (code <= 90) return true;\n if (code < 97) return code === 95;\n if (code <= 122) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));\n }\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\nfunction isIdentifierChar(code) {\n if (code < 48) return code === 36;\n if (code < 58) return true;\n if (code < 65) return false;\n if (code <= 90) return true;\n if (code < 97) return code === 95;\n if (code <= 122) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);\n}\nfunction isIdentifierName(name) {\n let isFirst = true;\n for (let i = 0; i < name.length; i++) {\n let cp = name.charCodeAt(i);\n if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n const trail = name.charCodeAt(++i);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n if (isFirst) {\n isFirst = false;\n if (!isIdentifierStart(cp)) {\n return false;\n }\n } else if (!isIdentifierChar(cp)) {\n return false;\n }\n }\n return !isFirst;\n}\n\n//# sourceMappingURL=identifier.js.map\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isKeyword = isKeyword;\nexports.isReservedWord = isReservedWord;\nexports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord;\nexports.isStrictBindReservedWord = isStrictBindReservedWord;\nexports.isStrictReservedWord = isStrictReservedWord;\nconst reservedWords = {\n keyword: [\"break\", \"case\", \"catch\", \"continue\", \"debugger\", \"default\", \"do\", \"else\", \"finally\", \"for\", \"function\", \"if\", \"return\", \"switch\", \"throw\", \"try\", \"var\", \"const\", \"while\", \"with\", \"new\", \"this\", \"super\", \"class\", \"extends\", \"export\", \"import\", \"null\", \"true\", \"false\", \"in\", \"instanceof\", \"typeof\", \"void\", \"delete\"],\n strict: [\"implements\", \"interface\", \"let\", \"package\", \"private\", \"protected\", \"public\", \"static\", \"yield\"],\n strictBind: [\"eval\", \"arguments\"]\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\nfunction isReservedWord(word, inModule) {\n return inModule && word === \"await\" || word === \"enum\";\n}\nfunction isStrictReservedWord(word, inModule) {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\nfunction isStrictBindOnlyReservedWord(word) {\n return reservedWordsStrictBindSet.has(word);\n}\nfunction isStrictBindReservedWord(word, inModule) {\n return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);\n}\nfunction isKeyword(word) {\n return keywords.has(word);\n}\n\n//# sourceMappingURL=keyword.js.map\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"isIdentifierChar\", {\n enumerable: true,\n get: function () {\n return _identifier.isIdentifierChar;\n }\n});\nObject.defineProperty(exports, \"isIdentifierName\", {\n enumerable: true,\n get: function () {\n return _identifier.isIdentifierName;\n }\n});\nObject.defineProperty(exports, \"isIdentifierStart\", {\n enumerable: true,\n get: function () {\n return _identifier.isIdentifierStart;\n }\n});\nObject.defineProperty(exports, \"isKeyword\", {\n enumerable: true,\n get: function () {\n return _keyword.isKeyword;\n }\n});\nObject.defineProperty(exports, \"isReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isReservedWord;\n }\n});\nObject.defineProperty(exports, \"isStrictBindOnlyReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isStrictBindOnlyReservedWord;\n }\n});\nObject.defineProperty(exports, \"isStrictBindReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isStrictBindReservedWord;\n }\n});\nObject.defineProperty(exports, \"isStrictReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isStrictReservedWord;\n }\n});\nvar _identifier = require(\"./identifier.js\");\nvar _keyword = require(\"./keyword.js\");\n\n//# sourceMappingURL=index.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar picocolors = require('picocolors');\nvar jsTokens = require('js-tokens');\nvar helperValidatorIdentifier = require('@babel/helper-validator-identifier');\n\nfunction isColorSupported() {\n return (typeof process === \"object\" && (process.env.FORCE_COLOR === \"0\" || process.env.FORCE_COLOR === \"false\") ? false : picocolors.isColorSupported\n );\n}\nconst compose = (f, g) => v => f(g(v));\nfunction buildDefs(colors) {\n return {\n keyword: colors.cyan,\n capitalized: colors.yellow,\n jsxIdentifier: colors.yellow,\n punctuator: colors.yellow,\n number: colors.magenta,\n string: colors.green,\n regex: colors.magenta,\n comment: colors.gray,\n invalid: compose(compose(colors.white, colors.bgRed), colors.bold),\n gutter: colors.gray,\n marker: compose(colors.red, colors.bold),\n message: compose(colors.red, colors.bold),\n reset: colors.reset\n };\n}\nconst defsOn = buildDefs(picocolors.createColors(true));\nconst defsOff = buildDefs(picocolors.createColors(false));\nfunction getDefs(enabled) {\n return enabled ? defsOn : defsOff;\n}\n\nconst sometimesKeywords = new Set([\"as\", \"async\", \"from\", \"get\", \"of\", \"set\"]);\nconst NEWLINE$1 = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\nconst BRACKET = /^[()[\\]{}]$/;\nlet tokenize;\nconst JSX_TAG = /^[a-z][\\w-]*$/i;\nconst getTokenType = function (token, offset, text) {\n if (token.type === \"name\") {\n const tokenValue = token.value;\n if (helperValidatorIdentifier.isKeyword(tokenValue) || helperValidatorIdentifier.isStrictReservedWord(tokenValue, true) || sometimesKeywords.has(tokenValue)) {\n return \"keyword\";\n }\n if (JSX_TAG.test(tokenValue) && (text[offset - 1] === \"<\" || text.slice(offset - 2, offset) === \"</\")) {\n return \"jsxIdentifier\";\n }\n const firstChar = String.fromCodePoint(tokenValue.codePointAt(0));\n if (firstChar !== firstChar.toLowerCase()) {\n return \"capitalized\";\n }\n }\n if (token.type === \"punctuator\" && BRACKET.test(token.value)) {\n return \"bracket\";\n }\n if (token.type === \"invalid\" && (token.value === \"@\" || token.value === \"#\")) {\n return \"punctuator\";\n }\n return token.type;\n};\ntokenize = function* (text) {\n let match;\n while (match = jsTokens.default.exec(text)) {\n const token = jsTokens.matchToToken(match);\n yield {\n type: getTokenType(token, match.index, text),\n value: token.value\n };\n }\n};\nfunction highlight(text) {\n if (text === \"\") return \"\";\n const defs = getDefs(true);\n let highlighted = \"\";\n for (const {\n type,\n value\n } of tokenize(text)) {\n if (type in defs) {\n highlighted += value.split(NEWLINE$1).map(str => defs[type](str)).join(\"\\n\");\n } else {\n highlighted += value;\n }\n }\n return highlighted;\n}\n\nlet deprecationWarningShown = false;\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\nfunction getMarkerLines(loc, source, opts, startLineBaseZero) {\n const startLoc = Object.assign({\n column: 0,\n line: -1\n }, loc.start);\n const endLoc = Object.assign({}, startLoc, loc.end);\n const {\n linesAbove = 2,\n linesBelow = 3\n } = opts || {};\n const startLine = startLoc.line - startLineBaseZero;\n const startColumn = startLoc.column;\n const endLine = endLoc.line - startLineBaseZero;\n const endColumn = endLoc.column;\n let start = Math.max(startLine - (linesAbove + 1), 0);\n let end = Math.min(source.length, endLine + linesBelow);\n if (startLine === -1) {\n start = 0;\n }\n if (endLine === -1) {\n end = source.length;\n }\n const lineDiff = endLine - startLine;\n const markerLines = {};\n if (lineDiff) {\n for (let i = 0; i <= lineDiff; i++) {\n const lineNumber = i + startLine;\n if (!startColumn) {\n markerLines[lineNumber] = true;\n } else if (i === 0) {\n const sourceLength = source[lineNumber - 1].length;\n markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];\n } else if (i === lineDiff) {\n markerLines[lineNumber] = [0, endColumn];\n } else {\n const sourceLength = source[lineNumber - i].length;\n markerLines[lineNumber] = [0, sourceLength];\n }\n }\n } else {\n if (startColumn === endColumn) {\n if (startColumn) {\n markerLines[startLine] = [startColumn, 0];\n } else {\n markerLines[startLine] = true;\n }\n } else {\n markerLines[startLine] = [startColumn, endColumn - startColumn];\n }\n }\n return {\n start,\n end,\n markerLines\n };\n}\nfunction codeFrameColumns(rawLines, loc, opts = {}) {\n const shouldHighlight = opts.forceColor || isColorSupported() && opts.highlightCode;\n const startLineBaseZero = (opts.startLine || 1) - 1;\n const defs = getDefs(shouldHighlight);\n const lines = rawLines.split(NEWLINE);\n const {\n start,\n end,\n markerLines\n } = getMarkerLines(loc, lines, opts, startLineBaseZero);\n const hasColumns = loc.start && typeof loc.start.column === \"number\";\n const numberMaxWidth = String(end + startLineBaseZero).length;\n const highlightedLines = shouldHighlight ? highlight(rawLines) : rawLines;\n let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => {\n const number = start + 1 + index;\n const paddedNumber = ` ${number + startLineBaseZero}`.slice(-numberMaxWidth);\n const gutter = ` ${paddedNumber} |`;\n const hasMarker = markerLines[number];\n const lastMarkerLine = !markerLines[number + 1];\n if (hasMarker) {\n let markerLine = \"\";\n if (Array.isArray(hasMarker)) {\n const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\\t]/g, \" \");\n const numberOfMarkers = hasMarker[1] || 1;\n markerLine = [\"\\n \", defs.gutter(gutter.replace(/\\d/g, \" \")), \" \", markerSpacing, defs.marker(\"^\").repeat(numberOfMarkers)].join(\"\");\n if (lastMarkerLine && opts.message) {\n markerLine += \" \" + defs.message(opts.message);\n }\n }\n return [defs.marker(\">\"), defs.gutter(gutter), line.length > 0 ? ` ${line}` : \"\", markerLine].join(\"\");\n } else {\n return ` ${defs.gutter(gutter)}${line.length > 0 ? ` ${line}` : \"\"}`;\n }\n }).join(\"\\n\");\n if (opts.message && !hasColumns) {\n frame = `${\" \".repeat(numberMaxWidth + 1)}${opts.message}\\n${frame}`;\n }\n if (shouldHighlight) {\n return defs.reset(frame);\n } else {\n return frame;\n }\n}\nfunction index (rawLines, lineNumber, colNumber, opts = {}) {\n if (!deprecationWarningShown) {\n deprecationWarningShown = true;\n const message = \"Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.\";\n if (process.emitWarning) {\n process.emitWarning(message, \"DeprecationWarning\");\n } else {\n const deprecationError = new Error(message);\n deprecationError.name = \"DeprecationWarning\";\n console.warn(new Error(message));\n }\n }\n colNumber = Math.max(colNumber, 0);\n const location = {\n start: {\n column: colNumber,\n line: lineNumber\n }\n };\n return codeFrameColumns(rawLines, location, opts);\n}\n\nexports.codeFrameColumns = codeFrameColumns;\nexports.default = index;\nexports.highlight = highlight;\n//# sourceMappingURL=index.js.map\n","const getOffsets = ({\n\toneBased,\n\toneBasedLine = oneBased,\n\toneBasedColumn = oneBased,\n} = {}) => [oneBasedLine ? 1 : 0, oneBasedColumn ? 1 : 0];\n\n// Performance https://github.com/sindresorhus/index-to-position/pull/9\nfunction getPosition(text, textIndex, options) {\n\tconst lineBreakBefore = textIndex === 0 ? -1 : text.lastIndexOf('\\n', textIndex - 1);\n\tconst [lineOffset, columnOffset] = getOffsets(options);\n\treturn {\n\t\tline: lineBreakBefore === -1\n\t\t\t? lineOffset\n\t\t\t: text.slice(0, lineBreakBefore + 1).match(/\\n/g).length + lineOffset,\n\t\tcolumn: textIndex - lineBreakBefore - 1 + columnOffset,\n\t};\n}\n\nexport default function indexToPosition(text, textIndex, options) {\n\tif (typeof text !== 'string') {\n\t\tthrow new TypeError('Text parameter should be a string');\n\t}\n\n\tif (!Number.isInteger(textIndex)) {\n\t\tthrow new TypeError('Index parameter should be an integer');\n\t}\n\n\tif (textIndex < 0 || textIndex > text.length) {\n\t\tthrow new RangeError('Index out of bounds');\n\t}\n\n\treturn getPosition(text, textIndex, options);\n}\n","import {codeFrameColumns} from '@babel/code-frame';\nimport indexToPosition from 'index-to-position';\n\nconst getCodePoint = character => `\\\\u{${character.codePointAt(0).toString(16)}}`;\n\nexport class JSONError extends Error {\n\tname = 'JSONError';\n\tfileName;\n\t#input;\n\t#jsonParseError;\n\t#message;\n\t#codeFrame;\n\t#rawCodeFrame;\n\n\tconstructor(messageOrOptions) {\n\t\t// JSONError constructor used accept string\n\t\t// TODO[>=9]: Remove this `if` on next major version\n\t\tif (typeof messageOrOptions === 'string') {\n\t\t\tsuper();\n\t\t\tthis.#message = messageOrOptions;\n\t\t} else {\n\t\t\tconst {jsonParseError, fileName, input} = messageOrOptions;\n\t\t\t// We cannot pass message to `super()`, otherwise the message accessor will be overridden.\n\t\t\t// https://262.ecma-international.org/14.0/#sec-error-message\n\t\t\tsuper(undefined, {cause: jsonParseError});\n\n\t\t\tthis.#input = input;\n\t\t\tthis.#jsonParseError = jsonParseError;\n\t\t\tthis.fileName = fileName;\n\t\t}\n\n\t\tError.captureStackTrace?.(this, JSONError);\n\t}\n\n\tget message() {\n\t\tthis.#message ??= `${addCodePointToUnexpectedToken(this.#jsonParseError.message)}${this.#input === '' ? ' while parsing empty string' : ''}`;\n\n\t\tconst {codeFrame} = this;\n\t\treturn `${this.#message}${this.fileName ? ` in ${this.fileName}` : ''}${codeFrame ? `\\n\\n${codeFrame}\\n` : ''}`;\n\t}\n\n\tset message(message) {\n\t\tthis.#message = message;\n\t}\n\n\t#getCodeFrame(highlightCode) {\n\t\t// TODO[>=9]: Remove this `if` on next major version\n\t\tif (!this.#jsonParseError) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst input = this.#input;\n\n\t\tconst location = getErrorLocation(input, this.#jsonParseError.message);\n\t\tif (!location) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn codeFrameColumns(input, {start: location}, {highlightCode});\n\t}\n\n\tget codeFrame() {\n\t\tthis.#codeFrame ??= this.#getCodeFrame(/* highlightCode */ true);\n\t\treturn this.#codeFrame;\n\t}\n\n\tget rawCodeFrame() {\n\t\tthis.#rawCodeFrame ??= this.#getCodeFrame(/* highlightCode */ false);\n\t\treturn this.#rawCodeFrame;\n\t}\n}\n\nconst getErrorLocation = (string, message) => {\n\tconst match = message.match(/in JSON at position (?<index>\\d+)(?: \\(line (?<line>\\d+) column (?<column>\\d+)\\))?$/);\n\n\tif (!match) {\n\t\treturn;\n\t}\n\n\tconst {index, line, column} = match.groups;\n\n\tif (line && column) {\n\t\treturn {line: Number(line), column: Number(column)};\n\t}\n\n\treturn indexToPosition(string, Number(index), {oneBased: true});\n};\n\nconst addCodePointToUnexpectedToken = message => message.replace(\n\t// TODO[engine:node@>=20]: The token always quoted after Node.js 20\n\t/(?<=^Unexpected token )(?<quote>')?(.)\\k<quote>/,\n\t(_, _quote, token) => `\"${token}\"(${getCodePoint(token)})`,\n);\n\nexport default function parseJson(string, reviver, fileName) {\n\tif (typeof reviver === 'string') {\n\t\tfileName = reviver;\n\t\treviver = undefined;\n\t}\n\n\ttry {\n\t\treturn JSON.parse(string, reviver);\n\t} catch (error) {\n\t\tthrow new JSONError({\n\t\t\tjsonParseError: error,\n\t\t\tfileName,\n\t\t\tinput: string,\n\t\t});\n\t}\n}\n","","","","'use strict'\n\nvar licenses = []\n .concat(require('spdx-license-ids'))\n .concat(require('spdx-license-ids/deprecated'))\nvar exceptions = require('spdx-exceptions')\n\nmodule.exports = function (source) {\n var index = 0\n\n function hasMore () {\n return index < source.length\n }\n\n // `value` can be a regexp or a string.\n // If it is recognized, the matching source string is returned and\n // the index is incremented. Otherwise `undefined` is returned.\n function read (value) {\n if (value instanceof RegExp) {\n var chars = source.slice(index)\n var match = chars.match(value)\n if (match) {\n index += match[0].length\n return match[0]\n }\n } else {\n if (source.indexOf(value, index) === index) {\n index += value.length\n return value\n }\n }\n }\n\n function skipWhitespace () {\n read(/[ ]*/)\n }\n\n function operator () {\n var string\n var possibilities = ['WITH', 'AND', 'OR', '(', ')', ':', '+']\n for (var i = 0; i < possibilities.length; i++) {\n string = read(possibilities[i])\n if (string) {\n break\n }\n }\n\n if (string === '+' && index > 1 && source[index - 2] === ' ') {\n throw new Error('Space before `+`')\n }\n\n return string && {\n type: 'OPERATOR',\n string: string\n }\n }\n\n function idstring () {\n return read(/[A-Za-z0-9-.]+/)\n }\n\n function expectIdstring () {\n var string = idstring()\n if (!string) {\n throw new Error('Expected idstring at offset ' + index)\n }\n return string\n }\n\n function documentRef () {\n if (read('DocumentRef-')) {\n var string = expectIdstring()\n return { type: 'DOCUMENTREF', string: string }\n }\n }\n\n function licenseRef () {\n if (read('LicenseRef-')) {\n var string = expectIdstring()\n return { type: 'LICENSEREF', string: string }\n }\n }\n\n function identifier () {\n var begin = index\n var string = idstring()\n\n if (licenses.indexOf(string) !== -1) {\n return {\n type: 'LICENSE',\n string: string\n }\n } else if (exceptions.indexOf(string) !== -1) {\n return {\n type: 'EXCEPTION',\n string: string\n }\n }\n\n index = begin\n }\n\n // Tries to read the next token. Returns `undefined` if no token is\n // recognized.\n function parseToken () {\n // Ordering matters\n return (\n operator() ||\n documentRef() ||\n licenseRef() ||\n identifier()\n )\n }\n\n var tokens = []\n while (hasMore()) {\n skipWhitespace()\n if (!hasMore()) {\n break\n }\n\n var token = parseToken()\n if (!token) {\n throw new Error('Unexpected `' + source[index] +\n '` at offset ' + index)\n }\n\n tokens.push(token)\n }\n return tokens\n}\n","'use strict'\n\n// The ABNF grammar in the spec is totally ambiguous.\n//\n// This parser follows the operator precedence defined in the\n// `Order of Precedence and Parentheses` section.\n\nmodule.exports = function (tokens) {\n var index = 0\n\n function hasMore () {\n return index < tokens.length\n }\n\n function token () {\n return hasMore() ? tokens[index] : null\n }\n\n function next () {\n if (!hasMore()) {\n throw new Error()\n }\n index++\n }\n\n function parseOperator (operator) {\n var t = token()\n if (t && t.type === 'OPERATOR' && operator === t.string) {\n next()\n return t.string\n }\n }\n\n function parseWith () {\n if (parseOperator('WITH')) {\n var t = token()\n if (t && t.type === 'EXCEPTION') {\n next()\n return t.string\n }\n throw new Error('Expected exception after `WITH`')\n }\n }\n\n function parseLicenseRef () {\n // TODO: Actually, everything is concatenated into one string\n // for backward-compatibility but it could be better to return\n // a nice structure.\n var begin = index\n var string = ''\n var t = token()\n if (t.type === 'DOCUMENTREF') {\n next()\n string += 'DocumentRef-' + t.string + ':'\n if (!parseOperator(':')) {\n throw new Error('Expected `:` after `DocumentRef-...`')\n }\n }\n t = token()\n if (t.type === 'LICENSEREF') {\n next()\n string += 'LicenseRef-' + t.string\n return { license: string }\n }\n index = begin\n }\n\n function parseLicense () {\n var t = token()\n if (t && t.type === 'LICENSE') {\n next()\n var node = { license: t.string }\n if (parseOperator('+')) {\n node.plus = true\n }\n var exception = parseWith()\n if (exception) {\n node.exception = exception\n }\n return node\n }\n }\n\n function parseParenthesizedExpression () {\n var left = parseOperator('(')\n if (!left) {\n return\n }\n\n var expr = parseExpression()\n\n if (!parseOperator(')')) {\n throw new Error('Expected `)`')\n }\n\n return expr\n }\n\n function parseAtom () {\n return (\n parseParenthesizedExpression() ||\n parseLicenseRef() ||\n parseLicense()\n )\n }\n\n function makeBinaryOpParser (operator, nextParser) {\n return function parseBinaryOp () {\n var left = nextParser()\n if (!left) {\n return\n }\n\n if (!parseOperator(operator)) {\n return left\n }\n\n var right = parseBinaryOp()\n if (!right) {\n throw new Error('Expected expression')\n }\n return {\n left: left,\n conjunction: operator.toLowerCase(),\n right: right\n }\n }\n }\n\n var parseAnd = makeBinaryOpParser('AND', parseAtom)\n var parseExpression = makeBinaryOpParser('OR', parseAnd)\n\n var node = parseExpression()\n if (!node || hasMore()) {\n throw new Error('Syntax error')\n }\n return node\n}\n","'use strict'\n\nvar scan = require('./scan')\nvar parse = require('./parse')\n\nmodule.exports = function (source) {\n return parse(scan(source))\n}\n","/*\nCopyright spdx-correct.js contributors\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar parse = require('spdx-expression-parse')\nvar spdxLicenseIds = require('spdx-license-ids')\n\nfunction valid (string) {\n try {\n parse(string)\n return true\n } catch (error) {\n return false\n }\n}\n\n// Sorting function that orders the given array of transpositions such\n// that a transposition with the longer pattern comes before a transposition\n// with a shorter pattern. This is to prevent e.g. the transposition\n// [\"General Public License\", \"GPL\"] from matching to \"Lesser General Public License\"\n// before a longer and more accurate transposition [\"Lesser General Public License\", \"LGPL\"]\n// has a chance to be recognized.\nfunction sortTranspositions(a, b) {\n var length = b[0].length - a[0].length\n if (length !== 0) return length\n return a[0].toUpperCase().localeCompare(b[0].toUpperCase())\n}\n\n// Common transpositions of license identifier acronyms\nvar transpositions = [\n ['APGL', 'AGPL'],\n ['Gpl', 'GPL'],\n ['GLP', 'GPL'],\n ['APL', 'Apache'],\n ['ISD', 'ISC'],\n ['GLP', 'GPL'],\n ['IST', 'ISC'],\n ['Claude', 'Clause'],\n [' or later', '+'],\n [' International', ''],\n ['GNU', 'GPL'],\n ['GUN', 'GPL'],\n ['+', ''],\n ['GNU GPL', 'GPL'],\n ['GNU LGPL', 'LGPL'],\n ['GNU/GPL', 'GPL'],\n ['GNU GLP', 'GPL'],\n ['GNU LESSER GENERAL PUBLIC LICENSE', 'LGPL'],\n ['GNU Lesser General Public License', 'LGPL'],\n ['GNU LESSER GENERAL PUBLIC LICENSE', 'LGPL-2.1'],\n ['GNU Lesser General Public License', 'LGPL-2.1'],\n ['LESSER GENERAL PUBLIC LICENSE', 'LGPL'],\n ['Lesser General Public License', 'LGPL'],\n ['LESSER GENERAL PUBLIC LICENSE', 'LGPL-2.1'],\n ['Lesser General Public License', 'LGPL-2.1'],\n ['GNU General Public License', 'GPL'],\n ['Gnu public license', 'GPL'],\n ['GNU Public License', 'GPL'],\n ['GNU GENERAL PUBLIC LICENSE', 'GPL'],\n ['MTI', 'MIT'],\n ['Mozilla Public License', 'MPL'],\n ['Universal Permissive License', 'UPL'],\n ['WTH', 'WTF'],\n ['WTFGPL', 'WTFPL'],\n ['-License', '']\n].sort(sortTranspositions)\n\nvar TRANSPOSED = 0\nvar CORRECT = 1\n\n// Simple corrections to nearly valid identifiers.\nvar transforms = [\n // e.g. 'mit'\n function (argument) {\n return argument.toUpperCase()\n },\n // e.g. 'MIT '\n function (argument) {\n return argument.trim()\n },\n // e.g. 'M.I.T.'\n function (argument) {\n return argument.replace(/\\./g, '')\n },\n // e.g. 'Apache- 2.0'\n function (argument) {\n return argument.replace(/\\s+/g, '')\n },\n // e.g. 'CC BY 4.0''\n function (argument) {\n return argument.replace(/\\s+/g, '-')\n },\n // e.g. 'LGPLv2.1'\n function (argument) {\n return argument.replace('v', '-')\n },\n // e.g. 'Apache 2.0'\n function (argument) {\n return argument.replace(/,?\\s*(\\d)/, '-$1')\n },\n // e.g. 'GPL 2'\n function (argument) {\n return argument.replace(/,?\\s*(\\d)/, '-$1.0')\n },\n // e.g. 'Apache Version 2.0'\n function (argument) {\n return argument\n .replace(/,?\\s*(V\\.|v\\.|V|v|Version|version)\\s*(\\d)/, '-$2')\n },\n // e.g. 'Apache Version 2'\n function (argument) {\n return argument\n .replace(/,?\\s*(V\\.|v\\.|V|v|Version|version)\\s*(\\d)/, '-$2.0')\n },\n // e.g. 'ZLIB'\n function (argument) {\n return argument[0].toUpperCase() + argument.slice(1)\n },\n // e.g. 'MPL/2.0'\n function (argument) {\n return argument.replace('/', '-')\n },\n // e.g. 'Apache 2'\n function (argument) {\n return argument\n .replace(/\\s*V\\s*(\\d)/, '-$1')\n .replace(/(\\d)$/, '$1.0')\n },\n // e.g. 'GPL-2.0', 'GPL-3.0'\n function (argument) {\n if (argument.indexOf('3.0') !== -1) {\n return argument + '-or-later'\n } else {\n return argument + '-only'\n }\n },\n // e.g. 'GPL-2.0-'\n function (argument) {\n return argument + 'only'\n },\n // e.g. 'GPL2'\n function (argument) {\n return argument.replace(/(\\d)$/, '-$1.0')\n },\n // e.g. 'BSD 3'\n function (argument) {\n return argument.replace(/(-| )?(\\d)$/, '-$2-Clause')\n },\n // e.g. 'BSD clause 3'\n function (argument) {\n return argument.replace(/(-| )clause(-| )(\\d)/, '-$3-Clause')\n },\n // e.g. 'New BSD license'\n function (argument) {\n return argument.replace(/\\b(Modified|New|Revised)(-| )?BSD((-| )License)?/i, 'BSD-3-Clause')\n },\n // e.g. 'Simplified BSD license'\n function (argument) {\n return argument.replace(/\\bSimplified(-| )?BSD((-| )License)?/i, 'BSD-2-Clause')\n },\n // e.g. 'Free BSD license'\n function (argument) {\n return argument.replace(/\\b(Free|Net)(-| )?BSD((-| )License)?/i, 'BSD-2-Clause-$1BSD')\n },\n // e.g. 'Clear BSD license'\n function (argument) {\n return argument.replace(/\\bClear(-| )?BSD((-| )License)?/i, 'BSD-3-Clause-Clear')\n },\n // e.g. 'Old BSD License'\n function (argument) {\n return argument.replace(/\\b(Old|Original)(-| )?BSD((-| )License)?/i, 'BSD-4-Clause')\n },\n // e.g. 'BY-NC-4.0'\n function (argument) {\n return 'CC-' + argument\n },\n // e.g. 'BY-NC'\n function (argument) {\n return 'CC-' + argument + '-4.0'\n },\n // e.g. 'Attribution-NonCommercial'\n function (argument) {\n return argument\n .replace('Attribution', 'BY')\n .replace('NonCommercial', 'NC')\n .replace('NoDerivatives', 'ND')\n .replace(/ (\\d)/, '-$1')\n .replace(/ ?International/, '')\n },\n // e.g. 'Attribution-NonCommercial'\n function (argument) {\n return 'CC-' +\n argument\n .replace('Attribution', 'BY')\n .replace('NonCommercial', 'NC')\n .replace('NoDerivatives', 'ND')\n .replace(/ (\\d)/, '-$1')\n .replace(/ ?International/, '') +\n '-4.0'\n }\n]\n\nvar licensesWithVersions = spdxLicenseIds\n .map(function (id) {\n var match = /^(.*)-\\d+\\.\\d+$/.exec(id)\n return match\n ? [match[0], match[1]]\n : [id, null]\n })\n .reduce(function (objectMap, item) {\n var key = item[1]\n objectMap[key] = objectMap[key] || []\n objectMap[key].push(item[0])\n return objectMap\n }, {})\n\nvar licensesWithOneVersion = Object.keys(licensesWithVersions)\n .map(function makeEntries (key) {\n return [key, licensesWithVersions[key]]\n })\n .filter(function identifySoleVersions (item) {\n return (\n // Licenses has just one valid version suffix.\n item[1].length === 1 &&\n item[0] !== null &&\n // APL will be considered Apache, rather than APL-1.0\n item[0] !== 'APL'\n )\n })\n .map(function createLastResorts (item) {\n return [item[0], item[1][0]]\n })\n\nlicensesWithVersions = undefined\n\n// If all else fails, guess that strings containing certain substrings\n// meant to identify certain licenses.\nvar lastResorts = [\n ['UNLI', 'Unlicense'],\n ['WTF', 'WTFPL'],\n ['2 CLAUSE', 'BSD-2-Clause'],\n ['2-CLAUSE', 'BSD-2-Clause'],\n ['3 CLAUSE', 'BSD-3-Clause'],\n ['3-CLAUSE', 'BSD-3-Clause'],\n ['AFFERO', 'AGPL-3.0-or-later'],\n ['AGPL', 'AGPL-3.0-or-later'],\n ['APACHE', 'Apache-2.0'],\n ['ARTISTIC', 'Artistic-2.0'],\n ['Affero', 'AGPL-3.0-or-later'],\n ['BEER', 'Beerware'],\n ['BOOST', 'BSL-1.0'],\n ['BSD', 'BSD-2-Clause'],\n ['CDDL', 'CDDL-1.1'],\n ['ECLIPSE', 'EPL-1.0'],\n ['FUCK', 'WTFPL'],\n ['GNU', 'GPL-3.0-or-later'],\n ['LGPL', 'LGPL-3.0-or-later'],\n ['GPLV1', 'GPL-1.0-only'],\n ['GPL-1', 'GPL-1.0-only'],\n ['GPLV2', 'GPL-2.0-only'],\n ['GPL-2', 'GPL-2.0-only'],\n ['GPL', 'GPL-3.0-or-later'],\n ['MIT +NO-FALSE-ATTRIBS', 'MITNFA'],\n ['MIT', 'MIT'],\n ['MPL', 'MPL-2.0'],\n ['X11', 'X11'],\n ['ZLIB', 'Zlib']\n].concat(licensesWithOneVersion).sort(sortTranspositions)\n\nvar SUBSTRING = 0\nvar IDENTIFIER = 1\n\nvar validTransformation = function (identifier) {\n for (var i = 0; i < transforms.length; i++) {\n var transformed = transforms[i](identifier).trim()\n if (transformed !== identifier && valid(transformed)) {\n return transformed\n }\n }\n return null\n}\n\nvar validLastResort = function (identifier) {\n var upperCased = identifier.toUpperCase()\n for (var i = 0; i < lastResorts.length; i++) {\n var lastResort = lastResorts[i]\n if (upperCased.indexOf(lastResort[SUBSTRING]) > -1) {\n return lastResort[IDENTIFIER]\n }\n }\n return null\n}\n\nvar anyCorrection = function (identifier, check) {\n for (var i = 0; i < transpositions.length; i++) {\n var transposition = transpositions[i]\n var transposed = transposition[TRANSPOSED]\n if (identifier.indexOf(transposed) > -1) {\n var corrected = identifier.replace(\n transposed,\n transposition[CORRECT]\n )\n var checked = check(corrected)\n if (checked !== null) {\n return checked\n }\n }\n }\n return null\n}\n\nmodule.exports = function (identifier, options) {\n options = options || {}\n var upgrade = options.upgrade === undefined ? true : !!options.upgrade\n function postprocess (value) {\n return upgrade ? upgradeGPLs(value) : value\n }\n var validArugment = (\n typeof identifier === 'string' &&\n identifier.trim().length !== 0\n )\n if (!validArugment) {\n throw Error('Invalid argument. Expected non-empty string.')\n }\n identifier = identifier.trim()\n if (valid(identifier)) {\n return postprocess(identifier)\n }\n var noPlus = identifier.replace(/\\+$/, '').trim()\n if (valid(noPlus)) {\n return postprocess(noPlus)\n }\n var transformed = validTransformation(identifier)\n if (transformed !== null) {\n return postprocess(transformed)\n }\n transformed = anyCorrection(identifier, function (argument) {\n if (valid(argument)) {\n return argument\n }\n return validTransformation(argument)\n })\n if (transformed !== null) {\n return postprocess(transformed)\n }\n transformed = validLastResort(identifier)\n if (transformed !== null) {\n return postprocess(transformed)\n }\n transformed = anyCorrection(identifier, validLastResort)\n if (transformed !== null) {\n return postprocess(transformed)\n }\n return null\n}\n\nfunction upgradeGPLs (value) {\n if ([\n 'GPL-1.0', 'LGPL-1.0', 'AGPL-1.0',\n 'GPL-2.0', 'LGPL-2.0', 'AGPL-2.0',\n 'LGPL-2.1'\n ].indexOf(value) !== -1) {\n return value + '-only'\n } else if ([\n 'GPL-1.0+', 'GPL-2.0+', 'GPL-3.0+',\n 'LGPL-2.0+', 'LGPL-2.1+', 'LGPL-3.0+',\n 'AGPL-1.0+', 'AGPL-3.0+'\n ].indexOf(value) !== -1) {\n return value.replace(/\\+$/, '-or-later')\n } else if (['GPL-3.0', 'LGPL-3.0', 'AGPL-3.0'].indexOf(value) !== -1) {\n return value + '-or-later'\n } else {\n return value\n }\n}\n","var parse = require('spdx-expression-parse');\nvar correct = require('spdx-correct');\n\nvar genericWarning = (\n 'license should be ' +\n 'a valid SPDX license expression (without \"LicenseRef\"), ' +\n '\"UNLICENSED\", or ' +\n '\"SEE LICENSE IN <filename>\"'\n);\n\nvar fileReferenceRE = /^SEE LICEN[CS]E IN (.+)$/;\n\nfunction startsWith(prefix, string) {\n return string.slice(0, prefix.length) === prefix;\n}\n\nfunction usesLicenseRef(ast) {\n if (ast.hasOwnProperty('license')) {\n var license = ast.license;\n return (\n startsWith('LicenseRef', license) ||\n startsWith('DocumentRef', license)\n );\n } else {\n return (\n usesLicenseRef(ast.left) ||\n usesLicenseRef(ast.right)\n );\n }\n}\n\nmodule.exports = function(argument) {\n var ast;\n\n try {\n ast = parse(argument);\n } catch (e) {\n var match\n if (\n argument === 'UNLICENSED' ||\n argument === 'UNLICENCED'\n ) {\n return {\n validForOldPackages: true,\n validForNewPackages: true,\n unlicensed: true\n };\n } else if (match = fileReferenceRE.exec(argument)) {\n return {\n validForOldPackages: true,\n validForNewPackages: true,\n inFile: match[1]\n };\n } else {\n var result = {\n validForOldPackages: false,\n validForNewPackages: false,\n warnings: [genericWarning]\n };\n if (argument.trim().length !== 0) {\n var corrected = correct(argument);\n if (corrected) {\n result.warnings.push(\n 'license is similar to the valid expression \"' + corrected + '\"'\n );\n }\n }\n return result;\n }\n }\n\n if (usesLicenseRef(ast)) {\n return {\n validForNewPackages: false,\n validForOldPackages: false,\n spdx: true,\n warnings: [genericWarning]\n };\n } else {\n return {\n validForNewPackages: true,\n validForOldPackages: true,\n spdx: true\n };\n }\n};\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0});exports.LRUCache=void 0;var x=typeof performance==\"object\"&&performance&&typeof performance.now==\"function\"?performance:Date,U=new Set,R=typeof process==\"object\"&&process?process:{},I=(a,t,e,i)=>{typeof R.emitWarning==\"function\"?R.emitWarning(a,t,e,i):console.error(`[${e}] ${t}: ${a}`)},C=globalThis.AbortController,L=globalThis.AbortSignal;if(typeof C>\"u\"){L=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(i,s){this._onabort.push(s)}},C=class{constructor(){t()}signal=new L;abort(i){if(!this.signal.aborted){this.signal.reason=i,this.signal.aborted=!0;for(let s of this.signal._onabort)s(i);this.signal.onabort?.(i)}}};let a=R.env?.LRU_CACHE_IGNORE_AC_WARNING!==\"1\",t=()=>{a&&(a=!1,I(\"AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.\",\"NO_ABORT_CONTROLLER\",\"ENOTSUP\",t))}}var G=a=>!U.has(a),H=Symbol(\"type\"),y=a=>a&&a===Math.floor(a)&&a>0&&isFinite(a),M=a=>y(a)?a<=Math.pow(2,8)?Uint8Array:a<=Math.pow(2,16)?Uint16Array:a<=Math.pow(2,32)?Uint32Array:a<=Number.MAX_SAFE_INTEGER?z:null:null,z=class extends Array{constructor(t){super(t),this.fill(0)}},W=class a{heap;length;static#o=!1;static create(t){let e=M(t);if(!e)return[];a.#o=!0;let i=new a(t,e);return a.#o=!1,i}constructor(t,e){if(!a.#o)throw new TypeError(\"instantiate Stack using Stack.create(n)\");this.heap=new e(t),this.length=0}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}},D=class a{#o;#c;#w;#C;#S;#L;#U;#m;get perf(){return this.#m}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#n;#_;#s;#i;#t;#a;#u;#l;#h;#b;#r;#y;#A;#d;#g;#T;#v;#f;#I;static unsafeExposeInternals(t){return{starts:t.#A,ttls:t.#d,autopurgeTimers:t.#g,sizes:t.#y,keyMap:t.#s,keyList:t.#i,valList:t.#t,next:t.#a,prev:t.#u,get head(){return t.#l},get tail(){return t.#h},free:t.#b,isBackgroundFetch:e=>t.#e(e),backgroundFetch:(e,i,s,h)=>t.#G(e,i,s,h),moveToTail:e=>t.#D(e),indexes:e=>t.#F(e),rindexes:e=>t.#O(e),isStale:e=>t.#p(e)}}get max(){return this.#o}get maxSize(){return this.#c}get calculatedSize(){return this.#_}get size(){return this.#n}get fetchMethod(){return this.#L}get memoMethod(){return this.#U}get dispose(){return this.#w}get onInsert(){return this.#C}get disposeAfter(){return this.#S}constructor(t){let{max:e=0,ttl:i,ttlResolution:s=1,ttlAutopurge:h,updateAgeOnGet:n,updateAgeOnHas:o,allowStale:r,dispose:f,onInsert:m,disposeAfter:c,noDisposeOnSet:d,noUpdateTTL:g,maxSize:A=0,maxEntrySize:p=0,sizeCalculation:_,fetchMethod:l,memoMethod:w,noDeleteOnFetchRejection:b,noDeleteOnStaleGet:S,allowStaleOnFetchRejection:u,allowStaleOnFetchAbort:T,ignoreFetchAbort:F,perf:v}=t;if(v!==void 0&&typeof v?.now!=\"function\")throw new TypeError(\"perf option must have a now() method if specified\");if(this.#m=v??x,e!==0&&!y(e))throw new TypeError(\"max option must be a nonnegative integer\");let O=e?M(e):Array;if(!O)throw new Error(\"invalid max value: \"+e);if(this.#o=e,this.#c=A,this.maxEntrySize=p||this.#c,this.sizeCalculation=_,this.sizeCalculation){if(!this.#c&&!this.maxEntrySize)throw new TypeError(\"cannot set sizeCalculation without setting maxSize or maxEntrySize\");if(typeof this.sizeCalculation!=\"function\")throw new TypeError(\"sizeCalculation set to non-function\")}if(w!==void 0&&typeof w!=\"function\")throw new TypeError(\"memoMethod must be a function if defined\");if(this.#U=w,l!==void 0&&typeof l!=\"function\")throw new TypeError(\"fetchMethod must be a function if specified\");if(this.#L=l,this.#v=!!l,this.#s=new Map,this.#i=new Array(e).fill(void 0),this.#t=new Array(e).fill(void 0),this.#a=new O(e),this.#u=new O(e),this.#l=0,this.#h=0,this.#b=W.create(e),this.#n=0,this.#_=0,typeof f==\"function\"&&(this.#w=f),typeof m==\"function\"&&(this.#C=m),typeof c==\"function\"?(this.#S=c,this.#r=[]):(this.#S=void 0,this.#r=void 0),this.#T=!!this.#w,this.#I=!!this.#C,this.#f=!!this.#S,this.noDisposeOnSet=!!d,this.noUpdateTTL=!!g,this.noDeleteOnFetchRejection=!!b,this.allowStaleOnFetchRejection=!!u,this.allowStaleOnFetchAbort=!!T,this.ignoreFetchAbort=!!F,this.maxEntrySize!==0){if(this.#c!==0&&!y(this.#c))throw new TypeError(\"maxSize must be a positive integer if specified\");if(!y(this.maxEntrySize))throw new TypeError(\"maxEntrySize must be a positive integer if specified\");this.#B()}if(this.allowStale=!!r,this.noDeleteOnStaleGet=!!S,this.updateAgeOnGet=!!n,this.updateAgeOnHas=!!o,this.ttlResolution=y(s)||s===0?s:1,this.ttlAutopurge=!!h,this.ttl=i||0,this.ttl){if(!y(this.ttl))throw new TypeError(\"ttl must be a positive integer if specified\");this.#j()}if(this.#o===0&&this.ttl===0&&this.#c===0)throw new TypeError(\"At least one of max, maxSize, or ttl is required\");if(!this.ttlAutopurge&&!this.#o&&!this.#c){let E=\"LRU_CACHE_UNBOUNDED\";G(E)&&(U.add(E),I(\"TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.\",\"UnboundedCacheWarning\",E,a))}}getRemainingTTL(t){return this.#s.has(t)?1/0:0}#j(){let t=new z(this.#o),e=new z(this.#o);this.#d=t,this.#A=e;let i=this.ttlAutopurge?new Array(this.#o):void 0;this.#g=i,this.#N=(n,o,r=this.#m.now())=>{if(e[n]=o!==0?r:0,t[n]=o,i?.[n]&&(clearTimeout(i[n]),i[n]=void 0),o!==0&&i){let f=setTimeout(()=>{this.#p(n)&&this.#E(this.#i[n],\"expire\")},o+1);f.unref&&f.unref(),i[n]=f}},this.#R=n=>{e[n]=t[n]!==0?this.#m.now():0},this.#z=(n,o)=>{if(t[o]){let r=t[o],f=e[o];if(!r||!f)return;n.ttl=r,n.start=f,n.now=s||h();let m=n.now-f;n.remainingTTL=r-m}};let s=0,h=()=>{let n=this.#m.now();if(this.ttlResolution>0){s=n;let o=setTimeout(()=>s=0,this.ttlResolution);o.unref&&o.unref()}return n};this.getRemainingTTL=n=>{let o=this.#s.get(n);if(o===void 0)return 0;let r=t[o],f=e[o];if(!r||!f)return 1/0;let m=(s||h())-f;return r-m},this.#p=n=>{let o=e[n],r=t[n];return!!r&&!!o&&(s||h())-o>r}}#R=()=>{};#z=()=>{};#N=()=>{};#p=()=>!1;#B(){let t=new z(this.#o);this.#_=0,this.#y=t,this.#W=e=>{this.#_-=t[e],t[e]=0},this.#P=(e,i,s,h)=>{if(this.#e(i))return 0;if(!y(s))if(h){if(typeof h!=\"function\")throw new TypeError(\"sizeCalculation must be a function\");if(s=h(i,e),!y(s))throw new TypeError(\"sizeCalculation return invalid (expect positive integer)\")}else throw new TypeError(\"invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.\");return s},this.#M=(e,i,s)=>{if(t[e]=i,this.#c){let h=this.#c-t[e];for(;this.#_>h;)this.#x(!0)}this.#_+=t[e],s&&(s.entrySize=i,s.totalCalculatedSize=this.#_)}}#W=t=>{};#M=(t,e,i)=>{};#P=(t,e,i,s)=>{if(i||s)throw new TypeError(\"cannot set size without setting maxSize or maxEntrySize on cache\");return 0};*#F({allowStale:t=this.allowStale}={}){if(this.#n)for(let e=this.#h;!(!this.#H(e)||((t||!this.#p(e))&&(yield e),e===this.#l));)e=this.#u[e]}*#O({allowStale:t=this.allowStale}={}){if(this.#n)for(let e=this.#l;!(!this.#H(e)||((t||!this.#p(e))&&(yield e),e===this.#h));)e=this.#a[e]}#H(t){return t!==void 0&&this.#s.get(this.#i[t])===t}*entries(){for(let t of this.#F())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*rentries(){for(let t of this.#O())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*keys(){for(let t of this.#F()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*rkeys(){for(let t of this.#O()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*values(){for(let t of this.#F())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}*rvalues(){for(let t of this.#O())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]=\"LRUCache\";find(t,e={}){for(let i of this.#F()){let s=this.#t[i],h=this.#e(s)?s.__staleWhileFetching:s;if(h!==void 0&&t(h,this.#i[i],this))return this.get(this.#i[i],e)}}forEach(t,e=this){for(let i of this.#F()){let s=this.#t[i],h=this.#e(s)?s.__staleWhileFetching:s;h!==void 0&&t.call(e,h,this.#i[i],this)}}rforEach(t,e=this){for(let i of this.#O()){let s=this.#t[i],h=this.#e(s)?s.__staleWhileFetching:s;h!==void 0&&t.call(e,h,this.#i[i],this)}}purgeStale(){let t=!1;for(let e of this.#O({allowStale:!0}))this.#p(e)&&(this.#E(this.#i[e],\"expire\"),t=!0);return t}info(t){let e=this.#s.get(t);if(e===void 0)return;let i=this.#t[e],s=this.#e(i)?i.__staleWhileFetching:i;if(s===void 0)return;let h={value:s};if(this.#d&&this.#A){let n=this.#d[e],o=this.#A[e];if(n&&o){let r=n-(this.#m.now()-o);h.ttl=r,h.start=Date.now()}}return this.#y&&(h.size=this.#y[e]),h}dump(){let t=[];for(let e of this.#F({allowStale:!0})){let i=this.#i[e],s=this.#t[e],h=this.#e(s)?s.__staleWhileFetching:s;if(h===void 0||i===void 0)continue;let n={value:h};if(this.#d&&this.#A){n.ttl=this.#d[e];let o=this.#m.now()-this.#A[e];n.start=Math.floor(Date.now()-o)}this.#y&&(n.size=this.#y[e]),t.unshift([i,n])}return t}load(t){this.clear();for(let[e,i]of t){if(i.start){let s=Date.now()-i.start;i.start=this.#m.now()-s}this.set(e,i.value,i)}}set(t,e,i={}){if(e===void 0)return this.delete(t),this;let{ttl:s=this.ttl,start:h,noDisposeOnSet:n=this.noDisposeOnSet,sizeCalculation:o=this.sizeCalculation,status:r}=i,{noUpdateTTL:f=this.noUpdateTTL}=i,m=this.#P(t,e,i.size||0,o);if(this.maxEntrySize&&m>this.maxEntrySize)return r&&(r.set=\"miss\",r.maxEntrySizeExceeded=!0),this.#E(t,\"set\"),this;let c=this.#n===0?void 0:this.#s.get(t);if(c===void 0)c=this.#n===0?this.#h:this.#b.length!==0?this.#b.pop():this.#n===this.#o?this.#x(!1):this.#n,this.#i[c]=t,this.#t[c]=e,this.#s.set(t,c),this.#a[this.#h]=c,this.#u[c]=this.#h,this.#h=c,this.#n++,this.#M(c,m,r),r&&(r.set=\"add\"),f=!1,this.#I&&this.#C?.(e,t,\"add\");else{this.#D(c);let d=this.#t[c];if(e!==d){if(this.#v&&this.#e(d)){d.__abortController.abort(new Error(\"replaced\"));let{__staleWhileFetching:g}=d;g!==void 0&&!n&&(this.#T&&this.#w?.(g,t,\"set\"),this.#f&&this.#r?.push([g,t,\"set\"]))}else n||(this.#T&&this.#w?.(d,t,\"set\"),this.#f&&this.#r?.push([d,t,\"set\"]));if(this.#W(c),this.#M(c,m,r),this.#t[c]=e,r){r.set=\"replace\";let g=d&&this.#e(d)?d.__staleWhileFetching:d;g!==void 0&&(r.oldValue=g)}}else r&&(r.set=\"update\");this.#I&&this.onInsert?.(e,t,e===d?\"update\":\"replace\")}if(s!==0&&!this.#d&&this.#j(),this.#d&&(f||this.#N(c,s,h),r&&this.#z(r,c)),!n&&this.#f&&this.#r){let d=this.#r,g;for(;g=d?.shift();)this.#S?.(...g)}return this}pop(){try{for(;this.#n;){let t=this.#t[this.#l];if(this.#x(!0),this.#e(t)){if(t.__staleWhileFetching)return t.__staleWhileFetching}else if(t!==void 0)return t}}finally{if(this.#f&&this.#r){let t=this.#r,e;for(;e=t?.shift();)this.#S?.(...e)}}}#x(t){let e=this.#l,i=this.#i[e],s=this.#t[e];return this.#v&&this.#e(s)?s.__abortController.abort(new Error(\"evicted\")):(this.#T||this.#f)&&(this.#T&&this.#w?.(s,i,\"evict\"),this.#f&&this.#r?.push([s,i,\"evict\"])),this.#W(e),this.#g?.[e]&&(clearTimeout(this.#g[e]),this.#g[e]=void 0),t&&(this.#i[e]=void 0,this.#t[e]=void 0,this.#b.push(e)),this.#n===1?(this.#l=this.#h=0,this.#b.length=0):this.#l=this.#a[e],this.#s.delete(i),this.#n--,e}has(t,e={}){let{updateAgeOnHas:i=this.updateAgeOnHas,status:s}=e,h=this.#s.get(t);if(h!==void 0){let n=this.#t[h];if(this.#e(n)&&n.__staleWhileFetching===void 0)return!1;if(this.#p(h))s&&(s.has=\"stale\",this.#z(s,h));else return i&&this.#R(h),s&&(s.has=\"hit\",this.#z(s,h)),!0}else s&&(s.has=\"miss\");return!1}peek(t,e={}){let{allowStale:i=this.allowStale}=e,s=this.#s.get(t);if(s===void 0||!i&&this.#p(s))return;let h=this.#t[s];return this.#e(h)?h.__staleWhileFetching:h}#G(t,e,i,s){let h=e===void 0?void 0:this.#t[e];if(this.#e(h))return h;let n=new C,{signal:o}=i;o?.addEventListener(\"abort\",()=>n.abort(o.reason),{signal:n.signal});let r={signal:n.signal,options:i,context:s},f=(p,_=!1)=>{let{aborted:l}=n.signal,w=i.ignoreFetchAbort&&p!==void 0,b=i.ignoreFetchAbort||!!(i.allowStaleOnFetchAbort&&p!==void 0);if(i.status&&(l&&!_?(i.status.fetchAborted=!0,i.status.fetchError=n.signal.reason,w&&(i.status.fetchAbortIgnored=!0)):i.status.fetchResolved=!0),l&&!w&&!_)return c(n.signal.reason,b);let S=g,u=this.#t[e];return(u===g||w&&_&&u===void 0)&&(p===void 0?S.__staleWhileFetching!==void 0?this.#t[e]=S.__staleWhileFetching:this.#E(t,\"fetch\"):(i.status&&(i.status.fetchUpdated=!0),this.set(t,p,r.options))),p},m=p=>(i.status&&(i.status.fetchRejected=!0,i.status.fetchError=p),c(p,!1)),c=(p,_)=>{let{aborted:l}=n.signal,w=l&&i.allowStaleOnFetchAbort,b=w||i.allowStaleOnFetchRejection,S=b||i.noDeleteOnFetchRejection,u=g;if(this.#t[e]===g&&(!S||!_&&u.__staleWhileFetching===void 0?this.#E(t,\"fetch\"):w||(this.#t[e]=u.__staleWhileFetching)),b)return i.status&&u.__staleWhileFetching!==void 0&&(i.status.returnedStale=!0),u.__staleWhileFetching;if(u.__returned===u)throw p},d=(p,_)=>{let l=this.#L?.(t,h,r);l&&l instanceof Promise&&l.then(w=>p(w===void 0?void 0:w),_),n.signal.addEventListener(\"abort\",()=>{(!i.ignoreFetchAbort||i.allowStaleOnFetchAbort)&&(p(void 0),i.allowStaleOnFetchAbort&&(p=w=>f(w,!0)))})};i.status&&(i.status.fetchDispatched=!0);let g=new Promise(d).then(f,m),A=Object.assign(g,{__abortController:n,__staleWhileFetching:h,__returned:void 0});return e===void 0?(this.set(t,A,{...r.options,status:void 0}),e=this.#s.get(t)):this.#t[e]=A,A}#e(t){if(!this.#v)return!1;let e=t;return!!e&&e instanceof Promise&&e.hasOwnProperty(\"__staleWhileFetching\")&&e.__abortController instanceof C}async fetch(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:h=this.noDeleteOnStaleGet,ttl:n=this.ttl,noDisposeOnSet:o=this.noDisposeOnSet,size:r=0,sizeCalculation:f=this.sizeCalculation,noUpdateTTL:m=this.noUpdateTTL,noDeleteOnFetchRejection:c=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:d=this.allowStaleOnFetchRejection,ignoreFetchAbort:g=this.ignoreFetchAbort,allowStaleOnFetchAbort:A=this.allowStaleOnFetchAbort,context:p,forceRefresh:_=!1,status:l,signal:w}=e;if(!this.#v)return l&&(l.fetch=\"get\"),this.get(t,{allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:h,status:l});let b={allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:h,ttl:n,noDisposeOnSet:o,size:r,sizeCalculation:f,noUpdateTTL:m,noDeleteOnFetchRejection:c,allowStaleOnFetchRejection:d,allowStaleOnFetchAbort:A,ignoreFetchAbort:g,status:l,signal:w},S=this.#s.get(t);if(S===void 0){l&&(l.fetch=\"miss\");let u=this.#G(t,S,b,p);return u.__returned=u}else{let u=this.#t[S];if(this.#e(u)){let E=i&&u.__staleWhileFetching!==void 0;return l&&(l.fetch=\"inflight\",E&&(l.returnedStale=!0)),E?u.__staleWhileFetching:u.__returned=u}let T=this.#p(S);if(!_&&!T)return l&&(l.fetch=\"hit\"),this.#D(S),s&&this.#R(S),l&&this.#z(l,S),u;let F=this.#G(t,S,b,p),O=F.__staleWhileFetching!==void 0&&i;return l&&(l.fetch=T?\"stale\":\"refresh\",O&&T&&(l.returnedStale=!0)),O?F.__staleWhileFetching:F.__returned=F}}async forceFetch(t,e={}){let i=await this.fetch(t,e);if(i===void 0)throw new Error(\"fetch() returned undefined\");return i}memo(t,e={}){let i=this.#U;if(!i)throw new Error(\"no memoMethod provided to constructor\");let{context:s,forceRefresh:h,...n}=e,o=this.get(t,n);if(!h&&o!==void 0)return o;let r=i(t,o,{options:n,context:s});return this.set(t,r,n),r}get(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:h=this.noDeleteOnStaleGet,status:n}=e,o=this.#s.get(t);if(o!==void 0){let r=this.#t[o],f=this.#e(r);return n&&this.#z(n,o),this.#p(o)?(n&&(n.get=\"stale\"),f?(n&&i&&r.__staleWhileFetching!==void 0&&(n.returnedStale=!0),i?r.__staleWhileFetching:void 0):(h||this.#E(t,\"expire\"),n&&i&&(n.returnedStale=!0),i?r:void 0)):(n&&(n.get=\"hit\"),f?r.__staleWhileFetching:(this.#D(o),s&&this.#R(o),r))}else n&&(n.get=\"miss\")}#k(t,e){this.#u[e]=t,this.#a[t]=e}#D(t){t!==this.#h&&(t===this.#l?this.#l=this.#a[t]:this.#k(this.#u[t],this.#a[t]),this.#k(this.#h,t),this.#h=t)}delete(t){return this.#E(t,\"delete\")}#E(t,e){let i=!1;if(this.#n!==0){let s=this.#s.get(t);if(s!==void 0)if(this.#g?.[s]&&(clearTimeout(this.#g?.[s]),this.#g[s]=void 0),i=!0,this.#n===1)this.#V(e);else{this.#W(s);let h=this.#t[s];if(this.#e(h)?h.__abortController.abort(new Error(\"deleted\")):(this.#T||this.#f)&&(this.#T&&this.#w?.(h,t,e),this.#f&&this.#r?.push([h,t,e])),this.#s.delete(t),this.#i[s]=void 0,this.#t[s]=void 0,s===this.#h)this.#h=this.#u[s];else if(s===this.#l)this.#l=this.#a[s];else{let n=this.#u[s];this.#a[n]=this.#a[s];let o=this.#a[s];this.#u[o]=this.#u[s]}this.#n--,this.#b.push(s)}}if(this.#f&&this.#r?.length){let s=this.#r,h;for(;h=s?.shift();)this.#S?.(...h)}return i}clear(){return this.#V(\"delete\")}#V(t){for(let e of this.#O({allowStale:!0})){let i=this.#t[e];if(this.#e(i))i.__abortController.abort(new Error(\"deleted\"));else{let s=this.#i[e];this.#T&&this.#w?.(i,s,t),this.#f&&this.#r?.push([i,s,t])}}if(this.#s.clear(),this.#t.fill(void 0),this.#i.fill(void 0),this.#d&&this.#A){this.#d.fill(0),this.#A.fill(0);for(let e of this.#g??[])e!==void 0&&clearTimeout(e);this.#g?.fill(void 0)}if(this.#y&&this.#y.fill(0),this.#l=0,this.#h=0,this.#b.length=0,this.#_=0,this.#n=0,this.#f&&this.#r){let e=this.#r,i;for(;i=e?.shift();)this.#S?.(...i)}}};exports.LRUCache=D;\n//# sourceMappingURL=index.min.js.map\n","/* eslint-disable max-len */\n\n'use strict'\n\nconst maybeJoin = (...args) => args.every(arg => arg) ? args.join('') : ''\nconst maybeEncode = (arg) => arg ? encodeURIComponent(arg) : ''\nconst formatHashFragment = (f) => f.toLowerCase()\n .replace(/^\\W+/g, '') // strip leading non-characters\n .replace(/(?<!\\W)\\W+$/, '') // strip trailing non-characters\n .replace(/\\//g, '') // strip all slashes\n .replace(/\\W+/g, '-') // replace remaining non-characters with '-'\n\nconst defaults = {\n sshtemplate: ({ domain, user, project, committish }) =>\n `git@${domain}:${user}/${project}.git${maybeJoin('#', committish)}`,\n sshurltemplate: ({ domain, user, project, committish }) =>\n `git+ssh://git@${domain}/${user}/${project}.git${maybeJoin('#', committish)}`,\n edittemplate: ({ domain, user, project, committish, editpath, path }) =>\n `https://${domain}/${user}/${project}${maybeJoin('/', editpath, '/', maybeEncode(committish || 'HEAD'), '/', path)}`,\n browsetemplate: ({ domain, user, project, committish, treepath }) =>\n `https://${domain}/${user}/${project}${maybeJoin('/', treepath, '/', maybeEncode(committish))}`,\n browsetreetemplate: ({ domain, user, project, committish, treepath, path, fragment, hashformat }) =>\n `https://${domain}/${user}/${project}/${treepath}/${maybeEncode(committish || 'HEAD')}/${path}${maybeJoin('#', hashformat(fragment || ''))}`,\n browseblobtemplate: ({ domain, user, project, committish, blobpath, path, fragment, hashformat }) =>\n `https://${domain}/${user}/${project}/${blobpath}/${maybeEncode(committish || 'HEAD')}/${path}${maybeJoin('#', hashformat(fragment || ''))}`,\n docstemplate: ({ domain, user, project, treepath, committish }) =>\n `https://${domain}/${user}/${project}${maybeJoin('/', treepath, '/', maybeEncode(committish))}#readme`,\n httpstemplate: ({ auth, domain, user, project, committish }) =>\n `git+https://${maybeJoin(auth, '@')}${domain}/${user}/${project}.git${maybeJoin('#', committish)}`,\n filetemplate: ({ domain, user, project, committish, path }) =>\n `https://${domain}/${user}/${project}/raw/${maybeEncode(committish || 'HEAD')}/${path}`,\n shortcuttemplate: ({ type, user, project, committish }) =>\n `${type}:${user}/${project}${maybeJoin('#', committish)}`,\n pathtemplate: ({ user, project, committish }) =>\n `${user}/${project}${maybeJoin('#', committish)}`,\n bugstemplate: ({ domain, user, project }) =>\n `https://${domain}/${user}/${project}/issues`,\n hashformat: formatHashFragment,\n}\n\nconst hosts = {}\nhosts.github = {\n // First two are insecure and generally shouldn't be used any more, but\n // they are still supported.\n protocols: ['git:', 'http:', 'git+ssh:', 'git+https:', 'ssh:', 'https:'],\n domain: 'github.com',\n treepath: 'tree',\n blobpath: 'blob',\n editpath: 'edit',\n filetemplate: ({ auth, user, project, committish, path }) =>\n `https://${maybeJoin(auth, '@')}raw.githubusercontent.com/${user}/${project}/${maybeEncode(committish || 'HEAD')}/${path}`,\n gittemplate: ({ auth, domain, user, project, committish }) =>\n `git://${maybeJoin(auth, '@')}${domain}/${user}/${project}.git${maybeJoin('#', committish)}`,\n tarballtemplate: ({ domain, user, project, committish }) =>\n `https://codeload.${domain}/${user}/${project}/tar.gz/${maybeEncode(committish || 'HEAD')}`,\n extract: (url) => {\n let [, user, project, type, committish] = url.pathname.split('/', 5)\n if (type && type !== 'tree') {\n return\n }\n\n if (!type) {\n committish = url.hash.slice(1)\n }\n\n if (project && project.endsWith('.git')) {\n project = project.slice(0, -4)\n }\n\n if (!user || !project) {\n return\n }\n\n return { user, project, committish }\n },\n}\n\nhosts.bitbucket = {\n protocols: ['git+ssh:', 'git+https:', 'ssh:', 'https:'],\n domain: 'bitbucket.org',\n treepath: 'src',\n blobpath: 'src',\n editpath: '?mode=edit',\n edittemplate: ({ domain, user, project, committish, treepath, path, editpath }) =>\n `https://${domain}/${user}/${project}${maybeJoin('/', treepath, '/', maybeEncode(committish || 'HEAD'), '/', path, editpath)}`,\n tarballtemplate: ({ domain, user, project, committish }) =>\n `https://${domain}/${user}/${project}/get/${maybeEncode(committish || 'HEAD')}.tar.gz`,\n extract: (url) => {\n let [, user, project, aux] = url.pathname.split('/', 4)\n if (['get'].includes(aux)) {\n return\n }\n\n if (project && project.endsWith('.git')) {\n project = project.slice(0, -4)\n }\n\n if (!user || !project) {\n return\n }\n\n return { user, project, committish: url.hash.slice(1) }\n },\n}\n\nhosts.gitlab = {\n protocols: ['git+ssh:', 'git+https:', 'ssh:', 'https:'],\n domain: 'gitlab.com',\n treepath: 'tree',\n blobpath: 'tree',\n editpath: '-/edit',\n tarballtemplate: ({ domain, user, project, committish }) =>\n `https://${domain}/${user}/${project}/repository/archive.tar.gz?ref=${maybeEncode(committish || 'HEAD')}`,\n extract: (url) => {\n const path = url.pathname.slice(1)\n if (path.includes('/-/') || path.includes('/archive.tar.gz')) {\n return\n }\n\n const segments = path.split('/')\n let project = segments.pop()\n if (project.endsWith('.git')) {\n project = project.slice(0, -4)\n }\n\n const user = segments.join('/')\n if (!user || !project) {\n return\n }\n\n return { user, project, committish: url.hash.slice(1) }\n },\n}\n\nhosts.gist = {\n protocols: ['git:', 'git+ssh:', 'git+https:', 'ssh:', 'https:'],\n domain: 'gist.github.com',\n editpath: 'edit',\n sshtemplate: ({ domain, project, committish }) =>\n `git@${domain}:${project}.git${maybeJoin('#', committish)}`,\n sshurltemplate: ({ domain, project, committish }) =>\n `git+ssh://git@${domain}/${project}.git${maybeJoin('#', committish)}`,\n edittemplate: ({ domain, user, project, committish, editpath }) =>\n `https://${domain}/${user}/${project}${maybeJoin('/', maybeEncode(committish))}/${editpath}`,\n browsetemplate: ({ domain, project, committish }) =>\n `https://${domain}/${project}${maybeJoin('/', maybeEncode(committish))}`,\n browsetreetemplate: ({ domain, project, committish, path, hashformat }) =>\n `https://${domain}/${project}${maybeJoin('/', maybeEncode(committish))}${maybeJoin('#', hashformat(path))}`,\n browseblobtemplate: ({ domain, project, committish, path, hashformat }) =>\n `https://${domain}/${project}${maybeJoin('/', maybeEncode(committish))}${maybeJoin('#', hashformat(path))}`,\n docstemplate: ({ domain, project, committish }) =>\n `https://${domain}/${project}${maybeJoin('/', maybeEncode(committish))}`,\n httpstemplate: ({ domain, project, committish }) =>\n `git+https://${domain}/${project}.git${maybeJoin('#', committish)}`,\n filetemplate: ({ user, project, committish, path }) =>\n `https://gist.githubusercontent.com/${user}/${project}/raw${maybeJoin('/', maybeEncode(committish))}/${path}`,\n shortcuttemplate: ({ type, project, committish }) =>\n `${type}:${project}${maybeJoin('#', committish)}`,\n pathtemplate: ({ project, committish }) =>\n `${project}${maybeJoin('#', committish)}`,\n bugstemplate: ({ domain, project }) =>\n `https://${domain}/${project}`,\n gittemplate: ({ domain, project, committish }) =>\n `git://${domain}/${project}.git${maybeJoin('#', committish)}`,\n tarballtemplate: ({ project, committish }) =>\n `https://codeload.github.com/gist/${project}/tar.gz/${maybeEncode(committish || 'HEAD')}`,\n extract: (url) => {\n let [, user, project, aux] = url.pathname.split('/', 4)\n if (aux === 'raw') {\n return\n }\n\n if (!project) {\n if (!user) {\n return\n }\n\n project = user\n user = null\n }\n\n if (project.endsWith('.git')) {\n project = project.slice(0, -4)\n }\n\n return { user, project, committish: url.hash.slice(1) }\n },\n hashformat: function (fragment) {\n return fragment && 'file-' + formatHashFragment(fragment)\n },\n}\n\nhosts.sourcehut = {\n protocols: ['git+ssh:', 'https:'],\n domain: 'git.sr.ht',\n treepath: 'tree',\n blobpath: 'tree',\n filetemplate: ({ domain, user, project, committish, path }) =>\n `https://${domain}/${user}/${project}/blob/${maybeEncode(committish) || 'HEAD'}/${path}`,\n httpstemplate: ({ domain, user, project, committish }) =>\n `https://${domain}/${user}/${project}.git${maybeJoin('#', committish)}`,\n tarballtemplate: ({ domain, user, project, committish }) =>\n `https://${domain}/${user}/${project}/archive/${maybeEncode(committish) || 'HEAD'}.tar.gz`,\n bugstemplate: () => null,\n extract: (url) => {\n let [, user, project, aux] = url.pathname.split('/', 4)\n\n // tarball url\n if (['archive'].includes(aux)) {\n return\n }\n\n if (project && project.endsWith('.git')) {\n project = project.slice(0, -4)\n }\n\n if (!user || !project) {\n return\n }\n\n return { user, project, committish: url.hash.slice(1) }\n },\n}\n\nfor (const [name, host] of Object.entries(hosts)) {\n hosts[name] = Object.assign({}, defaults, host)\n}\n\nmodule.exports = hosts\n","const url = require('url')\n\nconst lastIndexOfBefore = (str, char, beforeChar) => {\n const startPosition = str.indexOf(beforeChar)\n return str.lastIndexOf(char, startPosition > -1 ? startPosition : Infinity)\n}\n\nconst safeUrl = (u) => {\n try {\n return new url.URL(u)\n } catch {\n // this fn should never throw\n }\n}\n\n// accepts input like git:github.com:user/repo and inserts the // after the first :\nconst correctProtocol = (arg, protocols) => {\n const firstColon = arg.indexOf(':')\n const proto = arg.slice(0, firstColon + 1)\n if (Object.prototype.hasOwnProperty.call(protocols, proto)) {\n return arg\n }\n\n if (arg.substr(firstColon, 3) === '://') {\n // If arg is given as <foo>://<bar>, then this is already a valid URL.\n return arg\n }\n\n const firstAt = arg.indexOf('@')\n if (firstAt > -1) {\n if (firstAt > firstColon) {\n // URL has the form of <foo>:<bar>@<baz>. Assume this is a git+ssh URL.\n return `git+ssh://${arg}`\n } else {\n // URL has the form 'git@github.com:npm/hosted-git-info.git'.\n return arg\n }\n }\n\n // Correct <foo>:<bar> to <foo>://<bar>\n return `${arg.slice(0, firstColon + 1)}//${arg.slice(firstColon + 1)}`\n}\n\n// attempt to correct an scp style url so that it will parse with `new URL()`\nconst correctUrl = (giturl) => {\n // ignore @ that come after the first hash since the denotes the start\n // of a committish which can contain @ characters\n const firstAt = lastIndexOfBefore(giturl, '@', '#')\n // ignore colons that come after the hash since that could include colons such as:\n // git@github.com:user/package-2#semver:^1.0.0\n const lastColonBeforeHash = lastIndexOfBefore(giturl, ':', '#')\n\n if (lastColonBeforeHash > firstAt) {\n // the last : comes after the first @ (or there is no @)\n // like it would in:\n // proto://hostname.com:user/repo\n // username@hostname.com:user/repo\n // :password@hostname.com:user/repo\n // username:password@hostname.com:user/repo\n // proto://username@hostname.com:user/repo\n // proto://:password@hostname.com:user/repo\n // proto://username:password@hostname.com:user/repo\n // then we replace the last : with a / to create a valid path\n giturl = giturl.slice(0, lastColonBeforeHash) + '/' + giturl.slice(lastColonBeforeHash + 1)\n }\n\n if (lastIndexOfBefore(giturl, ':', '#') === -1 && giturl.indexOf('//') === -1) {\n // we have no : at all\n // as it would be in:\n // username@hostname.com/user/repo\n // then we prepend a protocol\n giturl = `git+ssh://${giturl}`\n }\n\n return giturl\n}\n\nmodule.exports = (giturl, protocols) => {\n const withProtocol = protocols ? correctProtocol(giturl, protocols) : giturl\n return safeUrl(withProtocol) || safeUrl(correctUrl(withProtocol))\n}\n","'use strict'\n\nconst parseUrl = require('./parse-url')\n\n// look for github shorthand inputs, such as npm/cli\nconst isGitHubShorthand = (arg) => {\n // it cannot contain whitespace before the first #\n // it cannot start with a / because that's probably an absolute file path\n // but it must include a slash since repos are username/repository\n // it cannot start with a . because that's probably a relative file path\n // it cannot start with an @ because that's a scoped package if it passes the other tests\n // it cannot contain a : before a # because that tells us that there's a protocol\n // a second / may not exist before a #\n const firstHash = arg.indexOf('#')\n const firstSlash = arg.indexOf('/')\n const secondSlash = arg.indexOf('/', firstSlash + 1)\n const firstColon = arg.indexOf(':')\n const firstSpace = /\\s/.exec(arg)\n const firstAt = arg.indexOf('@')\n\n const spaceOnlyAfterHash = !firstSpace || (firstHash > -1 && firstSpace.index > firstHash)\n const atOnlyAfterHash = firstAt === -1 || (firstHash > -1 && firstAt > firstHash)\n const colonOnlyAfterHash = firstColon === -1 || (firstHash > -1 && firstColon > firstHash)\n const secondSlashOnlyAfterHash = secondSlash === -1 || (firstHash > -1 && secondSlash > firstHash)\n const hasSlash = firstSlash > 0\n // if a # is found, what we really want to know is that the character\n // immediately before # is not a /\n const doesNotEndWithSlash = firstHash > -1 ? arg[firstHash - 1] !== '/' : !arg.endsWith('/')\n const doesNotStartWithDot = !arg.startsWith('.')\n\n return spaceOnlyAfterHash && hasSlash && doesNotEndWithSlash &&\n doesNotStartWithDot && atOnlyAfterHash && colonOnlyAfterHash &&\n secondSlashOnlyAfterHash\n}\n\nmodule.exports = (giturl, opts, { gitHosts, protocols }) => {\n if (!giturl) {\n return\n }\n\n const correctedUrl = isGitHubShorthand(giturl) ? `github:${giturl}` : giturl\n const parsed = parseUrl(correctedUrl, protocols)\n if (!parsed) {\n return\n }\n\n const gitHostShortcut = gitHosts.byShortcut[parsed.protocol]\n const gitHostDomain = gitHosts.byDomain[parsed.hostname.startsWith('www.')\n ? parsed.hostname.slice(4)\n : parsed.hostname]\n const gitHostName = gitHostShortcut || gitHostDomain\n if (!gitHostName) {\n return\n }\n\n const gitHostInfo = gitHosts[gitHostShortcut || gitHostDomain]\n let auth = null\n if (protocols[parsed.protocol]?.auth && (parsed.username || parsed.password)) {\n auth = `${parsed.username}${parsed.password ? ':' + parsed.password : ''}`\n }\n\n let committish = null\n let user = null\n let project = null\n let defaultRepresentation = null\n\n try {\n if (gitHostShortcut) {\n let pathname = parsed.pathname.startsWith('/') ? parsed.pathname.slice(1) : parsed.pathname\n const firstAt = pathname.indexOf('@')\n // we ignore auth for shortcuts, so just trim it out\n if (firstAt > -1) {\n pathname = pathname.slice(firstAt + 1)\n }\n\n const lastSlash = pathname.lastIndexOf('/')\n if (lastSlash > -1) {\n user = decodeURIComponent(pathname.slice(0, lastSlash))\n // we want nulls only, never empty strings\n if (!user) {\n user = null\n }\n project = decodeURIComponent(pathname.slice(lastSlash + 1))\n } else {\n project = decodeURIComponent(pathname)\n }\n\n if (project.endsWith('.git')) {\n project = project.slice(0, -4)\n }\n\n if (parsed.hash) {\n committish = decodeURIComponent(parsed.hash.slice(1))\n }\n\n defaultRepresentation = 'shortcut'\n } else {\n if (!gitHostInfo.protocols.includes(parsed.protocol)) {\n return\n }\n\n const segments = gitHostInfo.extract(parsed)\n if (!segments) {\n return\n }\n\n user = segments.user && decodeURIComponent(segments.user)\n project = decodeURIComponent(segments.project)\n committish = decodeURIComponent(segments.committish)\n defaultRepresentation = protocols[parsed.protocol]?.name || parsed.protocol.slice(0, -1)\n }\n } catch (err) {\n /* istanbul ignore else */\n if (err instanceof URIError) {\n return\n } else {\n throw err\n }\n }\n\n return [gitHostName, user, auth, project, committish, defaultRepresentation, opts]\n}\n","'use strict'\n\nconst { LRUCache } = require('lru-cache')\nconst hosts = require('./hosts.js')\nconst fromUrl = require('./from-url.js')\nconst parseUrl = require('./parse-url.js')\n\nconst cache = new LRUCache({ max: 1000 })\n\nfunction unknownHostedUrl (url) {\n try {\n const {\n protocol,\n hostname,\n pathname,\n } = new URL(url)\n\n if (!hostname) {\n return null\n }\n\n const proto = /(?:git\\+)http:$/.test(protocol) ? 'http:' : 'https:'\n const path = pathname.replace(/\\.git$/, '')\n return `${proto}//${hostname}${path}`\n } catch {\n return null\n }\n}\n\nclass GitHost {\n constructor (type, user, auth, project, committish, defaultRepresentation, opts = {}) {\n Object.assign(this, GitHost.#gitHosts[type], {\n type,\n user,\n auth,\n project,\n committish,\n default: defaultRepresentation,\n opts,\n })\n }\n\n static #gitHosts = { byShortcut: {}, byDomain: {} }\n static #protocols = {\n 'git+ssh:': { name: 'sshurl' },\n 'ssh:': { name: 'sshurl' },\n 'git+https:': { name: 'https', auth: true },\n 'git:': { auth: true },\n 'http:': { auth: true },\n 'https:': { auth: true },\n 'git+http:': { auth: true },\n }\n\n static addHost (name, host) {\n GitHost.#gitHosts[name] = host\n GitHost.#gitHosts.byDomain[host.domain] = name\n GitHost.#gitHosts.byShortcut[`${name}:`] = name\n GitHost.#protocols[`${name}:`] = { name }\n }\n\n static fromUrl (giturl, opts) {\n if (typeof giturl !== 'string') {\n return\n }\n\n const key = giturl + JSON.stringify(opts || {})\n\n if (!cache.has(key)) {\n const hostArgs = fromUrl(giturl, opts, {\n gitHosts: GitHost.#gitHosts,\n protocols: GitHost.#protocols,\n })\n cache.set(key, hostArgs ? new GitHost(...hostArgs) : undefined)\n }\n\n return cache.get(key)\n }\n\n static fromManifest (manifest, opts = {}) {\n if (!manifest || typeof manifest !== 'object') {\n return\n }\n\n const r = manifest.repository\n // TODO: look into also checking the `bugs`/`homepage` URLs\n\n const rurl = r && (\n typeof r === 'string'\n ? r\n : typeof r === 'object' && typeof r.url === 'string'\n ? r.url\n : null\n )\n\n if (!rurl) {\n throw new Error('no repository')\n }\n\n const info = (rurl && GitHost.fromUrl(rurl.replace(/^git\\+/, ''), opts)) || null\n if (info) {\n return info\n }\n const unk = unknownHostedUrl(rurl)\n return GitHost.fromUrl(unk, opts) || unk\n }\n\n static parseUrl (url) {\n return parseUrl(url)\n }\n\n #fill (template, opts) {\n if (typeof template !== 'function') {\n return null\n }\n\n const options = { ...this, ...this.opts, ...opts }\n\n // the path should always be set so we don't end up with 'undefined' in urls\n if (!options.path) {\n options.path = ''\n }\n\n // template functions will insert the leading slash themselves\n if (options.path.startsWith('/')) {\n options.path = options.path.slice(1)\n }\n\n if (options.noCommittish) {\n options.committish = null\n }\n\n const result = template(options)\n return options.noGitPlus && result.startsWith('git+') ? result.slice(4) : result\n }\n\n hash () {\n return this.committish ? `#${this.committish}` : ''\n }\n\n ssh (opts) {\n return this.#fill(this.sshtemplate, opts)\n }\n\n sshurl (opts) {\n return this.#fill(this.sshurltemplate, opts)\n }\n\n browse (path, ...args) {\n // not a string, treat path as opts\n if (typeof path !== 'string') {\n return this.#fill(this.browsetemplate, path)\n }\n\n if (typeof args[0] !== 'string') {\n return this.#fill(this.browsetreetemplate, { ...args[0], path })\n }\n\n return this.#fill(this.browsetreetemplate, { ...args[1], fragment: args[0], path })\n }\n\n // If the path is known to be a file, then browseFile should be used. For some hosts\n // the url is the same as browse, but for others like GitHub a file can use both `/tree/`\n // and `/blob/` in the path. When using a default committish of `HEAD` then the `/tree/`\n // path will redirect to a specific commit. Using the `/blob/` path avoids this and\n // does not redirect to a different commit.\n browseFile (path, ...args) {\n if (typeof args[0] !== 'string') {\n return this.#fill(this.browseblobtemplate, { ...args[0], path })\n }\n\n return this.#fill(this.browseblobtemplate, { ...args[1], fragment: args[0], path })\n }\n\n docs (opts) {\n return this.#fill(this.docstemplate, opts)\n }\n\n bugs (opts) {\n return this.#fill(this.bugstemplate, opts)\n }\n\n https (opts) {\n return this.#fill(this.httpstemplate, opts)\n }\n\n git (opts) {\n return this.#fill(this.gittemplate, opts)\n }\n\n shortcut (opts) {\n return this.#fill(this.shortcuttemplate, opts)\n }\n\n path (opts) {\n return this.#fill(this.pathtemplate, opts)\n }\n\n tarball (opts) {\n return this.#fill(this.tarballtemplate, { ...opts, noCommittish: false })\n }\n\n file (path, opts) {\n return this.#fill(this.filetemplate, { ...opts, path })\n }\n\n edit (path, opts) {\n return this.#fill(this.edittemplate, { ...opts, path })\n }\n\n getDefaultRepresentation () {\n return this.default\n }\n\n toString (opts) {\n if (this.default && typeof this[this.default] === 'function') {\n return this[this.default](opts)\n }\n\n return this.sshurl(opts)\n }\n}\n\nfor (const [name, host] of Object.entries(hosts)) {\n GitHost.addHost(name, host)\n}\n\nmodule.exports = GitHost\n","module.exports = extractDescription\n\n// Extracts description from contents of a readme file in markdown format\nfunction extractDescription (d) {\n if (!d) {\n return\n }\n if (d === 'ERROR: No README data found!') {\n return\n }\n // the first block of text before the first heading\n // that isn't the first line heading\n d = d.trim().split('\\n')\n let s = 0\n while (d[s] && d[s].trim().match(/^(#|$)/)) {\n s++\n }\n const l = d.length\n let e = s + 1\n while (e < l && d[e].trim()) {\n e++\n }\n return d.slice(s, e).join(' ').trim()\n}\n","","var { URL } = require('node:url')\nvar isValidSemver = require('semver/functions/valid')\nvar cleanSemver = require('semver/functions/clean')\nvar validateLicense = require('validate-npm-package-license')\nvar hostedGitInfo = require('hosted-git-info')\nvar { isBuiltin } = require('node:module')\nvar depTypes = ['dependencies', 'devDependencies', 'optionalDependencies']\nvar extractDescription = require('./extract_description')\nvar typos = require('./typos.json')\n\nvar isEmail = str => str.includes('@') && (str.indexOf('@') < str.lastIndexOf('.'))\n\nmodule.exports = {\n // default warning function\n warn: function () {},\n\n fixRepositoryField: function (data) {\n if (data.repositories) {\n this.warn('repositories')\n data.repository = data.repositories[0]\n }\n if (!data.repository) {\n return this.warn('missingRepository')\n }\n if (typeof data.repository === 'string') {\n data.repository = {\n type: 'git',\n url: data.repository,\n }\n }\n var r = data.repository.url || ''\n if (r) {\n var hosted = hostedGitInfo.fromUrl(r)\n if (hosted) {\n r = data.repository.url\n = hosted.getDefaultRepresentation() === 'shortcut' ? hosted.https() : hosted.toString()\n }\n }\n\n if (r.match(/github.com\\/[^/]+\\/[^/]+\\.git\\.git$/)) {\n this.warn('brokenGitUrl', r)\n }\n },\n\n fixTypos: function (data) {\n Object.keys(typos.topLevel).forEach(function (d) {\n if (Object.prototype.hasOwnProperty.call(data, d)) {\n this.warn('typo', d, typos.topLevel[d])\n }\n }, this)\n },\n\n fixScriptsField: function (data) {\n if (!data.scripts) {\n return\n }\n if (typeof data.scripts !== 'object') {\n this.warn('nonObjectScripts')\n delete data.scripts\n return\n }\n Object.keys(data.scripts).forEach(function (k) {\n if (typeof data.scripts[k] !== 'string') {\n this.warn('nonStringScript')\n delete data.scripts[k]\n } else if (typos.script[k] && !data.scripts[typos.script[k]]) {\n this.warn('typo', k, typos.script[k], 'scripts')\n }\n }, this)\n },\n\n fixFilesField: function (data) {\n var files = data.files\n if (files && !Array.isArray(files)) {\n this.warn('nonArrayFiles')\n delete data.files\n } else if (data.files) {\n data.files = data.files.filter(function (file) {\n if (!file || typeof file !== 'string') {\n this.warn('invalidFilename', file)\n return false\n } else {\n return true\n }\n }, this)\n }\n },\n\n fixBinField: function (data) {\n if (!data.bin) {\n return\n }\n if (typeof data.bin === 'string') {\n var b = {}\n var match\n if (match = data.name.match(/^@[^/]+[/](.*)$/)) {\n b[match[1]] = data.bin\n } else {\n b[data.name] = data.bin\n }\n data.bin = b\n }\n },\n\n fixManField: function (data) {\n if (!data.man) {\n return\n }\n if (typeof data.man === 'string') {\n data.man = [data.man]\n }\n },\n fixBundleDependenciesField: function (data) {\n var bdd = 'bundledDependencies'\n var bd = 'bundleDependencies'\n if (data[bdd] && !data[bd]) {\n data[bd] = data[bdd]\n delete data[bdd]\n }\n if (data[bd] && !Array.isArray(data[bd])) {\n this.warn('nonArrayBundleDependencies')\n delete data[bd]\n } else if (data[bd]) {\n data[bd] = data[bd].filter(function (filtered) {\n if (!filtered || typeof filtered !== 'string') {\n this.warn('nonStringBundleDependency', filtered)\n return false\n } else {\n if (!data.dependencies) {\n data.dependencies = {}\n }\n if (!Object.prototype.hasOwnProperty.call(data.dependencies, filtered)) {\n this.warn('nonDependencyBundleDependency', filtered)\n data.dependencies[filtered] = '*'\n }\n return true\n }\n }, this)\n }\n },\n\n fixDependencies: function (data) {\n objectifyDeps(data, this.warn)\n addOptionalDepsToDeps(data, this.warn)\n this.fixBundleDependenciesField(data)\n\n ;['dependencies', 'devDependencies'].forEach(function (deps) {\n if (!(deps in data)) {\n return\n }\n if (!data[deps] || typeof data[deps] !== 'object') {\n this.warn('nonObjectDependencies', deps)\n delete data[deps]\n return\n }\n Object.keys(data[deps]).forEach(function (d) {\n var r = data[deps][d]\n if (typeof r !== 'string') {\n this.warn('nonStringDependency', d, JSON.stringify(r))\n delete data[deps][d]\n }\n var hosted = hostedGitInfo.fromUrl(data[deps][d])\n if (hosted) {\n data[deps][d] = hosted.toString()\n }\n }, this)\n }, this)\n },\n\n fixModulesField: function (data) {\n if (data.modules) {\n this.warn('deprecatedModules')\n delete data.modules\n }\n },\n\n fixKeywordsField: function (data) {\n if (typeof data.keywords === 'string') {\n data.keywords = data.keywords.split(/,\\s+/)\n }\n if (data.keywords && !Array.isArray(data.keywords)) {\n delete data.keywords\n this.warn('nonArrayKeywords')\n } else if (data.keywords) {\n data.keywords = data.keywords.filter(function (kw) {\n if (typeof kw !== 'string' || !kw) {\n this.warn('nonStringKeyword')\n return false\n } else {\n return true\n }\n }, this)\n }\n },\n\n fixVersionField: function (data, strict) {\n // allow \"loose\" semver 1.0 versions in non-strict mode\n // enforce strict semver 2.0 compliance in strict mode\n var loose = !strict\n if (!data.version) {\n data.version = ''\n return true\n }\n if (!isValidSemver(data.version, loose)) {\n throw new Error('Invalid version: \"' + data.version + '\"')\n }\n data.version = cleanSemver(data.version, loose)\n return true\n },\n\n fixPeople: function (data) {\n modifyPeople(data, unParsePerson)\n modifyPeople(data, parsePerson)\n },\n\n fixNameField: function (data, options) {\n if (typeof options === 'boolean') {\n options = { strict: options }\n } else if (typeof options === 'undefined') {\n options = {}\n }\n var strict = options.strict\n if (!data.name && !strict) {\n data.name = ''\n return\n }\n if (typeof data.name !== 'string') {\n throw new Error('name field must be a string.')\n }\n if (!strict) {\n data.name = data.name.trim()\n }\n ensureValidName(data.name, strict, options.allowLegacyCase)\n if (isBuiltin(data.name)) {\n this.warn('conflictingName', data.name)\n }\n },\n\n fixDescriptionField: function (data) {\n if (data.description && typeof data.description !== 'string') {\n this.warn('nonStringDescription')\n delete data.description\n }\n if (data.readme && !data.description) {\n data.description = extractDescription(data.readme)\n }\n if (data.description === undefined) {\n delete data.description\n }\n if (!data.description) {\n this.warn('missingDescription')\n }\n },\n\n fixReadmeField: function (data) {\n if (!data.readme) {\n this.warn('missingReadme')\n data.readme = 'ERROR: No README data found!'\n }\n },\n\n fixBugsField: function (data) {\n if (!data.bugs && data.repository && data.repository.url) {\n var hosted = hostedGitInfo.fromUrl(data.repository.url)\n if (hosted && hosted.bugs()) {\n data.bugs = { url: hosted.bugs() }\n }\n } else if (data.bugs) {\n if (typeof data.bugs === 'string') {\n if (isEmail(data.bugs)) {\n data.bugs = { email: data.bugs }\n } else if (URL.canParse(data.bugs)) {\n data.bugs = { url: data.bugs }\n } else {\n this.warn('nonEmailUrlBugsString')\n }\n } else {\n bugsTypos(data.bugs, this.warn)\n var oldBugs = data.bugs\n data.bugs = {}\n if (oldBugs.url) {\n if (URL.canParse(oldBugs.url)) {\n data.bugs.url = oldBugs.url\n } else {\n this.warn('nonUrlBugsUrlField')\n }\n }\n if (oldBugs.email) {\n if (typeof (oldBugs.email) === 'string' && isEmail(oldBugs.email)) {\n data.bugs.email = oldBugs.email\n } else {\n this.warn('nonEmailBugsEmailField')\n }\n }\n }\n if (!data.bugs.email && !data.bugs.url) {\n delete data.bugs\n this.warn('emptyNormalizedBugs')\n }\n }\n },\n\n fixHomepageField: function (data) {\n if (!data.homepage && data.repository && data.repository.url) {\n var hosted = hostedGitInfo.fromUrl(data.repository.url)\n if (hosted && hosted.docs()) {\n data.homepage = hosted.docs()\n }\n }\n if (!data.homepage) {\n return\n }\n\n if (typeof data.homepage !== 'string') {\n this.warn('nonUrlHomepage')\n return delete data.homepage\n }\n if (!URL.canParse(data.homepage)) {\n data.homepage = 'http://' + data.homepage\n }\n },\n\n fixLicenseField: function (data) {\n const license = data.license || data.licence\n if (!license) {\n return this.warn('missingLicense')\n }\n if (\n typeof (license) !== 'string' ||\n license.length < 1 ||\n license.trim() === ''\n ) {\n return this.warn('invalidLicense')\n }\n if (!validateLicense(license).validForNewPackages) {\n return this.warn('invalidLicense')\n }\n },\n}\n\nfunction isValidScopedPackageName (spec) {\n if (spec.charAt(0) !== '@') {\n return false\n }\n\n var rest = spec.slice(1).split('/')\n if (rest.length !== 2) {\n return false\n }\n\n return rest[0] && rest[1] &&\n rest[0] === encodeURIComponent(rest[0]) &&\n rest[1] === encodeURIComponent(rest[1])\n}\n\nfunction isCorrectlyEncodedName (spec) {\n return !spec.match(/[/@\\s+%:]/) &&\n spec === encodeURIComponent(spec)\n}\n\nfunction ensureValidName (name, strict, allowLegacyCase) {\n if (name.charAt(0) === '.' ||\n !(isValidScopedPackageName(name) || isCorrectlyEncodedName(name)) ||\n (strict && (!allowLegacyCase) && name !== name.toLowerCase()) ||\n name.toLowerCase() === 'node_modules' ||\n name.toLowerCase() === 'favicon.ico') {\n throw new Error('Invalid name: ' + JSON.stringify(name))\n }\n}\n\nfunction modifyPeople (data, fn) {\n if (data.author) {\n data.author = fn(data.author)\n }['maintainers', 'contributors'].forEach(function (set) {\n if (!Array.isArray(data[set])) {\n return\n }\n data[set] = data[set].map(fn)\n })\n return data\n}\n\nfunction unParsePerson (person) {\n if (typeof person === 'string') {\n return person\n }\n var name = person.name || ''\n var u = person.url || person.web\n var wrappedUrl = u ? (' (' + u + ')') : ''\n var e = person.email || person.mail\n var wrappedEmail = e ? (' <' + e + '>') : ''\n return name + wrappedEmail + wrappedUrl\n}\n\nfunction parsePerson (person) {\n if (typeof person !== 'string') {\n return person\n }\n var matchedName = person.match(/^([^(<]+)/)\n var matchedUrl = person.match(/\\(([^()]+)\\)/)\n var matchedEmail = person.match(/<([^<>]+)>/)\n var obj = {}\n if (matchedName && matchedName[0].trim()) {\n obj.name = matchedName[0].trim()\n }\n if (matchedEmail) {\n obj.email = matchedEmail[1]\n }\n if (matchedUrl) {\n obj.url = matchedUrl[1]\n }\n return obj\n}\n\nfunction addOptionalDepsToDeps (data) {\n var o = data.optionalDependencies\n if (!o) {\n return\n }\n var d = data.dependencies || {}\n Object.keys(o).forEach(function (k) {\n d[k] = o[k]\n })\n data.dependencies = d\n}\n\nfunction depObjectify (deps, type, warn) {\n if (!deps) {\n return {}\n }\n if (typeof deps === 'string') {\n deps = deps.trim().split(/[\\n\\r\\s\\t ,]+/)\n }\n if (!Array.isArray(deps)) {\n return deps\n }\n warn('deprecatedArrayDependencies', type)\n var o = {}\n deps.filter(function (d) {\n return typeof d === 'string'\n }).forEach(function (d) {\n d = d.trim().split(/(:?[@\\s><=])/)\n var dn = d.shift()\n var dv = d.join('')\n dv = dv.trim()\n dv = dv.replace(/^@/, '')\n o[dn] = dv\n })\n return o\n}\n\nfunction objectifyDeps (data, warn) {\n depTypes.forEach(function (type) {\n if (!data[type]) {\n return\n }\n data[type] = depObjectify(data[type], type, warn)\n })\n}\n\nfunction bugsTypos (bugs, warn) {\n if (!bugs) {\n return\n }\n Object.keys(bugs).forEach(function (k) {\n if (typos.bugs[k]) {\n warn('typo', k, typos.bugs[k], 'bugs')\n bugs[typos.bugs[k]] = bugs[k]\n delete bugs[k]\n }\n })\n}\n","","var util = require('util')\nvar messages = require('./warning_messages.json')\n\nmodule.exports = function () {\n var args = Array.prototype.slice.call(arguments, 0)\n var warningName = args.shift()\n if (warningName === 'typo') {\n return makeTypoWarning.apply(null, args)\n } else {\n var msgTemplate = messages[warningName] ? messages[warningName] : warningName + \": '%s'\"\n args.unshift(msgTemplate)\n return util.format.apply(null, args)\n }\n}\n\nfunction makeTypoWarning (providedName, probableName, field) {\n if (field) {\n providedName = field + \"['\" + providedName + \"']\"\n probableName = field + \"['\" + probableName + \"']\"\n }\n return util.format(messages.typo, providedName, probableName)\n}\n","module.exports = normalize\n\nvar fixer = require('./fixer')\nnormalize.fixer = fixer\n\nvar makeWarning = require('./make_warning')\n\nvar fieldsToFix = ['name', 'version', 'description', 'repository', 'modules', 'scripts',\n 'files', 'bin', 'man', 'bugs', 'keywords', 'readme', 'homepage', 'license']\nvar otherThingsToFix = ['dependencies', 'people', 'typos']\n\nvar thingsToFix = fieldsToFix.map(function (fieldName) {\n return ucFirst(fieldName) + 'Field'\n})\n// two ways to do this in CoffeeScript on only one line, sub-70 chars:\n// thingsToFix = fieldsToFix.map (name) -> ucFirst(name) + \"Field\"\n// thingsToFix = (ucFirst(name) + \"Field\" for name in fieldsToFix)\nthingsToFix = thingsToFix.concat(otherThingsToFix)\n\nfunction normalize (data, warn, strict) {\n if (warn === true) {\n warn = null\n strict = true\n }\n if (!strict) {\n strict = false\n }\n if (!warn || data.private) {\n warn = function () { /* noop */ }\n }\n\n if (data.scripts &&\n data.scripts.install === 'node-gyp rebuild' &&\n !data.scripts.preinstall) {\n data.gypfile = true\n }\n fixer.warn = function () {\n warn(makeWarning.apply(null, arguments))\n }\n thingsToFix.forEach(function (thingName) {\n fixer['fix' + ucFirst(thingName)](data, strict)\n })\n data._id = data.name + '@' + data.version\n}\n\nfunction ucFirst (string) {\n return string.charAt(0).toUpperCase() + string.slice(1)\n}\n","import {promisify} from 'node:util';\nimport {execFile as execFileCallback, execFileSync as execFileSyncOriginal} from 'node:child_process';\nimport path from 'node:path';\nimport {fileURLToPath} from 'node:url';\n\nconst execFileOriginal = promisify(execFileCallback);\n\nexport function toPath(urlOrPath) {\n\treturn urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath;\n}\n\nexport function rootDirectory(pathInput) {\n\treturn path.parse(toPath(pathInput)).root;\n}\n\nexport function traversePathUp(startPath) {\n\treturn {\n\t\t* [Symbol.iterator]() {\n\t\t\tlet currentPath = path.resolve(toPath(startPath));\n\t\t\tlet previousPath;\n\n\t\t\twhile (previousPath !== currentPath) {\n\t\t\t\tyield currentPath;\n\t\t\t\tpreviousPath = currentPath;\n\t\t\t\tcurrentPath = path.resolve(currentPath, '..');\n\t\t\t}\n\t\t},\n\t};\n}\n\nconst TEN_MEGABYTES_IN_BYTES = 10 * 1024 * 1024;\n\nexport async function execFile(file, arguments_, options = {}) {\n\treturn execFileOriginal(file, arguments_, {\n\t\tmaxBuffer: TEN_MEGABYTES_IN_BYTES,\n\t\t...options,\n\t});\n}\n\nexport function execFileSync(file, arguments_ = [], options = {}) {\n\treturn execFileSyncOriginal(file, arguments_, {\n\t\tmaxBuffer: TEN_MEGABYTES_IN_BYTES,\n\t\tencoding: 'utf8',\n\t\tstdio: 'pipe',\n\t\t...options,\n\t});\n}\n\nexport * from './default.js';\n","import fs from 'node:fs';\nimport fsPromises from 'node:fs/promises';\nimport path from 'node:path';\nimport parseJson from 'parse-json';\nimport normalizePackageData from 'normalize-package-data';\nimport {toPath} from 'unicorn-magic/node';\n\nconst getPackagePath = cwd => path.resolve(toPath(cwd) ?? '.', 'package.json');\n\nconst _readPackage = (file, normalize) => {\n\tconst json = typeof file === 'string'\n\t\t? parseJson(file)\n\t\t: file;\n\n\tif (normalize) {\n\t\tnormalizePackageData(json);\n\t}\n\n\treturn json;\n};\n\nexport async function readPackage({cwd, normalize = true} = {}) {\n\tconst packageFile = await fsPromises.readFile(getPackagePath(cwd), 'utf8');\n\treturn _readPackage(packageFile, normalize);\n}\n\nexport function readPackageSync({cwd, normalize = true} = {}) {\n\tconst packageFile = fs.readFileSync(getPackagePath(cwd), 'utf8');\n\treturn _readPackage(packageFile, normalize);\n}\n\nexport function parsePackage(packageFile, {normalize = true} = {}) {\n\tconst isObject = packageFile !== null && typeof packageFile === 'object' && !Array.isArray(packageFile);\n\tconst isString = typeof packageFile === 'string';\n\n\tif (!isObject && !isString) {\n\t\tthrow new TypeError('`packageFile` should be either an `object` or a `string`.');\n\t}\n\n\tconst clonedPackageFile = isObject ? structuredClone(packageFile) : packageFile;\n\n\treturn _readPackage(clonedPackageFile, normalize);\n}\n","import { pascalCase } from \"change-case\";\nimport type {\n DocumentModelDocument,\n DocumentModelGlobalState,\n} from \"@powerhousedao/shared/document-model\";\nimport { documentModelReducer } from \"@powerhousedao/shared/document-model\";\nimport { baseLoadFromFile } from \"document-model/node\";\nimport fs from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport { join, resolve } from \"node:path\";\nimport { format } from \"prettier\";\nimport type { DocumentTypesMap } from \"./types.js\";\n\nexport async function loadDocumentModel(\n path: string,\n): Promise<DocumentModelGlobalState> {\n let documentModel: DocumentModelGlobalState;\n try {\n if (!path) {\n throw new Error(\"Document model file not specified\");\n } else if (path.endsWith(\".zip\") || path.endsWith(\".phd\")) {\n const file = await baseLoadFromFile(path, documentModelReducer);\n documentModel = file.state.global;\n } else if (path.endsWith(\".json\")) {\n const data = await readFile(path, \"utf-8\");\n const parsedData = JSON.parse(data) as DocumentModelDocument;\n if (\"state\" in parsedData) {\n documentModel = parsedData.state.global;\n } else {\n documentModel = parsedData;\n }\n } else {\n throw new Error(\"File type not supported. Must be zip, phd, or json.\");\n }\n return documentModel;\n } catch (error) {\n throw (error as { code?: string }).code === \"MODULE_NOT_FOUND\"\n ? new Error(`Document model not found.`)\n : error;\n }\n}\n\nexport async function formatWithPrettierBeforeWrite(\n outputFile: string,\n content: string,\n) {\n const modifiedContent = await format(content, {\n parser: \"typescript\",\n });\n return modifiedContent;\n}\n\n/** returns map of document model id to document model name in pascal case and import path */\nexport function getDocumentTypesMap(\n dir: string,\n pathOrigin = \"../../\",\n): DocumentTypesMap {\n const documentTypesMap: DocumentTypesMap = {\n \"powerhouse/document-model\": {\n name: \"DocumentModel\",\n importPath: `document-model`,\n },\n };\n\n // add document types from provided dir\n if (fs.existsSync(dir)) {\n fs.readdirSync(dir, { withFileTypes: true })\n .filter((dirent) => dirent.isDirectory())\n .map((dirent) => dirent.name)\n .forEach((name) => {\n const specPath = resolve(dir, name, `${name}.json`);\n if (!fs.existsSync(specPath)) {\n return;\n }\n\n const specRaw = fs.readFileSync(specPath, \"utf-8\");\n try {\n const spec = JSON.parse(specRaw) as DocumentModelGlobalState;\n if (spec.id) {\n documentTypesMap[spec.id] = {\n name: pascalCase(name),\n importPath: join(pathOrigin, dir, name, \"index.js\"),\n };\n }\n } catch {\n console.error(`Failed to parse ${specPath}`);\n }\n });\n }\n\n return documentTypesMap;\n}\n","import {\n makeSubgraphsIndexFile,\n tsMorphGenerateDocumentEditor,\n tsMorphGenerateDocumentModel,\n tsMorphGenerateDriveEditor,\n tsMorphGenerateSubgraph,\n} from \"@powerhousedao/codegen/file-builders\";\nimport type {\n PartialPowerhouseManifest,\n PowerhouseManifest,\n} from \"@powerhousedao/shared\";\nimport { fileExists, type PowerhouseConfig } from \"@powerhousedao/shared/clis\";\nimport type { DocumentModelGlobalState } from \"@powerhousedao/shared/document-model\";\nimport type { ProcessorApps } from \"@powerhousedao/shared/processors\";\nimport { kebabCase } from \"change-case\";\nimport fs from \"node:fs\";\nimport { readdir } from \"node:fs/promises\";\nimport path, { join } from \"node:path\";\nimport { readPackage, type NormalizedPackageJson } from \"read-pkg\";\nimport semver from \"semver\";\nimport { tsMorphGenerateProcessor } from \"../file-builders/processors/processor.js\";\nimport { generateSchemas } from \"./graphql.js\";\nimport type { CodegenOptions } from \"./types.js\";\nimport { loadDocumentModel } from \"./utils.js\";\n\nexport async function generateAll(args: {\n dir: string;\n useVersioning: boolean;\n migrateLegacy?: boolean;\n watch?: boolean;\n skipFormat?: boolean;\n verbose?: boolean;\n force?: boolean;\n}) {\n const {\n dir,\n useVersioning,\n migrateLegacy = false,\n watch = false,\n skipFormat = false,\n verbose = true,\n force = true,\n } = args;\n const files = await readdir(dir, { withFileTypes: true });\n const documentModelStates: DocumentModelGlobalState[] = [];\n\n for (const directory of files.filter((f) => f.isDirectory())) {\n const documentModelPath = path.join(\n dir,\n directory.name,\n `${directory.name}.json`,\n );\n const pathExists = await fileExists(documentModelPath);\n if (!pathExists) {\n continue;\n }\n\n try {\n const documentModelState = await loadDocumentModel(documentModelPath);\n documentModelStates.push(documentModelState);\n\n await generateDocumentModel({\n dir,\n documentModelState,\n watch,\n skipFormat,\n verbose,\n force,\n useVersioning,\n migrateLegacy,\n });\n } catch (error) {\n if (verbose) {\n console.error(directory.name, error);\n }\n }\n }\n}\n\nexport async function generate(\n config: PowerhouseConfig,\n useVersioning: boolean,\n migrateLegacy = false,\n) {\n const { skipFormat, watch } = config;\n await generateSchemas(config.documentModelsDir, { skipFormat, watch });\n await generateAll({\n dir: config.documentModelsDir,\n useVersioning,\n migrateLegacy,\n skipFormat,\n watch,\n });\n}\n\nexport async function generateFromFile(args: {\n path: string;\n config: PowerhouseConfig;\n useVersioning: boolean;\n migrateLegacy?: boolean;\n options?: CodegenOptions;\n}) {\n const { path, config, useVersioning, migrateLegacy, options } = args;\n // load document model spec from file\n const documentModelState = await loadDocumentModel(path);\n\n // delegate to shared generation function\n await generateFromDocumentModel({\n documentModelState,\n config,\n useVersioning,\n migrateLegacy,\n options,\n });\n}\n\n/**\n * Generates code from a DocumentModelGlobalState object directly.\n *\n * @remarks\n * This function performs the same code generation as generateFromFile but takes\n * a DocumentModelGlobalState object directly instead of loading from a file. This allows for\n * programmatic code generation without file I/O.\n *\n * @param documentModelDocument - The DocumentModelGlobalState object containing the document model\n * @param config - The PowerhouseConfig configuration object\n * @param options - Optional configuration for generation behavior (verbose logging, etc.)\n * @returns A promise that resolves when code generation is complete\n */\nexport async function generateFromDocument(args: {\n documentModelState: DocumentModelGlobalState;\n config: PowerhouseConfig;\n useVersioning: boolean;\n migrateLegacy?: boolean;\n options?: CodegenOptions;\n}) {\n // delegate to shared generation function\n await generateFromDocumentModel(args);\n}\n\ntype GenerateDocumentModelArgs = {\n dir: string;\n documentModelState: DocumentModelGlobalState;\n useVersioning: boolean;\n migrateLegacy?: boolean;\n specifiedPackageName?: string;\n watch?: boolean;\n skipFormat?: boolean;\n verbose?: boolean;\n force?: boolean;\n};\nexport async function generateDocumentModel(args: GenerateDocumentModelArgs) {\n const {\n dir,\n documentModelState,\n specifiedPackageName,\n useVersioning,\n migrateLegacy,\n } = args;\n const packageJson = await readPackage();\n const packageNameFromPackageJson = packageJson.name;\n const packageName = specifiedPackageName || packageNameFromPackageJson;\n const zodSemverString = findZodDependencyInPackageJson(packageJson);\n ensureZodVersionIsSufficient(zodSemverString);\n\n const projectDir = path.dirname(dir);\n await tsMorphGenerateDocumentModel({\n projectDir,\n packageName,\n documentModelState,\n useVersioning,\n migrateLegacy,\n });\n ensurePackageExportsWildcards();\n ensureTsconfigPaths(packageName);\n}\n\nconst requiredWildcardExports: Record<string, Record<string, string>> = {\n \"./document-models/*\": {\n types: \"./dist/document-models/*/index.d.ts\",\n import: \"./dist/document-models/*/index.js\",\n },\n \"./editors/*\": {\n types: \"./dist/editors/*/index.d.ts\",\n import: \"./dist/editors/*/index.js\",\n },\n};\n\n/**\n * Ensures that the project's package.json exports field contains the\n * wildcard subpath patterns required for deep imports like\n * \"package-name/document-models/my-doc\" to resolve correctly.\n */\nfunction ensurePackageExportsWildcards(projectRoot?: string) {\n const rootDir = projectRoot || process.cwd();\n const packageJsonPath = join(rootDir, \"package.json\");\n\n if (!fs.existsSync(packageJsonPath)) return;\n\n const raw = fs.readFileSync(packageJsonPath, \"utf-8\");\n const packageJson = JSON.parse(raw) as Record<string, unknown>;\n const exports = packageJson.exports as Record<string, unknown> | undefined;\n\n if (!exports) return;\n\n let modified = false;\n for (const [key, value] of Object.entries(requiredWildcardExports)) {\n if (!exports[key]) {\n exports[key] = value;\n modified = true;\n }\n }\n\n if (modified) {\n fs.writeFileSync(\n packageJsonPath,\n JSON.stringify(packageJson, null, 2) + \"\\n\",\n );\n }\n}\n\n/**\n * Ensures that the project's tsconfig.json has paths mappings for\n * self-referencing imports, which are needed by vite-tsconfig-paths\n * to resolve imports like \"package-name/document-models/my-doc\"\n * to source files during dev mode.\n */\nfunction ensureTsconfigPaths(packageName: string, projectRoot?: string) {\n const rootDir = projectRoot || process.cwd();\n const tsconfigPath = join(rootDir, \"tsconfig.json\");\n\n if (!fs.existsSync(tsconfigPath)) return;\n\n const raw = fs.readFileSync(tsconfigPath, \"utf-8\");\n // tsconfig.json may contain comments (JSONC), strip them before parsing\n // Match strings first to preserve them, then strip line/block comments\n const stripped = raw.replace(\n /(\"(?:\\\\.|[^\"\\\\])*\")|\\/\\/.*$|\\/\\*[\\s\\S]*?\\*\\//gm,\n (_match, str: string | undefined) => str ?? \"\",\n );\n const tsconfig = JSON.parse(stripped) as Record<string, unknown>;\n const compilerOptions = (tsconfig.compilerOptions ?? {}) as Record<\n string,\n unknown\n >;\n const paths = (compilerOptions.paths ?? {}) as Record<string, string[]>;\n\n const requiredPaths: Record<string, string[]> = {\n [`${packageName}/document-models`]: [\"./document-models/index.ts\"],\n [`${packageName}/document-models/*`]: [\"./document-models/*/index.ts\"],\n [`${packageName}/editors`]: [\"./editors/index.ts\"],\n [`${packageName}/editors/*`]: [\"./editors/*/index.ts\"],\n };\n\n let modified = false;\n for (const [key, value] of Object.entries(requiredPaths)) {\n if (!paths[key]) {\n paths[key] = value;\n modified = true;\n }\n }\n\n if (modified) {\n compilerOptions.paths = paths;\n tsconfig.compilerOptions = compilerOptions;\n fs.writeFileSync(tsconfigPath, JSON.stringify(tsconfig, null, 2) + \"\\n\");\n }\n}\n\nfunction findZodDependencyInPackageJson(\n packageJson: NormalizedPackageJson,\n): string | undefined {\n const dependencies = {\n ...packageJson.dependencies,\n ...packageJson.devDependencies,\n };\n const zodDependency = dependencies[\"zod\"];\n return zodDependency;\n}\n\nfunction ensureZodVersionIsSufficient(zodSemverString: string | undefined) {\n if (!zodSemverString) return;\n const cleaned = semver.clean(zodSemverString);\n if (!cleaned) return;\n const isSufficient = semver.gte(cleaned, \"4.0.0\");\n if (!isSufficient) {\n throw new Error(\n `Your version of zod \"${zodSemverString}\" is out of date. Please install zod version 4.x to continue.`,\n );\n }\n}\n\ntype GenerateEditorArgs = {\n editorName: string;\n documentTypes: string[];\n skipFormat?: boolean;\n editorId?: string;\n editorDirName?: string;\n specifiedPackageName?: string;\n};\nexport async function generateEditor(args: GenerateEditorArgs) {\n const {\n editorName,\n documentTypes,\n editorId: editorIdArg,\n specifiedPackageName,\n editorDirName,\n } = args;\n\n const packageNameFromPackageJson = await readPackage().then(\n (pkg) => pkg.name,\n );\n const packageName = specifiedPackageName || packageNameFromPackageJson;\n\n const projectDir = path.dirname(\"editors\");\n\n if (documentTypes.length > 1) {\n throw new Error(\"Multiple document types are not supported yet\");\n }\n\n const documentModelId = documentTypes[0];\n const editorId = editorIdArg || kebabCase(editorName);\n const editorDir = editorDirName || kebabCase(editorName);\n\n await tsMorphGenerateDocumentEditor({\n packageName,\n projectDir,\n editorDir,\n documentModelId,\n editorName,\n editorId,\n });\n ensurePackageExportsWildcards();\n ensureTsconfigPaths(packageName);\n}\n\nexport async function generateDriveEditor(options: {\n driveEditorName: string;\n skipFormat?: boolean;\n driveEditorId?: string;\n allowedDocumentTypes?: string[];\n isDragAndDropEnabled?: boolean;\n driveEditorDirName?: string;\n specifiedPackageName?: string;\n}) {\n const {\n driveEditorName,\n driveEditorId,\n allowedDocumentTypes,\n isDragAndDropEnabled,\n driveEditorDirName,\n specifiedPackageName,\n } = options;\n const dir = \"editors\";\n\n const packageNameFromPackageJson = await readPackage().then(\n (pkg) => pkg.name,\n );\n const packageName = specifiedPackageName || packageNameFromPackageJson;\n\n const projectDir = path.dirname(dir);\n\n await tsMorphGenerateDriveEditor({\n projectDir,\n editorDir: driveEditorDirName || kebabCase(driveEditorName),\n editorName: driveEditorName,\n editorId: driveEditorId ?? kebabCase(driveEditorName),\n packageName,\n allowedDocumentModelIds: allowedDocumentTypes ?? [],\n isDragAndDropEnabled: isDragAndDropEnabled ?? true,\n });\n}\n\nexport async function generateSubgraphFromDocumentModel(\n name: string,\n documentModel: DocumentModelGlobalState,\n config: PowerhouseConfig,\n _options: CodegenOptions = {},\n) {\n const packageName = await readPackage().then((pkg) => pkg.name);\n await tsMorphGenerateSubgraph({\n subgraphsDir: config.subgraphsDir,\n subgraphName: name,\n packageName,\n documentModel,\n });\n await makeSubgraphsIndexFile({\n projectDir: path.dirname(config.subgraphsDir),\n });\n}\n\nexport async function generateSubgraph(\n name: string,\n file: string | null,\n config: PowerhouseConfig,\n _options: CodegenOptions = {},\n) {\n const documentModelState =\n file !== null ? await loadDocumentModel(file) : null;\n const packageName = await readPackage().then((pkg) => pkg.name);\n\n await tsMorphGenerateSubgraph({\n subgraphsDir: config.subgraphsDir,\n subgraphName: name,\n packageName,\n documentModel: documentModelState,\n });\n await makeSubgraphsIndexFile({\n projectDir: path.dirname(config.subgraphsDir),\n });\n}\n\nexport async function generateProcessor(args: {\n processorName: string;\n processorType: \"analytics\" | \"relationalDb\";\n processorApps: ProcessorApps;\n documentTypes: string[];\n skipFormat?: boolean;\n rootDir?: string;\n}) {\n const { rootDir = process.cwd() } = args;\n return await tsMorphGenerateProcessor({\n rootDir,\n ...args,\n });\n}\n\nexport async function generateImportScript(\n _name: string,\n _config: PowerhouseConfig,\n) {\n throw new Error(\n \"Import script generation has been removed. The document-drive server APIs it depended on have been deprecated.\",\n );\n}\n\nconst defaultManifest: PowerhouseManifest = {\n name: \"\",\n description: \"\",\n category: \"\",\n publisher: {\n name: \"\",\n url: \"\",\n },\n documentModels: [],\n editors: [],\n apps: [],\n subgraphs: [],\n importScripts: [],\n};\n\nexport function generateManifest(\n manifestData: PartialPowerhouseManifest,\n projectRoot?: string,\n) {\n const rootDir = projectRoot || process.cwd();\n const manifestPath = join(rootDir, \"powerhouse.manifest.json\");\n\n // Create default manifest structure\n\n // Read existing manifest if it exists\n let existingManifest: PowerhouseManifest = defaultManifest;\n if (fs.existsSync(manifestPath)) {\n try {\n const existingData = fs.readFileSync(manifestPath, \"utf-8\");\n existingManifest = JSON.parse(existingData) as PowerhouseManifest;\n } catch (error) {\n console.warn(`Failed to parse existing manifest: ${String(error)}`);\n existingManifest = defaultManifest;\n }\n }\n\n // Helper function to merge arrays by ID\n const mergeArrayById = <T extends { id: string }>(\n existingArray: T[],\n newArray?: T[],\n ): T[] => {\n if (!newArray) return existingArray;\n\n const result = [...existingArray];\n\n newArray.forEach((newItem) => {\n const existingIndex = result.findIndex((item) => item.id === newItem.id);\n if (existingIndex !== -1) {\n // Replace existing item\n result[existingIndex] = newItem;\n } else {\n // Add new item\n result.push(newItem);\n }\n });\n\n return result;\n };\n\n // Merge partial data with existing manifest\n const updatedManifest: PowerhouseManifest = {\n ...existingManifest,\n ...manifestData,\n publisher: {\n ...existingManifest.publisher,\n ...(manifestData.publisher || {}),\n },\n documentModels: mergeArrayById(\n existingManifest.documentModels,\n manifestData.documentModels,\n ),\n editors: mergeArrayById(existingManifest.editors, manifestData.editors),\n apps: mergeArrayById(existingManifest.apps, manifestData.apps),\n subgraphs: mergeArrayById(\n existingManifest.subgraphs,\n manifestData.subgraphs,\n ),\n importScripts: mergeArrayById(\n existingManifest.importScripts,\n manifestData.importScripts,\n ),\n };\n\n // Write updated manifest to file\n fs.writeFileSync(manifestPath, JSON.stringify(updatedManifest, null, 4));\n\n return manifestPath;\n}\n\n/**\n * Generates code from a DocumentModelGlobalState.\n *\n * @remarks\n * This is the core generation function that both generateFromFile and generateFromDocument\n * use internally. It handles the actual code generation from a DocumentModelGlobalState object.\n *\n * @param documentModel - The DocumentModelGlobalState containing the document model specification\n * @param config - The PowerhouseConfig configuration object\n * @param options - Optional configuration for generation behavior\n * @returns A promise that resolves when code generation is complete\n */\nasync function generateFromDocumentModel(args: {\n documentModelState: DocumentModelGlobalState;\n config: PowerhouseConfig;\n useVersioning: boolean;\n migrateLegacy?: boolean;\n options?: CodegenOptions;\n}) {\n const {\n documentModelState,\n config,\n useVersioning,\n migrateLegacy,\n options = {},\n } = args;\n const {\n verbose = config.logLevel === \"verbose\" ||\n config.logLevel === \"debug\" ||\n config.logLevel === \"info\",\n force = false,\n } = options;\n const name = kebabCase(documentModelState.name);\n const documentModelDir = join(config.documentModelsDir, name);\n // create document model folder and spec as json\n fs.mkdirSync(documentModelDir, { recursive: true });\n fs.writeFileSync(\n join(documentModelDir, `${name}.json`),\n JSON.stringify(documentModelState, null, 2),\n );\n\n await generateDocumentModel({\n dir: config.documentModelsDir,\n documentModelState,\n watch: config.watch,\n skipFormat: config.skipFormat,\n verbose,\n force,\n useVersioning,\n migrateLegacy,\n });\n}\n","import { spawn } from \"node:child_process\";\nimport { existsSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { join, resolve } from \"node:path\";\n\nfunction getKyselyPgLiteBin(): string {\n const require = createRequire(import.meta.url);\n\n const paths = require.resolve.paths(\"kysely-pglite\");\n if (paths) {\n for (const basePath of paths) {\n const pkgRoot = join(basePath, \"kysely-pglite\");\n const binPath = join(pkgRoot, \"bin/run.js\");\n\n if (existsSync(binPath)) {\n return binPath;\n }\n }\n }\n\n throw new Error(\"Could not find kysely-pglite/bin/run.js\");\n}\n\nexport interface IOptions {\n migrationFile: string;\n schemaFile?: string;\n}\n\nfunction runCommand(\n command: string,\n args: string[],\n cwd?: string,\n): Promise<void> {\n return new Promise((resolve, reject) => {\n const child = spawn(command, args, {\n cwd,\n stdio: \"inherit\",\n shell: true,\n });\n\n child.on(\"close\", (code) => {\n if (code === 0) {\n resolve();\n } else {\n reject(new Error(`Command failed with exit code ${code}`));\n }\n });\n\n child.on(\"error\", (error) => {\n reject(error);\n });\n });\n}\n\nexport async function generateDBSchema({\n migrationFile,\n schemaFile,\n}: IOptions) {\n const outFile = schemaFile ?? resolve(migrationFile, \"../schema.ts\");\n\n try {\n const kyselyBinPath = getKyselyPgLiteBin();\n // Use kysely-pglite CLI to handle TypeScript compilation and module resolution\n await runCommand(\n \"node\",\n [kyselyBinPath, migrationFile, \"--outFile\", outFile],\n process.cwd(),\n );\n\n console.log(`Schema types generated at ${outFile}`);\n } catch (error) {\n console.error(\"Error running migration:\", error);\n }\n}\n","import { execSync } from \"child_process\";\nimport { mkdir, writeFile } from \"node:fs/promises\";\nimport { dirname } from \"node:path\";\n\nconst packageManagers = [\"npm\", \"yarn\", \"pnpm\", \"bun\"] as const;\nconst defaultPackageManager = \"npm\";\n\nexport type PackageManager = (typeof packageManagers)[number];\n\nexport function getPackageManager(userAgent?: string): PackageManager {\n if (!userAgent) {\n return defaultPackageManager;\n }\n\n const pkgSpec = userAgent.split(\" \")[0];\n const pkgSpecArr = pkgSpec.split(\"/\");\n const name = pkgSpecArr[0];\n\n if (packageManagers.includes(name as PackageManager)) {\n return name as PackageManager;\n } else {\n return defaultPackageManager;\n }\n}\n\nexport const envPackageManager = getPackageManager(\n process.env.npm_config_user_agent,\n);\n\nexport function runCmd(command: string) {\n try {\n execSync(command, { stdio: \"inherit\" });\n } catch (error) {\n console.log(\"\\x1b[31m\", error, \"\\x1b[0m\");\n throw error;\n }\n}\n\nexport async function writeFileEnsuringDir(\n filePath: string,\n contents: string | Buffer,\n) {\n await mkdir(dirname(filePath), { recursive: true });\n await writeFile(filePath, contents, { encoding: \"utf-8\" });\n}\n","import path from \"node:path\";\nimport { runCmd } from \"./utils.js\";\n\n/**\n * Clones a git repository and returns the path to the cloned project.\n * @param repositoryUrl - The URL of the git repository to clone\n * @returns The absolute path to the cloned project directory\n */\nexport function cloneRepository(repositoryUrl: string): string {\n try {\n console.log(\n \"\\x1b[33m\",\n `Cloning repository from ${repositoryUrl}...`,\n \"\\x1b[0m\",\n );\n runCmd(`git clone ${repositoryUrl}`);\n\n // Extract project name from repository URL\n // e.g., https://github.com/org/repo.git -> repo\n const repoName = repositoryUrl\n .split(\"/\")\n .pop()\n ?.replace(/\\.git$/, \"\");\n\n if (!repoName) {\n throw new Error(\"Could not determine project name from repository URL\");\n }\n\n const projectPath = path.join(process.cwd(), repoName);\n return projectPath;\n } catch (error) {\n console.log(error);\n throw error;\n }\n}\n\n/**\n * Installs dependencies in a project directory using the specified package manager.\n * @param projectPath - The absolute path to the project directory\n * @param packageManager - The package manager to use (npm, pnpm, yarn, bun)\n */\nexport function installDependencies(\n projectPath: string,\n packageManager: string,\n): void {\n try {\n process.chdir(projectPath);\n\n console.log(\n \"\\x1b[34m\",\n `Installing dependencies with ${packageManager}...`,\n \"\\x1b[0m\",\n );\n runCmd(`${packageManager} install --loglevel error`);\n\n console.log(\"\\x1b[32m\", \"Dependencies installed successfully!\", \"\\x1b[0m\");\n console.log();\n } catch (error) {\n console.log(error);\n throw error;\n }\n}\n","import { ts } from \"@tmpl/core\";\n\nexport const upgradeManifestsTemplate = ts`\nimport type { UpgradeManifest } from \"document-model\";\n\nexport const upgradeManifests: UpgradeManifest<readonly number[]>[] = [];\n`.raw;\n","import chalk from \"chalk\";\nimport { buildBoilerplatePackageJson } from \"file-builders\";\nimport fs from \"node:fs\";\nimport path from \"path\";\nimport {\n agentsTemplate,\n buildPowerhouseConfigTemplate,\n claudeSettingsLocalTemplate,\n claudeTemplate,\n connectEntrypointTemplate,\n cursorMcpTemplate,\n dockerfileTemplate,\n documentModelsIndexTemplate,\n documentModelsTemplate,\n editorsIndexTemplate,\n editorsTemplate,\n eslintConfigTemplate,\n geminiSettingsTemplate,\n gitIgnoreTemplate,\n indexHtmlTemplate,\n indexTsTemplate,\n licenseTemplate,\n mainTsxTemplate,\n mcpTemplate,\n nginxConfTemplate,\n npmrcTemplate,\n powerhouseManifestTemplate,\n processorsFactoryTemplate,\n processorsIndexTemplate,\n readmeTemplate,\n styleTemplate,\n subgraphsIndexTemplate,\n switchboardEntrypointTemplate,\n syncAndPublishWorkflowTemplate,\n tsConfigTemplate,\n vitestConfigTemplate,\n} from \"templates\";\nimport { runPrettier } from \"utils\";\nimport { upgradeManifestsTemplate } from \"../templates/boilerplate/document-models/upgrade-manifests.js\";\nimport { runCmd, writeFileEnsuringDir } from \"./utils.js\";\ntype CreateProjectArgs = {\n name: string;\n packageManager: string;\n tag?: string;\n version?: string;\n remoteDrive?: string;\n skipGitInit?: boolean;\n skipInstall?: boolean;\n};\nexport async function createProject({\n name,\n packageManager,\n tag,\n version,\n remoteDrive,\n skipGitInit,\n skipInstall,\n}: CreateProjectArgs) {\n const appPath = path.join(process.cwd(), name);\n\n try {\n fs.mkdirSync(appPath);\n } catch (err) {\n if ((err as { code: string }).code === \"EEXIST\") {\n console.error(\n `⛔ The folder \"${name}\" already exists in the current directory, please give it another name.`,\n );\n } else {\n console.error(err);\n }\n process.exit(1);\n }\n\n try {\n // Create a new directory for the project\n console.log(chalk.blue(`▶️ Creating directory for project \"${name}\"...\\n`));\n const appPath = path.join(process.cwd(), name);\n process.chdir(appPath);\n console.log(chalk.green(`✅ Project directory created\\n`));\n\n await writeFileEnsuringDir(\".gitignore\", gitIgnoreTemplate);\n if (!skipGitInit) {\n // Create a .gitignore file, then initialize the git repository\n console.log(chalk.blue(`▶️ Initializing git repository...\\n`));\n runCmd(`git init`);\n console.log(chalk.green(`\\n✅ Git repository initialized\\n`));\n }\n\n // Write the boilerplate files for the project\n console.log(chalk.blue(`▶️ Creating project boilerplate files...\\n`));\n await writeProjectRootFiles({ name, tag, version, remoteDrive });\n await writeModuleFiles();\n await writeAiConfigFiles();\n await writeCIFiles();\n console.log(chalk.green(`✅ Project boilerplate files created\\n`));\n\n if (!skipInstall) {\n // Install the project dependencies with the specified package manager\n console.log(\n chalk.blue(\n `▶️ Installing project dependencies with ${packageManager}...\\n`,\n ),\n );\n runCmd(`${packageManager} install`);\n console.log(chalk.green(`\\n✅ Project dependencies installed\\n`));\n }\n\n // Use the installed version of `prettier` to format the generated code\n console.log(chalk.blue(`▶️ Formatting boilerplate project files...\\n`));\n await runPrettier();\n console.log(chalk.green(`✅ Boilerplate files formatted\\n`));\n\n // Project creation complete\n console.log(chalk.bold(`🎉 Successfully created project \"${name}\" 🎉\\n`));\n } catch (error) {\n console.error(error);\n process.exit(1);\n }\n}\n\nasync function writeProjectRootFiles(args: {\n name: string;\n tag?: string;\n version?: string;\n remoteDrive?: string;\n}) {\n const { name, tag, version, remoteDrive } = args;\n await writeFileEnsuringDir(\"LICENSE\", licenseTemplate);\n await writeFileEnsuringDir(\"README.md\", readmeTemplate);\n await writeFileEnsuringDir(\".npmrc\", npmrcTemplate);\n const packageJson = await buildBoilerplatePackageJson({\n name,\n tag,\n version,\n });\n const powerhouseManifest = powerhouseManifestTemplate(name);\n await writeFileEnsuringDir(\"powerhouse.manifest.json\", powerhouseManifest);\n const powerhouseConfig = await buildPowerhouseConfigTemplate({\n tag,\n version,\n remoteDrive,\n });\n await writeFileEnsuringDir(\"powerhouse.config.json\", powerhouseConfig);\n await writeFileEnsuringDir(\"package.json\", packageJson);\n await writeFileEnsuringDir(\"tsconfig.json\", tsConfigTemplate);\n await writeFileEnsuringDir(\"index.html\", indexHtmlTemplate);\n await writeFileEnsuringDir(\"main.tsx\", mainTsxTemplate);\n await writeFileEnsuringDir(\"eslint.config.js\", eslintConfigTemplate);\n await writeFileEnsuringDir(\"index.ts\", indexTsTemplate);\n await writeFileEnsuringDir(\"style.css\", styleTemplate);\n await writeFileEnsuringDir(\"vitest.config.ts\", vitestConfigTemplate);\n}\n\nasync function writeModuleFiles() {\n await writeFileEnsuringDir(\n \"document-models/document-models.ts\",\n documentModelsTemplate,\n );\n await writeFileEnsuringDir(\n \"document-models/index.ts\",\n documentModelsIndexTemplate,\n );\n await writeFileEnsuringDir(\n \"document-models/upgrade-manifests.ts\",\n upgradeManifestsTemplate,\n );\n await writeFileEnsuringDir(\"editors/editors.ts\", editorsTemplate);\n await writeFileEnsuringDir(\"editors/index.ts\", editorsIndexTemplate);\n await writeFileEnsuringDir(\n \"processors/factory.ts\",\n processorsFactoryTemplate,\n );\n await writeFileEnsuringDir(\"processors/index.ts\", processorsIndexTemplate);\n await writeFileEnsuringDir(\"subgraphs/index.ts\", subgraphsIndexTemplate);\n await writeFileEnsuringDir(\"processors/index.ts\", processorsIndexTemplate);\n}\n\nasync function writeAiConfigFiles() {\n await writeFileEnsuringDir(\"CLAUDE.md\", claudeTemplate);\n await writeFileEnsuringDir(\"AGENTS.md\", agentsTemplate);\n await writeFileEnsuringDir(\".mcp.json\", mcpTemplate);\n await writeFileEnsuringDir(\".gemini/settings.json\", geminiSettingsTemplate);\n await writeFileEnsuringDir(\".cursor/mcp.json\", cursorMcpTemplate);\n await writeFileEnsuringDir(\n \".claude/settings.local.json\",\n claudeSettingsLocalTemplate,\n );\n}\n\nasync function writeCIFiles() {\n await writeFileEnsuringDir(\n \".github/workflows/sync-and-publish.yml\",\n syncAndPublishWorkflowTemplate,\n );\n await writeFileEnsuringDir(\"Dockerfile\", dockerfileTemplate);\n await writeFileEnsuringDir(\"docker/nginx.conf\", nginxConfTemplate);\n await writeFileEnsuringDir(\n \"docker/connect-entrypoint.sh\",\n connectEntrypointTemplate,\n );\n await writeFileEnsuringDir(\n \"docker/switchboard-entrypoint.sh\",\n switchboardEntrypointTemplate,\n );\n}\n","import type { DeclarationManager } from \"../utilities/DeclarationManager.js\";\nimport type { DirectoryManager } from \"../utilities/DirectoryManager.js\";\nimport type { ImportManager } from \"../utilities/ImportManager.js\";\nimport type { GenerationContext } from \"./GenerationContext.js\";\n\nexport abstract class FileGenerator {\n constructor(\n protected importManager: ImportManager,\n protected directoryManager: DirectoryManager,\n protected declarationManager: DeclarationManager,\n ) {}\n\n abstract generate(context: GenerationContext): Promise<void>;\n}\n","import { camelCase, kebabCase, pascalCase } from \"change-case\";\nimport type { OperationErrorSpecification } from \"@powerhousedao/shared/document-model\";\nimport type {\n MethodDeclaration,\n ObjectLiteralExpression,\n SourceFile,\n} from \"ts-morph\";\nimport { SyntaxKind, VariableDeclarationKind } from \"ts-morph\";\nimport { FileGenerator } from \"./FileGenerator.js\";\nimport type {\n CodegenOperation,\n GenerationContext,\n} from \"./GenerationContext.js\";\n\nexport class ReducerGenerator extends FileGenerator {\n async generate(context: GenerationContext): Promise<void> {\n // Skip if no actions to generate\n if (context.operations.length === 0) return;\n\n const filePath = this.getOutputPath(context);\n const sourceFile = await this.directoryManager.createSourceFile(\n context.project,\n filePath,\n );\n\n const packageName = context.packageName;\n // Reducer-specific import logic\n const typeImportName = `${pascalCase(context.docModel.name)}${pascalCase(context.module.name)}Operations`;\n const typeImportPath = `${packageName}/document-models/${kebabCase(context.docModel.name)}`;\n\n // Import management (shared utility)\n this.importManager.replaceImportByName(\n sourceFile,\n typeImportName,\n typeImportPath,\n true,\n );\n\n // AST logic (specific to reducers)\n this.createReducerObject(sourceFile, typeImportName, context);\n\n // Detect and import error classes used in the actual reducer code (after generation)\n this.addErrorImports(sourceFile, context);\n\n await sourceFile.save();\n }\n\n private static getDefaultReducerCode(methodName: string): string[] {\n return [\n `// TODO: Implement \"${methodName}\" reducer`,\n `throw new Error('Reducer \"${methodName}\" not yet implemented');`,\n ];\n }\n\n private addErrorImports(\n sourceFile: SourceFile,\n context: GenerationContext,\n ): void {\n // Collect all errors from all operations\n const allErrors: OperationErrorSpecification[] = [];\n\n context.operations.forEach((operation) => {\n if (Array.isArray(operation.errors)) {\n operation.errors\n .filter((error) => error.name)\n .forEach((error) => {\n // Deduplicate errors by name\n if (!allErrors.find((e) => e.name === error.name)) {\n allErrors.push(error);\n }\n });\n }\n });\n\n if (allErrors.length === 0) return;\n\n // Analyze the actual source file content to find which errors are used\n const sourceFileContent = sourceFile.getFullText();\n const usedErrors = new Set<string>();\n\n allErrors.forEach((error) => {\n // Check if error class name is mentioned anywhere in the source file\n // Look for patterns like \"new ErrorName\" or \"throw ErrorName\" or \"ErrorName(\"\n const errorPattern = new RegExp(`\\\\b${error.name}\\\\b`, \"g\");\n if (errorPattern.test(sourceFileContent)) {\n usedErrors.add(error.name!);\n }\n });\n\n // Add imports for used errors (only if they're not already imported)\n if (usedErrors.size > 0) {\n const errorImportPath = `../../gen/${kebabCase(context.module.name)}/error.js`;\n const errorClassNames = Array.from(usedErrors);\n\n // Check if imports already exist to avoid duplicates\n const existingImports = sourceFile.getImportDeclarations();\n const existingErrorImport = existingImports.find(\n (importDecl) =>\n importDecl.getModuleSpecifierValue() === errorImportPath,\n );\n\n if (existingErrorImport) {\n // Get already imported error names\n const existingNamedImports = existingErrorImport\n .getNamedImports()\n .map((namedImport) => namedImport.getName());\n\n // Only import errors that aren't already imported\n const newErrorsToImport = errorClassNames.filter(\n (errorName) => !existingNamedImports.includes(errorName),\n );\n\n if (newErrorsToImport.length > 0) {\n // Add new named imports to existing import declaration\n existingErrorImport.addNamedImports(newErrorsToImport);\n }\n } else {\n // Create new import declaration\n this.importManager.addNamedImports(\n sourceFile,\n errorClassNames,\n errorImportPath,\n );\n }\n }\n }\n\n private getOutputPath(context: GenerationContext): string {\n return this.directoryManager.getReducerPath(\n context.rootDir,\n context.docModel.name,\n context.module.name,\n );\n }\n\n private createReducerObject(\n sourceFile: SourceFile,\n typeName: string,\n context: GenerationContext,\n ): void {\n const { operations, forceUpdate } = context;\n const operationHandlersObjectName = `${camelCase(context.docModel.name)}${pascalCase(context.module.name)}Operations`;\n const legacyReducerVar = sourceFile.getVariableDeclaration(\"reducer\");\n if (legacyReducerVar) {\n this.declarationManager.renameVariable(\n sourceFile,\n \"reducer\",\n operationHandlersObjectName,\n );\n }\n let reducerVar = sourceFile.getVariableDeclaration(\n operationHandlersObjectName,\n );\n if (!reducerVar) {\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: operationHandlersObjectName,\n type: typeName,\n initializer: \"{}\",\n },\n ],\n });\n reducerVar = sourceFile.getVariableDeclarationOrThrow(\n operationHandlersObjectName,\n );\n } else {\n // Ensure correct type\n const typeNode = reducerVar.getTypeNode();\n if (!typeNode || typeNode.getText() !== typeName) {\n reducerVar.setType(typeName);\n }\n }\n\n const initializer = reducerVar.getInitializerIfKindOrThrow(\n SyntaxKind.ObjectLiteralExpression,\n );\n\n for (const operation of operations) {\n this.addReducerMethod(initializer, operation, forceUpdate);\n }\n }\n\n private addReducerMethod(\n objectLiteral: ObjectLiteralExpression,\n operation: CodegenOperation,\n forceUpdate = false,\n ): void {\n const actionName = camelCase(operation.name ?? \"\");\n if (!actionName) return;\n\n const methodName = `${actionName}Operation`;\n\n const reducerCode = operation.reducer?.trim();\n\n const existingReducer = objectLiteral\n .getProperty(methodName)\n ?.asKind(SyntaxKind.MethodDeclaration);\n\n // if reducer already exists but forceUpdate is true, update it\n if (existingReducer) {\n if (forceUpdate && reducerCode) {\n existingReducer.setBodyText(\"\");\n this.setReducerMethodCode(existingReducer, reducerCode);\n }\n return;\n }\n\n // if reducer doesn't exist, create it and set the code with the default code if no code is provided\n const method = objectLiteral.addMethod({\n name: methodName,\n parameters: [{ name: \"state\" }, { name: \"action\" }],\n });\n this.setReducerMethodCode(method, reducerCode);\n }\n\n private setReducerMethodCode(reducer: MethodDeclaration, code?: string) {\n reducer.addStatements(\n code ? [code] : ReducerGenerator.getDefaultReducerCode(reducer.getName()),\n );\n }\n}\n","import type { SourceFile } from \"ts-morph\";\n\nexport class DeclarationManager {\n renameVariable(\n sourceFile: SourceFile,\n oldName: string,\n newName: string,\n ): void {\n const variable = sourceFile.getVariableDeclaration(oldName);\n\n if (variable) {\n variable.getNameNode().replaceWithText(newName);\n sourceFile.saveSync();\n }\n }\n}\n","import type { PHProjectDirectories } from \"@powerhousedao/codegen\";\nimport { kebabCase, pascalCase } from \"change-case\";\nimport fs from \"fs/promises\";\nimport path from \"path\";\nimport type { Project, SourceFile } from \"ts-morph\";\n\nexport class DirectoryManager {\n private directories: Required<PHProjectDirectories> = {\n documentModelDir: \"document-model\",\n editorsDir: \"editors\",\n processorsDir: \"processors\",\n subgraphsDir: \"subgraphs\",\n };\n\n constructor(directories: PHProjectDirectories = {}) {\n this.directories = {\n ...this.directories,\n ...directories,\n };\n }\n async ensureExists(dirPath: string): Promise<void> {\n try {\n await fs.mkdir(dirPath, { recursive: true });\n } catch (err) {\n console.error(`Failed to create directory: ${dirPath}`, err);\n throw err;\n }\n }\n\n // Path builders for different file types\n getReducerPath(\n rootDir: string,\n docModelName: string,\n moduleName: string,\n ): string {\n return path.join(\n rootDir,\n this.directories.documentModelDir,\n kebabCase(docModelName),\n \"src\",\n \"reducers\",\n `${kebabCase(moduleName)}.ts`,\n );\n }\n\n getActionsPath(\n rootDir: string,\n docModelName: string,\n moduleName: string,\n ): string {\n return path.join(\n rootDir,\n this.directories.documentModelDir,\n kebabCase(docModelName),\n \"src\",\n \"actions\",\n `${kebabCase(moduleName)}.ts`,\n );\n }\n\n getComponentPath(\n rootDir: string,\n docModelName: string,\n componentName: string,\n ): string {\n return path.join(\n rootDir,\n this.directories.documentModelDir,\n kebabCase(docModelName),\n \"src\",\n \"components\",\n `${pascalCase(componentName)}.tsx`,\n );\n }\n\n getTypesPath(rootDir: string, docModelName: string): string {\n return path.join(\n rootDir,\n this.directories.documentModelDir,\n kebabCase(docModelName),\n \"src\",\n \"types.ts\",\n );\n }\n\n async createSourceFile(\n project: Project,\n filePath: string,\n ): Promise<SourceFile> {\n await this.ensureExists(path.dirname(filePath));\n return (\n project.addSourceFileAtPathIfExists(filePath) ??\n project.createSourceFile(filePath, \"\", { overwrite: false })\n );\n }\n}\n","import type { ImportDeclaration, SourceFile } from \"ts-morph\";\n\nexport interface ImportSpec {\n moduleSpecifier: string;\n namedImports?: string[];\n defaultImport?: string;\n isTypeOnly?: boolean;\n}\n\nexport class ImportManager {\n addImport(sourceFile: SourceFile, spec: ImportSpec): void {\n // Check if import already exists\n const existing = sourceFile.getImportDeclaration(\n (imp) => imp.getFullText() === spec.moduleSpecifier,\n );\n if (existing) {\n this.mergeImports(existing, spec);\n } else {\n sourceFile.addImportDeclaration(spec);\n }\n }\n\n addTypeImport(sourceFile: SourceFile, typeName: string, path: string): void {\n this.addImport(sourceFile, {\n moduleSpecifier: path,\n namedImports: [typeName],\n isTypeOnly: true,\n });\n }\n\n addNamedImports(\n sourceFile: SourceFile,\n imports: string[],\n path: string,\n ): void {\n this.addImport(sourceFile, {\n moduleSpecifier: path,\n namedImports: imports,\n });\n }\n\n private mergeImports(\n existingImport: ImportDeclaration,\n newSpec: ImportSpec,\n ): void {\n // Logic to merge named imports if they don't already exist\n if (newSpec.namedImports) {\n const existingNames = existingImport\n .getNamedImports()\n .map((ni) => ni.getName());\n const newNames = newSpec.namedImports.filter(\n (name) => !existingNames.includes(name),\n );\n\n if (newNames.length > 0) {\n existingImport.addNamedImports(newNames);\n }\n }\n }\n\n replaceImportByName(\n sourceFile: SourceFile,\n name: string,\n path: string,\n isTypeOnly = false,\n ): void {\n const existing = sourceFile\n .getImportDeclarations()\n .filter((imp) =>\n imp.getNamedImports().find((ni) => ni.getName() === name),\n );\n existing.forEach((imp) => imp.remove());\n sourceFile.addImportDeclaration({\n moduleSpecifier: path,\n namedImports: [name],\n isTypeOnly,\n });\n sourceFile.saveSync();\n }\n}\n","import type {\n DocumentModelGlobalState,\n ModuleSpecification,\n} from \"@powerhousedao/shared/document-model\";\nimport fs from \"fs/promises\";\nimport { Project } from \"ts-morph\";\nimport { DeclarationManager } from \"../utilities/DeclarationManager.js\";\nimport { DirectoryManager } from \"../utilities/DirectoryManager.js\";\nimport { ImportManager } from \"../utilities/ImportManager.js\";\nimport type { FileGenerator } from \"./FileGenerator.js\";\nimport type {\n CodeGeneratorOptions,\n CodegenOperation,\n GenerationContext,\n PHProjectDirectories,\n} from \"./GenerationContext.js\";\nimport { ReducerGenerator } from \"./ReducerGenerator.js\";\n\nexport class TSMorphCodeGenerator {\n private project = new Project();\n private generators = new Map<string, FileGenerator>();\n private directories: PHProjectDirectories = {\n documentModelDir: \"document-model\",\n editorsDir: \"editors\",\n processorsDir: \"processors\",\n subgraphsDir: \"subgraphs\",\n };\n private forceUpdate = false;\n\n constructor(\n private rootDir: string,\n private docModels: DocumentModelGlobalState[],\n private packageName: string,\n options: CodeGeneratorOptions = { directories: {}, forceUpdate: false },\n ) {\n this.directories = {\n ...this.directories,\n ...options.directories,\n };\n this.packageName = packageName;\n this.forceUpdate = options.forceUpdate ?? false;\n\n this.setupGenerators();\n }\n\n private setupGenerators(): void {\n const importManager = new ImportManager();\n const directoryManager = new DirectoryManager(this.directories);\n const declarationManager = new DeclarationManager();\n // Register all generators\n this.generators.set(\n \"reducers\",\n new ReducerGenerator(importManager, directoryManager, declarationManager),\n );\n }\n\n // Generate specific file types\n async generateReducers(): Promise<void> {\n await this.generateFileType(\"reducers\");\n }\n\n // Generate everything\n async generateAll(): Promise<void> {\n for (const [type] of this.generators) {\n await this.generateFileType(type);\n }\n }\n\n private async generateFileType(type: string): Promise<void> {\n const generator = this.generators.get(type);\n if (!generator) {\n throw new Error(`No generator registered for type: ${type}`);\n }\n\n await this.setupProject();\n\n for (const docModel of this.docModels) {\n const latestSpec =\n docModel.specifications[docModel.specifications.length - 1];\n\n for (const module of latestSpec.modules) {\n const context = this.createGenerationContext(\n docModel,\n module,\n this.forceUpdate,\n );\n\n await generator.generate(context);\n }\n }\n }\n\n private async setupProject(): Promise<void> {\n // Only load files from configured directories\n const sourcePaths: string[] = [];\n\n if (this.directories.documentModelDir) {\n const dirPath = `${this.rootDir}/${this.directories.documentModelDir}`;\n await this.ensureDirectoryExists(dirPath);\n sourcePaths.push(`${dirPath}/**/*.ts`);\n }\n if (this.directories.editorsDir) {\n const dirPath = `${this.rootDir}/${this.directories.editorsDir}`;\n await this.ensureDirectoryExists(dirPath);\n sourcePaths.push(`${dirPath}/**/*.ts`);\n }\n if (this.directories.processorsDir) {\n const dirPath = `${this.rootDir}/${this.directories.processorsDir}`;\n await this.ensureDirectoryExists(dirPath);\n sourcePaths.push(`${dirPath}/**/*.ts`);\n }\n if (this.directories.subgraphsDir) {\n const dirPath = `${this.rootDir}/${this.directories.subgraphsDir}`;\n await this.ensureDirectoryExists(dirPath);\n sourcePaths.push(`${dirPath}/**/*.ts`);\n }\n\n // Exclude node_modules from all paths\n sourcePaths.push(`!${this.rootDir}/**/node_modules/**`);\n\n if (sourcePaths.length > 0) {\n this.project.addSourceFilesAtPaths(sourcePaths);\n }\n }\n\n private createGenerationContext(\n docModel: DocumentModelGlobalState,\n module: ModuleSpecification,\n forceUpdate = false,\n ): GenerationContext {\n const operations: CodegenOperation[] = module.operations.map((op) => ({\n ...op,\n hasInput: op.schema !== null,\n hasAttachment: op.schema?.includes(\": Attachment\"),\n scope: op.scope || \"global\",\n state: op.scope === \"global\" ? \"\" : op.scope,\n }));\n\n return {\n rootDir: this.rootDir,\n packageName: this.packageName,\n docModel,\n module,\n project: this.project,\n operations,\n forceUpdate,\n };\n }\n\n private async ensureDirectoryExists(dirPath: string): Promise<void> {\n try {\n await fs.mkdir(dirPath, { recursive: true });\n } catch (err) {\n console.error(`Failed to create directory: ${dirPath}`, err);\n throw err;\n }\n }\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28],"mappings":"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G;EAAG;EAAI;EAAG;EAAG;EAAG;EAAI;EAAI;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAI;EAAI;EAAI;EAAG;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAG;EAAG;EAAK;EAAI;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAK;EAAI;EAAK;EAAI;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAI;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAI;EAAI;EAAG;EAAG;EAAG;EAAI;EAAG;EAAI;EAAI;EAAG;EAAG;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAI;EAAI;EAAK;EAAI;EAAI;EAAG;EAAG;EAAI;EAAI;EAAG;EAAI;EAAI;EAAK;EAAG;EAAG;EAAG;EAAG;EAAI;EAAI;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAI;EAAI;EAAG;EAAI;EAAI;EAAK;EAAI;EAAI;EAAG;EAAG;EAAI;EAAG;EAAI;EAAK;EAAG;EAAI;EAAK;EAAK;EAAK;EAAI;EAAK;EAAM;EAAI;EAAI;EAAM;EAAI;EAAG;EAAI;EAAM;EAAG;EAAK;EAAM;EAAI;EAAM;EAAK;EAAG;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAG;EAAI;EAAI;EAAG;EAAI;EAAK;EAAI;EAAK;EAAI;EAAI;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAG;EAAI;EAAI;EAAI;EAAG;EAAG;EAAG;EAAI;EAAG;EAAI;EAAM;EAAI;EAAI;EAAI;EAAK;EAAM;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAK;EAAI;EAAG;EAAI;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAK;EAAM;EAAK;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAM;EAAI;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAK;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAG;EAAM;EAAI;EAAG;EAAG;EAAK;EAAI;EAAK;EAAI;EAAI;EAAG;EAAI;EAAG;EAAK;EAAI;EAAI;EAAI;EAAK;EAAI;EAAK;EAAI;EAAG;EAAG;EAAK;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAK;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAK;EAAI;EAAI;EAAG;EAAG;EAAM;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAM;EAAO;EAAI;EAAM;EAAG;EAAM;EAAG;EAAM;EAAI;EAAK;EAAM;EAAK;EAAM;EAAM;EAAG;EAAK;CAC1tE,MAAM,wBAAwB;EAAC;EAAK;EAAG;EAAK;EAAG;EAAK;EAAG;EAAK;EAAG;EAAM;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAK;EAAG;EAAK;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAK;EAAG;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAK;EAAG;EAAI;EAAI;EAAI;EAAI;EAAG;EAAG;EAAI;EAAG;EAAI;EAAI;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAI;EAAI;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAI;EAAG;EAAG;EAAG;EAAI;EAAI;EAAI;EAAG;EAAG;EAAG;EAAG;EAAK;EAAI;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAG;EAAG;EAAI;EAAI;EAAI;EAAG;EAAK;EAAG;EAAG;EAAG;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAI;EAAI;EAAG;EAAG;EAAG;EAAI;EAAI;EAAI;EAAG;EAAG;EAAK;EAAI;EAAK;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAK;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAI;EAAI;EAAI;EAAK;EAAG;EAAK;EAAG;EAAI;EAAG;EAAG;EAAG;EAAI;EAAG;EAAI;EAAI;EAAG;EAAI;EAAK;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAK;EAAG;EAAI;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAI;EAAI;EAAM;EAAG;EAAG;EAAI;EAAO;EAAI;EAAM;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAK;EAAG;EAAK;EAAG;EAAG;EAAI;EAAG;EAAG;EAAI;EAAG;EAAI;EAAG;EAAO;EAAG;EAAM;EAAG;EAAK;EAAI;EAAG;EAAI;EAAK;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAK;EAAG;EAAM;EAAI;EAAK;EAAI;EAAG;EAAI;EAAG;EAAG;EAAI;EAAG;EAAI;EAAG;EAAG;EAAI;EAAM;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["path","claudeTemplate","fs","path","fs"],"sources":["../src/codegen/utils.ts","../src/codegen/generate.ts","../src/codegen/kysely.ts","../src/create-lib/utils.ts","../src/create-lib/checkout-project.ts","../src/templates/boilerplate/document-models/upgrade-manifests.ts","../src/create-lib/create-project.ts","../src/ts-morph-generator/core/FileGenerator.ts","../src/ts-morph-generator/core/ReducerGenerator.ts","../src/ts-morph-generator/utilities/DeclarationManager.ts","../src/ts-morph-generator/utilities/DirectoryManager.ts","../src/ts-morph-generator/utilities/ImportManager.ts","../src/ts-morph-generator/core/TSMorphCodeGenerator.ts"],"sourcesContent":["import { pascalCase } from \"change-case\";\nimport type {\n DocumentModelDocument,\n DocumentModelGlobalState,\n} from \"@powerhousedao/shared/document-model\";\nimport { documentModelReducer } from \"@powerhousedao/shared/document-model\";\nimport { baseLoadFromFile } from \"document-model/node\";\nimport fs from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport { join, resolve } from \"node:path\";\nimport { format } from \"prettier\";\nimport type { DocumentTypesMap } from \"./types.js\";\n\nexport async function loadDocumentModel(\n path: string,\n): Promise<DocumentModelGlobalState> {\n let documentModel: DocumentModelGlobalState;\n try {\n if (!path) {\n throw new Error(\"Document model file not specified\");\n } else if (path.endsWith(\".zip\") || path.endsWith(\".phd\")) {\n const file = await baseLoadFromFile(path, documentModelReducer);\n documentModel = file.state.global;\n } else if (path.endsWith(\".json\")) {\n const data = await readFile(path, \"utf-8\");\n const parsedData = JSON.parse(data) as DocumentModelDocument;\n if (\"state\" in parsedData) {\n documentModel = parsedData.state.global;\n } else {\n documentModel = parsedData;\n }\n } else {\n throw new Error(\"File type not supported. Must be zip, phd, or json.\");\n }\n return documentModel;\n } catch (error) {\n throw (error as { code?: string }).code === \"MODULE_NOT_FOUND\"\n ? new Error(`Document model not found.`)\n : error;\n }\n}\n\nexport async function formatWithPrettierBeforeWrite(\n outputFile: string,\n content: string,\n) {\n const modifiedContent = await format(content, {\n parser: \"typescript\",\n });\n return modifiedContent;\n}\n\n/** returns map of document model id to document model name in pascal case and import path */\nexport function getDocumentTypesMap(\n dir: string,\n pathOrigin = \"../../\",\n): DocumentTypesMap {\n const documentTypesMap: DocumentTypesMap = {\n \"powerhouse/document-model\": {\n name: \"DocumentModel\",\n importPath: `document-model`,\n },\n };\n\n // add document types from provided dir\n if (fs.existsSync(dir)) {\n fs.readdirSync(dir, { withFileTypes: true })\n .filter((dirent) => dirent.isDirectory())\n .map((dirent) => dirent.name)\n .forEach((name) => {\n const specPath = resolve(dir, name, `${name}.json`);\n if (!fs.existsSync(specPath)) {\n return;\n }\n\n const specRaw = fs.readFileSync(specPath, \"utf-8\");\n try {\n const spec = JSON.parse(specRaw) as DocumentModelGlobalState;\n if (spec.id) {\n documentTypesMap[spec.id] = {\n name: pascalCase(name),\n importPath: join(pathOrigin, dir, name, \"index.js\"),\n };\n }\n } catch {\n console.error(`Failed to parse ${specPath}`);\n }\n });\n }\n\n return documentTypesMap;\n}\n","import {\n makeSubgraphsIndexFile,\n tsMorphGenerateDocumentEditor,\n tsMorphGenerateDocumentModel,\n tsMorphGenerateDriveEditor,\n tsMorphGenerateSubgraph,\n} from \"@powerhousedao/codegen/file-builders\";\nimport type {\n PartialPowerhouseManifest,\n PowerhouseManifest,\n} from \"@powerhousedao/shared\";\nimport { fileExists, type PowerhouseConfig } from \"@powerhousedao/shared/clis\";\nimport type { DocumentModelGlobalState } from \"@powerhousedao/shared/document-model\";\nimport type { ProcessorApps } from \"@powerhousedao/shared/processors\";\nimport { kebabCase } from \"change-case\";\nimport { getTsconfig } from \"get-tsconfig\";\nimport fs from \"node:fs\";\nimport { readdir, writeFile } from \"node:fs/promises\";\nimport path, { join } from \"node:path\";\nimport { readPackage, type NormalizedPackageJson } from \"read-pkg\";\nimport semver from \"semver\";\nimport {\n exportsTemplate,\n tsconfigPathsTemplate,\n tsConfigTemplate,\n} from \"templates\";\nimport { writePackage } from \"write-package\";\nimport { tsMorphGenerateProcessor } from \"../file-builders/processors/processor.js\";\nimport { generateSchemas } from \"./graphql.js\";\nimport type { CodegenOptions } from \"./types.js\";\nimport { loadDocumentModel } from \"./utils.js\";\n\nexport async function generateAll(args: {\n dir: string;\n useVersioning: boolean;\n migrateLegacy?: boolean;\n watch?: boolean;\n skipFormat?: boolean;\n verbose?: boolean;\n force?: boolean;\n}) {\n const {\n dir,\n useVersioning,\n migrateLegacy = false,\n watch = false,\n skipFormat = false,\n verbose = true,\n force = true,\n } = args;\n const files = await readdir(dir, { withFileTypes: true });\n const documentModelStates: DocumentModelGlobalState[] = [];\n\n for (const directory of files.filter((f) => f.isDirectory())) {\n const documentModelPath = path.join(\n dir,\n directory.name,\n `${directory.name}.json`,\n );\n const pathExists = await fileExists(documentModelPath);\n if (!pathExists) {\n continue;\n }\n\n try {\n const documentModelState = await loadDocumentModel(documentModelPath);\n documentModelStates.push(documentModelState);\n\n await generateDocumentModel({\n dir,\n documentModelState,\n watch,\n skipFormat,\n verbose,\n force,\n useVersioning,\n migrateLegacy,\n });\n } catch (error) {\n if (verbose) {\n console.error(directory.name, error);\n }\n }\n }\n}\n\nexport async function generate(\n config: PowerhouseConfig,\n useVersioning: boolean,\n migrateLegacy = false,\n) {\n const { skipFormat, watch } = config;\n await generateSchemas(config.documentModelsDir, { skipFormat, watch });\n await generateAll({\n dir: config.documentModelsDir,\n useVersioning,\n migrateLegacy,\n skipFormat,\n watch,\n });\n}\n\nexport async function generateFromFile(args: {\n path: string;\n config: PowerhouseConfig;\n useVersioning: boolean;\n migrateLegacy?: boolean;\n options?: CodegenOptions;\n}) {\n const { path, config, useVersioning, migrateLegacy, options } = args;\n // load document model spec from file\n const documentModelState = await loadDocumentModel(path);\n\n // delegate to shared generation function\n await generateFromDocumentModel({\n documentModelState,\n config,\n useVersioning,\n migrateLegacy,\n options,\n });\n}\n\n/**\n * Generates code from a DocumentModelGlobalState object directly.\n *\n * @remarks\n * This function performs the same code generation as generateFromFile but takes\n * a DocumentModelGlobalState object directly instead of loading from a file. This allows for\n * programmatic code generation without file I/O.\n *\n * @param documentModelDocument - The DocumentModelGlobalState object containing the document model\n * @param config - The PowerhouseConfig configuration object\n * @param options - Optional configuration for generation behavior (verbose logging, etc.)\n * @returns A promise that resolves when code generation is complete\n */\nexport async function generateFromDocument(args: {\n documentModelState: DocumentModelGlobalState;\n config: PowerhouseConfig;\n useVersioning: boolean;\n migrateLegacy?: boolean;\n options?: CodegenOptions;\n}) {\n // delegate to shared generation function\n await generateFromDocumentModel(args);\n}\n\ntype GenerateDocumentModelArgs = {\n dir: string;\n documentModelState: DocumentModelGlobalState;\n useVersioning: boolean;\n migrateLegacy?: boolean;\n specifiedPackageName?: string;\n watch?: boolean;\n skipFormat?: boolean;\n verbose?: boolean;\n force?: boolean;\n};\nexport async function generateDocumentModel(args: GenerateDocumentModelArgs) {\n const {\n dir,\n documentModelState,\n specifiedPackageName,\n useVersioning,\n migrateLegacy,\n } = args;\n const packageJson = await readPackage();\n const packageNameFromPackageJson = packageJson.name;\n const packageName = specifiedPackageName || packageNameFromPackageJson;\n const zodSemverString = findZodDependencyInPackageJson(packageJson);\n ensureZodVersionIsSufficient(zodSemverString);\n\n const projectDir = path.dirname(dir);\n await tsMorphGenerateDocumentModel({\n projectDir,\n packageName,\n documentModelState,\n useVersioning,\n migrateLegacy,\n });\n // await ensurePackageExportsWildcards();\n // await ensureTsconfigPaths();\n}\n\n/**\n * Ensures that the project's package.json exports field contains the\n * wildcard subpath patterns required for deep imports like\n * \"document-models/my-doc\" to resolve correctly.\n */\nasync function ensurePackageExportsWildcards() {\n const requiredExports = JSON.parse(`{ ${exportsTemplate} }`) as Record<\n string,\n string\n >;\n\n const packageJson = await readPackage();\n\n const existingExports =\n !packageJson.exports ||\n typeof packageJson.exports === \"string\" ||\n Array.isArray(packageJson.exports)\n ? {}\n : packageJson.exports;\n\n packageJson.exports = {\n ...existingExports,\n ...requiredExports,\n };\n\n await writePackage(process.cwd(), packageJson);\n}\n\n/**\n * Ensures that the project's tsconfig.json has paths mappings for\n * the convenience export paths like \"document-models/\" etc.\n */\nasync function ensureTsconfigPaths() {\n const requiredTsConfigPaths = JSON.parse(\n `{ ${tsconfigPathsTemplate} }`,\n ) as Record<string, string[]>;\n const tsConfigFilePath = join(process.cwd(), \"tsconfig.json\");\n let tsConfig = getTsconfig();\n\n if (!tsConfig) {\n await writeFile(tsConfigFilePath, tsConfigTemplate);\n tsConfig = getTsconfig();\n }\n\n if (!tsConfig) {\n throw new Error(\n `Failed to get or create tsconfig.json at \"${tsConfigFilePath}\".`,\n );\n }\n\n const existingCompilerOptions = tsConfig.config.compilerOptions ?? {};\n const existingPaths = existingCompilerOptions.paths ?? {};\n\n tsConfig.config.compilerOptions = {\n ...existingCompilerOptions,\n paths: {\n ...existingPaths,\n ...requiredTsConfigPaths,\n },\n };\n\n await writeFile(tsConfigFilePath, JSON.stringify(tsConfig.config, null, 2));\n}\n\nfunction findZodDependencyInPackageJson(\n packageJson: NormalizedPackageJson,\n): string | undefined {\n const dependencies = {\n ...packageJson.dependencies,\n ...packageJson.devDependencies,\n };\n const zodDependency = dependencies[\"zod\"];\n return zodDependency;\n}\n\nfunction ensureZodVersionIsSufficient(zodSemverString: string | undefined) {\n if (!zodSemverString) return;\n const cleaned = semver.clean(zodSemverString);\n if (!cleaned) return;\n const isSufficient = semver.gte(cleaned, \"4.0.0\");\n if (!isSufficient) {\n throw new Error(\n `Your version of zod \"${zodSemverString}\" is out of date. Please install zod version 4.x to continue.`,\n );\n }\n}\n\ntype GenerateEditorArgs = {\n editorName: string;\n documentTypes: string[];\n skipFormat?: boolean;\n editorId?: string;\n editorDirName?: string;\n specifiedPackageName?: string;\n};\nexport async function generateEditor(args: GenerateEditorArgs) {\n const {\n editorName,\n documentTypes,\n editorId: editorIdArg,\n specifiedPackageName,\n editorDirName,\n } = args;\n\n const packageNameFromPackageJson = await readPackage().then(\n (pkg) => pkg.name,\n );\n const packageName = specifiedPackageName || packageNameFromPackageJson;\n\n const projectDir = path.dirname(\"editors\");\n\n if (documentTypes.length > 1) {\n throw new Error(\"Multiple document types are not supported yet\");\n }\n\n const documentModelId = documentTypes[0];\n const editorId = editorIdArg || kebabCase(editorName);\n const editorDir = editorDirName || kebabCase(editorName);\n\n await tsMorphGenerateDocumentEditor({\n packageName,\n projectDir,\n editorDir,\n documentModelId,\n editorName,\n editorId,\n });\n // await ensurePackageExportsWildcards();\n // await ensureTsconfigPaths();\n}\n\nexport async function generateDriveEditor(options: {\n driveEditorName: string;\n skipFormat?: boolean;\n driveEditorId?: string;\n allowedDocumentTypes?: string[];\n isDragAndDropEnabled?: boolean;\n driveEditorDirName?: string;\n specifiedPackageName?: string;\n}) {\n const {\n driveEditorName,\n driveEditorId,\n allowedDocumentTypes,\n isDragAndDropEnabled,\n driveEditorDirName,\n specifiedPackageName,\n } = options;\n const dir = \"editors\";\n\n const packageNameFromPackageJson = await readPackage().then(\n (pkg) => pkg.name,\n );\n const packageName = specifiedPackageName || packageNameFromPackageJson;\n\n const projectDir = path.dirname(dir);\n\n await tsMorphGenerateDriveEditor({\n projectDir,\n editorDir: driveEditorDirName || kebabCase(driveEditorName),\n editorName: driveEditorName,\n editorId: driveEditorId ?? kebabCase(driveEditorName),\n packageName,\n allowedDocumentModelIds: allowedDocumentTypes ?? [],\n isDragAndDropEnabled: isDragAndDropEnabled ?? true,\n });\n}\n\nexport async function generateSubgraphFromDocumentModel(\n name: string,\n documentModel: DocumentModelGlobalState,\n config: PowerhouseConfig,\n) {\n const packageName = await readPackage().then((pkg) => pkg.name);\n await tsMorphGenerateSubgraph({\n subgraphsDir: config.subgraphsDir,\n subgraphName: name,\n packageName,\n documentModel,\n });\n await makeSubgraphsIndexFile({\n projectDir: path.dirname(config.subgraphsDir),\n });\n}\n\nexport async function generateSubgraph(\n name: string,\n file: string | null,\n config: PowerhouseConfig,\n) {\n const documentModelState =\n file !== null ? await loadDocumentModel(file) : null;\n const packageName = await readPackage().then((pkg) => pkg.name);\n\n await tsMorphGenerateSubgraph({\n subgraphsDir: config.subgraphsDir,\n subgraphName: name,\n packageName,\n documentModel: documentModelState,\n });\n await makeSubgraphsIndexFile({\n projectDir: path.dirname(config.subgraphsDir),\n });\n}\n\nexport async function generateProcessor(args: {\n processorName: string;\n processorType: \"analytics\" | \"relationalDb\";\n processorApps: ProcessorApps;\n documentTypes: string[];\n skipFormat?: boolean;\n rootDir?: string;\n}) {\n const { rootDir = process.cwd() } = args;\n return await tsMorphGenerateProcessor({\n rootDir,\n ...args,\n });\n}\n\nexport async function generateImportScript(\n _name: string,\n _config: PowerhouseConfig,\n) {\n throw new Error(\n \"Import script generation has been removed. The document-drive server APIs it depended on have been deprecated.\",\n );\n}\n\nconst defaultManifest: PowerhouseManifest = {\n name: \"\",\n description: \"\",\n category: \"\",\n publisher: {\n name: \"\",\n url: \"\",\n },\n documentModels: [],\n editors: [],\n apps: [],\n subgraphs: [],\n importScripts: [],\n};\n\nexport function generateManifest(\n manifestData: PartialPowerhouseManifest,\n projectRoot?: string,\n) {\n const rootDir = projectRoot || process.cwd();\n const manifestPath = join(rootDir, \"powerhouse.manifest.json\");\n\n // Create default manifest structure\n\n // Read existing manifest if it exists\n let existingManifest: PowerhouseManifest = defaultManifest;\n if (fs.existsSync(manifestPath)) {\n try {\n const existingData = fs.readFileSync(manifestPath, \"utf-8\");\n existingManifest = JSON.parse(existingData) as PowerhouseManifest;\n } catch (error) {\n console.warn(`Failed to parse existing manifest: ${String(error)}`);\n existingManifest = defaultManifest;\n }\n }\n\n // Helper function to merge arrays by ID\n const mergeArrayById = <T extends { id: string }>(\n existingArray: T[],\n newArray?: T[],\n ): T[] => {\n if (!newArray) return existingArray;\n\n const result = [...existingArray];\n\n newArray.forEach((newItem) => {\n const existingIndex = result.findIndex((item) => item.id === newItem.id);\n if (existingIndex !== -1) {\n // Replace existing item\n result[existingIndex] = newItem;\n } else {\n // Add new item\n result.push(newItem);\n }\n });\n\n return result;\n };\n\n // Merge partial data with existing manifest\n const updatedManifest: PowerhouseManifest = {\n ...existingManifest,\n ...manifestData,\n publisher: {\n ...existingManifest.publisher,\n ...(manifestData.publisher || {}),\n },\n documentModels: mergeArrayById(\n existingManifest.documentModels,\n manifestData.documentModels,\n ),\n editors: mergeArrayById(existingManifest.editors, manifestData.editors),\n apps: mergeArrayById(existingManifest.apps, manifestData.apps),\n subgraphs: mergeArrayById(\n existingManifest.subgraphs,\n manifestData.subgraphs,\n ),\n importScripts: mergeArrayById(\n existingManifest.importScripts,\n manifestData.importScripts,\n ),\n };\n\n // Write updated manifest to file\n fs.writeFileSync(manifestPath, JSON.stringify(updatedManifest, null, 4));\n\n return manifestPath;\n}\n\n/**\n * Generates code from a DocumentModelGlobalState.\n *\n * @remarks\n * This is the core generation function that both generateFromFile and generateFromDocument\n * use internally. It handles the actual code generation from a DocumentModelGlobalState object.\n *\n * @param documentModel - The DocumentModelGlobalState containing the document model specification\n * @param config - The PowerhouseConfig configuration object\n * @param options - Optional configuration for generation behavior\n * @returns A promise that resolves when code generation is complete\n */\nasync function generateFromDocumentModel(args: {\n documentModelState: DocumentModelGlobalState;\n config: PowerhouseConfig;\n useVersioning: boolean;\n migrateLegacy?: boolean;\n options?: CodegenOptions;\n}) {\n const {\n documentModelState,\n config,\n useVersioning,\n migrateLegacy,\n options = {},\n } = args;\n const {\n verbose = config.logLevel === \"verbose\" ||\n config.logLevel === \"debug\" ||\n config.logLevel === \"info\",\n force = false,\n } = options;\n const name = kebabCase(documentModelState.name);\n const documentModelDir = join(config.documentModelsDir, name);\n // create document model folder and spec as json\n fs.mkdirSync(documentModelDir, { recursive: true });\n fs.writeFileSync(\n join(documentModelDir, `${name}.json`),\n JSON.stringify(documentModelState, null, 2),\n );\n\n await generateDocumentModel({\n dir: config.documentModelsDir,\n documentModelState,\n watch: config.watch,\n skipFormat: config.skipFormat,\n verbose,\n force,\n useVersioning,\n migrateLegacy,\n });\n}\n","import { spawn } from \"node:child_process\";\nimport { existsSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { join, resolve } from \"node:path\";\n\nfunction getKyselyPgLiteBin(): string {\n const require = createRequire(import.meta.url);\n\n const paths = require.resolve.paths(\"kysely-pglite\");\n if (paths) {\n for (const basePath of paths) {\n const pkgRoot = join(basePath, \"kysely-pglite\");\n const binPath = join(pkgRoot, \"bin/run.js\");\n\n if (existsSync(binPath)) {\n return binPath;\n }\n }\n }\n\n throw new Error(\"Could not find kysely-pglite/bin/run.js\");\n}\n\nexport interface IOptions {\n migrationFile: string;\n schemaFile?: string;\n}\n\nfunction runCommand(\n command: string,\n args: string[],\n cwd?: string,\n): Promise<void> {\n return new Promise((resolve, reject) => {\n const child = spawn(command, args, {\n cwd,\n stdio: \"inherit\",\n shell: true,\n });\n\n child.on(\"close\", (code) => {\n if (code === 0) {\n resolve();\n } else {\n reject(new Error(`Command failed with exit code ${code}`));\n }\n });\n\n child.on(\"error\", (error) => {\n reject(error);\n });\n });\n}\n\nexport async function generateDBSchema({\n migrationFile,\n schemaFile,\n}: IOptions) {\n const outFile = schemaFile ?? resolve(migrationFile, \"../schema.ts\");\n\n try {\n const kyselyBinPath = getKyselyPgLiteBin();\n // Use kysely-pglite CLI to handle TypeScript compilation and module resolution\n await runCommand(\n \"node\",\n [kyselyBinPath, migrationFile, \"--outFile\", outFile],\n process.cwd(),\n );\n\n console.log(`Schema types generated at ${outFile}`);\n } catch (error) {\n console.error(\"Error running migration:\", error);\n }\n}\n","import { execSync } from \"child_process\";\nimport { mkdir, writeFile } from \"node:fs/promises\";\nimport { dirname } from \"node:path\";\n\nconst packageManagers = [\"npm\", \"yarn\", \"pnpm\", \"bun\"] as const;\nconst defaultPackageManager = \"npm\";\n\nexport type PackageManager = (typeof packageManagers)[number];\n\nexport function getPackageManager(userAgent?: string): PackageManager {\n if (!userAgent) {\n return defaultPackageManager;\n }\n\n const pkgSpec = userAgent.split(\" \")[0];\n const pkgSpecArr = pkgSpec.split(\"/\");\n const name = pkgSpecArr[0];\n\n if (packageManagers.includes(name as PackageManager)) {\n return name as PackageManager;\n } else {\n return defaultPackageManager;\n }\n}\n\nexport const envPackageManager = getPackageManager(\n process.env.npm_config_user_agent,\n);\n\nexport function runCmd(command: string) {\n try {\n execSync(command, { stdio: \"inherit\" });\n } catch (error) {\n console.log(\"\\x1b[31m\", error, \"\\x1b[0m\");\n throw error;\n }\n}\n\nexport async function writeFileEnsuringDir(\n filePath: string,\n contents: string | Buffer,\n) {\n await mkdir(dirname(filePath), { recursive: true });\n await writeFile(filePath, contents, { encoding: \"utf-8\" });\n}\n","import path from \"node:path\";\nimport { runCmd } from \"./utils.js\";\n\n/**\n * Clones a git repository and returns the path to the cloned project.\n * @param repositoryUrl - The URL of the git repository to clone\n * @returns The absolute path to the cloned project directory\n */\nexport function cloneRepository(repositoryUrl: string): string {\n try {\n console.log(\n \"\\x1b[33m\",\n `Cloning repository from ${repositoryUrl}...`,\n \"\\x1b[0m\",\n );\n runCmd(`git clone ${repositoryUrl}`);\n\n // Extract project name from repository URL\n // e.g., https://github.com/org/repo.git -> repo\n const repoName = repositoryUrl\n .split(\"/\")\n .pop()\n ?.replace(/\\.git$/, \"\");\n\n if (!repoName) {\n throw new Error(\"Could not determine project name from repository URL\");\n }\n\n const projectPath = path.join(process.cwd(), repoName);\n return projectPath;\n } catch (error) {\n console.log(error);\n throw error;\n }\n}\n\n/**\n * Installs dependencies in a project directory using the specified package manager.\n * @param projectPath - The absolute path to the project directory\n * @param packageManager - The package manager to use (npm, pnpm, yarn, bun)\n */\nexport function installDependencies(\n projectPath: string,\n packageManager: string,\n): void {\n try {\n process.chdir(projectPath);\n\n console.log(\n \"\\x1b[34m\",\n `Installing dependencies with ${packageManager}...`,\n \"\\x1b[0m\",\n );\n runCmd(`${packageManager} install --loglevel error`);\n\n console.log(\"\\x1b[32m\", \"Dependencies installed successfully!\", \"\\x1b[0m\");\n console.log();\n } catch (error) {\n console.log(error);\n throw error;\n }\n}\n","import { ts } from \"@tmpl/core\";\n\nexport const upgradeManifestsTemplate = ts`\nimport type { UpgradeManifest } from \"document-model\";\n\nexport const upgradeManifests: UpgradeManifest<readonly number[]>[] = [];\n`.raw;\n","import chalk from \"chalk\";\nimport { buildBoilerplatePackageJson } from \"file-builders\";\nimport fs from \"node:fs\";\nimport path from \"path\";\nimport {\n agentsTemplate,\n buildPowerhouseConfigTemplate,\n claudeSettingsLocalTemplate,\n claudeTemplate,\n connectEntrypointTemplate,\n cursorMcpTemplate,\n dockerfileTemplate,\n documentModelsIndexTemplate,\n documentModelsTemplate,\n editorsIndexTemplate,\n editorsTemplate,\n eslintConfigTemplate,\n factoryBuildersTemplate,\n geminiSettingsTemplate,\n gitIgnoreTemplate,\n indexHtmlTemplate,\n indexTsTemplate,\n licenseTemplate,\n mainTsxTemplate,\n mcpTemplate,\n nginxConfTemplate,\n npmrcTemplate,\n powerhouseManifestTemplate,\n processorsFactoryTemplate,\n processorsIndexTemplate,\n readmeTemplate,\n styleTemplate,\n subgraphsIndexTemplate,\n switchboardEntrypointTemplate,\n syncAndPublishWorkflowTemplate,\n tsConfigTemplate,\n vitestConfigTemplate,\n} from \"templates\";\nimport { runPrettier } from \"utils\";\nimport { upgradeManifestsTemplate } from \"../templates/boilerplate/document-models/upgrade-manifests.js\";\nimport { runCmd, writeFileEnsuringDir } from \"./utils.js\";\ntype CreateProjectArgs = {\n name: string;\n packageManager: string;\n tag?: string;\n version?: string;\n remoteDrive?: string;\n skipGitInit?: boolean;\n skipInstall?: boolean;\n};\nexport async function createProject({\n name,\n packageManager,\n tag,\n version,\n remoteDrive,\n skipGitInit,\n skipInstall,\n}: CreateProjectArgs) {\n const appPath = path.join(process.cwd(), name);\n\n try {\n fs.mkdirSync(appPath);\n } catch (err) {\n if ((err as { code: string }).code === \"EEXIST\") {\n console.error(\n `⛔ The folder \"${name}\" already exists in the current directory, please give it another name.`,\n );\n } else {\n console.error(err);\n }\n process.exit(1);\n }\n\n try {\n // Create a new directory for the project\n console.log(chalk.blue(`▶️ Creating directory for project \"${name}\"...\\n`));\n const appPath = path.join(process.cwd(), name);\n process.chdir(appPath);\n console.log(chalk.green(`✅ Project directory created\\n`));\n\n await writeFileEnsuringDir(\".gitignore\", gitIgnoreTemplate);\n if (!skipGitInit) {\n // Create a .gitignore file, then initialize the git repository\n console.log(chalk.blue(`▶️ Initializing git repository...\\n`));\n runCmd(`git init`);\n console.log(chalk.green(`\\n✅ Git repository initialized\\n`));\n }\n\n // Write the boilerplate files for the project\n console.log(chalk.blue(`▶️ Creating project boilerplate files...\\n`));\n await writeProjectRootFiles({ name, tag, version, remoteDrive });\n await writeModuleFiles();\n await writeAiConfigFiles();\n await writeCIFiles();\n console.log(chalk.green(`✅ Project boilerplate files created\\n`));\n\n if (!skipInstall) {\n // Install the project dependencies with the specified package manager\n console.log(\n chalk.blue(\n `▶️ Installing project dependencies with ${packageManager}...\\n`,\n ),\n );\n runCmd(`${packageManager} install`);\n console.log(chalk.green(`\\n✅ Project dependencies installed\\n`));\n }\n\n // Use the installed version of `prettier` to format the generated code\n console.log(chalk.blue(`▶️ Formatting boilerplate project files...\\n`));\n await runPrettier();\n console.log(chalk.green(`✅ Boilerplate files formatted\\n`));\n\n // Project creation complete\n console.log(chalk.bold(`🎉 Successfully created project \"${name}\" 🎉\\n`));\n } catch (error) {\n console.error(error);\n process.exit(1);\n }\n}\n\nasync function writeProjectRootFiles(args: {\n name: string;\n tag?: string;\n version?: string;\n remoteDrive?: string;\n}) {\n const { name, tag, version, remoteDrive } = args;\n await writeFileEnsuringDir(\"LICENSE\", licenseTemplate);\n await writeFileEnsuringDir(\"README.md\", readmeTemplate);\n await writeFileEnsuringDir(\".npmrc\", npmrcTemplate);\n const packageJson = await buildBoilerplatePackageJson({\n name,\n tag,\n version,\n });\n const powerhouseManifest = powerhouseManifestTemplate(name);\n await writeFileEnsuringDir(\"powerhouse.manifest.json\", powerhouseManifest);\n const powerhouseConfig = await buildPowerhouseConfigTemplate({\n tag,\n version,\n remoteDrive,\n });\n await writeFileEnsuringDir(\"powerhouse.config.json\", powerhouseConfig);\n await writeFileEnsuringDir(\"package.json\", packageJson);\n await writeFileEnsuringDir(\"tsconfig.json\", tsConfigTemplate);\n await writeFileEnsuringDir(\"index.html\", indexHtmlTemplate);\n await writeFileEnsuringDir(\"main.tsx\", mainTsxTemplate);\n await writeFileEnsuringDir(\"eslint.config.js\", eslintConfigTemplate);\n await writeFileEnsuringDir(\"index.ts\", indexTsTemplate);\n await writeFileEnsuringDir(\"style.css\", styleTemplate);\n await writeFileEnsuringDir(\"vitest.config.ts\", vitestConfigTemplate);\n}\n\nasync function writeModuleFiles() {\n await writeFileEnsuringDir(\n \"document-models/document-models.ts\",\n documentModelsTemplate,\n );\n await writeFileEnsuringDir(\n \"document-models/index.ts\",\n documentModelsIndexTemplate,\n );\n await writeFileEnsuringDir(\n \"document-models/upgrade-manifests.ts\",\n upgradeManifestsTemplate,\n );\n await writeFileEnsuringDir(\"editors/editors.ts\", editorsTemplate);\n await writeFileEnsuringDir(\"editors/index.ts\", editorsIndexTemplate);\n await writeFileEnsuringDir(\n \"processors/factory.ts\",\n processorsFactoryTemplate,\n );\n await writeFileEnsuringDir(\"processors/index.ts\", processorsIndexTemplate);\n await writeFileEnsuringDir(\"processors/connect.ts\", factoryBuildersTemplate);\n await writeFileEnsuringDir(\n \"processors/switchboard.ts\",\n factoryBuildersTemplate,\n );\n await writeFileEnsuringDir(\"subgraphs/index.ts\", subgraphsIndexTemplate);\n await writeFileEnsuringDir(\"processors/index.ts\", processorsIndexTemplate);\n}\n\nasync function writeAiConfigFiles() {\n await writeFileEnsuringDir(\"CLAUDE.md\", claudeTemplate);\n await writeFileEnsuringDir(\"AGENTS.md\", agentsTemplate);\n await writeFileEnsuringDir(\".mcp.json\", mcpTemplate);\n await writeFileEnsuringDir(\".gemini/settings.json\", geminiSettingsTemplate);\n await writeFileEnsuringDir(\".cursor/mcp.json\", cursorMcpTemplate);\n await writeFileEnsuringDir(\n \".claude/settings.local.json\",\n claudeSettingsLocalTemplate,\n );\n}\n\nasync function writeCIFiles() {\n await writeFileEnsuringDir(\n \".github/workflows/sync-and-publish.yml\",\n syncAndPublishWorkflowTemplate,\n );\n await writeFileEnsuringDir(\"Dockerfile\", dockerfileTemplate);\n await writeFileEnsuringDir(\"docker/nginx.conf\", nginxConfTemplate);\n await writeFileEnsuringDir(\n \"docker/connect-entrypoint.sh\",\n connectEntrypointTemplate,\n );\n await writeFileEnsuringDir(\n \"docker/switchboard-entrypoint.sh\",\n switchboardEntrypointTemplate,\n );\n}\n","import type { DeclarationManager } from \"../utilities/DeclarationManager.js\";\nimport type { DirectoryManager } from \"../utilities/DirectoryManager.js\";\nimport type { ImportManager } from \"../utilities/ImportManager.js\";\nimport type { GenerationContext } from \"./GenerationContext.js\";\n\nexport abstract class FileGenerator {\n constructor(\n protected importManager: ImportManager,\n protected directoryManager: DirectoryManager,\n protected declarationManager: DeclarationManager,\n ) {}\n\n abstract generate(context: GenerationContext): Promise<void>;\n}\n","import { camelCase, kebabCase, pascalCase } from \"change-case\";\nimport type { OperationErrorSpecification } from \"@powerhousedao/shared/document-model\";\nimport type {\n MethodDeclaration,\n ObjectLiteralExpression,\n SourceFile,\n} from \"ts-morph\";\nimport { SyntaxKind, VariableDeclarationKind } from \"ts-morph\";\nimport { FileGenerator } from \"./FileGenerator.js\";\nimport type {\n CodegenOperation,\n GenerationContext,\n} from \"./GenerationContext.js\";\n\nexport class ReducerGenerator extends FileGenerator {\n async generate(context: GenerationContext): Promise<void> {\n // Skip if no actions to generate\n if (context.operations.length === 0) return;\n\n const filePath = this.getOutputPath(context);\n const sourceFile = await this.directoryManager.createSourceFile(\n context.project,\n filePath,\n );\n\n const packageName = context.packageName;\n // Reducer-specific import logic\n const typeImportName = `${pascalCase(context.docModel.name)}${pascalCase(context.module.name)}Operations`;\n const typeImportPath = `${packageName}/document-models/${kebabCase(context.docModel.name)}`;\n\n // Import management (shared utility)\n this.importManager.replaceImportByName(\n sourceFile,\n typeImportName,\n typeImportPath,\n true,\n );\n\n // AST logic (specific to reducers)\n this.createReducerObject(sourceFile, typeImportName, context);\n\n // Detect and import error classes used in the actual reducer code (after generation)\n this.addErrorImports(sourceFile, context);\n\n await sourceFile.save();\n }\n\n private static getDefaultReducerCode(methodName: string): string[] {\n return [\n `// TODO: Implement \"${methodName}\" reducer`,\n `throw new Error('Reducer \"${methodName}\" not yet implemented');`,\n ];\n }\n\n private addErrorImports(\n sourceFile: SourceFile,\n context: GenerationContext,\n ): void {\n // Collect all errors from all operations\n const allErrors: OperationErrorSpecification[] = [];\n\n context.operations.forEach((operation) => {\n if (Array.isArray(operation.errors)) {\n operation.errors\n .filter((error) => error.name)\n .forEach((error) => {\n // Deduplicate errors by name\n if (!allErrors.find((e) => e.name === error.name)) {\n allErrors.push(error);\n }\n });\n }\n });\n\n if (allErrors.length === 0) return;\n\n // Analyze the actual source file content to find which errors are used\n const sourceFileContent = sourceFile.getFullText();\n const usedErrors = new Set<string>();\n\n allErrors.forEach((error) => {\n // Check if error class name is mentioned anywhere in the source file\n // Look for patterns like \"new ErrorName\" or \"throw ErrorName\" or \"ErrorName(\"\n const errorPattern = new RegExp(`\\\\b${error.name}\\\\b`, \"g\");\n if (errorPattern.test(sourceFileContent)) {\n usedErrors.add(error.name!);\n }\n });\n\n // Add imports for used errors (only if they're not already imported)\n if (usedErrors.size > 0) {\n const errorImportPath = `../../gen/${kebabCase(context.module.name)}/error.js`;\n const errorClassNames = Array.from(usedErrors);\n\n // Check if imports already exist to avoid duplicates\n const existingImports = sourceFile.getImportDeclarations();\n const existingErrorImport = existingImports.find(\n (importDecl) =>\n importDecl.getModuleSpecifierValue() === errorImportPath,\n );\n\n if (existingErrorImport) {\n // Get already imported error names\n const existingNamedImports = existingErrorImport\n .getNamedImports()\n .map((namedImport) => namedImport.getName());\n\n // Only import errors that aren't already imported\n const newErrorsToImport = errorClassNames.filter(\n (errorName) => !existingNamedImports.includes(errorName),\n );\n\n if (newErrorsToImport.length > 0) {\n // Add new named imports to existing import declaration\n existingErrorImport.addNamedImports(newErrorsToImport);\n }\n } else {\n // Create new import declaration\n this.importManager.addNamedImports(\n sourceFile,\n errorClassNames,\n errorImportPath,\n );\n }\n }\n }\n\n private getOutputPath(context: GenerationContext): string {\n return this.directoryManager.getReducerPath(\n context.rootDir,\n context.docModel.name,\n context.module.name,\n );\n }\n\n private createReducerObject(\n sourceFile: SourceFile,\n typeName: string,\n context: GenerationContext,\n ): void {\n const { operations, forceUpdate } = context;\n const operationHandlersObjectName = `${camelCase(context.docModel.name)}${pascalCase(context.module.name)}Operations`;\n const legacyReducerVar = sourceFile.getVariableDeclaration(\"reducer\");\n if (legacyReducerVar) {\n this.declarationManager.renameVariable(\n sourceFile,\n \"reducer\",\n operationHandlersObjectName,\n );\n }\n let reducerVar = sourceFile.getVariableDeclaration(\n operationHandlersObjectName,\n );\n if (!reducerVar) {\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: operationHandlersObjectName,\n type: typeName,\n initializer: \"{}\",\n },\n ],\n });\n reducerVar = sourceFile.getVariableDeclarationOrThrow(\n operationHandlersObjectName,\n );\n } else {\n // Ensure correct type\n const typeNode = reducerVar.getTypeNode();\n if (!typeNode || typeNode.getText() !== typeName) {\n reducerVar.setType(typeName);\n }\n }\n\n const initializer = reducerVar.getInitializerIfKindOrThrow(\n SyntaxKind.ObjectLiteralExpression,\n );\n\n for (const operation of operations) {\n this.addReducerMethod(initializer, operation, forceUpdate);\n }\n }\n\n private addReducerMethod(\n objectLiteral: ObjectLiteralExpression,\n operation: CodegenOperation,\n forceUpdate = false,\n ): void {\n const actionName = camelCase(operation.name ?? \"\");\n if (!actionName) return;\n\n const methodName = `${actionName}Operation`;\n\n const reducerCode = operation.reducer?.trim();\n\n const existingReducer = objectLiteral\n .getProperty(methodName)\n ?.asKind(SyntaxKind.MethodDeclaration);\n\n // if reducer already exists but forceUpdate is true, update it\n if (existingReducer) {\n if (forceUpdate && reducerCode) {\n existingReducer.setBodyText(\"\");\n this.setReducerMethodCode(existingReducer, reducerCode);\n }\n return;\n }\n\n // if reducer doesn't exist, create it and set the code with the default code if no code is provided\n const method = objectLiteral.addMethod({\n name: methodName,\n parameters: [{ name: \"state\" }, { name: \"action\" }],\n });\n this.setReducerMethodCode(method, reducerCode);\n }\n\n private setReducerMethodCode(reducer: MethodDeclaration, code?: string) {\n reducer.addStatements(\n code ? [code] : ReducerGenerator.getDefaultReducerCode(reducer.getName()),\n );\n }\n}\n","import type { SourceFile } from \"ts-morph\";\n\nexport class DeclarationManager {\n renameVariable(\n sourceFile: SourceFile,\n oldName: string,\n newName: string,\n ): void {\n const variable = sourceFile.getVariableDeclaration(oldName);\n\n if (variable) {\n variable.getNameNode().replaceWithText(newName);\n sourceFile.saveSync();\n }\n }\n}\n","import type { PHProjectDirectories } from \"@powerhousedao/codegen\";\nimport { kebabCase, pascalCase } from \"change-case\";\nimport fs from \"fs/promises\";\nimport path from \"path\";\nimport type { Project, SourceFile } from \"ts-morph\";\n\nexport class DirectoryManager {\n private directories: Required<PHProjectDirectories> = {\n documentModelDir: \"document-model\",\n editorsDir: \"editors\",\n processorsDir: \"processors\",\n subgraphsDir: \"subgraphs\",\n };\n\n constructor(directories: PHProjectDirectories = {}) {\n this.directories = {\n ...this.directories,\n ...directories,\n };\n }\n async ensureExists(dirPath: string): Promise<void> {\n try {\n await fs.mkdir(dirPath, { recursive: true });\n } catch (err) {\n console.error(`Failed to create directory: ${dirPath}`, err);\n throw err;\n }\n }\n\n // Path builders for different file types\n getReducerPath(\n rootDir: string,\n docModelName: string,\n moduleName: string,\n ): string {\n return path.join(\n rootDir,\n this.directories.documentModelDir,\n kebabCase(docModelName),\n \"src\",\n \"reducers\",\n `${kebabCase(moduleName)}.ts`,\n );\n }\n\n getActionsPath(\n rootDir: string,\n docModelName: string,\n moduleName: string,\n ): string {\n return path.join(\n rootDir,\n this.directories.documentModelDir,\n kebabCase(docModelName),\n \"src\",\n \"actions\",\n `${kebabCase(moduleName)}.ts`,\n );\n }\n\n getComponentPath(\n rootDir: string,\n docModelName: string,\n componentName: string,\n ): string {\n return path.join(\n rootDir,\n this.directories.documentModelDir,\n kebabCase(docModelName),\n \"src\",\n \"components\",\n `${pascalCase(componentName)}.tsx`,\n );\n }\n\n getTypesPath(rootDir: string, docModelName: string): string {\n return path.join(\n rootDir,\n this.directories.documentModelDir,\n kebabCase(docModelName),\n \"src\",\n \"types.ts\",\n );\n }\n\n async createSourceFile(\n project: Project,\n filePath: string,\n ): Promise<SourceFile> {\n await this.ensureExists(path.dirname(filePath));\n return (\n project.addSourceFileAtPathIfExists(filePath) ??\n project.createSourceFile(filePath, \"\", { overwrite: false })\n );\n }\n}\n","import type { ImportDeclaration, SourceFile } from \"ts-morph\";\n\nexport interface ImportSpec {\n moduleSpecifier: string;\n namedImports?: string[];\n defaultImport?: string;\n isTypeOnly?: boolean;\n}\n\nexport class ImportManager {\n addImport(sourceFile: SourceFile, spec: ImportSpec): void {\n // Check if import already exists\n const existing = sourceFile.getImportDeclaration(\n (imp) => imp.getFullText() === spec.moduleSpecifier,\n );\n if (existing) {\n this.mergeImports(existing, spec);\n } else {\n sourceFile.addImportDeclaration(spec);\n }\n }\n\n addTypeImport(sourceFile: SourceFile, typeName: string, path: string): void {\n this.addImport(sourceFile, {\n moduleSpecifier: path,\n namedImports: [typeName],\n isTypeOnly: true,\n });\n }\n\n addNamedImports(\n sourceFile: SourceFile,\n imports: string[],\n path: string,\n ): void {\n this.addImport(sourceFile, {\n moduleSpecifier: path,\n namedImports: imports,\n });\n }\n\n private mergeImports(\n existingImport: ImportDeclaration,\n newSpec: ImportSpec,\n ): void {\n // Logic to merge named imports if they don't already exist\n if (newSpec.namedImports) {\n const existingNames = existingImport\n .getNamedImports()\n .map((ni) => ni.getName());\n const newNames = newSpec.namedImports.filter(\n (name) => !existingNames.includes(name),\n );\n\n if (newNames.length > 0) {\n existingImport.addNamedImports(newNames);\n }\n }\n }\n\n replaceImportByName(\n sourceFile: SourceFile,\n name: string,\n path: string,\n isTypeOnly = false,\n ): void {\n const existing = sourceFile\n .getImportDeclarations()\n .filter((imp) =>\n imp.getNamedImports().find((ni) => ni.getName() === name),\n );\n existing.forEach((imp) => imp.remove());\n sourceFile.addImportDeclaration({\n moduleSpecifier: path,\n namedImports: [name],\n isTypeOnly,\n });\n sourceFile.saveSync();\n }\n}\n","import type {\n DocumentModelGlobalState,\n ModuleSpecification,\n} from \"@powerhousedao/shared/document-model\";\nimport fs from \"fs/promises\";\nimport { Project } from \"ts-morph\";\nimport { DeclarationManager } from \"../utilities/DeclarationManager.js\";\nimport { DirectoryManager } from \"../utilities/DirectoryManager.js\";\nimport { ImportManager } from \"../utilities/ImportManager.js\";\nimport type { FileGenerator } from \"./FileGenerator.js\";\nimport type {\n CodeGeneratorOptions,\n CodegenOperation,\n GenerationContext,\n PHProjectDirectories,\n} from \"./GenerationContext.js\";\nimport { ReducerGenerator } from \"./ReducerGenerator.js\";\n\nexport class TSMorphCodeGenerator {\n private project = new Project();\n private generators = new Map<string, FileGenerator>();\n private directories: PHProjectDirectories = {\n documentModelDir: \"document-model\",\n editorsDir: \"editors\",\n processorsDir: \"processors\",\n subgraphsDir: \"subgraphs\",\n };\n private forceUpdate = false;\n\n constructor(\n private rootDir: string,\n private docModels: DocumentModelGlobalState[],\n private packageName: string,\n options: CodeGeneratorOptions = { directories: {}, forceUpdate: false },\n ) {\n this.directories = {\n ...this.directories,\n ...options.directories,\n };\n this.packageName = packageName;\n this.forceUpdate = options.forceUpdate ?? false;\n\n this.setupGenerators();\n }\n\n private setupGenerators(): void {\n const importManager = new ImportManager();\n const directoryManager = new DirectoryManager(this.directories);\n const declarationManager = new DeclarationManager();\n // Register all generators\n this.generators.set(\n \"reducers\",\n new ReducerGenerator(importManager, directoryManager, declarationManager),\n );\n }\n\n // Generate specific file types\n async generateReducers(): Promise<void> {\n await this.generateFileType(\"reducers\");\n }\n\n // Generate everything\n async generateAll(): Promise<void> {\n for (const [type] of this.generators) {\n await this.generateFileType(type);\n }\n }\n\n private async generateFileType(type: string): Promise<void> {\n const generator = this.generators.get(type);\n if (!generator) {\n throw new Error(`No generator registered for type: ${type}`);\n }\n\n await this.setupProject();\n\n for (const docModel of this.docModels) {\n const latestSpec =\n docModel.specifications[docModel.specifications.length - 1];\n\n for (const module of latestSpec.modules) {\n const context = this.createGenerationContext(\n docModel,\n module,\n this.forceUpdate,\n );\n\n await generator.generate(context);\n }\n }\n }\n\n private async setupProject(): Promise<void> {\n // Only load files from configured directories\n const sourcePaths: string[] = [];\n\n if (this.directories.documentModelDir) {\n const dirPath = `${this.rootDir}/${this.directories.documentModelDir}`;\n await this.ensureDirectoryExists(dirPath);\n sourcePaths.push(`${dirPath}/**/*.ts`);\n }\n if (this.directories.editorsDir) {\n const dirPath = `${this.rootDir}/${this.directories.editorsDir}`;\n await this.ensureDirectoryExists(dirPath);\n sourcePaths.push(`${dirPath}/**/*.ts`);\n }\n if (this.directories.processorsDir) {\n const dirPath = `${this.rootDir}/${this.directories.processorsDir}`;\n await this.ensureDirectoryExists(dirPath);\n sourcePaths.push(`${dirPath}/**/*.ts`);\n }\n if (this.directories.subgraphsDir) {\n const dirPath = `${this.rootDir}/${this.directories.subgraphsDir}`;\n await this.ensureDirectoryExists(dirPath);\n sourcePaths.push(`${dirPath}/**/*.ts`);\n }\n\n // Exclude node_modules from all paths\n sourcePaths.push(`!${this.rootDir}/**/node_modules/**`);\n\n if (sourcePaths.length > 0) {\n this.project.addSourceFilesAtPaths(sourcePaths);\n }\n }\n\n private createGenerationContext(\n docModel: DocumentModelGlobalState,\n module: ModuleSpecification,\n forceUpdate = false,\n ): GenerationContext {\n const operations: CodegenOperation[] = module.operations.map((op) => ({\n ...op,\n hasInput: op.schema !== null,\n hasAttachment: op.schema?.includes(\": Attachment\"),\n scope: op.scope || \"global\",\n state: op.scope === \"global\" ? \"\" : op.scope,\n }));\n\n return {\n rootDir: this.rootDir,\n packageName: this.packageName,\n docModel,\n module,\n project: this.project,\n operations,\n forceUpdate,\n };\n }\n\n private async ensureDirectoryExists(dirPath: string): Promise<void> {\n try {\n await fs.mkdir(dirPath, { recursive: true });\n } catch (err) {\n console.error(`Failed to create directory: ${dirPath}`, err);\n throw err;\n }\n }\n}\n"],"mappings":"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"}
|