XuqmGroup-H5SDK/node_modules/@rushstack/node-core-library/lib-esm/StringBuilder.js
徐勤民 e34fa2052a feat(private): add private deployment SDK module
Adds @xuqm/h5-sdk/private entry point with JSON-based initialization,
feature gating, and error codes for private deployment scenarios.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 21:08:08 +08:00

37 行
1.4 KiB
JavaScript

// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
// See LICENSE in the project root for license information.
/**
* This class allows a large text string to be constructed incrementally by appending small chunks. The final
* string can be obtained by calling StringBuilder.toString().
*
* @remarks
* A naive approach might use the `+=` operator to append strings: This would have the downside of copying
* the entire string each time a chunk is appended, resulting in `O(n^2)` bytes of memory being allocated
* (and later freed by the garbage collector), and many of the allocations could be very large objects.
* StringBuilder avoids this overhead by accumulating the chunks in an array, and efficiently joining them
* when `getText()` is finally called.
*
* @public
*/
export class StringBuilder {
constructor() {
this._chunks = [];
}
/** {@inheritDoc IStringBuilder.append} */
append(text) {
this._chunks.push(text);
}
/** {@inheritDoc IStringBuilder.toString} */
toString() {
if (this._chunks.length === 0) {
return '';
}
if (this._chunks.length > 1) {
const joined = this._chunks.join('');
this._chunks.length = 1;
this._chunks[0] = joined;
}
return this._chunks[0];
}
}
//# sourceMappingURL=StringBuilder.js.map