ongStringFront extends FrontClassWithSpec(longStringSpec) { destroy() { this.initial = null; this.length = null; this.strPromise = null; super.destroy(); } form(data) { this.actorID = data.actor; this.initial = data.initial; this.length = data.length; this._grip = data; } // We expose the grip so consumers (e.g. ObjectInspector) that handle webconsole // evaluations (which can return primitive, object fronts or longString front), // can directly call this without further check. getGrip() { return this._grip; } string() { if (!this.strPromise) { const promiseRest = thusFar => { if (thusFar.length === this.length) { return Promise.resolve(thusFar); } return this.substring( thusFar.length, thusFar.length + DevToolsServer.LONG_STRING_READ_LENGTH ).then(next => promiseRest(thusFar + next)); }; this.strPromise = promiseRest(this.initial); } return this.strPromise; } } exports.LongStringFront = LongStringFront; registerFront(LongStringFront); exports.SimpleStringFront = SimpleStringFront; registerFront(SimpleStringFront); PK