Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
206dfcb
docs: proposal for the Solid 2.0 documentation rebuild
ryansolid Aug 10, 2026
51fd6e8
docs: restructure to the unified Solid 2.0 site layout
ryansolid Aug 10, 2026
19aedb9
docs: retarget reference generation at the package-split layout
ryansolid Aug 10, 2026
6bbd4ab
docs: add AI-assisted writing rules and a tone lint
ryansolid Aug 10, 2026
fbd6217
docs: clarify AI-assisted writing guidance
ryansolid Aug 10, 2026
9ba1e78
docs: lead project setup with the Solid CLI
ryansolid Aug 10, 2026
a500622
docs: sync Solid 2 references with loading values
ryansolid Aug 10, 2026
d081da8
style: format regenerated Solid references
ryansolid Aug 10, 2026
25ed1f8
docs: clarify component and preload references
ryansolid Aug 11, 2026
3bba93d
docs: document the core head registry
ryansolid Aug 11, 2026
b63aa11
docs: update Solid 2 status to RC
ryansolid Aug 11, 2026
8e684b2
docs: add complete LLM documentation output
ryansolid Aug 11, 2026
c817afe
docs: document Solid 2 reactivity and stores
ryansolid Aug 10, 2026
701b1e1
docs: explain committed loading values
ryansolid Aug 10, 2026
aac608c
docs: refine core concept explanations
ryansolid Aug 10, 2026
f532cd7
docs: document Solid 2.0 core UI models
ryansolid Aug 10, 2026
65868ad
docs: align core UI guides with loading values
ryansolid Aug 10, 2026
94380dc
docs: show commit zero through one template
ryansolid Aug 10, 2026
69f427a
docs: refocus core UI teaching models
ryansolid Aug 10, 2026
e78ab44
docs: refine Repeat and dynamic guidance
ryansolid Aug 11, 2026
bf2e2c4
docs: add Solid 2.0 async and boundary concepts
ryansolid Aug 10, 2026
47ef1a6
docs: document async commit-zero values
ryansolid Aug 10, 2026
706b5fb
docs: refocus async concepts on readiness
ryansolid Aug 10, 2026
31cacce
docs: add Solid 2.0 app shell guides
ryansolid Aug 10, 2026
eb2cdd2
docs: audit Solid 2.0 app shell claims
ryansolid Aug 10, 2026
2246148
docs: document Solid 2.0 server runtime
ryansolid Aug 10, 2026
745ca32
docs: update server API status to RC
ryansolid Aug 11, 2026
cd6c68e
docs: document router integration seams
ryansolid Aug 10, 2026
85c5338
docs: tighten router integration claims
ryansolid Aug 10, 2026
8501a51
docs: add Solid Router 2 guide and reference
ryansolid Aug 10, 2026
477053d
docs: polish Solid Router 2 content
ryansolid Aug 10, 2026
6f98586
docs: add Solid 2.0 plugin references
ryansolid Aug 10, 2026
afe807c
docs: normalize plugin reference integration
ryansolid Aug 10, 2026
4da05b7
docs: add Solid 1 to Solid 2 migration guide
ryansolid Aug 11, 2026
4aa2dd9
docs: prescribe dynamic function migration
ryansolid Aug 11, 2026
28987b3
docs: add SolidStart to Solid 2 migration guide
ryansolid Aug 11, 2026
be1ef82
docs: fix SolidStart migration rendering
ryansolid Aug 11, 2026
6c5c57c
docs: add Solid Router 2 migration guide
ryansolid Aug 11, 2026
49712dc
docs: remove source notices from router guide
ryansolid Aug 11, 2026
ff43171
docs: update Router compatibility to RC
ryansolid Aug 11, 2026
922bad1
docs: fix Router migration rendering
ryansolid Aug 11, 2026
a880240
docs: add Solid 2 testing guide
ryansolid Aug 11, 2026
121e3a7
docs: correct browser testing setup
ryansolid Aug 11, 2026
40dd7d5
style: normalize integrated documentation
ryansolid Aug 11, 2026
d012a27
docs: resolve editorial review findings
ryansolid Aug 11, 2026
3a996cc
docs: prepare Solid 2 RC docs for publication
ryansolid Aug 11, 2026
6b26292
docs: apply Solid 2 RC follow-ups (#1622)
brenelz Aug 11, 2026
6264079
docs: add React migration guide
ryansolid Aug 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
11 changes: 11 additions & 0 deletions .claude/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"version": "0.0.1",
"configurations": [
{
"name": "solid-docs-dev",
"runtimeExecutable": "pnpm",
"runtimeArgs": ["dev"],
"port": 3000
}
]
}
4 changes: 4 additions & 0 deletions .github/workflows/static_checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ on:
push:
branches:
- main
- v2-rebuild
pull_request:
branches:
- main
Expand Down Expand Up @@ -40,3 +41,6 @@ jobs:

- name: Check formatting
run: pnpm exec prettier . --check

- name: Tone lint
run: pnpm lint:tone
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
'use strict'

const { createInflateRaw, Z_DEFAULT_WINDOWBITS } = require('node:zlib')
const { isValidClientWindowBits } = require('./util')
const { MessageSizeExceededError } = require('../../core/errors')

const tail = Buffer.from([0x00, 0x00, 0xff, 0xff])
const kBuffer = Symbol('kBuffer')
const kLength = Symbol('kLength')

class PerMessageDeflate {
/** @type {import('node:zlib').InflateRaw} */
#inflate

#options = {}

#maxPayloadSize = 0

/**
* @param {Map<string, string>} extensions
*/
constructor (extensions, options) {
this.#options.serverNoContextTakeover = extensions.has('server_no_context_takeover')
this.#options.serverMaxWindowBits = extensions.get('server_max_window_bits')

this.#maxPayloadSize = options.maxPayloadSize
}

/**
* Decompress a compressed payload.
* @param {Buffer} chunk Compressed data
* @param {boolean} fin Final fragment flag
* @param {Function} callback Callback function
*/
decompress (chunk, fin, callback) {
// An endpoint uses the following algorithm to decompress a message.
// 1. Append 4 octets of 0x00 0x00 0xff 0xff to the tail end of the
// payload of the message.
// 2. Decompress the resulting data using DEFLATE.
if (!this.#inflate) {
let windowBits = Z_DEFAULT_WINDOWBITS

if (this.#options.serverMaxWindowBits) { // empty values default to Z_DEFAULT_WINDOWBITS
if (!isValidClientWindowBits(this.#options.serverMaxWindowBits)) {
callback(new Error('Invalid server_max_window_bits'))
return
}

windowBits = Number.parseInt(this.#options.serverMaxWindowBits)
}

try {
this.#inflate = createInflateRaw({ windowBits })
} catch (err) {
callback(err)
return
}
this.#inflate[kBuffer] = []
this.#inflate[kLength] = 0

this.#inflate.on('data', (data) => {
this.#inflate[kLength] += data.length

if (this.#maxPayloadSize > 0 && this.#inflate[kLength] > this.#maxPayloadSize) {
callback(new MessageSizeExceededError())
this.#inflate.removeAllListeners()
this.#inflate = null
return
}

this.#inflate[kBuffer].push(data)
})

this.#inflate.on('error', (err) => {
this.#inflate = null
callback(err)
})
}

this.#inflate.write(chunk)
if (fin) {
this.#inflate.write(tail)
}

this.#inflate.flush(() => {
if (!this.#inflate) {
return
}

const full = Buffer.concat(this.#inflate[kBuffer], this.#inflate[kLength])

this.#inflate[kBuffer].length = 0
this.#inflate[kLength] = 0

callback(null, full)
})
}
}

module.exports = { PerMessageDeflate }
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
#!/usr/bin/env node

const which = require('../lib')
const argv = process.argv.slice(2)

const usage = (err) => {
if (err) {
console.error(`which: ${err}`)
}
console.error('usage: which [-as] program ...')
process.exit(1)
}

if (!argv.length) {
return usage()
}

let dashdash = false
const [commands, flags] = argv.reduce((acc, arg) => {
if (dashdash || arg === '--') {
dashdash = true
return acc
}

if (!/^-/.test(arg)) {
acc[0].push(arg)
return acc
}

for (const flag of arg.slice(1).split('')) {
if (flag === 's') {
acc[1].silent = true
} else if (flag === 'a') {
acc[1].all = true
} else {
usage(`illegal option -- ${flag}`)
}
}

return acc
}, [[], {}])

for (const command of commands) {
try {
const res = which.sync(command, { all: flags.all })
if (!flags.silent) {
console.log([].concat(res).join('\n'))
}
} catch (err) {
process.exitCode = 1
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
// tar -x
import * as fsm from '@isaacs/fs-minipass';
import fs from 'node:fs';
import { filesFilter } from './list.js';
import { makeCommand } from './make-command.js';
import { Unpack, UnpackSync } from './unpack.js';
const extractFileSync = (opt) => {
const u = new UnpackSync(opt);
const file = opt.file;
const stat = fs.statSync(file);
// This trades a zero-byte read() syscall for a stat
// However, it will usually result in less memory allocation
const readSize = opt.maxReadSize || 16 * 1024 * 1024;
const stream = new fsm.ReadStreamSync(file, {
readSize: readSize,
size: stat.size,
});
stream.pipe(u);
};
const extractFile = (opt, _) => {
const u = new Unpack(opt);
const readSize = opt.maxReadSize || 16 * 1024 * 1024;
const file = opt.file;
const p = new Promise((resolve, reject) => {
u.on('error', reject);
u.on('close', resolve);
// This trades a zero-byte read() syscall for a stat
// However, it will usually result in less memory allocation
fs.stat(file, (er, stat) => {
if (er) {
reject(er);
}
else {
const stream = new fsm.ReadStream(file, {
readSize: readSize,
size: stat.size,
});
stream.on('error', reject);
stream.pipe(u);
}
});
});
return p;
};
export const extract = makeCommand(extractFileSync, extractFile, opt => new UnpackSync(opt), opt => new Unpack(opt), (opt, files) => {
if (files?.length)
filesFilter(opt, files);
});
//# sourceMappingURL=extract.js.map
Loading
Loading