Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
312f974
Migrate fjs/sul to .f.mjs, split types into types.ts
claude Aug 11, 2026
c7e56dd
Fill in PR number in CHANGELOG entry
claude Aug 11, 2026
3f48e12
Migrate fjs/media/html to .f.mjs, split types into types.ts
claude Aug 11, 2026
3024c8c
Migrate fjs/crypto/sign to .f.mjs, split types into types.ts
claude Aug 11, 2026
936ce34
Migrate fjs/types/rtti to .f.mjs, split types into types.ts
claude Aug 11, 2026
d46050b
Migrate fjs/types/rtti/ts to .f.mjs, split types into types.ts
claude Aug 11, 2026
93fdc6e
Migrate fjs/types/rtti/common to .f.mjs, split types into types.ts
claude Aug 11, 2026
d3565c2
Migrate fjs/types/rtti/validate/module.f.ts to .f.mjs
claude Aug 11, 2026
439cf51
Address rtti types.ts review: restore derived-type guarantee, _ prefix
claude Aug 11, 2026
16cf053
Migrate fjs/types/rtti/parse/module.f.ts to .f.mjs, split types.ts
claude Aug 11, 2026
e615a57
Migrate fjs/ci/common to .f.mjs, split types into types.ts
claude Aug 11, 2026
f8eec82
Migrate fjs/ci/bun to .f.mjs
claude Aug 11, 2026
c2fa671
Migrate fjs/ci/deno to .f.mjs
claude Aug 11, 2026
457c47c
Migrate fjs/ci/rust to .f.mjs
claude Aug 11, 2026
b174648
Migrate fjs/media/nix to .f.mjs, split types into types.ts
claude Aug 11, 2026
5941c98
Migrate fjs/bnf/module.f.ts to .f.mjs, split types into types.ts
claude Aug 11, 2026
a035585
Fix markdown link-target/label mismatches from earlier doc sweeps
claude Aug 11, 2026
e11269a
Fix TerminalRange annotation and stale doc references from Codex review
claude Aug 11, 2026
ef4ae8b
Fix remaining fjs/bnf .f.ts doc links and eof's missing TerminalRange…
claude Aug 11, 2026
b57d53a
Restore validate/parse error-type re-exports lost in migration
claude Aug 11, 2026
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
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -750,7 +750,7 @@ languages require. TypeScript narrows string literals precisely, so the string
mapping (and `keyof typeof my` gives you the key type).

Existing examples: `os` / `Os` and `architecture` / `Architecture` in
`fjs/ci/common/module.f.ts`, and `actions` in `fjs/ci/config/module.f.mjs`.
`fjs/ci/common/module.f.mjs`, and `actions` in `fjs/ci/config/module.f.mjs`.

#### Write the call, not the value it computes

Expand Down
81 changes: 81 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,87 @@ history.

## Unreleased

- **BREAKING CHANGES:** `fjs/bnf/module.f.ts` migrates from authored
TypeScript (`.f.ts`) to JSDoc-typed JavaScript (`.f.mjs`), splitting
its type-level API into a sibling `types.ts` — importers must use the
`.f.mjs` specifier for runtime values and the `types.ts` specifier
for types. `proof.f.ts` and `testlib.f.ts` stay TypeScript for now
[#1485](https://github.com/functionalscript/functionalscript/pull/1485)
- **BREAKING CHANGES:** `fjs/media/nix` migrates from authored
TypeScript (`.f.ts`) to JSDoc-typed JavaScript (`.f.mjs`), splitting
the `Expression` type (and its private helper types) into a sibling
`types.ts` — importers must use the `.f.mjs` specifier for runtime
values and the `types.ts` specifier for types
[#1485](https://github.com/functionalscript/functionalscript/pull/1485)
- **BREAKING CHANGES:** `fjs/ci/rust` migrates from authored TypeScript
(`.f.ts`) to JSDoc-typed JavaScript (`.f.mjs`) — importers must use
the `.f.mjs` specifier
[#1485](https://github.com/functionalscript/functionalscript/pull/1485)
- **BREAKING CHANGES:** `fjs/ci/deno` migrates from authored TypeScript
(`.f.ts`) to JSDoc-typed JavaScript (`.f.mjs`) — importers must use
the `.f.mjs` specifier
[#1485](https://github.com/functionalscript/functionalscript/pull/1485)
- **BREAKING CHANGES:** `fjs/ci/bun` migrates from authored TypeScript
(`.f.ts`) to JSDoc-typed JavaScript (`.f.mjs`) — importers must use
the `.f.mjs` specifier
[#1485](https://github.com/functionalscript/functionalscript/pull/1485)
- **BREAKING CHANGES:** `fjs/ci/common` migrates from authored
TypeScript (`.f.ts`) to JSDoc-typed JavaScript (`.f.mjs`), splitting
its type-level API (`Os`, `Architecture`, `Image`, `Step`, `Job`,
`Jobs`, `GitHubAction`, `StepType`, `MetaStep`) into a sibling
`types.ts` — importers must use the `.f.mjs` specifier for runtime
values and the `types.ts` specifier for types
[#1485](https://github.com/functionalscript/functionalscript/pull/1485)
- **BREAKING CHANGES:** `fjs/types/rtti/parse/module.f.ts` migrates from
authored TypeScript (`.f.ts`) to JSDoc-typed JavaScript (`.f.mjs`),
splitting its `Result`/`Parse` types into a sibling `types.ts` —
importers must use the `.f.mjs` specifier for runtime values and the
`types.ts` specifier for types. `proof.f.ts` stays TypeScript for
now: it has a type-only dependency on the not-yet-migrated `fjs/djs`
[#1485](https://github.com/functionalscript/functionalscript/pull/1485)
- **BREAKING CHANGES:** `fjs/types/rtti/validate/module.f.ts` migrates
from authored TypeScript (`.f.ts`) to JSDoc-typed JavaScript
(`.f.mjs`) — importers must use the `.f.mjs` specifier for runtime
values and `fjs/types/rtti/common/types.ts` for the re-exported
types. `proof.f.ts` stays TypeScript for now: it has a type-only
dependency on the not-yet-migrated `fjs/djs`
[#1485](https://github.com/functionalscript/functionalscript/pull/1485)
- **BREAKING CHANGES:** `fjs/types/rtti/common` migrates from authored
TypeScript (`.f.ts`) to JSDoc-typed JavaScript (`.f.mjs`), splitting
its type-level API into a sibling `types.ts` — importers must use the
`.f.mjs` specifier for runtime values and the `types.ts` specifier
for types
[#1485](https://github.com/functionalscript/functionalscript/pull/1485)
- **BREAKING CHANGES:** `fjs/types/rtti/ts` migrates from authored
TypeScript (`.f.ts`) to JSDoc-typed JavaScript (`.f.mjs`), splitting
its `Ts<T>` type-transformer API into a sibling `types.ts` — importers
must use the `.f.mjs` specifier for the `printer` runtime value and
the `types.ts` specifier for types
[#1485](https://github.com/functionalscript/functionalscript/pull/1485)
- **BREAKING CHANGES:** `fjs/types/rtti` migrates from authored
TypeScript (`.f.ts`) to JSDoc-typed JavaScript (`.f.mjs`), splitting
its type-level API into a sibling `types.ts` — importers must use the
`.f.mjs` specifier for runtime values and the `types.ts` specifier
for types
[#1485](https://github.com/functionalscript/functionalscript/pull/1485)
- **BREAKING CHANGES:** `fjs/crypto/sign` migrates from authored
TypeScript (`.f.ts`) to JSDoc-typed JavaScript (`.f.mjs`), splitting
the `All` type into a sibling `types.ts` — importers must use the
`.f.mjs` specifier for runtime values and the `types.ts` specifier
for the type
[#1485](https://github.com/functionalscript/functionalscript/pull/1485)
- **BREAKING CHANGES:** `fjs/media/html` migrates from authored
TypeScript (`.f.ts`) to JSDoc-typed JavaScript (`.f.mjs`), splitting
the `Element`/`Node` types into a sibling `types.ts` — importers must
use the `.f.mjs` specifier for runtime values and the `types.ts`
specifier for types
[#1485](https://github.com/functionalscript/functionalscript/pull/1485)
- **BREAKING CHANGES:** `fjs/sul` migrates from authored TypeScript
(`.f.ts`) to JSDoc-typed JavaScript (`.f.mjs`), splitting the
`EncodeState`/`Encode` types into a sibling `types.ts` — importers
must use the `.f.mjs` specifier for runtime values and the `types.ts`
specifier for types
[#1485](https://github.com/functionalscript/functionalscript/pull/1485)
- **BREAKING CHANGES:** `fjs/types/object`, `fjs/sul/level/literal`,
`fjs/sul/id`, `fjs/sul/level/hash`, `fjs/types/string_set`, and the
`module.f.ts` of `fjs/types/sorted_set` and `fjs/types/byte_set`
Expand Down
2 changes: 1 addition & 1 deletion fjs/bnf/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

See [Backus-Naur form](https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form).

- the functional representation [./module.f.ts](./module.f.ts),
- the functional representation [./module.f.mjs](./module.f.mjs),
- the serializable representation [./data/](./data/),
- symbols for multi-character tokens [./token_symbol/](./token_symbol/),
- parser/automaton backends built over the serializable representation:
Expand Down
10 changes: 6 additions & 4 deletions fjs/bnf/data/module.f.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,12 @@ import { stringToCodePointList } from '../../text/utf16/module.f.mjs'
import { map, toArray } from '../../types/list/module.f.mjs'
import {
oneEncode,
type DataRule,
type Rule as FRule,
type Sequence as FSequence,
} from '../module.f.ts'
} from '../module.f.mjs'
import type {
DataRule,
Rule as FRule,
Sequence as FSequence,
} from '../types.ts'
import { definedEntries } from '../../types/object/module.f.mjs'
import type { StringMap } from '../../types/object/types.ts'

Expand Down
2 changes: 1 addition & 1 deletion fjs/bnf/data/proof.f.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { stringify } from '../../media/json/module.f.ts'
import { identity } from '../../types/function/module.f.mjs'
import { sort } from '../../types/object/module.f.mjs'
import { oneEncode, option, range, rangeDecode, repeat0Plus, set } from '../module.f.ts'
import { oneEncode, option, range, rangeDecode, repeat0Plus, set } from '../module.f.mjs'
import { classic, deterministic } from '../testlib.f.ts'
import { emptyTagMap, type RuleSet, toData } from './module.f.ts'
import { assertEq } from '../../asserts/module.f.mjs'
Expand Down
5 changes: 3 additions & 2 deletions fjs/bnf/descent/module.f.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,12 @@
* @module
*/
import type { CodePoint } from '../../text/utf16/types.ts'
import { rangeDecode, type TerminalRange } from '../module.f.ts'
import { rangeDecode } from '../module.f.mjs'
import type { TerminalRange } from '../types.ts'
import { contains as rangeContains } from '../../types/range/module.f.mjs'
import { definedEntries } from '../../types/object/module.f.mjs'
import { emptyTagMap, toData, type Rule as DataRule, type Sequence } from '../data/module.f.ts'
import { type Rule as FRule } from '../module.f.ts'
import type { Rule as FRule } from '../types.ts'

export type AstTag = string|true|undefined

Expand Down
2 changes: 1 addition & 1 deletion fjs/bnf/descent/proof.f.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { CodePoint } from '../../text/utf16/types.ts'
import { stringToCodePointList } from '../../text/utf16/module.f.mjs'
import { map, toArray } from '../../types/list/module.f.mjs'
import { commaJoin0Plus, option, range, repeat0Plus, set } from '../module.f.ts'
import { commaJoin0Plus, option, range, repeat0Plus, set } from '../module.f.mjs'
import { deterministic } from '../testlib.f.ts'
import { emptyTagMap, toData } from '../data/module.f.ts'
import { descentParser, type DescentMatch, type CodePointMeta, type DescentMatchResult } from './module.f.ts'
Expand Down
4 changes: 2 additions & 2 deletions fjs/bnf/ll1/module.f.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ import type { RangeMapArray } from '../../types/range_map/types.ts'
import { rangeMap } from '../../types/range_map/module.f.mjs'
import { contains, set } from '../../types/string_set/module.f.mjs'
import type { StringSet } from '../../types/string_set/types.ts'
import { rangeDecode } from '../module.f.ts'
import { rangeDecode } from '../module.f.mjs'
import { definedEntries } from '../../types/object/module.f.mjs'
import type { StringMap } from '../../types/object/types.ts'
import { emptyTagMap, type EmptyTag, type RuleSet, toData } from '../data/module.f.ts'
import { type Rule as FRule } from '../module.f.ts'
import type { Rule as FRule } from '../types.ts'

type DispatchRule = {
readonly emptyTag: EmptyTag,
Expand Down
2 changes: 1 addition & 1 deletion fjs/bnf/ll1/proof.f.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { stringToCodePointList } from '../../text/utf16/module.f.mjs'
import { toArray } from '../../types/list/module.f.mjs'
import { commaJoin0Plus, option, range, repeat0Plus, set } from '../module.f.ts'
import { commaJoin0Plus, option, range, repeat0Plus, set } from '../module.f.mjs'
import { deterministic } from '../testlib.f.ts'
import { type RuleSet, toData } from '../data/module.f.ts'
import { dispatchMap, type MatchResult, parser, parserRuleSet } from './module.f.ts'
Expand Down
Loading
Loading