UNPKG

@storm-software/tsdown

Version:

A package containing `tsdown` utilities for building Storm Software libraries and applications

1,494 lines (1,492 loc) 6.97 MB
#!/usr/bin/env node var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __esm = (fn9, res) => function __init() { return fn9 && (res = (0, fn9[__getOwnPropNames(fn9)[0]])(fn9 = 0)), res; }; var __commonJS = (cb2, mod) => function __require2() { return mod || (0, cb2[__getOwnPropNames(cb2)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to5, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key2 of __getOwnPropNames(from)) if (!__hasOwnProp.call(to5, key2) && key2 !== except) __defProp(to5, key2, { get: () => from[key2], enumerable: !(desc = __getOwnPropDesc(from, key2)) || desc.enumerable }); } return to5; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // ../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs var tslib_es6_exports = {}; __export(tslib_es6_exports, { __addDisposableResource: () => __addDisposableResource, __assign: () => __assign, __asyncDelegator: () => __asyncDelegator, __asyncGenerator: () => __asyncGenerator, __asyncValues: () => __asyncValues, __await: () => __await, __awaiter: () => __awaiter, __classPrivateFieldGet: () => __classPrivateFieldGet, __classPrivateFieldIn: () => __classPrivateFieldIn, __classPrivateFieldSet: () => __classPrivateFieldSet, __createBinding: () => __createBinding, __decorate: () => __decorate, __disposeResources: () => __disposeResources, __esDecorate: () => __esDecorate, __exportStar: () => __exportStar, __extends: () => __extends, __generator: () => __generator, __importDefault: () => __importDefault, __importStar: () => __importStar, __makeTemplateObject: () => __makeTemplateObject, __metadata: () => __metadata, __param: () => __param, __propKey: () => __propKey, __read: () => __read, __rest: () => __rest, __rewriteRelativeImportExtension: () => __rewriteRelativeImportExtension, __runInitializers: () => __runInitializers, __setFunctionName: () => __setFunctionName, __spread: () => __spread, __spreadArray: () => __spreadArray, __spreadArrays: () => __spreadArrays, __values: () => __values, default: () => tslib_es6_default }); function __extends(d5, b7) { if (typeof b7 !== "function" && b7 !== null) throw new TypeError("Class extends value " + String(b7) + " is not a constructor or null"); extendStatics(d5, b7); function __2() { this.constructor = d5; } d5.prototype = b7 === null ? Object.create(b7) : (__2.prototype = b7.prototype, new __2()); } function __rest(s5, e7) { var t26 = {}; for (var p4 in s5) if (Object.prototype.hasOwnProperty.call(s5, p4) && e7.indexOf(p4) < 0) t26[p4] = s5[p4]; if (s5 != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p4 = Object.getOwnPropertySymbols(s5); i < p4.length; i++) { if (e7.indexOf(p4[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s5, p4[i])) t26[p4[i]] = s5[p4[i]]; } return t26; } function __decorate(decorators, target, key2, desc) { var c7 = arguments.length, r5 = c7 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key2) : desc, d5; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r5 = Reflect.decorate(decorators, target, key2, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d5 = decorators[i]) r5 = (c7 < 3 ? d5(r5) : c7 > 3 ? d5(target, key2, r5) : d5(target, key2)) || r5; return c7 > 3 && r5 && Object.defineProperty(target, key2, r5), r5; } function __param(paramIndex, decorator) { return function(target, key2) { decorator(target, key2, paramIndex); }; } function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { function accept(f7) { if (f7 !== void 0 && typeof f7 !== "function") throw new TypeError("Function expected"); return f7; } var kind = contextIn.kind, key2 = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); var _9, done = false; for (var i = decorators.length - 1; i >= 0; i--) { var context = {}; for (var p4 in contextIn) context[p4] = p4 === "access" ? {} : contextIn[p4]; for (var p4 in contextIn.access) context.access[p4] = contextIn.access[p4]; context.addInitializer = function(f7) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f7 || null)); }; var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key2], context); if (kind === "accessor") { if (result === void 0) continue; if (result === null || typeof result !== "object") throw new TypeError("Object expected"); if (_9 = accept(result.get)) descriptor.get = _9; if (_9 = accept(result.set)) descriptor.set = _9; if (_9 = accept(result.init)) initializers.unshift(_9); } else if (_9 = accept(result)) { if (kind === "field") initializers.unshift(_9); else descriptor[key2] = _9; } } if (target) Object.defineProperty(target, contextIn.name, descriptor); done = true; } function __runInitializers(thisArg, initializers, value) { var useValue = arguments.length > 2; for (var i = 0; i < initializers.length; i++) { value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); } return useValue ? value : void 0; } function __propKey(x8) { return typeof x8 === "symbol" ? x8 : "".concat(x8); } function __setFunctionName(f7, name, prefix) { if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; return Object.defineProperty(f7, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); } function __metadata(metadataKey, metadataValue) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); } function __awaiter(thisArg, _arguments, P8, generator) { function adopt(value) { return value instanceof P8 ? value : new P8(function(resolve3) { resolve3(value); }); } return new (P8 || (P8 = Promise))(function(resolve3, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e7) { reject(e7); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e7) { reject(e7); } } function step(result) { result.done ? resolve3(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); } function __generator(thisArg, body) { var _9 = { label: 0, sent: function() { if (t26[0] & 1) throw t26[1]; return t26[1]; }, trys: [], ops: [] }, f7, y5, t26, g5 = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); return g5.next = verb(0), g5["throw"] = verb(1), g5["return"] = verb(2), typeof Symbol === "function" && (g5[Symbol.iterator] = function() { return this; }), g5; function verb(n5) { return function(v9) { return step([n5, v9]); }; } function step(op2) { if (f7) throw new TypeError("Generator is already executing."); while (g5 && (g5 = 0, op2[0] && (_9 = 0)), _9) try { if (f7 = 1, y5 && (t26 = op2[0] & 2 ? y5["return"] : op2[0] ? y5["throw"] || ((t26 = y5["return"]) && t26.call(y5), 0) : y5.next) && !(t26 = t26.call(y5, op2[1])).done) return t26; if (y5 = 0, t26) op2 = [op2[0] & 2, t26.value]; switch (op2[0]) { case 0: case 1: t26 = op2; break; case 4: _9.label++; return { value: op2[1], done: false }; case 5: _9.label++; y5 = op2[1]; op2 = [0]; continue; case 7: op2 = _9.ops.pop(); _9.trys.pop(); continue; default: if (!(t26 = _9.trys, t26 = t26.length > 0 && t26[t26.length - 1]) && (op2[0] === 6 || op2[0] === 2)) { _9 = 0; continue; } if (op2[0] === 3 && (!t26 || op2[1] > t26[0] && op2[1] < t26[3])) { _9.label = op2[1]; break; } if (op2[0] === 6 && _9.label < t26[1]) { _9.label = t26[1]; t26 = op2; break; } if (t26 && _9.label < t26[2]) { _9.label = t26[2]; _9.ops.push(op2); break; } if (t26[2]) _9.ops.pop(); _9.trys.pop(); continue; } op2 = body.call(thisArg, _9); } catch (e7) { op2 = [6, e7]; y5 = 0; } finally { f7 = t26 = 0; } if (op2[0] & 5) throw op2[1]; return { value: op2[0] ? op2[1] : void 0, done: true }; } } function __exportStar(m7, o5) { for (var p4 in m7) if (p4 !== "default" && !Object.prototype.hasOwnProperty.call(o5, p4)) __createBinding(o5, m7, p4); } function __values(o5) { var s5 = typeof Symbol === "function" && Symbol.iterator, m7 = s5 && o5[s5], i = 0; if (m7) return m7.call(o5); if (o5 && typeof o5.length === "number") return { next: function() { if (o5 && i >= o5.length) o5 = void 0; return { value: o5 && o5[i++], done: !o5 }; } }; throw new TypeError(s5 ? "Object is not iterable." : "Symbol.iterator is not defined."); } function __read(o5, n5) { var m7 = typeof Symbol === "function" && o5[Symbol.iterator]; if (!m7) return o5; var i = m7.call(o5), r5, ar9 = [], e7; try { while ((n5 === void 0 || n5-- > 0) && !(r5 = i.next()).done) ar9.push(r5.value); } catch (error) { e7 = { error }; } finally { try { if (r5 && !r5.done && (m7 = i["return"])) m7.call(i); } finally { if (e7) throw e7.error; } } return ar9; } function __spread() { for (var ar9 = [], i = 0; i < arguments.length; i++) ar9 = ar9.concat(__read(arguments[i])); return ar9; } function __spreadArrays() { for (var s5 = 0, i = 0, il7 = arguments.length; i < il7; i++) s5 += arguments[i].length; for (var r5 = Array(s5), k8 = 0, i = 0; i < il7; i++) for (var a5 = arguments[i], j9 = 0, jl4 = a5.length; j9 < jl4; j9++, k8++) r5[k8] = a5[j9]; return r5; } function __spreadArray(to5, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l5 = from.length, ar9; i < l5; i++) { if (ar9 || !(i in from)) { if (!ar9) ar9 = Array.prototype.slice.call(from, 0, i); ar9[i] = from[i]; } } return to5.concat(ar9 || Array.prototype.slice.call(from)); } function __await(v9) { return this instanceof __await ? (this.v = v9, this) : new __await(v9); } function __asyncGenerator(thisArg, _arguments, generator) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var g5 = generator.apply(thisArg, _arguments || []), i, q11 = []; return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function() { return this; }, i; function awaitReturn(f7) { return function(v9) { return Promise.resolve(v9).then(f7, reject); }; } function verb(n5, f7) { if (g5[n5]) { i[n5] = function(v9) { return new Promise(function(a5, b7) { q11.push([n5, v9, a5, b7]) > 1 || resume(n5, v9); }); }; if (f7) i[n5] = f7(i[n5]); } } function resume(n5, v9) { try { step(g5[n5](v9)); } catch (e7) { settle(q11[0][3], e7); } } function step(r5) { r5.value instanceof __await ? Promise.resolve(r5.value.v).then(fulfill, reject) : settle(q11[0][2], r5); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f7, v9) { if (f7(v9), q11.shift(), q11.length) resume(q11[0][0], q11[0][1]); } } function __asyncDelegator(o5) { var i, p4; return i = {}, verb("next"), verb("throw", function(e7) { throw e7; }), verb("return"), i[Symbol.iterator] = function() { return this; }, i; function verb(n5, f7) { i[n5] = o5[n5] ? function(v9) { return (p4 = !p4) ? { value: __await(o5[n5](v9)), done: false } : f7 ? f7(v9) : v9; } : f7; } } function __asyncValues(o5) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var m7 = o5[Symbol.asyncIterator], i; return m7 ? m7.call(o5) : (o5 = typeof __values === "function" ? __values(o5) : o5[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { return this; }, i); function verb(n5) { i[n5] = o5[n5] && function(v9) { return new Promise(function(resolve3, reject) { v9 = o5[n5](v9), settle(resolve3, reject, v9.done, v9.value); }); }; } function settle(resolve3, reject, d5, v9) { Promise.resolve(v9).then(function(v10) { resolve3({ value: v10, done: d5 }); }, reject); } } function __makeTemplateObject(cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; } function __importStar(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k8 = ownKeys(mod), i = 0; i < k8.length; i++) if (k8[i] !== "default") __createBinding(result, mod, k8[i]); } __setModuleDefault(result, mod); return result; } function __importDefault(mod) { return mod && mod.__esModule ? mod : { default: mod }; } function __classPrivateFieldGet(receiver, state, kind, f7) { if (kind === "a" && !f7) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f7 : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f7 : kind === "a" ? f7.call(receiver) : f7 ? f7.value : state.get(receiver); } function __classPrivateFieldSet(receiver, state, value, kind, f7) { if (kind === "m") throw new TypeError("Private method is not writable"); if (kind === "a" && !f7) throw new TypeError("Private accessor was defined without a setter"); if (typeof state === "function" ? receiver !== state || !f7 : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return kind === "a" ? f7.call(receiver, value) : f7 ? f7.value = value : state.set(receiver, value), value; } function __classPrivateFieldIn(state, receiver) { if (receiver === null || typeof receiver !== "object" && typeof receiver !== "function") throw new TypeError("Cannot use 'in' operator on non-object"); return typeof state === "function" ? receiver === state : state.has(receiver); } function __addDisposableResource(env, value, async) { if (value !== null && value !== void 0) { if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); var dispose, inner; if (async) { if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); dispose = value[Symbol.asyncDispose]; } if (dispose === void 0) { if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); dispose = value[Symbol.dispose]; if (async) inner = dispose; } if (typeof dispose !== "function") throw new TypeError("Object not disposable."); if (inner) dispose = function() { try { inner.call(this); } catch (e7) { return Promise.reject(e7); } }; env.stack.push({ value, dispose, async }); } else if (async) { env.stack.push({ async: true }); } return value; } function __disposeResources(env) { function fail(e7) { env.error = env.hasError ? new _SuppressedError(e7, env.error, "An error was suppressed during disposal.") : e7; env.hasError = true; } var r5, s5 = 0; function next() { while (r5 = env.stack.pop()) { try { if (!r5.async && s5 === 1) return s5 = 0, env.stack.push(r5), Promise.resolve().then(next); if (r5.dispose) { var result = r5.dispose.call(r5.value); if (r5.async) return s5 |= 2, Promise.resolve(result).then(next, function(e7) { fail(e7); return next(); }); } else s5 |= 1; } catch (e7) { fail(e7); } } if (s5 === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve(); if (env.hasError) throw env.error; } return next(); } function __rewriteRelativeImportExtension(path15, preserveJsx) { if (typeof path15 === "string" && /^\.\.?\//.test(path15)) { return path15.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function(m7, tsx, d5, ext, cm3) { return tsx ? preserveJsx ? ".jsx" : ".js" : d5 && (!ext || !cm3) ? m7 : d5 + ext + "." + cm3.toLowerCase() + "js"; }); } return path15; } var extendStatics, __assign, __createBinding, __setModuleDefault, ownKeys, _SuppressedError, tslib_es6_default; var init_tslib_es6 = __esm({ "../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs"() { extendStatics = function(d5, b7) { extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d7, b8) { d7.__proto__ = b8; } || function(d7, b8) { for (var p4 in b8) if (Object.prototype.hasOwnProperty.call(b8, p4)) d7[p4] = b8[p4]; }; return extendStatics(d5, b7); }; __assign = function() { __assign = Object.assign || function __assign2(t26) { for (var s5, i = 1, n5 = arguments.length; i < n5; i++) { s5 = arguments[i]; for (var p4 in s5) if (Object.prototype.hasOwnProperty.call(s5, p4)) t26[p4] = s5[p4]; } return t26; }; return __assign.apply(this, arguments); }; __createBinding = Object.create ? (function(o5, m7, k8, k24) { if (k24 === void 0) k24 = k8; var desc = Object.getOwnPropertyDescriptor(m7, k8); if (!desc || ("get" in desc ? !m7.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m7[k8]; } }; } Object.defineProperty(o5, k24, desc); }) : (function(o5, m7, k8, k24) { if (k24 === void 0) k24 = k8; o5[k24] = m7[k8]; }); __setModuleDefault = Object.create ? (function(o5, v9) { Object.defineProperty(o5, "default", { enumerable: true, value: v9 }); }) : function(o5, v9) { o5["default"] = v9; }; ownKeys = function(o5) { ownKeys = Object.getOwnPropertyNames || function(o7) { var ar9 = []; for (var k8 in o7) if (Object.prototype.hasOwnProperty.call(o7, k8)) ar9[ar9.length] = k8; return ar9; }; return ownKeys(o5); }; _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) { var e7 = new Error(message); return e7.name = "SuppressedError", e7.error = error, e7.suppressed = suppressed, e7; }; tslib_es6_default = { __extends, __assign, __rest, __decorate, __param, __esDecorate, __runInitializers, __propKey, __setFunctionName, __metadata, __awaiter, __generator, __createBinding, __exportStar, __values, __read, __spread, __spreadArrays, __spreadArray, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault, __classPrivateFieldGet, __classPrivateFieldSet, __classPrivateFieldIn, __addDisposableResource, __disposeResources, __rewriteRelativeImportExtension }; } }); // ../../node_modules/.pnpm/prettier@3.8.1/node_modules/prettier/doc.mjs var doc_exports = {}; __export(doc_exports, { builders: () => builders, default: () => public_exports, printer: () => printer, utils: () => utils }); function stringOrArrayAt(index) { return this[index < 0 ? this.length + index : index]; } function trimNewlinesEnd(string) { let end = string.length; while (end > 0 && (string[end - 1] === "\r" || string[end - 1] === "\n")) { end--; } return end < string.length ? string.slice(0, end) : string; } function getDocType(doc) { if (typeof doc === "string") { return DOC_TYPE_STRING; } if (Array.isArray(doc)) { return DOC_TYPE_ARRAY; } if (!doc) { return; } const { type } = doc; if (VALID_OBJECT_DOC_TYPES.has(type)) { return type; } } function getDocErrorMessage(doc) { const type = doc === null ? "null" : typeof doc; if (type !== "string" && type !== "object") { return `Unexpected doc '${type}', Expected it to be 'string' or 'object'.`; } if (get_doc_type_default(doc)) { throw new Error("doc is valid."); } const objectType = Object.prototype.toString.call(doc); if (objectType !== "[object Object]") { return `Unexpected doc '${objectType}'.`; } const EXPECTED_TYPE_VALUES = disjunctionListFormat( [...VALID_OBJECT_DOC_TYPES].map((type2) => `'${type2}'`) ); return `Unexpected doc.type '${doc.type}'. Expected it to be ${EXPECTED_TYPE_VALUES}.`; } function traverseDoc(doc, onEnter, onExit, shouldTraverseConditionalGroups) { const docsStack = [doc]; while (docsStack.length > 0) { const doc2 = docsStack.pop(); if (doc2 === traverseDocOnExitStackMarker) { onExit(docsStack.pop()); continue; } if (onExit) { docsStack.push(doc2, traverseDocOnExitStackMarker); } const docType = get_doc_type_default(doc2); if (!docType) { throw new invalid_doc_error_default(doc2); } if (onEnter?.(doc2) === false) { continue; } switch (docType) { case DOC_TYPE_ARRAY: case DOC_TYPE_FILL: { const parts = docType === DOC_TYPE_ARRAY ? doc2 : doc2.parts; for (let ic3 = parts.length, i = ic3 - 1; i >= 0; --i) { docsStack.push(parts[i]); } break; } case DOC_TYPE_IF_BREAK: docsStack.push(doc2.flatContents, doc2.breakContents); break; case DOC_TYPE_GROUP: if (shouldTraverseConditionalGroups && doc2.expandedStates) { for (let ic3 = doc2.expandedStates.length, i = ic3 - 1; i >= 0; --i) { docsStack.push(doc2.expandedStates[i]); } } else { docsStack.push(doc2.contents); } break; case DOC_TYPE_ALIGN: case DOC_TYPE_INDENT: case DOC_TYPE_INDENT_IF_BREAK: case DOC_TYPE_LABEL: case DOC_TYPE_LINE_SUFFIX: docsStack.push(doc2.contents); break; case DOC_TYPE_STRING: case DOC_TYPE_CURSOR: case DOC_TYPE_TRIM: case DOC_TYPE_LINE_SUFFIX_BOUNDARY: case DOC_TYPE_LINE: case DOC_TYPE_BREAK_PARENT: break; default: throw new invalid_doc_error_default(doc2); } } } function mapDoc(doc, cb2) { if (typeof doc === "string") { return cb2(doc); } const mapped = /* @__PURE__ */ new Map(); return rec(doc); function rec(doc2) { if (mapped.has(doc2)) { return mapped.get(doc2); } const result = process22(doc2); mapped.set(doc2, result); return result; } function process22(doc2) { switch (get_doc_type_default(doc2)) { case DOC_TYPE_ARRAY: return cb2(doc2.map(rec)); case DOC_TYPE_FILL: return cb2({ ...doc2, parts: doc2.parts.map(rec) }); case DOC_TYPE_IF_BREAK: return cb2({ ...doc2, breakContents: rec(doc2.breakContents), flatContents: rec(doc2.flatContents) }); case DOC_TYPE_GROUP: { let { expandedStates, contents } = doc2; if (expandedStates) { expandedStates = expandedStates.map(rec); contents = expandedStates[0]; } else { contents = rec(contents); } return cb2({ ...doc2, contents, expandedStates }); } case DOC_TYPE_ALIGN: case DOC_TYPE_INDENT: case DOC_TYPE_INDENT_IF_BREAK: case DOC_TYPE_LABEL: case DOC_TYPE_LINE_SUFFIX: return cb2({ ...doc2, contents: rec(doc2.contents) }); case DOC_TYPE_STRING: case DOC_TYPE_CURSOR: case DOC_TYPE_TRIM: case DOC_TYPE_LINE_SUFFIX_BOUNDARY: case DOC_TYPE_LINE: case DOC_TYPE_BREAK_PARENT: return cb2(doc2); default: throw new invalid_doc_error_default(doc2); } } } function findInDoc(doc, fn9, defaultValue) { let result = defaultValue; let shouldSkipFurtherProcessing = false; function findInDocOnEnterFn(doc2) { if (shouldSkipFurtherProcessing) { return false; } const maybeResult = fn9(doc2); if (maybeResult !== void 0) { shouldSkipFurtherProcessing = true; result = maybeResult; } } traverse_doc_default(doc, findInDocOnEnterFn); return result; } function willBreakFn(doc) { if (doc.type === DOC_TYPE_GROUP && doc.break) { return true; } if (doc.type === DOC_TYPE_LINE && doc.hard) { return true; } if (doc.type === DOC_TYPE_BREAK_PARENT) { return true; } } function willBreak(doc) { return findInDoc(doc, willBreakFn, false); } function breakParentGroup(groupStack) { if (groupStack.length > 0) { const parentGroup = method_at_default( /* OPTIONAL_OBJECT: false */ 0, groupStack, -1 ); if (!parentGroup.expandedStates && !parentGroup.break) { parentGroup.break = "propagated"; } } return null; } function propagateBreaks(doc) { const alreadyVisitedSet = /* @__PURE__ */ new Set(); const groupStack = []; function propagateBreaksOnEnterFn(doc2) { if (doc2.type === DOC_TYPE_BREAK_PARENT) { breakParentGroup(groupStack); } if (doc2.type === DOC_TYPE_GROUP) { groupStack.push(doc2); if (alreadyVisitedSet.has(doc2)) { return false; } alreadyVisitedSet.add(doc2); } } function propagateBreaksOnExitFn(doc2) { if (doc2.type === DOC_TYPE_GROUP) { const group2 = groupStack.pop(); if (group2.break) { breakParentGroup(groupStack); } } } traverse_doc_default( doc, propagateBreaksOnEnterFn, propagateBreaksOnExitFn, /* shouldTraverseConditionalGroups */ true ); } function removeLinesFn(doc) { if (doc.type === DOC_TYPE_LINE && !doc.hard) { return doc.soft ? "" : " "; } if (doc.type === DOC_TYPE_IF_BREAK) { return doc.flatContents; } return doc; } function removeLines(doc) { return mapDoc(doc, removeLinesFn); } function stripTrailingHardlineFromParts(parts) { parts = [...parts]; while (parts.length >= 2 && method_at_default( /* OPTIONAL_OBJECT: false */ 0, parts, -2 ).type === DOC_TYPE_LINE && method_at_default( /* OPTIONAL_OBJECT: false */ 0, parts, -1 ).type === DOC_TYPE_BREAK_PARENT) { parts.length -= 2; } if (parts.length > 0) { const lastPart = stripTrailingHardlineFromDoc(method_at_default( /* OPTIONAL_OBJECT: false */ 0, parts, -1 )); parts[parts.length - 1] = lastPart; } return parts; } function stripTrailingHardlineFromDoc(doc) { switch (get_doc_type_default(doc)) { case DOC_TYPE_INDENT: case DOC_TYPE_INDENT_IF_BREAK: case DOC_TYPE_GROUP: case DOC_TYPE_LINE_SUFFIX: case DOC_TYPE_LABEL: { const contents = stripTrailingHardlineFromDoc(doc.contents); return { ...doc, contents }; } case DOC_TYPE_IF_BREAK: return { ...doc, breakContents: stripTrailingHardlineFromDoc(doc.breakContents), flatContents: stripTrailingHardlineFromDoc(doc.flatContents) }; case DOC_TYPE_FILL: return { ...doc, parts: stripTrailingHardlineFromParts(doc.parts) }; case DOC_TYPE_ARRAY: return stripTrailingHardlineFromParts(doc); case DOC_TYPE_STRING: return trimNewlinesEnd(doc); case DOC_TYPE_ALIGN: case DOC_TYPE_CURSOR: case DOC_TYPE_TRIM: case DOC_TYPE_LINE_SUFFIX_BOUNDARY: case DOC_TYPE_LINE: case DOC_TYPE_BREAK_PARENT: break; default: throw new invalid_doc_error_default(doc); } return doc; } function stripTrailingHardline(doc) { return stripTrailingHardlineFromDoc(cleanDoc(doc)); } function cleanDocFn(doc) { switch (get_doc_type_default(doc)) { case DOC_TYPE_FILL: if (doc.parts.every((part) => part === "")) { return ""; } break; case DOC_TYPE_GROUP: if (!doc.contents && !doc.id && !doc.break && !doc.expandedStates) { return ""; } if (doc.contents.type === DOC_TYPE_GROUP && doc.contents.id === doc.id && doc.contents.break === doc.break && doc.contents.expandedStates === doc.expandedStates) { return doc.contents; } break; case DOC_TYPE_ALIGN: case DOC_TYPE_INDENT: case DOC_TYPE_INDENT_IF_BREAK: case DOC_TYPE_LINE_SUFFIX: if (!doc.contents) { return ""; } break; case DOC_TYPE_IF_BREAK: if (!doc.flatContents && !doc.breakContents) { return ""; } break; case DOC_TYPE_ARRAY: { const parts = []; for (const part of doc) { if (!part) { continue; } const [currentPart, ...restParts] = Array.isArray(part) ? part : [part]; if (typeof currentPart === "string" && typeof method_at_default( /* OPTIONAL_OBJECT: false */ 0, parts, -1 ) === "string") { parts[parts.length - 1] += currentPart; } else { parts.push(currentPart); } parts.push(...restParts); } if (parts.length === 0) { return ""; } if (parts.length === 1) { return parts[0]; } return parts; } case DOC_TYPE_STRING: case DOC_TYPE_CURSOR: case DOC_TYPE_TRIM: case DOC_TYPE_LINE_SUFFIX_BOUNDARY: case DOC_TYPE_LINE: case DOC_TYPE_LABEL: case DOC_TYPE_BREAK_PARENT: break; default: throw new invalid_doc_error_default(doc); } return doc; } function cleanDoc(doc) { return mapDoc(doc, (currentDoc) => cleanDocFn(currentDoc)); } function replaceEndOfLine(doc, replacement = literalline) { return mapDoc(doc, (currentDoc) => typeof currentDoc === "string" ? join(replacement, currentDoc.split("\n")) : currentDoc); } function canBreakFn(doc) { if (doc.type === DOC_TYPE_LINE) { return true; } } function canBreak(doc) { return findInDoc(doc, canBreakFn, false); } function indent(contents) { assertDoc(contents); return { type: DOC_TYPE_INDENT, contents }; } function align(alignType, contents) { assertAlignType(alignType); assertDoc(contents); return { type: DOC_TYPE_ALIGN, contents, n: alignType }; } function dedentToRoot(contents) { return align(Number.NEGATIVE_INFINITY, contents); } function markAsRoot(contents) { return align({ type: "root" }, contents); } function dedent(contents) { return align(-1, contents); } function addAlignmentToDoc(doc, size, tabWidth) { assertDoc(doc); let aligned = doc; if (size > 0) { for (let level = 0; level < Math.floor(size / tabWidth); ++level) { aligned = indent(aligned); } aligned = align(size % tabWidth, aligned); aligned = align(Number.NEGATIVE_INFINITY, aligned); } return aligned; } function fill(parts) { assertDocFillParts(parts); return { type: DOC_TYPE_FILL, parts }; } function group(contents, options8 = {}) { assertDoc(contents); assertDocArray( options8.expandedStates, /* optional */ true ); return { type: DOC_TYPE_GROUP, id: options8.id, contents, break: Boolean(options8.shouldBreak), expandedStates: options8.expandedStates }; } function conditionalGroup(states, options8) { return group(states[0], { ...options8, expandedStates: states }); } function ifBreak(breakContents, flatContents = "", options8 = {}) { assertDoc(breakContents); if (flatContents !== "") { assertDoc(flatContents); } return { type: DOC_TYPE_IF_BREAK, breakContents, flatContents, groupId: options8.groupId }; } function indentIfBreak(contents, options8) { assertDoc(contents); return { type: DOC_TYPE_INDENT_IF_BREAK, contents, groupId: options8.groupId, negate: options8.negate }; } function join(separator, docs) { assertDoc(separator); assertDocArray(docs); const parts = []; for (let i = 0; i < docs.length; i++) { if (i !== 0) { parts.push(separator); } parts.push(docs[i]); } return parts; } function label(label2, contents) { assertDoc(contents); return label2 ? { type: DOC_TYPE_LABEL, label: label2, contents } : contents; } function lineSuffix(contents) { assertDoc(contents); return { type: DOC_TYPE_LINE_SUFFIX, contents }; } function convertEndOfLineOptionToCharacter(endOfLineOption) { return endOfLineOption === OPTION_CR ? CHARACTER_CR : endOfLineOption === OPTION_CRLF ? CHARACTER_CRLF : DEFAULT_EOL; } function isFullWidth(x8) { return x8 === 12288 || x8 >= 65281 && x8 <= 65376 || x8 >= 65504 && x8 <= 65510; } function isWide(x8) { return x8 >= 4352 && x8 <= 4447 || x8 === 8986 || x8 === 8987 || x8 === 9001 || x8 === 9002 || x8 >= 9193 && x8 <= 9196 || x8 === 9200 || x8 === 9203 || x8 === 9725 || x8 === 9726 || x8 === 9748 || x8 === 9749 || x8 >= 9776 && x8 <= 9783 || x8 >= 9800 && x8 <= 9811 || x8 === 9855 || x8 >= 9866 && x8 <= 9871 || x8 === 9875 || x8 === 9889 || x8 === 9898 || x8 === 9899 || x8 === 9917 || x8 === 9918 || x8 === 9924 || x8 === 9925 || x8 === 9934 || x8 === 9940 || x8 === 9962 || x8 === 9970 || x8 === 9971 || x8 === 9973 || x8 === 9978 || x8 === 9981 || x8 === 9989 || x8 === 9994 || x8 === 9995 || x8 === 10024 || x8 === 10060 || x8 === 10062 || x8 >= 10067 && x8 <= 10069 || x8 === 10071 || x8 >= 10133 && x8 <= 10135 || x8 === 10160 || x8 === 10175 || x8 === 11035 || x8 === 11036 || x8 === 11088 || x8 === 11093 || x8 >= 11904 && x8 <= 11929 || x8 >= 11931 && x8 <= 12019 || x8 >= 12032 && x8 <= 12245 || x8 >= 12272 && x8 <= 12287 || x8 >= 12289 && x8 <= 12350 || x8 >= 12353 && x8 <= 12438 || x8 >= 12441 && x8 <= 12543 || x8 >= 12549 && x8 <= 12591 || x8 >= 12593 && x8 <= 12686 || x8 >= 12688 && x8 <= 12773 || x8 >= 12783 && x8 <= 12830 || x8 >= 12832 && x8 <= 12871 || x8 >= 12880 && x8 <= 42124 || x8 >= 42128 && x8 <= 42182 || x8 >= 43360 && x8 <= 43388 || x8 >= 44032 && x8 <= 55203 || x8 >= 63744 && x8 <= 64255 || x8 >= 65040 && x8 <= 65049 || x8 >= 65072 && x8 <= 65106 || x8 >= 65108 && x8 <= 65126 || x8 >= 65128 && x8 <= 65131 || x8 >= 94176 && x8 <= 94180 || x8 >= 94192 && x8 <= 94198 || x8 >= 94208 && x8 <= 101589 || x8 >= 101631 && x8 <= 101662 || x8 >= 101760 && x8 <= 101874 || x8 >= 110576 && x8 <= 110579 || x8 >= 110581 && x8 <= 110587 || x8 === 110589 || x8 === 110590 || x8 >= 110592 && x8 <= 110882 || x8 === 110898 || x8 >= 110928 && x8 <= 110930 || x8 === 110933 || x8 >= 110948 && x8 <= 110951 || x8 >= 110960 && x8 <= 111355 || x8 >= 119552 && x8 <= 119638 || x8 >= 119648 && x8 <= 119670 || x8 === 126980 || x8 === 127183 || x8 === 127374 || x8 >= 127377 && x8 <= 127386 || x8 >= 127488 && x8 <= 127490 || x8 >= 127504 && x8 <= 127547 || x8 >= 127552 && x8 <= 127560 || x8 === 127568 || x8 === 127569 || x8 >= 127584 && x8 <= 127589 || x8 >= 127744 && x8 <= 127776 || x8 >= 127789 && x8 <= 127797 || x8 >= 127799 && x8 <= 127868 || x8 >= 127870 && x8 <= 127891 || x8 >= 127904 && x8 <= 127946 || x8 >= 127951 && x8 <= 127955 || x8 >= 127968 && x8 <= 127984 || x8 === 127988 || x8 >= 127992 && x8 <= 128062 || x8 === 128064 || x8 >= 128066 && x8 <= 128252 || x8 >= 128255 && x8 <= 128317 || x8 >= 128331 && x8 <= 128334 || x8 >= 128336 && x8 <= 128359 || x8 === 128378 || x8 === 128405 || x8 === 128406 || x8 === 128420 || x8 >= 128507 && x8 <= 128591 || x8 >= 128640 && x8 <= 128709 || x8 === 128716 || x8 >= 128720 && x8 <= 128722 || x8 >= 128725 && x8 <= 128728 || x8 >= 128732 && x8 <= 128735 || x8 === 128747 || x8 === 128748 || x8 >= 128756 && x8 <= 128764 || x8 >= 128992 && x8 <= 129003 || x8 === 129008 || x8 >= 129292 && x8 <= 129338 || x8 >= 129340 && x8 <= 129349 || x8 >= 129351 && x8 <= 129535 || x8 >= 129648 && x8 <= 129660 || x8 >= 129664 && x8 <= 129674 || x8 >= 129678 && x8 <= 129734 || x8 === 129736 || x8 >= 129741 && x8 <= 129756 || x8 >= 129759 && x8 <= 129770 || x8 >= 129775 && x8 <= 129784 || x8 >= 131072 && x8 <= 196605 || x8 >= 196608 && x8 <= 262141; } function getStringWidth(text) { if (!text) { return 0; } if (!notAsciiRegex.test(text)) { return text.length; } text = text.replace( emoji_regex_default(), (match) => narrowEmojisSet.has(match) ? " " : " " ); let width = 0; for (const character of text) { const codePoint = character.codePointAt(0); if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) { continue; } if (codePoint >= 768 && codePoint <= 879) { continue; } if (codePoint >= 65024 && codePoint <= 65039) { continue; } width += isFullWidth(codePoint) || isWide(codePoint) ? 2 : 1; } return width; } function generateIndent(indent22, command, options8) { const queue = command.type === INDENT_COMMAND_TYPE_DEDENT ? indent22.queue.slice(0, -1) : [...indent22.queue, command]; let value = ""; let length = 0; let lastTabs = 0; let lastSpaces = 0; for (const command2 of queue) { switch (command2.type) { case INDENT_COMMAND_TYPE_INDENT: flush(); if (options8.useTabs) { addTabs(1); } else { addSpaces(options8.tabWidth); } break; case INDENT_COMMAND_TYPE_STRING: { const { string } = command2; flush(); value += string; length += string.length; break; } case INDENT_COMMAND_TYPE_WIDTH: { const { width } = command2; lastTabs += 1; lastSpaces += width; break; } default: throw new Error(`Unexpected indent comment '${command2.type}'.`); } } flushSpaces(); return { ...indent22, value, length, queue }; function addTabs(count) { value += " ".repeat(count); length += options8.tabWidth * count; } function addSpaces(count) { value += " ".repeat(count); length += count; } function flush() { if (options8.useTabs) { flushTabs(); } else { flushSpaces(); } } function flushTabs() { if (lastTabs > 0) { addTabs(lastTabs); } resetLast(); } function flushSpaces() { if (lastSpaces > 0) { addSpaces(lastSpaces); } resetLast(); } function resetLast() { lastTabs = 0; lastSpaces = 0; } } function makeAlign(indent22, indentOptions, options8) { if (!indentOptions) { return indent22; } if (indentOptions.type === "root") { return { ...indent22, root: indent22 }; } if (indentOptions === Number.NEGATIVE_INFINITY) { return indent22.root; } let command; if (typeof indentOptions === "number") { if (indentOptions < 0) { command = INDENT_COMMAND_DEDENT; } else { command = { type: INDENT_COMMAND_TYPE_WIDTH, width: indentOptions }; } } else { command = { type: INDENT_COMMAND_TYPE_STRING, string: indentOptions }; } return generateIndent(indent22, command, options8); } function makeIndent(indent22, options8) { return generateIndent(indent22, INDENT_COMMAND_INDENT, options8); } function getTrailingIndentionLength(text) { let length = 0; for (let index = text.length - 1; index >= 0; index--) { const character = text[index]; if (character === " " || character === " ") { length++; } else { break; } } return length; } function trimIndentation(text) { const length = getTrailingIndentionLength(text); const trimmed = length === 0 ? text : text.slice(0, text.length - length); return { text: trimmed, count: length }; } function fits(next, restCommands, remainingWidth, hasLineSuffix, groupModeMap, mustBeFlat) { if (remainingWidth === Number.POSITIVE_INFINITY) { return true; } let restCommandsIndex = restCommands.length; let hasPendingSpace = false; const commands = [next]; let output = ""; while (remainingWidth >= 0) { if (commands.length === 0) { if (restCommandsIndex === 0) { return true; } commands.push(restCommands[--restCommandsIndex]); continue; } const { mode, doc } = commands.pop(); const docType = get_doc_type_default(doc); switch (docType) { case DOC_TYPE_STRING: if (doc) { if (hasPendingSpace) { output += " "; remainingWidth -= 1; hasPendingSpace = false; } output += doc; remainingWidth -= get_string_width_default(doc); } break; case DOC_TYPE_ARRAY: case DOC_TYPE_FILL: { const parts = docType === DOC_TYPE_ARRAY ? doc : doc.parts; const end = doc[DOC_FILL_PRINTED_LENGTH] ?? 0; for (let index = parts.length - 1; index >= end; index--) { commands.push({ mode, doc: parts[index] }); } break; } case DOC_TYPE_INDENT: case DOC_TYPE_ALIGN: case DOC_TYPE_INDENT_IF_BREAK: case DOC_TYPE_LABEL: commands.push({ mode, doc: doc.contents }); break; case DOC_TYPE_TRIM: { const { text, count } = trimIndentation(output); output = text; remainingWidth += count; break; } case DOC_TYPE_GROUP: { if (mustBeFlat && doc.break) { return false; } const groupMode = doc.break ? MODE_BREAK : mode; const contents = doc.expandedStates && groupMode === MODE_BREAK ? method_at_default( /* OPTIONAL_OBJECT: false */ 0, doc.expandedStates, -1 ) : doc.contents; commands.push({ mode: groupMode, doc: contents }); break; } case DOC_TYPE_IF_BREAK: { const groupMode = doc.groupId ? groupModeMap[doc.groupId] || MODE_FLAT : mode; const contents = groupMode === MODE_BREAK ? doc.breakContents : doc.flatContents; if (contents) { commands.push({ mode, doc: contents }); } break; } case DOC_TYPE_LINE: if (mode === MODE_BREAK || doc.hard) { return true; } if (!doc.soft) { hasPendingSpace = true; } break; case DOC_TYPE_LINE_SUFFIX: hasLineSuffix = true; break; case DOC_TYPE_LINE_SUFFIX_BOUNDARY: if (hasLineSuffix) { return false; } break; } } return false; } function printDocToString(doc, options8) { const groupModeMap = /* @__PURE__ */ Object.create(null); const width = options8.printWidth; const newLine = convertEndOfLineOptionToCharacter(options8.endOfLine); let position = 0; const commands = [{ indent: ROOT_INDENT, mode: MODE_BREAK, doc }]; let output = ""; let shouldRemeasure = false; const lineSuffix22 = []; const cursorPositions = []; const settledOutput = []; const settledCursorPositions = []; let settledTextLength = 0; propagateBreaks(doc); while (commands.length > 0) { const { indent: indent22, mode, doc: doc2 } = commands.pop(); switch (get_doc_type_default(doc2)) { case DOC_TYPE_STRING: { const formatted2 = newLine !== "\n" ? method_replace_all_default( /* OPTIONAL_OBJECT: false */ 0, doc2, "\n", newLine ) : doc2; if (formatted2) { output += formatted2; if (commands.length > 0) { position += get_string_width_default(formatted2); } } break; } case DOC_TYPE_ARRAY: for (let index = doc2.length - 1; index >= 0; index--) { commands.push({ indent: indent22, mode, doc: doc2[index] }); } break; case DOC_TYPE_CURSOR: if (cursorPositions.length >= 2) { throw new Error("There are too many 'cursor' in doc."); } cursorPositions.push(settledTextLength + output.length); break; case DOC_TYPE_INDENT: commands.push({ indent: makeIndent(indent22, options8), mode, doc: doc2.contents }); break; case DOC_TYPE_ALIGN: commands.push({ indent: makeAlign(indent22, doc2.n, options8), mode, doc: doc2.contents }); break; case DOC_TYPE_TRIM: trim2(); break; case DOC_TYPE_GROUP: switch (mode) { case MODE_FLAT: if (!shouldRemeasure) { commands.push({ indent: indent22, mode: doc2.break ? MODE_BREAK : MODE_FLAT, doc: doc2.contents }); break; } // fallthrough case MODE_BREAK: { shouldRemeasure = false; const next = { indent: indent22, mode: MODE_FLAT, doc: doc2.contents }; const remainingWidth = width - position; const hasLineSuffix = lineSuffix22.length > 0; if (!doc2.break && fits(next, commands, remainingWidth, hasLineSuffix, groupModeMap)) { commands.push(next); } else { if (doc2.expandedStates) { const mostExpanded = method_at_default( /* OPTIONAL_OBJECT: false */ 0, doc2.expandedStates, -1 ); if (doc2.break) { commands.push({ indent: indent22, mode: MODE_BREAK, doc: mostExpanded }); break; } else { for (let index = 1; index < doc2.expandedStates.length + 1; index++) { if (index >= doc2.expandedStates.length) { commands.push({ indent: indent22, mode: MODE_BREAK, doc: mostExpanded }); break; } else { const state = doc2.expandedStates[index]; const cmd = { indent: indent22, mode: MODE_FLAT, doc: state }; if (fits(cmd, commands, remainingWidth, hasLineSuffix, groupModeMap)) { commands.push(cmd); break; } } } } } else { commands.push({ indent: indent22, mode: MODE_BREAK, doc: doc2.contents }); } } break; } } if (doc2.id) { groupModeMap[doc2.id] = method_at_default( /* OPTIONAL_OBJECT: false */ 0, commands, -1 ).mode; } break; // Fills each line with as much code as possible before moving to a new // line with the same indentation. // // Expects doc.parts to be an array of alternating content and // whitespace. The whitespace contains the linebreaks. // // For example: // ["I", line, "love", line, "monkeys"] // or // [{ type: group, ... }, softline, { type: group, ... }] // // It uses this parts structure to handle three main layout cases: // * The first two content items fit on the same line without // breaking // -> output the first content item and the whitespace "flat". // * Only the first content item fits on the line without