@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
JavaScript
#!/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