// @ts-nocheck
/*
* Copyright (C) 2020 Apple Inc. All rights reserved.
*
* 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. AND ITS CONTRIBUTORS ``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 ITS 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.
*/
// @internal
export function isTransformStream(stream) {
return $isObject(stream) && !!$getByIdDirectPrivate(stream, "readable");
}
export function isTransformStreamDefaultController(controller) {
return $isObject(controller) && !!$getByIdDirectPrivate(controller, "transformAlgorithm");
}
export function createTransformStream(
startAlgorithm,
transformAlgorithm,
flushAlgorithm,
writableHighWaterMark,
writableSizeAlgorithm,
readableHighWaterMark,
readableSizeAlgorithm,
) {
if (writableHighWaterMark === undefined) writableHighWaterMark = 1;
if (writableSizeAlgorithm === undefined) writableSizeAlgorithm = () => 1;
if (readableHighWaterMark === undefined) readableHighWaterMark = 0;
if (readableSizeAlgorithm === undefined) readableSizeAlgorithm = () => 1;
$assert(writableHighWaterMark >= 0);
$assert(readableHighWaterMark >= 0);
const transform = {};
$putByIdDirectPrivate(transform, "TransformStream", true);
const stream = new TransformStream(transform);
const startPromiseCapability = $newPromiseCapability(Promise);
$initializeTransformStream(
stream,
startPromiseCapability.promise,
writableHighWaterMark,
writableSizeAlgorithm,
readableHighWaterMark,
readableSizeAlgorithm,
);
const controller = new TransformStreamDefaultController();
$setUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm);
startAlgorithm().$then(
() => {
startPromiseCapability.resolve.$call();
},
error => {
startPromiseCapability.reject.$call(undefined, error);
},
);
return stream;
}
export function initializeTransformStream(
stream,
startPromise,
writableHighWaterMark,
writableSizeAlgorithm,
readableHighWaterMark,
readableSizeAlgorithm,
) {
const startAlgorithm = () => {
return startPromise;
};
const writeAlgorithm = chunk => {
return $transformStreamDefaultSinkWriteAlgorithm(stream, chunk);
};
const abortAlgorithm = reason => {
return $transformStreamDefaultSinkAbortAlgorithm(stream, reason);
};
const closeAlgorithm = () => {
return $transformStreamDefaultSinkCloseAlgorithm(stream);
};
const writable = $createWritableStream(
startAlgorithm,
writeAlgorithm,
closeAlgorithm,
abortAlgorithm,
writableHighWaterMark,
writableSizeAlgorithm,
);
const pullAlgorithm = () => {
return $transformStreamDefaultSourcePullAlgorithm(stream);
};
const cancelAlgorithm = reason => {
$transformStreamErrorWritableAndUnblockWrite(stream, reason);
return Promise.$resolve();
};
const underlyingSource = {};
$putByIdDirectPrivate(underlyingSource, "start", startAlgorithm);
$putByIdDirectPrivate(underlyingSource, "pull", pullAlgorithm);
$putByIdDirectPrivate(underlyingSource, "cancel", cancelAlgorithm);
const options = {};
$putByIdDirectPrivate(options, "size", readableSizeAlgorithm);
$putByIdDirectPrivate(options, "highWaterMark", readableHighWaterMark);
const readable = new ReadableStream(underlyingSource, options);
// The writable to expose to JS through writable getter.
$putByIdDirectPrivate(stream, "writable", writable);
// The writable to use for the actual transform algorithms.
$putByIdDirectPrivate(stream, "internalWritable", $getInternalWritableStream(writable));
$putByIdDirectPrivate(stream, "readable", readable);
$putByIdDirectPrivate(stream, "backpressure", undefined);
$putByIdDirectPrivate(stream, "backpressureChangePromise", undefined);
$transformStreamSetBackpressure(stream, true);
$putByIdDirectPrivate(stream, "controller", undefined);
}
export function transformStreamError(stream, e) {
const readable = $getByIdDirectPrivate(stream, "readable");
const readableController = $getByIdDirectPrivate(readable, "readableStreamController");
$readableStreamDefaultControllerError(readableController, e);
$transformStreamErrorWritableAndUnblockWrite(stream, e);
}
export function transformStreamErrorWritableAndUnblockWrite(stream, e) {
$transformStreamDefaultControllerClearAlgorithms($getByIdDirectPrivate(stream, "controller"));
const writable = $getByIdDirectPrivate(stream, "internalWritable");
$writableStreamDefaultControllerErrorIfNeeded($getByIdDirectPrivate(writable, "controller"), e);
if ($getByIdDirectPrivate(stream, "backpressure")) $transformStreamSetBackpressure(stream, false);
}
export function transformStreamSetBackpressure(stream, backpressure) {
$assert($getByIdDirectPrivate(stream, "backpressure") !== backpressure);
const backpressureChangePromise = $getByIdDirectPrivate(stream, "backpressureChangePromise");
if (backpressureChangePromise !== undefined) backpressureChangePromise.resolve.$call();
$putByIdDirectPrivate(stream, "backpressureChangePromise", $newPromiseCapability(Promise));
$putByIdDirectPrivate(stream, "backpressure", backpressure);
}
export function setUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm) {
$assert($isTransformStream(stream));
$assert($getByIdDirectPrivate(stream, "controller") === undefined);
$putByIdDirectPrivate(controller, "stream", stream);
$putByIdDirectPrivate(stream, "controller", controller);
$putByIdDirectPrivate(controller, "transformAlgorithm", transformAlgorithm);
$putByIdDirectPrivate(controller, "flushAlgorithm", flushAlgorithm);
}
export function setUpTransformStreamDefaultControllerFromTransformer(stream, transformer, transformerDict) {
const controller = new TransformStreamDefaultController();
let transformAlgorithm = chunk => {
try {
$transformStreamDefaultControllerEnqueue(controller, chunk);
} catch (e) {
return Promise.$reject(e);
}
return Promise.$resolve();
};
let flushAlgorithm = () => {
return Promise.$resolve();
};
if ("transform" in transformerDict)
transformAlgorithm = chunk => {
return $promiseInvokeOrNoopMethod(transformer, transformerDict["transform"], [chunk, controller]);
};
if ("flush" in transformerDict) {
flushAlgorithm = () => {
return $promiseInvokeOrNoopMethod(transformer, transformerDict["flush"], [controller]);
};
}
$setUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm);
}
export function transformStreamDefaultControllerClearAlgorithms(controller) {
// We set transformAlgorithm to true to allow GC but keep the isTransformStreamDefaultController check.
$putByIdDirectPrivate(controller, "transformAlgorithm", true);
$putByIdDirectPrivate(controller, "flushAlgorithm", undefined);
}
export function transformStreamDefaultControllerEnqueue(controller, chunk) {
const stream = $getByIdDirectPrivate(controller, "stream");
const readable = $getByIdDirectPrivate(stream, "readable");
const readableController = $getByIdDirectPrivate(readable, "readableStreamController");
$assert(readableController !== undefined);
if (!$readableStreamDefaultControllerCanCloseOrEnqueue(readableController))
$throwTypeError("TransformStream.readable cannot close or enqueue");
try {
$readableStreamDefaultControllerEnqueue(readableController, chunk);
} catch (e) {
$transformStreamErrorWritableAndUnblockWrite(stream, e);
throw $getByIdDirectPrivate(readable, "storedError");
}
const backpressure = !$readableStreamDefaultControllerShouldCallPull(readableController);
if (backpressure !== $getByIdDirectPrivate(stream, "backpressure")) {
$assert(backpressure);
$transformStreamSetBackpressure(stream, true);
}
}
export function transformStreamDefaultControllerError(controller, e) {
$transformStreamError($getByIdDirectPrivate(controller, "stream"), e);
}
export function transformStreamDefaultControllerPerformTransform(controller, chunk) {
const promiseCapability = $newPromiseCapability(Promise);
const transformPromise = $getByIdDirectPrivate(controller, "transformAlgorithm").$call(undefined, chunk);
transformPromise.$then(
() => {
promiseCapability.resolve();
},
r => {
$transformStreamError($getByIdDirectPrivate(controller, "stream"), r);
promiseCapability.reject.$call(undefined, r);
},
);
return promiseCapability.promise;
}
export function transformStreamDefaultControllerTerminate(controller) {
const stream = $getByIdDirectPrivate(controller, "stream");
const readable = $getByIdDirectPrivate(stream, "readable");
const readableController = $getByIdDirectPrivate(readable, "readableStreamController");
// FIXME: Update readableStreamDefaultControllerClose to make this check.
if ($readableStreamDefaultControllerCanCloseOrEnqueue(readableController))
$readableStreamDefaultControllerClose(readableController);
const error = $makeTypeError("the stream has been terminated");
$transformStreamErrorWritableAndUnblockWrite(stream, error);
}
export function transformStreamDefaultSinkWriteAlgorithm(stream, chunk) {
const writable = $getByIdDirectPrivate(stream, "internalWritable");
$assert($getByIdDirectPrivate(writable, "state") === "writable");
const controller = $getByIdDirectPrivate(stream, "controller");
if ($getByIdDirectPrivate(stream, "backpressure")) {
const promiseCapability = $newPromiseCapability(Promise);
const backpressureChangePromise = $getByIdDirectPrivate(stream, "backpressureChangePromise");
$assert(backpressureChangePromise !== undefined);
backpressureChangePromise.promise.$then(
() => {
const state = $getByIdDirectPrivate(writable, "state");
if (state === "erroring") {
promiseCapability.reject.$call(undefined, $getByIdDirectPrivate(writable, "storedError"));
return;
}
$assert(state === "writable");
$transformStreamDefaultControllerPerformTransform(controller, chunk).$then(
() => {
promiseCapability.resolve();
},
e => {
promiseCapability.reject.$call(undefined, e);
},
);
},
e => {
promiseCapability.reject.$call(undefined, e);
},
);
return promiseCapability.promise;
}
return $transformStreamDefaultControllerPerformTransform(controller, chunk);
}
export function transformStreamDefaultSinkAbortAlgorithm(stream, reason) {
$transformStreamError(stream, reason);
return Promise.$resolve();
}
export function transformStreamDefaultSinkCloseAlgorithm(stream) {
const readable = $getByIdDirectPrivate(stream, "readable");
const controller = $getByIdDirectPrivate(stream, "controller");
const readableController = $getByIdDirectPrivate(readable, "readableStreamController");
const flushAlgorithm = $getByIdDirectPrivate(controller, "flushAlgorithm");
$assert(flushAlgorithm !== undefined);
const flushPromise = $getByIdDirectPrivate(controller, "flushAlgorithm").$call();
$transformStreamDefaultControllerClearAlgorithms(controller);
const promiseCapability = $newPromiseCapability(Promise);
flushPromise.$then(
() => {
if ($getByIdDirectPrivate(readable, "state") === $streamErrored) {
promiseCapability.reject.$call(undefined, $getByIdDirectPrivate(readable, "storedError"));
return;
}
// FIXME: Update readableStreamDefaultControllerClose to make this check.
if ($readableStreamDefaultControllerCanCloseOrEnqueue(readableController))
$readableStreamDefaultControllerClose(readableController);
promiseCapability.resolve();
},
r => {
$transformStreamError($getByIdDirectPrivate(controller, "stream"), r);
promiseCapability.reject.$call(undefined, $getByIdDirectPrivate(readable, "storedError"));
},
);
return promiseCapability.promise;
}
export function transformStreamDefaultSourcePullAlgorithm(stream) {
$assert($getByIdDirectPrivate(stream, "backpressure"));
$assert($getByIdDirectPrivate(stream, "backpressureChangePromise") !== undefined);
$transformStreamSetBackpressure(stream, false);
return $getByIdDirectPrivate(stream, "backpressureChangePromise").promise;
}
n>
fork/markdoc-poc-with-md-support
fork/markdoc-poc-with-parser
format-imports-run
formatting
forward-button
framework-agnostic-astro-components
fryuni/db-pluggable-backend
fryuni/test-route-setup-hook
fryuni/tracing-hooks
hippotastic/legitimate-bat
hoisted-script-ts
host-ssr-example-2
hostfornode
image-non-node
improve-base-handling
inline-hoisted-scripts-now
jn.convert-assertions-to-query-params
latest
live-loaders
main
mandar1jn/ci-repo-check
markdoc-embed-prototyping
markdown
markdown-poc
mdx-path
mk/render-slot-template-backup
move-default-md-code-component
mt/lit-DSD
mt/lit-regen
mt/parse-DSD
mt/router_refactoring
nate/new-blog-template
netlify-1
netlify-preview
new-adapter-api
next
next-render
no-more-vite-postprocess
no-more-vite-postprocess2
old-build
plt-1006/unified-and-mdx
plt-1768-trailing-slash-object
preact-shared-signals
process-env-override
progress-log
re-export-drivers
react-fast-refresh
redirects-priority2
redirects-ssg-object
refactor-how-client-directives-work
refactor/image-internals
refactor/markdoc-renderer
refactor/rendere-queue
refactor/sitemap
refactor/ssr-size
release/0.17
release/0.18
remote-cdn-link
remove-fs-abstraction
remove-start
restart-on-lock
revert-13008-renovate/all-minor-patch
revert-lockfile
route-manifest-adapter
sarah11918-image-errors
sarah11918-patch-2
sb-tests2
seroval
server-islands-children
session-docs
single-file-build-2
slash-404-hint
slot-bug-1
solid-ecosystem-pkg
spike/app-setup
spike/autonav
spike/codehike
spike/context
spike/csr
spike/default-content
spike/incremental
spike/incremental-ii
spike/markdown-wasm
spike/render
spike/streaming
spike/svg
sqlite-test
squeal
ssr-redirect
stream-buffer
streaming
telemetry-audit-1
test/new-integrations-demo
test/new-ssr-demo
top-level-exports-integrations
ts-in-hoisted-script
ts-no-err
upd-vite-vendored
upgrade-deps
v1-beta
vercel-test
vite-fork
vscode-astro-global
vt-follow-redirects
warn-exp-flag
win
windows-tests-beta
wip-assets
wip-component-api-2
wip-docs-components
wip-docs-reference-gen
wip-fetch-cache
wip-fun-flags
wip-icons
wip-logging
wip-logging-saved
wip-mdc
wip-mdx-to-astro-js
wip-preview-command-integrations
wip-setup-content
wip-smoke
wip-speed-up-markdown
wip-stage
wip/react-19-test
Unnamed repository; edit this file 'description' to name the repository.
Age Commit message (Collapse ) Author Files Lines
Co-authored-by: FredKSchott <FredKSchott@users.noreply.github.com>
Co-authored-by: Matthew Phillips <matthew@skypack.dev>
Co-authored-by: Dan Jutan <danjutan@gmail.com>
* Fix CSS ordering between imported and Astro styles
* Fix linting errors
* Add changeset and upgrade compiler version
* Update test to reflect shared styles placed before page styles
* Astro.cookies implementation
* Remove unused var
* Fix build
* Add a changesetp
* Remove spoken-word expires
* removes our quality defaults, allowing Squoosh format-specific defaults to be used
* chore: add changeset
* Update README.md
In the astro.config.mjs: defineConfig() was missing.
* Update packages/integrations/tailwind/README.md
Co-authored-by: Yan Thomas <61414485+Yan-Thomas@users.noreply.github.com>
Co-authored-by: Fred K. Schott <fkschott@gmail.com>
Co-authored-by: Yan Thomas <61414485+Yan-Thomas@users.noreply.github.com>
* Hoist hydration script out of slot templates
* Add changeset
* Fix HTML components
* Mark as html string
* Ensure head content rendered once with lazy layouts
* Add changeset
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Update endpoint.ts
* add warning for post routes called when output is not server
* Update famous-camels-study.md
* Update endpoint.ts
* If not get
* Resolve changes
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
Co-authored-by: FredKSchott <FredKSchott@users.noreply.github.com>
* fix: serialize route pattern for Netlify edge
Co-authored-by: Jackie Macharia <jackiewmacharia>
* fix: escape import.meta.env in MDX compiler output
* test: env vars in mdx
* chore: changeset
* deps: estree-util-visit, @types/estree
* feat: inject import.meta.env w/ recma
* feat: pull importMetaEnv from vite + astro configs
* test: `import.meta.env` in JSX
* fix: lockfile
* chore: update changeset
* fix: remove stray stashed commit
error (#4857)
Co-authored-by: FredKSchott <FredKSchott@users.noreply.github.com>
* fix: Script with innerHTML not working on Safari
* Update cool-camels-tease.md
(#4867)
* Update hydration.ts
* Create lucky-comics-bow.md
imported in Astro files (#4868)
* Define toStringTag another way
* Adding a changeset
Co-authored-by: FredKSchott <FredKSchott@users.noreply.github.com>