Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions frameworks/qwik/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

All notable changes to the library will be documented in this file.

## vX.X.X (Month DD, YYYY)

- Change Qwik peer dependency to v2.0.0-beta.38
- Add `ReadonlySignal` type as temporary replacement for `Readonly<Signal<TValue>>` to work around a false positive in eslint-plugin-qwik's `valid-lexical-scope` rule
- Change `FormStore`, `FieldStore`, `FieldArrayStore` and `usePathSignal` to use new `ReadonlySignal` type

## v1.0.0-rc.0 (June 23, 2026)

- Release candidate for v1.0.0
Expand Down
6 changes: 3 additions & 3 deletions frameworks/qwik/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,16 +55,16 @@
"@formisch/core": "workspace:*",
"@formisch/eslint-config": "workspace:*",
"@formisch/methods": "workspace:*",
"@qwik.dev/core": "2.0.0-beta.9",
"@qwik.dev/core": "2.0.0-beta.38",
"@types/node": "24.0.13",
"eslint": "9.31.0",
"eslint-plugin-qwik": "2.0.0-beta.9",
"eslint-plugin-qwik": "2.0.0-beta.38",
"globals": "16.3.0",
"prettier": "3.6.2",
"tsdown": "^0.16.8",
"typescript": "5.8.3",
"valibot": "^1.4.1",
"vite": "7.0.4",
"vite": "7.3.5",
"vite-tsconfig-paths": "^5.1.4"
},
"peerDependencies": {
Expand Down
3 changes: 2 additions & 1 deletion frameworks/qwik/src/hooks/usePathSignal/usePathSignal.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import type { Path } from '@formisch/core/qwik';
import { type ReadonlySignal, useSignal } from '@qwik.dev/core';
import { useSignal } from '@qwik.dev/core';
import type { ReadonlySignal } from '../../types/index.ts';

// @__NO_SIDE_EFFECTS__
function isEqual(a: Path, b: Path): boolean {
Expand Down
3 changes: 2 additions & 1 deletion frameworks/qwik/src/types/field.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ import type {
ValidArrayPath,
ValidPath,
} from '@formisch/core/qwik';
import type { QRL, ReadonlySignal } from '@qwik.dev/core';
import type { QRL } from '@qwik.dev/core';
import type * as v from 'valibot';
import type { ReadonlySignal } from './signal.ts';

/**
* Field element props interface.
Expand Down
2 changes: 1 addition & 1 deletion frameworks/qwik/src/types/form.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { BaseFormStore, FormSchema } from '@formisch/core/qwik';
import type { ReadonlySignal } from '@qwik.dev/core';
import type { ReadonlySignal } from './signal.ts';

/**
* Form store interface.
Expand Down
1 change: 1 addition & 0 deletions frameworks/qwik/src/types/index.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
export * from './field.ts';
export * from './form.ts';
export * from './signal.ts';
25 changes: 25 additions & 0 deletions frameworks/qwik/src/types/signal.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/**
* Readonly signal interface.
*
* Note: This is a structural equivalent of Qwik's `Readonly<Signal<T>>`. It
* is used instead because eslint-plugin-qwik's `valid-lexical-scope` rule
* only recognizes signals by a type name ending in "Signal" and therefore
* reports false positives for `Readonly<Signal<T>>`. It can be removed once
* this is fixed upstream.
*/
export interface ReadonlySignal<T> {
/**
* The value of the signal. Reading it in a reactive context subscribes to
* updates.
*/
readonly value: T;
/**
* The value of the signal without subscribing to updates.
*/
readonly untrackedValue: T;
/**
* Triggers subscribers of the signal, for example when the value was
* mutated but remained the same object.
*/
trigger(): void;
}
2 changes: 1 addition & 1 deletion frameworks/vue/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
"valibot": "^1.4.1",
"vitest": "^4.1.7",
"vue": "^3.5.18",
"vue-tsc": "^3.0.4"
"vue-tsc": "~3.1.0"
},
"peerDependencies": {
"typescript": ">=5",
Expand Down
2 changes: 1 addition & 1 deletion packages/core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@
"@angular/core": "^22.0.0",
"@formisch/eslint-config": "workspace:*",
"@preact/signals": "^2.9.0",
"@qwik.dev/core": "2.0.0-beta.5",
"@qwik.dev/core": "2.0.0-beta.38",
"@types/node": "24.0.13",
"@types/react": "^19.2.5",
"@vitest/coverage-v8": "^4.1.7",
Expand Down
2 changes: 2 additions & 0 deletions packages/core/src/types/signal/signal.qwik.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export type { Signal } from '@qwik.dev/core';
export type { Batch, Untrack } from './signal.ts';
8 changes: 4 additions & 4 deletions playgrounds/qwik/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,20 +31,20 @@
"devDependencies": {
Comment thread
maiieul marked this conversation as resolved.
"@eslint/js": "^9.31.0",
"@formisch/qwik": "workspace:*",
"@qwik.dev/core": "2.0.0-beta.9",
"@qwik.dev/router": "2.0.0-beta.9",
"@qwik.dev/core": "2.0.0-beta.38",
"@qwik.dev/router": "2.0.0-beta.38",
"@tailwindcss/vite": "^4.1.11",
"@types/node": "24.0.13",
"eslint": "9.31.0",
"eslint-plugin-qwik": "2.0.0-beta.9",
"eslint-plugin-qwik": "2.0.0-beta.38",
"globals": "16.3.0",
"prettier": "3.6.2",
"prettier-plugin-tailwindcss": "^0.6.14",
"tailwindcss": "^4.1.11",
"typescript": "5.8.3",
"typescript-eslint": "8.36.0",
"typescript-plugin-css-modules": "^5.1.0",
"vite": "6.3.5",
"vite": "7.3.5",
Comment thread
maiieul marked this conversation as resolved.
"vite-tsconfig-paths": "^5.1.4"
}
}
4 changes: 2 additions & 2 deletions playgrounds/qwik/src/components/Checkbox.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { FieldElementProps } from '@formisch/qwik';
import { component$, ReadonlySignal } from '@qwik.dev/core';
import type { FieldElementProps, ReadonlySignal } from '@formisch/qwik';
import { component$ } from '@qwik.dev/core';
import clsx from 'clsx';
import { InputErrors } from './InputErrors';

Expand Down
4 changes: 2 additions & 2 deletions playgrounds/qwik/src/components/FileInput.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/* eslint-disable qwik/valid-lexical-scope */
import type { FieldElementProps } from '@formisch/qwik';
import { component$, ReadonlySignal, useComputed$ } from '@qwik.dev/core';
import type { FieldElementProps, ReadonlySignal } from '@formisch/qwik';
import { component$, useComputed$ } from '@qwik.dev/core';
import clsx from 'clsx';
import { InputErrors } from './InputErrors';
import { InputLabel } from './InputLabel';
Expand Down
8 changes: 2 additions & 6 deletions playgrounds/qwik/src/components/InputErrors.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
import {
component$,
ReadonlySignal,
useSignal,
useTask$,
} from '@qwik.dev/core';
import type { ReadonlySignal } from '@formisch/qwik';
import { component$, useSignal, useTask$ } from '@qwik.dev/core';
import { isBrowser } from '@qwik.dev/core/build';
import { Expandable } from './Expandable';

Expand Down
4 changes: 2 additions & 2 deletions playgrounds/qwik/src/components/RadioGroup.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { FieldElementProps } from '@formisch/qwik';
import { component$, ReadonlySignal } from '@qwik.dev/core';
import type { FieldElementProps, ReadonlySignal } from '@formisch/qwik';
import { component$ } from '@qwik.dev/core';
import clsx from 'clsx';
import { InputErrors } from './InputErrors';
import { InputLabel } from './InputLabel';
Expand Down
4 changes: 2 additions & 2 deletions playgrounds/qwik/src/components/Select.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { FieldElementProps } from '@formisch/qwik';
import { component$, ReadonlySignal, useComputed$ } from '@qwik.dev/core';
import type { FieldElementProps, ReadonlySignal } from '@formisch/qwik';
import { component$, useComputed$ } from '@qwik.dev/core';
import clsx from 'clsx';
import { AngleDownIcon } from '~/icons';
import { InputErrors } from './InputErrors';
Expand Down
4 changes: 2 additions & 2 deletions playgrounds/qwik/src/components/Slider.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { FieldElementProps } from '@formisch/qwik';
import { component$, ReadonlySignal } from '@qwik.dev/core';
import type { FieldElementProps, ReadonlySignal } from '@formisch/qwik';
import { component$ } from '@qwik.dev/core';
import clsx from 'clsx';
import { InputErrors } from './InputErrors';
import { InputLabel } from './InputLabel';
Expand Down
9 changes: 2 additions & 7 deletions playgrounds/qwik/src/components/TextInput.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
import type { FieldElementProps } from '@formisch/qwik';
import {
component$,
ReadonlySignal,
useSignal,
useTask$,
} from '@qwik.dev/core';
import type { FieldElementProps, ReadonlySignal } from '@formisch/qwik';
import { component$, useSignal, useTask$ } from '@qwik.dev/core';
import clsx from 'clsx';
import { InputErrors } from './InputErrors';
import { InputLabel } from './InputLabel';
Expand Down
4 changes: 1 addition & 3 deletions playgrounds/qwik/src/entry.preview.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,10 @@
* - https://vitejs.dev/config/preview-options.html#preview-options
*
*/
import qwikRouterConfig from '@qwik-router-config';
import { createQwikRouter } from '@qwik.dev/router/middleware/node';
// make sure qwikRouterConfig is imported before entry
import render from './entry.ssr';
Comment thread
maiieul marked this conversation as resolved.

/**
* The default export is the QwikRouter adapter used by Vite preview.
*/
export default createQwikRouter({ render, qwikRouterConfig });
export default createQwikRouter({ render });
Comment thread
maiieul marked this conversation as resolved.
Comment thread
maiieul marked this conversation as resolved.
Loading
Loading