CARVIEW |
Select Language
HTTP/2 200
date: Wed, 23 Jul 2025 06:10:34 GMT
content-type: text/html; charset=utf-8
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
x-robots-tag: none
etag: W/"a81562ee130ed61ef71de269f4c195e9"
cache-control: max-age=0, private, must-revalidate
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=s%2FFJwJfcivkq26OlTGPviCgH3OeBsSCAGsO0Oe3FbqdFpSbg0ADqmtdVw5G3FTiTpzbzcjJ1PzRWMK35X%2FqLn0JFSqd6iboZJdM2JPnqGDHW%2F0TkRWfDup6qYYhlixdHoTi5v3c6k4KCxuj1K3idpc4wMkLul6QHUAT40vEWRiQ9S7VYHjBOkxGrFHChPBo5BCl87WzqEhhmoU9KrWpgaZyxf5lNCGE6hfZ9bIruPnFgU0HQcFH0LtikUDeS8E6sew47pmd4BPDi7x2CQLGjig%3D%3D--HGJ%2FKGQSHUSCsY4h--FDNHMoAAo%2Fj5Gc8TfNiSPw%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.1208792318.1753251034; Path=/; Domain=github.com; Expires=Thu, 23 Jul 2026 06:10:34 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Thu, 23 Jul 2026 06:10:34 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: 8F00:35B563:4C3430:6372CA:68807CDA
Streams convention · audiojs/contributing Wiki · GitHub
Skip to content
Navigation Menu
{{ message }}
-
Notifications
You must be signed in to change notification settings - Fork 0
Streams convention
Dima Yv edited this page Jun 24, 2017
·
12 revisions
From the realtime streams discussion.
There are three generic possible types of streams, corresponding to notions of data source, data transform and data output. In different stream worlds they are called differently, in pull-streams that is source, through and sink; in classic streams that is Readable, Transform and Writable.
In audiojs we use plain function as a default package exports, with the signatures described below. Because we can wrap any of these functions easily to any stream interface.
// sync source
module.exports = function (options) {
return function read (buffer|length?) {
//if buffer is passed, it should be filled instead of created
//if length is passed, a new buffer of that length should be created
//return null to indicate end
return buffer
}
}
// async source
module.exports = function (options) {
//pass null as a callback to indicate the end
return function read (buffer|length?, cb) {
//cb(null, null) to end
//cb(error) to throw error
cb(null, buffer)
}
}
// sync through
module.exports = function (options) {
return function transform (buffer) {
//return null to end
return buffer
}
}
// async through
module.exports = function (options) {
return function transform (buffer, cb) {
//cb(null, null) to end
//cb(error) to throw error
cb(null, buffer)
}
}
By coincidence, transform is very similar to read by signature.
// sync sink
module.exports = function (options) {
return function write (buffer) {
// do stuff
// throw error
// if buffer is null - end writer
}
}
// async sink
module.exports = function (options) {
//do urgent end
write.end = function () {}
return write;
function write (buffer, cb) {
// do stuff
// if buffer is null - plan ending
cb(err, data);
}
}
Note that returned function may have end
method defined to explicitly and urgently ❗ end stream. That is valid for all types of streams.
Clone this wiki locally
You can’t perform that action at this time.