Skip to content
Open
Show file tree
Hide file tree
Changes from 250 commits
Commits
Show all changes
1849 commits
Select commit Hold shift + click to select a range
0a69921
chore: add changeset
Varixo Nov 5, 2025
cecfdc5
chore: pnpm dedupe
Varixo Nov 5, 2025
ce512cc
feat: implement cleanup on destroy for async computed
Varixo Nov 6, 2025
4978f20
feat: run cleanup function for async computed before computation
Varixo Nov 7, 2025
6c0c2d0
fix: cleanup store and signals during vnode remove
Varixo Nov 7, 2025
0aed379
feat: extend eslint rule for route loaders
Varixo Nov 7, 2025
07b3729
fix: make sure new promise during the next computation
Varixo Nov 8, 2025
3bbd3d8
chore: add changesets
Varixo Nov 8, 2025
7c77b38
chore: use native node to run ts scripts
Varixo Nov 8, 2025
e20e531
fix: allow to modify inline component's children component props
Varixo Nov 8, 2025
da59cf0
Merge pull request #8141 from QwikDev/v2-fix-component-prop-set
wmertens Nov 8, 2025
00ca33e
Merge pull request #8138 from QwikDev/v2-run-build-node-native
wmertens Nov 9, 2025
f9d925c
refactor: replace cross-spawn with execa
JerryWu1234 Nov 10, 2025
022969a
refactor: migrate from CommonJS to ESM by removing CJS builds and upd…
JerryWu1234 Nov 7, 2025
cf2d436
chore: update package.json files to use "module" type and remove glob…
JerryWu1234 Nov 10, 2025
fe3fbb6
chore: minimum node version for TS support
JerryWu1234 Nov 10, 2025
200c81e
Merge pull request #8103 from JerryWu1234/no-cjs
wmertens Nov 10, 2025
94df210
feat: memoize qrl symbols in qwikloader
Varixo Nov 9, 2025
2110331
Merge pull request #8144 from QwikDev/v2-qrls-memoizing
Varixo Nov 10, 2025
959ae79
fix(router dev): restore platform option functionality
wmertens Nov 10, 2025
d5760ed
Merge pull request #8126 from QwikDev/v2-async-computed-changes
wmertens Nov 11, 2025
07deb2c
fix: skip apply journal during vnode diff
Varixo Nov 9, 2025
0ad6748
Merge pull request #8143 from QwikDev/v2-skip-journal-during-diff
wmertens Nov 12, 2025
fc1dec4
Merge pull request #8145 from QwikDev/v2-fix-dev-platform
wmertens Nov 14, 2025
0c81e2a
feat: introduce blockRender option for useTask$
Varixo Oct 31, 2025
71dc7e4
chore: rename option to deferUpdates
Varixo Nov 2, 2025
4bf17ae
feat: render blocking task by default
Varixo Nov 8, 2025
0782caa
clarify deferUpdates default
wmertens Nov 14, 2025
f959dc8
Merge pull request #8107 from QwikDev/v2-blocking-task
wmertens Nov 14, 2025
ade0783
Version Packages (beta)
github-actions[bot] Nov 14, 2025
397eaa0
fix Changelog
wmertens Nov 14, 2025
1e7496d
chore: release 2.0.0-beta.14
wmertens Nov 14, 2025
4133638
feat: reactive var props
Varixo Nov 11, 2025
233b086
fix: scheduling already blocked chore
Varixo Nov 13, 2025
86c0ad3
chore: change effect backref to props proxy
Varixo Nov 14, 2025
eb68746
fix: handling component props
Varixo Nov 14, 2025
2c111c9
feat: add cleanup for props proxy
Varixo Nov 14, 2025
f63d477
fix: cleanup props proxy
Varixo Nov 15, 2025
5746b46
chore: misc changes
Varixo Nov 15, 2025
86e3a98
chore: add changesets
Varixo Nov 15, 2025
1fb75e7
Merge pull request #8156 from QwikDev/v2-reactive-var-props
Varixo Nov 15, 2025
dce9976
fix: setting undefined as input value
Varixo Nov 15, 2025
919901f
chore: pnpm dedupe
wmertens Nov 15, 2025
1ff482f
Merge pull request #8157 from QwikDev/v2-fix-input-undefined-value
wmertens Nov 15, 2025
7ddec1b
Merge remote-tracking branch 'origin/main' into v2-merge-main
wmertens Nov 15, 2025
de5e864
Merge pull request #8159 from QwikDev/v2-merge-main
wmertens Nov 15, 2025
1fc309c
fix: serialize correctly null or undefined value for signals
Varixo Nov 15, 2025
8af7775
fix: defer reading QScopedStyle until promise resolves for SSR
Varixo Nov 16, 2025
2f4ab02
Merge pull request #8161 from QwikDev/v2-await-jsxoutput-scoped-style
wmertens Nov 16, 2025
c008001
fix: handling blocked chores in scheduler
Varixo Nov 17, 2025
2e132fc
Merge pull request #8160 from QwikDev/v2-undefined-default-effects-value
wmertens Nov 17, 2025
f026a32
fix: early return if chore is already running
Varixo Nov 17, 2025
b91ce76
Merge pull request #8167 from QwikDev/v2-fix-open-code-block
wmertens Nov 17, 2025
23b3dcd
fix: don't trigger document and window events for normal events
Varixo Nov 18, 2025
c3221c2
Merge pull request #8170 from QwikDev/v2-qwikloader-document-event-fix
wmertens Nov 19, 2025
be5d399
feat: used optimized method for setting changed attribute value
Varixo Nov 19, 2025
0bdbd8f
Merge pull request #8171 from QwikDev/v2-optimize-attr-diff
wmertens Nov 21, 2025
000b3a1
fix(core): move qresume after state init
wmertens Nov 23, 2025
f48c13b
fix(serdes): correct serializer handling
wmertens Nov 23, 2025
8ade957
Merge pull request #8175 from QwikDev/v2-fixes
wmertens Nov 23, 2025
aaaaf82
perf(serdes): short-circuit uninitialized serializer
wmertens Nov 24, 2025
76fdc14
Merge pull request #8176 from QwikDev/v2-fixes
wmertens Nov 24, 2025
12fee1f
fix: finding projections after client partial rerender
Varixo Nov 27, 2025
dd133bc
Merge pull request #8185 from QwikDev/v2-fix-projections-resolving
wmertens Nov 28, 2025
d0c137f
fix(dev): click to component with base
wmertens Nov 28, 2025
9627e22
fix: removing children from var props
Varixo Nov 28, 2025
a36a963
Merge pull request #8188 from QwikDev/v2-jsx-split-children
wmertens Nov 29, 2025
2a0240a
Merge pull request #8187 from QwikDev/v2-fix-click-to-component
wmertens Dec 1, 2025
8810145
Version Packages (beta)
github-actions[bot] Dec 1, 2025
3c83746
fix(release): revert supabase-auth-helpers-qwik version
wmertens Dec 1, 2025
920f1a4
Merge pull request #8158 from QwikDev/changeset-release/build/v2
wmertens Dec 1, 2025
27d4724
feat: introduce QRLInternal type and update related exports
JerryWu1234 Dec 9, 2025
2e08fc7
Merge pull request #8193 from JerryWu1234/build/v2
wmertens Dec 9, 2025
28fcb8a
chore: update dependencies in create-qwik and add deprecation notice …
JerryWu1234 Dec 9, 2025
4555a72
Merge pull request #8196 from JerryWu1234/build/v2
wmertens Dec 9, 2025
ac63576
Version Packages (beta)
github-actions[bot] Dec 9, 2025
0d4afd9
chore: changelog
wmertens Dec 11, 2025
a83ccf3
Merge pull request #8195 from QwikDev/changeset-release/build/v2
wmertens Dec 11, 2025
41e1976
fix(starters): add missing global.css to library starter
JerryWu1234 Dec 12, 2025
86e8beb
Merge pull request #8202 from JerryWu1234/miss-global-css
gioboa Dec 12, 2025
265cd06
chore(core): _getQContainerElement only on element
wmertens Nov 26, 2025
a4beb4d
chore(core): _run should not wait
wmertens Nov 26, 2025
f2b3c7f
chore(serdes): name SerializationBackRef
wmertens Nov 26, 2025
4a300da
refactor(core): ignore className
wmertens Nov 26, 2025
cda0703
wip cursors scheduling
wmertens Nov 26, 2025
10f44a6
more logging
wmertens Nov 26, 2025
3da2602
feat(cursors): pass container to vnode functions
Varixo Nov 26, 2025
4faa4ea
chore(types): add event handler type tests
wmertens Nov 28, 2025
0dd7ced
feat(cursors): migrate to journal
Varixo Nov 29, 2025
f87a406
feat(cursors): handle changing component props
Varixo Nov 29, 2025
d75efa2
feat(cursors): fix some promises cases
Varixo Nov 29, 2025
cc050d7
feat(cursors): compute chore impl
Varixo Nov 30, 2025
af03abb
feat(cursors): fix apply journal
Varixo Nov 30, 2025
4a89bc9
feat(cursors): fix handling errors
Varixo Nov 30, 2025
d377da3
feat(cursors): migrate to single cursor prop
Varixo Dec 1, 2025
ed61626
fix(cursors): setting falsy prop
Varixo Dec 2, 2025
3792012
fix(cursors): vnode_diff unit tests
wmertens Dec 3, 2025
bda881e
fix(cursors): merge cursors during vnode-diff and fix debug to string
Varixo Dec 4, 2025
6048aae
feat(cursors): initialize render context with waitOn
Varixo Dec 5, 2025
603a396
feat(cursors): propogate dirty flag to blocking cursor
Varixo Dec 7, 2025
61ff799
feat(cursors): fix async computed signals
Varixo Dec 8, 2025
baeaa77
feat(cursor): process dirty non-projection vnodes first
Varixo Dec 8, 2025
d9231e9
feat(cursors): dont execute qrls for deleted vnodes
Varixo Dec 8, 2025
e8a09bd
feat(cursors): fix resource tests
Varixo Dec 8, 2025
82c6cf2
feat(cursors): fix visible tasks
Varixo Dec 9, 2025
3a16bcf
feat(cursors): ssr integration
Varixo Dec 10, 2025
c346655
feat(cursors): assign key as : prop value
Varixo Dec 11, 2025
0228cbb
feat(cursors): fix setting innerHTML
Varixo Dec 12, 2025
0b21c01
feat(cursors): fix catching error for runQrl
Varixo Dec 12, 2025
c1d0cda
feat(cursors): fix hoisting styles
Varixo Dec 13, 2025
2e86953
feat(cursors): retry on promise while invalidate signal
Varixo Dec 13, 2025
bff0856
feat(cursors): remove old scheduler tests
Varixo Dec 13, 2025
b92435c
feat(cursors): fix vnode tests
Varixo Dec 13, 2025
7bf055c
feat(cursors): misc changes
Varixo Dec 13, 2025
e0dd705
feat(cursors): fix most resource tests
Varixo Dec 15, 2025
7a53f45
feat(cursors): async computed serialization fix
Varixo Dec 15, 2025
05ddd43
feat(cursors): cleanup old code and fix build
Varixo Dec 15, 2025
782c0d8
feat(cursors): fix signals e2e tests
Varixo Dec 16, 2025
5bdd71f
feat(cursors): skip descendant cursors
Varixo Dec 20, 2025
5e15fbf
feat(cursors): fix materialize element vnode key
Varixo Dec 20, 2025
006f207
feat(cursors): change resource e2e tests after behavior change
Varixo Dec 20, 2025
2af6847
feat: better select impl for perf benchmark
Varixo Dec 20, 2025
e228454
feat(cursors): add chore-execution unit tests
Varixo Dec 20, 2025
4295175
feat(cursors): fix resource race condition problem
Varixo Dec 20, 2025
9309a80
feat(cursors): fix signal unit test
Varixo Dec 20, 2025
809f246
feat(cursors): better unit chore-execution test output
Varixo Dec 20, 2025
b0bbf8a
feat(cursors): small fixes
Varixo Dec 21, 2025
a84f4a7
feat(cursors): defer trigger tasks for server while running effects
Varixo Dec 22, 2025
a4b6ea3
feat(cursors): fix node diff payload helper methods
Varixo Dec 22, 2025
bb14c24
feat(cursors): faster attributes iteration
Varixo Dec 23, 2025
225c224
feat(cursors): use micro and macro tasks for cursors
Varixo Dec 23, 2025
8887ba4
feat(cursors): register qwik loader fix and comparing signal prop
Varixo Dec 24, 2025
e37014d
feat(perf): optimizations after deopt analysis
Varixo Dec 24, 2025
d3a9ee3
feat(perf): optimize jsx node creation
Varixo Dec 24, 2025
794ee71
feat(perf): dont assign vNode
Varixo Dec 24, 2025
d60fa2b
feat(cursors): fix special characters in custom block in vnode data
Varixo Dec 25, 2025
15c6cfb
fix(e2e): less flaky e2e tests
Varixo Dec 26, 2025
dd3b419
feat(perf): less inner functions for diff algorithm
Varixo Dec 27, 2025
12f8a03
feat(perf): fast document getter
Varixo Dec 27, 2025
a8baea9
feat(perf): factory functions for operations
Varixo Dec 27, 2025
6cca0e5
feat(cursors): fix unnecessary escaping slot names
Varixo Dec 28, 2025
5680f10
feat(cursors): add changesets
Varixo Dec 28, 2025
63cf92e
Merge pull request #8181 from QwikDev/v2-cursors
wmertens Dec 28, 2025
b044c5b
fix(cursors): memory allocation fix
Varixo Dec 28, 2025
d7b141d
chore: add memory allocation changesets
Varixo Dec 29, 2025
9668413
Merge pull request #8212 from QwikDev/v2-cursors-memory-fix
wmertens Dec 29, 2025
7f1aaa2
fix: correct escaping separator characters in attributes
Varixo Dec 30, 2025
d1d9c65
fix: apply journal in correct order for some edge cases
Varixo Dec 31, 2025
a3529fc
test: enable skipped test
Varixo Dec 31, 2025
288bb39
Merge pull request #8216 from QwikDev/v2-attr-separator-escaping
wmertens Jan 1, 2026
4486f0d
Merge pull request #8218 from QwikDev/v2-correct-journal-order
wmertens Jan 1, 2026
7c096ff
Version Packages (beta)
github-actions[bot] Jan 1, 2026
afa0e57
Update CHANGELOG.md
wmertens Jan 1, 2026
c34c237
Merge pull request #8211 from QwikDev/changeset-release/build/v2
wmertens Jan 1, 2026
d875827
feat(perf): hoist wrapped signal function
Varixo Jan 1, 2026
898b779
chore: fix macos ci
Varixo Jan 1, 2026
f91c57a
feat(optimizer): move event conversion logic to the optimizer
Varixo Jan 3, 2026
a0484f4
feat(optimizer): transform event names with transpile_jsx=false
Varixo Jan 3, 2026
2e6663c
fix: correct signal diffing
Varixo Jan 2, 2026
8b282b4
Merge pull request #8219 from QwikDev/v2-wrapped-signal-fn-hoisting
wmertens Jan 4, 2026
0edd98e
Merge pull request #8222 from QwikDev/v2-event-logic-optimzier
wmertens Jan 4, 2026
2dc3638
feat(perf): better prop diffing
Varixo Jan 4, 2026
91321d4
Merge pull request #8221 from QwikDev/v2-diff-signal
wmertens Jan 6, 2026
68e723a
fix: multiple event registering
Varixo Jan 8, 2026
86cd540
Merge pull request #8228 from QwikDev/v2-event-registering
wmertens Jan 8, 2026
9512e75
chore: dep updates
wmertens Jan 7, 2026
5a3d534
chore: pnpm fmt
wmertens Jan 7, 2026
c1ea5ec
chore: remove unnecessary catchError
wmertens Jan 7, 2026
8ae2e7c
fix(plugin): correct error message for missing build
wmertens Jan 7, 2026
bdbfc0a
fix(core): core build
wmertens Dec 31, 2025
615e261
fix(cursors): show virtual node dirty on vnode_toString
wmertens Dec 9, 2025
8169cb6
fix(core): qwikevents init
wmertens Jan 7, 2026
4b91d01
fix(repl): empty import.meta.env needs parens
wmertens Jan 7, 2026
2a281b2
chore(ci): use more workers
wmertens Jan 7, 2026
183d40b
chore(ci): playwright traces
wmertens Jan 9, 2026
1d1c4d0
Merge pull request #8225 from QwikDev/v2-fixes
wmertens Jan 12, 2026
7606dbe
fix: merging onInput$ and bind handlers
Varixo Jan 14, 2026
9eb9f79
Merge pull request #8240 from QwikDev/v2-fix-bind-handlers
wmertens Jan 14, 2026
aab9519
feat: add q:row to props
Varixo Jan 5, 2026
ec40926
feat: transform loop event listeners to special format
Varixo Jan 5, 2026
c497530
feat: pass iteration item as 3rd argument
Varixo Jan 5, 2026
b2513de
feat: hoist qrl inside loop
Varixo Jan 6, 2026
c3e9368
feat: handle more params for iteration item
Varixo Jan 6, 2026
7798930
fix: serialize iteration item
Varixo Jan 6, 2026
0628ac5
feat: don't serialize iteration item attr for csr
Varixo Jan 6, 2026
a493406
fix: nested components qrl extracting
Varixo Jan 6, 2026
9400046
fix: qrl hoisting for normal function as a component
Varixo Jan 6, 2026
0e2a303
fix: assign container to context early
Varixo Jan 6, 2026
a35836b
feat: change q:row to q:p and q:ps
Varixo Jan 7, 2026
6b59884
fix: multiple handlers in loop
Varixo Jan 7, 2026
0ce16bc
test: cleanup fn works as expected in qwik v2 with slotted components
sashkashishka Jan 14, 2026
57289ef
fix: review comment
sashkashishka Jan 15, 2026
bd301da
feat: pass iteration item as 3rd argument
Varixo Jan 5, 2026
aed54c9
feat: handle more params for iteration item
Varixo Jan 6, 2026
b8f0aa1
fix: assign container to context early
Varixo Jan 6, 2026
41bd9da
feat: ElementVNode as subclass of VirtualVNode
Varixo Jan 7, 2026
69c1fcc
feat(perf): convert effectsubscription array to class
Varixo Jan 7, 2026
3d19114
feat(perf): improve signal and vnode creation perf
Varixo Jan 7, 2026
62f40ea
feat(perf): correctly diff event listeners
Varixo Jan 9, 2026
51ea7e7
feat(perf): inline get value for signal
Varixo Jan 9, 2026
ad6a0c1
feat(perf): tree shake assert functions in prod
Varixo Jan 9, 2026
871ade0
feat(perf): use isServer for non-test env
Varixo Jan 9, 2026
0dc45a6
feat(perf): const props performance
Varixo Jan 9, 2026
48cb0de
feat(perf): faster create element access
Varixo Jan 10, 2026
f104332
feat(perf): use classes for journal operations
Varixo Jan 10, 2026
b2f1b08
feat(perf): batch insert or move operations
Varixo Jan 10, 2026
8e86fca
feat(perf): creation mode for vnode-diff, remove untrack for jsxSorted
Varixo Jan 11, 2026
69bae74
feat(perf): move jsxnode condition higher, less memory allocations fo…
Varixo Jan 12, 2026
88fd423
Merge pull request #8238 from sashkashishka/test/add-test-cases-from-…
Varixo Jan 15, 2026
649d3d2
Merge pull request #8223 from QwikDev/v2-each-component
wmertens Jan 15, 2026
fa43dfa
Merge pull request #8224 from QwikDev/v2-more-optimizations
wmertens Jan 16, 2026
e77b43b
fix: bind:value and onInput$ on the same element part2
Varixo Jan 15, 2026
86ac7e5
fix: incorrectly transforming onInput
Varixo Jan 15, 2026
ab40948
fix: _jsxSplit event name convertion
Varixo Jan 16, 2026
beefac1
fix: remove transform code duplication
Varixo Jan 16, 2026
9823fc7
feat: new merging logic for events in jsxSplit
Varixo Jan 18, 2026
d736225
fix: should move bind value to var props
Varixo Jan 19, 2026
d92665e
fix: iteration variable in qrl prop
Varixo Jan 17, 2026
8612421
fix: handle 'static' props in component's var props
Varixo Jan 19, 2026
4c961d1
fix: overriding the same event with different convention
Varixo Jan 21, 2026
98e4376
Merge pull request #8245 from QwikDev/v2-fix-bind-input
Varixo Jan 22, 2026
4f07a08
Merge pull request #8249 from QwikDev/v2-fix-iteration-variable-in-qr…
Varixo Jan 22, 2026
253d190
fix: finding context in unclaimed projections
Varixo Jan 24, 2026
8829960
fix: trigger visible task when component returns null or undefined
Varixo Jan 24, 2026
b2c0118
Merge pull request #8258 from QwikDev/v2-context-unclaimed-projections
wmertens Jan 24, 2026
a4ae2ef
fix: rendering component with async tasks on server
Varixo Jan 24, 2026
2045f20
Merge pull request #8259 from QwikDev/v2-visible-task-null-undefined
wmertens Jan 25, 2026
5180d29
Merge pull request #8262 from QwikDev/v2-async-tasks-server
wmertens Jan 25, 2026
e83a97d
fix: rendering var prop svg attributes with correct namespaces
Varixo Jan 24, 2026
0a8e24d
Merge pull request #8263 from QwikDev/v2-var-prop-svg-attr
wmertens Jan 25, 2026
df3ed1a
fix: computed signal memory leak when reusing effect subscriber in loop
Varixo Jan 21, 2026
e8ffc2b
fix: rendering arrays without keys
Varixo Jan 25, 2026
631498d
Merge pull request #8267 from QwikDev/v2-arrays-no-key
wmertens Jan 26, 2026
6e73033
fix: component's content rerender with slot edge case
Varixo Jan 26, 2026
d319abe
fix: navigate to new page even if transition is failed
Varixo Jan 26, 2026
77c8051
Merge pull request #8254 from QwikDev/v2-fix-computed-memory-leak
wmertens Jan 26, 2026
3d3fed6
Merge pull request #8270 from QwikDev/v2-component-slot-rerender
wmertens Jan 27, 2026
0b871e3
Merge pull request #8271 from QwikDev/v2-fix-0router-navigate
wmertens Jan 27, 2026
73d6012
fix: creation mode during vnode diff
Varixo Jan 27, 2026
cfe8e7d
fix: v2 visible tasks and computeds overpreloading on page load
maiieul Jan 28, 2026
f0dbc1c
chore: changeset
maiieul Jan 28, 2026
1258d0e
Merge pull request #8274 from QwikDev/fix-visibetasks-and-computeds-o…
wmertens Jan 28, 2026
8e6f545
fix(core): SSR vistasks should only run when visible
wmertens Jan 28, 2026
91c3572
Merge pull request #8276 from QwikDev/v2-fixes
wmertens Jan 28, 2026
5762262
Merge pull request #8273 from QwikDev/v2-fix-creation-mode
Varixo Jan 28, 2026
28ac073
fix(ci): workflow permissions
wmertens Jan 28, 2026
16a4be2
chore: pnpm dedupe
wmertens Jan 28, 2026
8275622
chore(core): unit tests get async qrls
wmertens Jan 28, 2026
5f9af9e
fix(core): container resolve waits for paused cursors too
wmertens Jan 28, 2026
51a0a63
Merge pull request #8277 from QwikDev/v2-fixes
wmertens Jan 28, 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
  •  
  •  
  •  
44 changes: 44 additions & 0 deletions .REFACTOR_NOTES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
1 << 0 | 001 | static listeners
1 << 1 | 002 | static subtree

## Slots

```typescript
const Parent = component$(() => {
return (
<Child>
Projection Content
<span q:slot="secondary">Secondary Content</span>
<span q:slot="other">Other Content</span>
</Child>
};
});

const Child = component$(() => {
return (
<div>
<Slot>Default Primary</Slot>
<Slot name="secondary">Default Secondary</Slot>
</div>
);
});
```

```html
<Fragment Parent>
<Fragment Child>
<div>
<Fragment Slot ptr:Child>
Projected Content
<template>Default Primary</template>
</Fragment>
<Fragment Slot ptr:Child>
<span q:slot="secondary">Secondary Content</span>
</Fragment>
</div>
</Fragment>
<template>
<span q:slot="other">Other Content</span>
</template>
</Fragment>
```
3 changes: 2 additions & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,6 @@
"label": "Serve",
"onAutoForward": "openPreview"
}
}
},
"postCreateCommand": "./.devcontainer/post-create.sh"
}
7 changes: 7 additions & 0 deletions .devcontainer/post-create.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/bin/bash

git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.lg "log --oneline"
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ body:
id: system-info
attributes:
label: System Info
description: Output of `npx envinfo --system --npmPackages '{vite,undici,typescript,@builder.io/*}' --binaries --browsers`
description: Output of `npx envinfo --system --npmPackages '{vite,typescript,@builder.io/*}' --binaries --browsers`
render: shell
placeholder: System, Binaries, Browsers
validations:
Expand Down
15 changes: 15 additions & 0 deletions .github/workflows/cancel.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Workaround to cancel workflow runs from forked repositories
name: Cancel
on:
workflow_run:
workflows: ['ci']
types:
- requested
jobs:
cancel:
runs-on: ubuntu-latest
steps:
- uses: styfle/[email protected]
if: github.event_name == 'pull_request'
with:
workflow_id: ${{ github.event.workflow.id }}
2 changes: 1 addition & 1 deletion .github/workflows/labeling-issues.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Labling Issues
name: Labeling Issues

on:
issues:
Expand Down
2 changes: 1 addition & 1 deletion .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
"internalConsoleOptions": "neverOpen",
"program": "${workspaceFolder}/./node_modules/vitest/vitest.mjs",
"cwd": "${workspaceFolder}",
"args": ["${file}"]
"args": ["--test-timeout", "999999", "--minWorkers", "1", "--maxWorkers", "1", "${file}"]
}
]
}
4 changes: 3 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,10 @@
"**/cypress/**",
"**/.{idea,git,cache,output,temp}/**"
],
"cSpell.words": ["bucketize", "Stringifiable"],
"javascript.preferences.autoImportFileExcludePatterns": ["node:test"],
"typescript.preferences.preferTypeOnlyAutoImports": true,
"typescript.tsdk": "./node_modules/typescript/lib",
"typescript.enablePromptUseWorkspaceTsdk": true
"typescript.enablePromptUseWorkspaceTsdk": true,
"makefile.configureOnOpen": false
}
4 changes: 3 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,9 @@ test:

test-update:
if ! cargo test --manifest-path packages/qwik/src/optimizer/core/Cargo.toml; then \
cd packages/qwik/src/optimizer/core/src/snapshots/ && for i in *.new; do f=$$(basename $$i .new); mv $$i $$f; done; \
cd packages/qwik/src/optimizer/core/src/snapshots/; \
for i in *.new; do f=$$(basename $$i .new); mv $$i $$f; done; \
cd -; \
cargo test --manifest-path packages/qwik/src/optimizer/core/Cargo.toml; \
fi

Expand Down
14 changes: 4 additions & 10 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -56,13 +56,6 @@
],
"pinVersion": "1.40.0"
},
{
"label": "Undici should always be * until we remove it",
"dependencies": [
"undici"
],
"range": "*"
},
{
"label": "use exact version numbers for devDependencies",
"dependencyTypes": [
Expand Down Expand Up @@ -132,6 +125,7 @@
"dotenv": "16.4.5",
"esbuild": "0.20.2",
"eslint": "8.57.0",
"eslint-plugin-import": "2.29.1",
"eslint-plugin-no-only-tests": "3.1.0",
"eslint-plugin-qwik": "workspace:^",
"execa": "8.0.1",
Expand All @@ -154,7 +148,6 @@
"terser": "5.31.3",
"tsm": "2.3.0",
"typescript": "5.4.5",
"undici": "*",
"vfile": "6.0.1",
"vite": "5.3.5",
"vite-imagetools": "7.0.4",
Expand All @@ -166,12 +159,12 @@
"zod": "3.22.4"
},
"engines": {
"node": ">=16.8.0 <18.0.0 || >=18.11",
"node": "^18.17.0 || ^20.3.0 || >=21.0.0",
"npm": "please-use-pnpm",
"yarn": "please-use-pnpm",
"pnpm": ">=9.0.5"
},
"packageManager": "pnpm@9.0.5",
"packageManager": "pnpm@9.1.2",
"pnpm": {
"overrides": {
"typescript": "5.4.5",
Expand Down Expand Up @@ -240,6 +233,7 @@
"test.e2e.chromium": "playwright test starters --browser=chromium --config starters/playwright.config.ts",
"test.e2e.chromium.debug": "PWDEBUG=1 playwright test starters --browser=chromium --config starters/playwright.config.ts",
"test.e2e.city": "playwright test starters/e2e/qwikcity --browser=chromium --config starters/playwright.config.ts",
"test.e2e.cli": "tsm scripts/e2e-cli.ts",
"test.e2e.firefox": "playwright test starters --browser=firefox --config starters/playwright.config.ts",
"test.e2e.webkit": "playwright test starters --browser=webkit --config starters/playwright.config.ts",
"test.rust": "make test",
Expand Down
2 changes: 1 addition & 1 deletion packages/create-qwik/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "create-qwik",
"description": "Interactive CLI for create Qwik projects and adding features.",
"version": "1.8.0",
"version": "2.0.0-0",
"author": "Builder.io Team",
"bin": "./create-qwik.cjs",
"bugs": "https://github.com/QwikDev/qwik/issues",
Expand Down
3 changes: 2 additions & 1 deletion packages/docs/check-qwik-build.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@
import fs from 'fs';
import path from 'path';
import { spawnSync } from 'child_process';
import { fileURLToPath } from 'url';

const __dirname = path.dirname(new URL(import.meta.url).pathname);
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const qwikPkgDir = path.join(__dirname, '..', 'qwik', 'dist');

if (!fs.existsSync(path.join(qwikPkgDir, 'core.d.ts'))) {
Expand Down
1 change: 0 additions & 1 deletion packages/docs/contributors.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
/* eslint-disable no-console */
import { fetch } from 'undici';
import fs from 'node:fs';
import path from 'node:path';
import url from 'node:url';
Expand Down
4 changes: 2 additions & 2 deletions packages/docs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
"prism-themes": "1.9.0",
"prismjs": "1.29.0",
"puppeteer": "22.13.1",
"qwik-image": "0.0.10",
"qwik-image": "0.0.14-alpha",
"react": "18.3.1",
"react-dom": "18.3.1",
"rehype-pretty-code": "0.11.0",
Expand All @@ -58,7 +58,7 @@
"wrangler": "3.65.1"
},
"engines": {
"node": ">=18.11",
"node": "^18.17.0 || ^20.3.0 || >=21.0.0",
"npm": "please-use-pnpm",
"yarn": "please-use-pnpm",
"pnpm": ">=8.6.12"
Expand Down
1 change: 0 additions & 1 deletion packages/docs/scripts/showcase.js
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,6 @@ async function captureMultipleScreenshots() {
}

async function getPagespeedData(url) {
const { fetch } = await import('undici');
const requestURL = `https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=${encodeURIComponent(
url
)}&key=AIzaSyApBC9gblaCzWrtEBgHnZkd_B37OF49BfM&category=PERFORMANCE&strategy=MOBILE`;
Expand Down
49 changes: 10 additions & 39 deletions packages/docs/src/components/builder-content/index.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { component$, Resource, useResource$ } from '@builder.io/qwik';
import { useLocation } from '@builder.io/qwik-city';
import { getBuilderSearchParams, fetchOneEntry, Content } from '@builder.io/sdk-qwik';
import { QWIK_MODEL } from '../../constants';

export default component$<{
Expand All @@ -17,52 +16,24 @@ export default component$<{
? query.get(name)
: (query as unknown as Record<string, string>)[name];

const render = queryGet('render');
const contentId = props.model === QWIK_MODEL ? queryGet('content') : undefined;
const isSDK = render === 'sdk';
cache('immutable');
if (isSDK) {
return getCachedValue(
{
model: props.model!,
apiKey: props.apiKey!,
options: getBuilderSearchParams(query),
userAttributes: {
urlPath: location.url.pathname,
site: 'qwik.dev',
},
...(contentId && {
query: {
id: contentId,
},
}),
},
fetchOneEntry
);
} else {
return getCachedValue(
{
apiKey: props.apiKey,
model: props.model,
urlPath: location.url.pathname,
contentId: contentId,
},
getBuilderContent
);
}
return getCachedValue(
{
apiKey: props.apiKey,
model: props.model,
urlPath: location.url.pathname,
contentId: contentId,
},
getBuilderContent
);
});

return (
<Resource
value={builderContentRsrc}
onPending={() => <div>Loading...</div>}
onResolved={(content) =>
content.html ? (
<props.tag class="builder" dangerouslySetInnerHTML={content.html} />
) : (
<Content model={props.model} content={content} apiKey={props.apiKey} />
)
}
onResolved={(content) => <props.tag class="builder" dangerouslySetInnerHTML={content.html} />}
/>
);
});
Expand Down
3 changes: 2 additions & 1 deletion packages/docs/src/components/docsearch/results-screen.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ export const ResultsScreen = component$((props: { state: DocSearchState }) => {
<ul role="listbox" aria-labelledby="docsearch-label" id="docsearch-list">
{collection.items.map((item, index) => {
return (
<Result state={props.state} item={item} key={item.objectID}>
// TODO: the key should be {item.objectID}, but for now in v2 there is a bug
<Result state={props.state} item={item} key={item.__autocomplete_id}>
{item.__docsearch_parent && (
<svg q:slot="start-action" class="DocSearch-Hit-Tree" viewBox="0 0 24 54">
<g
Expand Down
6 changes: 5 additions & 1 deletion packages/docs/src/repl/monaco.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,11 @@ const checkDiagnostics = async (
) => {
if (!monacoCtx.tsWorker) {
const getTsWorker = await monaco.languages.typescript.getTypeScriptWorker();
monacoCtx.tsWorker = await getTsWorker(editor.getModel()!.uri);
const uri = editor.getModel()?.uri;
if (!uri) {
return;
}
monacoCtx.tsWorker = await getTsWorker(uri);
}
const tsWorker = monacoCtx.tsWorker;

Expand Down
7 changes: 4 additions & 3 deletions packages/docs/src/repl/repl-console.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@ export interface ReplConsoleProps {
export const ReplConsole = component$(({ store }: ReplConsoleProps) => {
return (
<div class="detail-logs">
{store.events.map((ev) => (
<ReplLog log={ev} key={ev.start} />
))}
{
// for some reason ev can be null, just skip it
store.events.map((ev) => ev && <ReplLog log={ev} key={ev.start} />)
}
</div>
);
});
Expand Down
12 changes: 8 additions & 4 deletions packages/docs/src/repl/repl-output-update.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ const deepUpdate = (prev: any, next: any) => {
if (prev[key] && typeof next[key] === 'object' && typeof prev[key] === 'object') {
deepUpdate(prev[key], next[key]);
} else {
prev[key] = next[key];
if (prev[key] !== next[key]) {
prev[key] = next[key];
}
}
}
for (const key in prev) {
Expand All @@ -17,10 +19,12 @@ const deepUpdate = (prev: any, next: any) => {
};

export const updateReplOutput = async (store: ReplStore, result: ReplResult) => {
store.diagnostics = result.diagnostics;
deepUpdate(store.diagnostics, result.diagnostics);

if (store.diagnostics.length === 0) {
store.html = result.html;
if (result.diagnostics.length === 0) {
if (store.html !== result.html) {
store.html = result.html;
}
deepUpdate(store.transformedModules, result.transformedModules);
deepUpdate(store.clientBundles, result.clientBundles);
deepUpdate(store.ssrModules, result.ssrModules);
Expand Down
4 changes: 4 additions & 0 deletions packages/docs/src/repl/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -129,3 +129,7 @@ export type OutputPanel =
| 'diagnostics';

export type OutputDetail = 'options' | 'console';

export interface PathInView {
selectedPath: string;
}
6 changes: 3 additions & 3 deletions packages/docs/src/repl/worker/app-bundle-client.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
/* eslint-disable no-console */
import type { InputOptions, OutputAsset, OutputChunk } from 'rollup';
import type { Diagnostic, QwikRollupPluginOptions } from '@builder.io/qwik/optimizer';
import type { InputOptions, OutputAsset, OutputChunk } from 'rollup';
import type { ReplInputOptions, ReplModuleOutput, ReplResult } from '../types';
import type { QwikWorkerGlobal } from './repl-service-worker';
import { replCss, replMinify, replResolver } from './repl-plugins';
import type { QwikWorkerGlobal } from './repl-service-worker';

export const appBundleClient = async (
options: ReplInputOptions,
Expand All @@ -19,7 +19,7 @@ export const appBundleClient = async (
srcInputs: getInputs(options),
// Older versions don't support `segment`
entryStrategy:
options.entryStrategy.type === 'segment' ? { type: 'hook' } : options.entryStrategy,
options.entryStrategy?.type === 'segment' ? { type: 'hook' } : options.entryStrategy,
manifestOutput: (m) => {
result.manifest = m;
},
Expand Down
2 changes: 1 addition & 1 deletion packages/docs/src/repl/worker/repl-request-handler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -169,5 +169,5 @@ const injectDevHtml = (clientId: string, html?: string) => {
}, true);
})();`;

return `<script>${s}</script>${html || ''}`;
return `<script :>${s}</script>${html || ''}`;
};
Loading