/* * Copyright (C) 2015 Canon Inc. * Copyright (C) 2015 Igalia. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ function initializeReadableStream(underlyingSource, strategy) { "use strict"; if (underlyingSource === @undefined) underlyingSource = { @bunNativeType: 0, @bunNativePtr: 0, @lazy: false }; if (strategy === @undefined) strategy = { }; if (!@isObject(underlyingSource)) @throwTypeError("ReadableStream constructor takes an object as first argument"); if (strategy !== @undefined && !@isObject(strategy)) @throwTypeError("ReadableStream constructor takes an object as second argument, if any"); @putByIdDirectPrivate(this, "state", @streamReadable); @putByIdDirectPrivate(this, "reader", @undefined); @putByIdDirectPrivate(this, "storedError", @undefined); @putByIdDirectPrivate(this, "disturbed", false); // Initialized with null value to enable distinction with undefined case. @putByIdDirectPrivate(this, "readableStreamController", null); @putByIdDirectPrivate(this, "bunNativeType", @getByIdDirectPrivate(underlyingSource, "bunNativeType") ?? 0); @putByIdDirectPrivate(this, "bunNativePtr", @getByIdDirectPrivate(underlyingSource, "bunNativePtr") ?? 0); const isDirect = underlyingSource.type === "direct"; // direct streams are always lazy const isUnderlyingSourceLazy = !!underlyingSource.@lazy; const isLazy = isDirect || isUnderlyingSourceLazy; // // FIXME: We should introduce https://streams.spec.whatwg.org/#create-readable-stream. // // For now, we emulate this with underlyingSource with private properties. if (@getByIdDirectPrivate(underlyingSource, "pull") !== @undefined && !isLazy) { const size = @getByIdDirectPrivate(strategy, "size"); const highWaterMark = @getByIdDirectPrivate(strategy, "highWaterMark"); @putByIdDirectPrivate(this, "highWaterMark", highWaterMark); @putByIdDirectPrivate(this, "underlyingSource", @undefined); @setupReadableStreamDefaultController(this, underlyingSource, size, highWaterMark !== @undefined ? highWaterMark : 1, @getByIdDirectPrivate(underlyingSource, "start"), @getByIdDirectPrivate(underlyingSource, "pull"), @getByIdDirectPrivate(underlyingSource, "cancel")); return this; } if (isDirect) { @putByIdDirectPrivate(this, "underlyingSource", underlyingSource); @putByIdDirectPrivate(this, "highWaterMark", @getByIdDirectPrivate(strategy, "highWaterMark")); @putByIdDirectPrivate(this, "start", () => @createReadableStreamController(this, underlyingSource, strategy)); } else if (isLazy) { const autoAllocateChunkSize = underlyingSource.autoAllocateChunkSize; @putByIdDirectPrivate(this, "highWaterMark", @undefined); @putByIdDirectPrivate(this, "underlyingSource", @undefined); @putByIdDirectPrivate(this, "highWaterMark", autoAllocateChunkSize || @getByIdDirectPrivate(strategy, "highWaterMark")); @putByIdDirectPrivate(this, "start", () => { const instance = @lazyLoadStream(this, autoAllocateChunkSize); if (instance) { @createReadableStreamController(this, instance, strategy); } }); } else { @putByIdDirectPrivate(this, "underlyingSource", @undefined); @putByIdDirectPrivate(this, "highWaterMark", @getByIdDirectPrivate(strategy, "highWaterMark")); @putByIdDirectPrivate(this, "start", @undefined); @createReadableStreamController(this, underlyingSource, strategy); } return this; } @linkTimeConstant function readableStreamToArray(stream) { "use strict"; // this is a direct stream var underlyingSource = @getByIdDirectPrivate(stream, "underlyingSource"); if (underlyingSource !== @undefined) { return @readableStreamToArrayDirect(stream, underlyingSource); } return @readableStreamIntoArray(stream); } @linkTimeConstant function readableStreamToText(stream) { "use strict"; // this is a direct stream var underlyingSource = @getByIdDirectPrivate(stream, "underlyingSource"); if (underlyingSource !== @undefined) { return @readableStreamToTextDirect(stream, underlyingSource); } return @readableStreamIntoText(stream); } @linkTimeConstant function readableStreamToArrayBuffer(stream) { "use strict"; // this is a direct stream var underlyingSource = @getByIdDirectPrivate(stream, "underlyingSource"); if (underlyingSource !== @undefined) { return @readableStreamToArrayBufferDirect(stream, underlyingSource); } return @Bun.readableStreamToArray(stream).@then(@Bun.concatArrayBuffers); } @linkTimeConstant function readableStreamToJSON(stream) { "use strict"; return @Bun.readableStreamToText(stream).@then(globalThis.JSON.parse); } @linkTimeConstant function readableStreamToBlob(stream) { "use strict"; return @Promise.resolve(@Bun.readableStreamToArray(stream)).@then(array => new Blob(array)); } @linkTimeConstant function consumeReadableStream(nativePtr, nativeType, inputStream) { "use strict"; const symbol = globalThis.Symbol.for("Bun.consumeReadableStreamPrototype"); var cached = globalThis[symbol]; if (!cached) { cached = globalThis[symbol] = []; } var Prototype = cached[nativeType]; if (Prototype === @undefined) { var [doRead, doError, doReadMany, doClose, onClose, deinit] = globalThis[globalThis.Symbol.for("Bun.lazy")](nativeType); Prototype = class NativeReadableStreamSink { constructor(reader, ptr) { this.#ptr = ptr; this.#reader = reader; this.#didClose = false; this.handleError = this._handleError.bind(this); this.handleClosed = this._handleClosed.bind(this); this.processResult = this._processResult.bind(this); reader.closed.then(this.handleClosed, this.handleError); } handleError; handleClosed; _handleClosed() { if (this.#didClose) return; this.#didClose = true; var ptr = this.#ptr; this.#ptr = 0; doClose(ptr); deinit(ptr); } _handleError(error) { if (this.#didClose) return; this.#didClose = true; var ptr = this.#ptr; this.#ptr = 0; doError(ptr, error); deinit(ptr); } #ptr; #didClose = false; #reader; _handleReadMany({value, done, size}) { if (done) { this.handleClosed(); return; } if (this.#didClose) return; doReadMany(this.#ptr, value, done, size); } read() { if (!this.#ptr) return @throwTypeError("ReadableStreamSink is already closed"); return this.processResult(this.#reader.read()); } _processResult(result) { if (result && @isPromise(result)) { const flags = @getPromiseInternalField(result, @promiseFieldFlags); if (flags & @promiseStateFulfilled) { const fulfilledValue = @getPromiseInternalField(result, @promiseFieldReactionsOrResult); if (fulfilledValue) { result = fulfilledValue; } } } if (result && @isPromise(result)) { result.then(this.processResult, this.handleError); return null; } if (result.done) { this.handleClosed(); return 0; } else if (result.value) { return result.value; } else { return -1; } } readMany() { if (!this.#ptr) return @throwTypeError("ReadableStreamSink is already closed"); return this.processResult(this.#reader.readMany()); } }; const minlength = nativeType + 1; if (cached.length < minlength) { cached.length = minlength; } @putByValDirect(cached, nativeType, Prototype); } if (@isReadableStreamLocked(inputStream)) { @throwTypeError("Cannot start reading from a locked stream"); } return new Prototype(inputStream.getReader(), nativePtr); } @linkTimeConstant function createEmptyReadableStream() { "use strict"; var stream = new @ReadableStream({ pull() {}, }); @readableStreamClose(stream); return stream; } @linkTimeConstant function createNativeReadableStream(nativePtr, nativeType, autoAllocateChunkSize) { "use strict"; return new @ReadableStream({ @lazy: true, @bunNativeType: nativeType, @bunNativePtr: nativePtr, autoAllocateChunkSize: autoAllocateChunkSize, }); } function cancel(reason) { "use strict"; if (!@isReadableStream(this)) return @Promise.@reject(@makeThisTypeError("ReadableStream", "cancel")); if (@isReadableStreamLocked(this)) return @Promise.@reject(@makeTypeError("ReadableStream is locked")); return @readableStreamCancel(this, reason); } function getReader(options) { "use strict"; if (!@isReadableStream(this)) throw @makeThisTypeError("ReadableStream", "getReader"); const mode = @toDictionary(options, { }, "ReadableStream.getReader takes an object as first argument").mode; if (mode === @undefined) { var start_ = @getByIdDirectPrivate(this, "start"); if (start_) { @putByIdDirectPrivate(this, "start", @undefined); start_(); } return new @ReadableStreamDefaultReader(this); } // String conversion is required by spec, hence double equals. if (mode == 'byob') { return new @ReadableStreamBYOBReader(this); } @throwTypeError("Invalid mode is specified"); } function pipeThrough(streams, options) { "use strict"; const transforms = streams; const readable = transforms["readable"]; if (!@isReadableStream(readable)) throw @makeTypeError("readable should be ReadableStream"); const writable = transforms["writable"]; const internalWritable = @getInternalWritableStream(writable); if (!@isWritableStream(internalWritable)) throw @makeTypeError("writable should be WritableStream"); let preventClose = false; let preventAbort = false; let preventCancel = false; let signal; if (!@isUndefinedOrNull(options)) { if (!@isObject(options)) throw @makeTypeError("options must be an object"); preventAbort = !!options["preventAbort"]; preventCancel = !!options["preventCancel"]; preventClose = !!options["preventClose"]; signal = options["signal"]; if (signal !== @undefined && !@isAbortSignal(signal)) throw @makeTypeError("options.signal must be AbortSignal"); } if (!@isReadableStream(this)) throw @makeThisTypeError("ReadableStream", "pipeThrough"); if (@isReadableStreamLocked(this)) throw @makeTypeError("ReadableStream is locked"); if (@isWritableStreamLocked(internalWritable)) throw @makeTypeError("WritableStream is locked"); @readableStreamPipeToWritableStream(this, internalWritable, preventClose, preventAbort, preventCancel, signal); return readable; } function pipeTo(destination) { "use strict"; if (!@isReadableStream(this)) return @Promise.@reject(@makeThisTypeError("ReadableStream", "pipeTo")); if (@isReadableStreamLocked(this)) return @Promise.@reject(@makeTypeError("ReadableStream is locked")); // FIXME: https://bugs.webkit.org/show_bug.cgi?id=159869. // Built-in generator should be able to parse function signature to compute the function length correctly. let options = @argument(1); let preventClose = false; let preventAbort = false; let preventCancel = false; let signal; if (!@isUndefinedOrNull(options)) { if (!@isObject(options)) return @Promise.@reject(@makeTypeError("options must be an object")); try { preventAbort = !!options["preventAbort"]; preventCancel = !!options["preventCancel"]; preventClose = !!options["preventClose"]; signal = options["signal"]; } catch(e) { return @Promise.@reject(e); } if (signal !== @undefined && !@isAbortSignal(signal)) return @Promise.@reject(@makeTypeError("options.signal must be AbortSignal")); } const internalDestination = @getInternalWritableStream(destination); if (!@isWritableStream(internalDestination)) return @Promise.@reject(@makeTypeError("ReadableStream pipeTo requires a WritableStream")); if (@isWritableStreamLocked(internalDestination)) return @Promise.@reject(@makeTypeError("WritableStream is locked")); return @readableStreamPipeToWritableStream(this, internalDestination, preventClose, preventAbort, preventCancel, signal); } function tee() { "use strict"; if (!@isReadableStream(this)) throw @makeThisTypeError("ReadableStream", "tee"); return @readableStreamTee(this, false); } @getter function locked() { "use strict"; if (!@isReadableStream(this)) throw @makeGetterTypeError("ReadableStream", "locked"); return @isReadableStreamLocked(this); } function values(options) { "use strict"; var prototype = @ReadableStream.prototype; @readableStreamDefineLazyIterators(prototype); return prototype.values.@call(this, options); } @linkTimeConstant function lazyAsyncIterator() { "use strict"; var prototype = @ReadableStream.prototype; @readableStreamDefineLazyIterators(prototype); return prototype[globalThis.Symbol.asyncIterator].@call(this); }te'>nate/new-blog-template Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/packages/astro/test/fixtures/ssr-prerender-get-static-paths/src/pages (unfollow)
AgeCommit message (Collapse)AuthorFilesLines
2023-01-04Handle `getStaticPaths` with prerendered pages (#5734)Gravatar Nate Moore 8-0/+176
* fix(#5661): ensure getStaticPaths is correctly handled for prerendered pages * test: add prerender getStaticPaths cases * chore: add changeset * test: add props to test suite * chore: update lockfile Co-authored-by: Nate Moore <nate@astro.build>
2023-01-04[ci] update lockfile (#5744)Gravatar Fred K. Bot 1-1438/+1092
Co-authored-by: FredKSchott <FredKSchott@users.noreply.github.com>
2023-01-04[ci] formatGravatar Princesseuh 1-1/+1
2023-01-04Update telemetry to use new errors information (#5547)Gravatar Erika 13-24/+130
* Properly get information from AstroError in telemetry * Record telemetry for dev errors * Fix tests * ci(telemetry): Make sure we don't hit telemetry in tests * fix(build): Fix types * test: Remove unnecessary flag * test(errors): Add test to make sure we don't have stacktraces inside error messages * refactor(types): Type cast `getErrorDataByCode`'s return type so we don't have to cast to any later
2023-01-04Add file location to errors in build (#5743)Gravatar Erika 9-4/+78
* feat(errors): Add file location where error happened during build for user-generated errors * chore: changeset * fix(errors): Only add information if the error is in a compatible shape * feat(errors): Add hint to throw Error objects instead of other types for better information * test(errors): Add test to make sure errors in build have the error location * chore(lockfile): Update lockfile * chore: misc text fixes
2023-01-04Fix docs links in MDX README (#5741)Gravatar Chris Swithinbank 2-3/+8
2023-01-04update frontmatter injection link to match docs changes (#5736)Gravatar Sarah Rainsberger 1-2/+2
Co-authored-by: Erika <3019731+Princesseuh@users.noreply.github.com> Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>
2023-01-03[ci] release (beta) (#5732)astro@2.0.0-beta.0@astrojs/vue@2.0.0-beta.0@astrojs/vercel@3.0.0-beta.0@astrojs/svelte@2.0.0-beta.0@astrojs/node@5.0.0-beta.0@astrojs/netlify@2.0.0-beta.0@astrojs/mdx@0.15.0-beta.0@astrojs/markdown-remark@2.0.0-beta.0@astrojs/image@0.13.0-beta.0@astrojs/deno@4.0.0-beta.0@astrojs/cloudflare@6.0.0-beta.0Gravatar Fred K. Bot 51-656/+1159
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-01-03[ci] formatGravatar matthewp 2-2/+2
2023-01-03Markdown and MDX configuration rework (#5684)Gravatar Ben Holmes 14-1665/+2188
* feat: change extendDefaults -> gfm * deps: remove smartypants from md/remark * tests: update markdown plugin tests * fix: borked lockfile * feat: allow all Markdown options in MDX config, with extend * deps: remove smartypants from MDX * chore: remove unused `mode` property * chore: remark rehype types * chore: dead code * fix: order of default config properties * refactor: move md defaults to remark * fix: RemarkRehype type * fix: apply defaults based on MD defaults * chore: update plugin tests * chore: add syntaxHighlight test * refactor: remove drafts from config defaults * docs: new MDX config options * chore: add changeset * edit: test both extends for syntax highlight * refactor: remove MDX config deep merge * docs: update README and changeset * edit: avoid -> disable Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca> * edit: `drafts` clarification Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca> * edit: remove "scare quotes" Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca> * docs: MDX config options redraft * docs: add migration * chore: changeset heading levels * refactor: githubFlavoredMarkdown -> gfm * chore: remove unused imports Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
2023-01-03[ci] formatGravatar bholmesdev 4-46/+45
2023-01-03Change frontmatter injection ordering (#5687)Gravatar Ben Holmes 29-204/+234
* feat: make user frontmatter accessible in md * test: new frontmatter injection * refactor: move injection utils to remark pkg * fix: add dist/internal to remark exports * feat: update frontmater injection in mdx * tests: new mdx injection * chore: changeset * chore: simplify frontmatter destructuring * fix: remove old _internal references * refactor: injectedFrontmatter -> remarkPluginFrontmatter * docs: add content collections change * chore: changeset heading levels
2023-01-03Cleanup internal breaking changes (#5724)Gravatar Bjorn Lu 4-33/+7
* Remove Astro.glob template literal trick * Remove RenderTemplateResult toString * Remove astro add volar warning * Add changeset
2023-01-03Fix astro-embed peerDep issue (#5731)Gravatar Matthew Phillips 2-2/+2
* Fix astro-embed peerDep issue * Update lockfile
2023-01-03Fix missing ts flag on main (#5730)Gravatar Matthew Phillips 1-0/+1
2023-01-03[ci] formatGravatar matthewp 3-10/+2
2023-01-03Remove MDX Fragment hack (#5716)Gravatar Bjorn Lu 2-9/+6
* Remove MDX Fragment hack * Update .changeset/lovely-terms-drive.md Co-authored-by: Chris Swithinbank <swithinbank@gmail.com> Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>
2023-01-03Remove deprecated APIs (#5707)Gravatar Bjorn Lu 18-217/+87
* Remove deprecated Astro globals * Remove deprecated hook param * Fix test * Add changeset * Add TODO
2023-01-03Unflag experimental features (#5728)Gravatar Nate Moore 13-122/+26
* feat: unflag `--experimental-error-overlay` * feat: unflag `--experimental-prerender` * chore: add changeset * Update chilled-geese-worry.md * test: update test to use `mjs` * Update .changeset/chilled-geese-worry.md Co-authored-by: Chris Swithinbank <swithinbank@gmail.com> * Update chilled-geese-worry.md Co-authored-by: Nate Moore <nate@astro.build> Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>
2023-01-03Upgrade to Vite 4 (#5685)Gravatar Bjorn Lu 21-3459/+337
* Upgrade Vite 4 * Simplify Svelte preprocess setup * Upgrade rollup * Fix tests * Fix wrong changeset target * Fix error tests * Set NODE_ENV default
2023-01-03[ci] update lockfile (#5686)Gravatar Fred K. Bot 4-3215/+2864
* [ci] update lockfile * Fix build errors from new TypeScript version * Updated lockfile Co-authored-by: FredKSchott <FredKSchott@users.noreply.github.com> Co-authored-by: Matthew Phillips <matthew@skypack.dev>