Skip to content
Merged
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
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -625,7 +625,7 @@ whenever that type changes.

#### `StringMap` / `RequiredMap` / `OptionalMap` for string-keyed records

Use the record types from `fjs/types/object/module.f.ts` for all string-keyed
Use the record types from `fjs/types/object/types.ts` for all string-keyed
record types. The key set picks the type:

- **Open key set:** `StringMap<T>` is `{ readonly[k in string]?: T }` — any
Expand Down Expand Up @@ -653,7 +653,7 @@ a property of aliasing, not of any one definition — writing the record as a
mapped type rather than a conditional one does not lift it.

When iterating all defined entries of a `StringMap<T>`, use `definedEntries`
from `fjs/types/object/module.f.ts` instead of `Object.entries`; use
from `fjs/types/object/module.f.mjs` instead of `Object.entries`; use
`definedValues` instead of `Object.values`.

#### `flatMap` over a filtering type predicate
Expand Down
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,19 @@ history.

## Unreleased

- **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`
migrate to `.f.mjs`, splitting their public types into a sibling
`types.ts` — importers must use the `.f.mjs` specifier for runtime
values and the `types.ts` specifier for types
[#1484](https://github.com/functionalscript/functionalscript/pull/1484)
- **BREAKING CHANGES:** `fjs/crypto/hmac`, `fjs/path`, and
`fjs/media/json/serializer` migrate from authored TypeScript
(`.f.ts`) to JSDoc-typed JavaScript (`.f.mjs`) under the stage-1
TypeScript-to-mjs migration — importers must use the `.f.mjs`
specifier
[#1484](https://github.com/functionalscript/functionalscript/pull/1484)
- **BREAKING CHANGES:** every public type exported by an authored `.f.mjs`
module moves to a sibling `types.ts` (31 modules, including `asserts`,
`types/list`, `types/bit_vec`, `types/result`, `text`, `crypto/sha2`) —
Expand Down
3 changes: 2 additions & 1 deletion fjs/bnf/data/module.f.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ import {
type Rule as FRule,
type Sequence as FSequence,
} from '../module.f.ts'
import { definedEntries, type StringMap } from '../../types/object/module.f.ts'
import { definedEntries } from '../../types/object/module.f.mjs'
import type { StringMap } from '../../types/object/types.ts'

/**
* Encoded terminal range value used by BNF data rules.
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,6 +1,6 @@
import { stringify } from '../../media/json/module.f.ts'
import { identity } from '../../types/function/module.f.mjs'
import { sort } from '../../types/object/module.f.ts'
import { sort } from '../../types/object/module.f.mjs'
import { oneEncode, option, range, rangeDecode, repeat0Plus, set } from '../module.f.ts'
import { classic, deterministic } from '../testlib.f.ts'
import { emptyTagMap, type RuleSet, toData } from './module.f.ts'
Expand Down
2 changes: 1 addition & 1 deletion fjs/bnf/descent/module.f.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
import type { CodePoint } from '../../text/utf16/types.ts'
import { rangeDecode, type TerminalRange } from '../module.f.ts'
import { contains as rangeContains } from '../../types/range/module.f.mjs'
import { definedEntries } from '../../types/object/module.f.ts'
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'

Expand Down
6 changes: 4 additions & 2 deletions fjs/bnf/ll1/module.f.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,11 @@ import { strictEqual } from '../../types/function/operator/module.f.mjs'
import { toArray } from '../../types/list/module.f.mjs'
import type { RangeMapArray } from '../../types/range_map/types.ts'
import { rangeMap } from '../../types/range_map/module.f.mjs'
import { contains, set, type StringSet } from '../../types/string_set/module.f.ts'
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 { definedEntries, type StringMap } from '../../types/object/module.f.ts'
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'

Expand Down
3 changes: 2 additions & 1 deletion fjs/bnf/module.f.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
import type { Tuple } from '../types/array/types.ts'

import { codePointListToString, stringToCodePointList } from '../text/utf16/module.f.mjs'
import { definedValues, type StringMap } from '../types/object/module.f.ts'
import { definedValues } from '../types/object/module.f.mjs'
import type { StringMap } from '../types/object/types.ts'
import { isTuple } from '../types/array/module.f.mjs'
import { map, toArray, repeat as listRepeat } from '../types/list/module.f.mjs'
import { contains } from '../types/range/module.f.mjs'
Expand Down
3 changes: 2 additions & 1 deletion fjs/cas/evo/module.f.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,8 @@ import { decodeText, encodeText, dialect, checkReferences, isHash, type LockMap,
import type { Ok, Result } from '../../types/result/types.ts'
import { ok, error } from '../../types/result/module.f.mjs'
import { nonEmpty, empty as elEmpty } from '../../effects/list/module.f.ts'
import { at, definedEntries, type StringMap } from '../../types/object/module.f.ts'
import { at, definedEntries } from '../../types/object/module.f.mjs'
import type { StringMap } from '../../types/object/types.ts'
import { unwrap } from '../../types/nullable/module.f.mjs'
import type { Vec } from '../../types/bit_vec/types.ts'
import { isNotFound, type IoResult } from '../../effects/node/module.f.ts'
Expand Down
2 changes: 1 addition & 1 deletion fjs/cas/module.f.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
*/
import type { Sha2, State as Sha2State } from '../crypto/sha2/types.ts'
import { sha256 } from '../crypto/sha2/module.f.mjs'
import { join, normalize, parse } from '../path/module.f.ts'
import { join, normalize, parse } from '../path/module.f.mjs'
import type { Vec } from '../types/bit_vec/types.ts'
import { empty, length, maxLength, maxLengthBytes, msb, vec } from '../types/bit_vec/module.f.mjs'
import { cBase32ToVec, vecToCBase32 } from '../basen/cbase32/module.f.mjs'
Expand Down
2 changes: 1 addition & 1 deletion fjs/cas/proof.f.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { mkdir, writeFile, rm, readFile, type ReadFile, type WriteFile, type Rm,
import type { Ok } from '../types/result/types.ts'
import { error, ok } from '../types/result/module.f.mjs'
import { emptyState, virtual } from '../effects/node/virtual/module.f.ts'
import { join } from '../path/module.f.ts'
import { join } from '../path/module.f.mjs'
import { nonEmpty, empty, type List } from '../effects/list/module.f.ts'
import { assert, assertEq, assertNotNullish } from '../asserts/module.f.mjs'

Expand Down
4 changes: 2 additions & 2 deletions fjs/cas/todo/shard-dir-helper.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ how a key becomes segments, and `publish` separately assumes "the last
segment is the file name". A layout change (e.g. a different shard depth)
would have to be caught in both places, and the `mkdir(dstDir,
{ recursive: true })` that follows depends on the fragile re-parse.
`fjs/path/module.f.ts` also has no `dirname`/`parent` helper, so the
`fjs/path/module.f.mjs` also has no `dirname`/`parent` helper, so the
open-coded `parse(x).slice(0, -1)` is the only way to express this today.

### Proposal
Expand All @@ -49,7 +49,7 @@ export const toPath = (key: Vec): string => {

`publish` then uses `const { dir } = shard(hash)` and
`mkdir(join(path, dir), { recursive: true })` — no re-parse, no `slice`.
Alternative considered: a general `dirname` in `fjs/path/module.f.ts`; the
Alternative considered: a general `dirname` in `fjs/path/module.f.mjs`; the
`shard` form is preferred because the CAS write path should not know how a
shard path decomposes, and no second `dirname` consumer exists yet.

Expand Down
2 changes: 1 addition & 1 deletion fjs/ci/proof.f.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import type { State } from '../effects/node/virtual/module.f.ts'
import { emptyState, virtual, type Dir } from '../effects/node/virtual/module.f.ts'
import { parse as jsonParse } from '../media/json/module.f.ts'
import { unwrap } from '../types/result/module.f.mjs'
import { definedValues } from '../types/object/module.f.ts'
import { definedValues } from '../types/object/module.f.mjs'

const hasRun = (cmd: string) => (gha: GitHubAction): boolean =>
definedValues(gha.jobs).some(job => job.steps.some(step => step.run?.includes(cmd)))
Expand Down
2 changes: 1 addition & 1 deletion fjs/cli/module.f.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { errorExit, log, type NodeOp, type NodeProgramOptions, type Write } from '../effects/node/module.f.ts'
import { pure, step, type Effect } from '../effects/module.f.ts'
import { at, fromEntries } from '../types/object/module.f.ts'
import { at, fromEntries } from '../types/object/module.f.mjs'

type Handler<O extends NodeOp> = (options: NodeProgramOptions) => Effect<O, number>

Expand Down
17 changes: 9 additions & 8 deletions fjs/crypto/hmac/module.f.ts → fjs/crypto/hmac/module.f.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
* @example
*
* ```ts
* import { vec } from '../../types/bit_vec/module.f.ts'
* import { vec } from '../../types/bit_vec/module.f.mjs'
* import { msbUtf8 } from '../../text/module.f.mjs'
* import { sha256 } from '../sha2/module.f.mjs'
*
Expand All @@ -18,9 +18,9 @@
* ```
*/

import type { Vec, Reduce } from '../../types/bit_vec/types.ts'
/** @import { Vec, Reduce } from '../../types/bit_vec/types.ts' */
import { length, msb, vec, vec8, repeat } from '../../types/bit_vec/module.f.mjs'
import type { Sha2 } from '../sha2/types.ts'
/** @import { Sha2 } from '../sha2/types.ts' */
import { computeSync } from '../sha2/module.f.mjs'

const { concat, xor } = msb
Expand All @@ -38,11 +38,11 @@ const iPad = vec8(0x36n)
/**
* Generates an HMAC (Hash-based Message Authentication Code) using the specified hash function.
*
* @param hashFunc - The hash function implementation to use.
* @returns - A function that takes a key and returns another function
* @param {Sha2} hashFunc - The hash function implementation to use.
* @returns {Reduce} A function that takes a key and returns another function
* that takes a message and computes the HMAC.
*/
export const hmac = (hashFunc: Sha2): Reduce => {
export const hmac = hashFunc => {
const { blockLength } = hashFunc
const p = repeat(blockLength >> 3n)
const ip = p(iPad)
Expand All @@ -52,9 +52,10 @@ export const hmac = (hashFunc: Sha2): Reduce => {
const k1 = length(k) > blockLength ? c([k]) : k
const k2 = concat(k1)(vec(blockLength - length(k1))(0n))
const xk2 = xor(k2)
const f = (p: Vec) => {
/** @type {(p: Vec) => (msg: Vec) => Vec} */
const f = p => {
const x = xk2(p)
return (msg: Vec) => c([x, msg])
return msg => c([x, msg])
}
const fip = f(ip)
const fop = f(op)
Expand Down
2 changes: 1 addition & 1 deletion fjs/crypto/hmac/proof.f.ts → fjs/crypto/hmac/proof.f.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { assertEq } from '../../asserts/module.f.mjs'
import { utf8 } from '../../text/module.f.mjs'
import { uint, vec } from '../../types/bit_vec/module.f.mjs'
import { sha256, sha384, sha512 } from '../sha2/module.f.mjs'
import { hmac } from './module.f.ts'
import { hmac } from './module.f.mjs'

export const proof = {
example: () => {
Expand Down
2 changes: 1 addition & 1 deletion fjs/crypto/sign/module.f.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import type { Tuple } from '../../types/array/types.ts'
import { bitLength, divUp8, roundUp8 } from '../../types/bigint/module.f.mjs'
import type { Vec } from '../../types/bit_vec/types.ts'
import { empty, length, msb, repeat, unpack, vec, vec8 } from '../../types/bit_vec/module.f.mjs'
import { hmac } from '../hmac/module.f.ts'
import { hmac } from '../hmac/module.f.mjs'
import type { Curve } from '../secp/types.ts'
import type { Sha2 } from '../sha2/types.ts'
import { computeSync } from '../sha2/module.f.mjs'
Expand Down
2 changes: 1 addition & 1 deletion fjs/crypto/sign/proof.f.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { utf8 } from "../../text/module.f.mjs"
import type { Tuple } from "../../types/array/types.ts"
import type { Vec } from "../../types/bit_vec/types.ts"
import { empty, msb, repeat, vec, vec8 } from "../../types/bit_vec/module.f.mjs"
import { hmac } from "../hmac/module.f.ts"
import { hmac } from "../hmac/module.f.mjs"
import type { Curve } from "../secp/types.ts"
import { secp192r1, secp256r1, secp384r1, secp521r1 } from "../secp/module.f.mjs"
import type { Sha2 } from "../sha2/types.ts"
Expand Down
4 changes: 2 additions & 2 deletions fjs/dev/module.f.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ import {
type Readdir
} from '../effects/node/module.f.ts'
import { cmp as strCmp } from '../types/string/module.f.mjs'
import type { StringMap } from '../types/object/module.f.ts'
import type { StringMap } from '../types/object/types.ts'
import { unwrap } from '../types/result/module.f.mjs'
import { pure, step, type Effect } from '../effects/module.f.ts'
import { join, relativize, toPosix } from '../path/module.f.ts'
import { join, relativize, toPosix } from '../path/module.f.mjs'
import { assert, assertEq } from '../asserts/module.f.mjs'
import { emptyState, virtual, type Dir } from '../effects/node/virtual/module.f.ts'

Expand Down
6 changes: 3 additions & 3 deletions fjs/dev/todo/dev-allfiles-flatmap.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ zero or one effect, which is exactly the `flatMap` shape. The repeated
`result = [...result, x]` is also O(n²) in entry count.

Secondary: line 82 destructures `const { fromEntries } = Object` while
`AGENTS.md` mandates the typed helpers from `fjs/types/object/module.f.ts`
`AGENTS.md` mandates the typed helpers from `fjs/types/object/module.f.mjs`
for string-keyed maps (`fjs/cli` already imports from there).

### Proposal
Expand All @@ -50,14 +50,14 @@ readdir(p, {}).step(d => all(...unwrap(d).flatMap(i => {

No `let`, no `continue`, no accumulator reassignment; the 0-or-1 mapping per
entry is explicit. Also replace the `Object.fromEntries` destructuring with
the appropriate helper from `fjs/types/object/module.f.ts` (or file a
the appropriate helper from `fjs/types/object/module.f.mjs` (or file a
follow-up if no typed `fromEntries` exists there yet).

### Tasks

- [ ] Rewrite the `load` body with `flatMap` as above.
- [ ] Replace `const { fromEntries } = Object` with the typed equivalent
from `fjs/types/object/module.f.ts`, adding one there if missing (it
from `fjs/types/object/module.f.mjs`, adding one there if missing (it
has consumers waiting: this module and future map-builders).
- [ ] Run `npx tsc` and `fjs t`.

Expand Down
2 changes: 1 addition & 1 deletion fjs/djs/ast/module.f.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import type { Primitive, Array, Unknown } from '../module.f.ts'
import type { List } from '../../types/list/types.ts'
import { concat, fold, last, map, take, toArray } from '../../types/list/module.f.mjs'
import type { Entry } from '../../types/ordered_map/types.ts'
import { fromEntries } from '../../types/object/module.f.ts'
import { fromEntries } from '../../types/object/module.f.mjs'

const { entries } = Object

Expand Down
2 changes: 1 addition & 1 deletion fjs/djs/ast/proof.f.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { sort } from '../../types/object/module.f.ts'
import { sort } from '../../types/object/module.f.mjs'
import { run } from './module.f.ts'
import { stringifyAsTree } from '../serializer/module.f.ts'
import { assertEq } from '../../asserts/module.f.mjs'
Expand Down
2 changes: 1 addition & 1 deletion fjs/djs/module.f.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import type { Primitive as JsonPrimitive } from '../media/json/module.f.ts'
import { transpile } from './transpiler/module.f.ts'
import { stringify, stringifyAsTree } from './serializer/module.f.ts'
import { sort } from '../types/object/module.f.ts'
import { sort } from '../types/object/module.f.mjs'
import { type Effect, pure, step } from '../effects/module.f.ts'
import {
writeUtf8File,
Expand Down
2 changes: 1 addition & 1 deletion fjs/djs/parser/module.f.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import type { Fold } from '../../types/function/operator/types.ts'
import type { DjsToken, DjsTokenWithMetadata } from '../tokenizer/module.f.ts'
import { setReplace, at } from '../../types/ordered_map/module.f.mjs'
import type { OrderedMap } from '../../types/ordered_map/types.ts'
import { fromMap } from '../../types/object/module.f.ts'
import { fromMap } from '../../types/object/module.f.mjs'
import type { AstArray, AstConst, AstModule, AstModuleRef } from '../ast/module.f.ts'
import type { TokenMetadata } from '../../js/tokenizer/module.f.ts'
import { assertEq } from '../../asserts/module.f.mjs'
Expand Down
2 changes: 1 addition & 1 deletion fjs/djs/parser/proof.f.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { parseFromTokens } from './module.f.ts'
import { tokenize, type DjsTokenWithMetadata } from '../tokenizer/module.f.ts'
import { toArray } from '../../types/list/module.f.mjs'
import { sort } from '../../types/object/module.f.ts'
import { sort } from '../../types/object/module.f.mjs'
import { stringToList } from '../../text/utf16/module.f.mjs'
import { stringifyAsTree } from '../serializer/module.f.ts'
import { stringify } from '../../media/json/module.f.ts'
Expand Down
4 changes: 2 additions & 2 deletions fjs/djs/serializer/module.f.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@
*/
import type { Unknown, Object } from '../module.f.ts'
import type { Fold } from '../../types/function/operator/types.ts'
import type { Entry as ObjectEntry } from '../../types/object/module.f.ts'
import type { Entry as ObjectEntry } from '../../types/object/types.ts'
import { fold } from '../../types/list/module.f.mjs'
import { concat } from '../../types/string/module.f.mjs'
import type { List } from '../../types/list/types.ts'
import { flat, flatMap, map, concat as listConcat } from '../../types/list/module.f.mjs'
const { entries } = Object
import { compose, fn } from '../../types/function/module.f.mjs'
import { serialize as bigintSerialize } from '../../types/bigint/module.f.mjs'
import { objectWrap, arrayWrap, stringSerialize, numberSerialize, nullSerialize, boolSerialize } from '../../media/json/serializer/module.f.ts'
import { objectWrap, arrayWrap, stringSerialize, numberSerialize, nullSerialize, boolSerialize } from '../../media/json/serializer/module.f.mjs'

const colon = [':']

Expand Down
2 changes: 1 addition & 1 deletion fjs/djs/serializer/proof.f.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { countRefs, stringify, stringifyAsTree } from './module.f.ts'
import { sort } from '../../types/object/module.f.ts'
import { sort } from '../../types/object/module.f.mjs'
import { identity } from '../../types/function/module.f.mjs'
import { setProperty } from '../../media/json/module.f.ts'
import { assertEq } from '../../asserts/module.f.mjs'
Expand Down
2 changes: 1 addition & 1 deletion fjs/djs/todo/157.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ Each defines the identical closure cluster: `propertySerialize`
the recursive `f` switching on `typeof`, and
`arraySerialize = compose(map(f))(arrayWrap)`. The serializer already imports
its primitives (`stringSerialize`, `objectWrap`, `arrayWrap`, …) from
`fjs/media/json/serializer/module.f.ts`, so the leaves are shared; only the walker was
`fjs/media/json/serializer/module.f.mjs`, so the leaves are shared; only the walker was
copied.

The deltas:
Expand Down
2 changes: 1 addition & 1 deletion fjs/djs/todo/663-json-djs-tree-type.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,5 +111,5 @@ serialization behavior.
- [197](./197.md) — extracts traversal over the same `Unknown` shape.
- `fjs/media/json/module.f.ts` — current JSON recursive type aliases.
- `fjs/djs/module.f.ts` — current DJS recursive type aliases.
- `fjs/media/json/serializer/module.f.ts` — currently has no separate recursive
- `fjs/media/json/serializer/module.f.mjs` — currently has no separate recursive
generic value aliases and therefore is not part of this migration.
2 changes: 1 addition & 1 deletion fjs/djs/tokenizer/module.f.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ import { contains } from "../../types/range/module.f.mjs"
import type { List } from "../../types/list/types.ts"
import { concat, empty, filter, flat, flatMap, fold, map, stateScan, toArray } from "../../types/list/module.f.mjs"
import { stringifyAsTree } from "../serializer/module.f.ts"
import { sort } from "../../types/object/module.f.ts"
import { sort } from "../../types/object/module.f.mjs"
import type { Unknown } from "../module.f.ts"

// Builds the single-token grammar that jsGrammar's whole-file `tokens` rule repeats.
Expand Down
2 changes: 1 addition & 1 deletion fjs/djs/tokenizer/proof.f.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { toArray } from '../../types/list/module.f.mjs'
import { jsGrammar, tokenizeString, descentParserCpOnly, tokenizeJs, tokenize } from './module.f.ts'
import { assert, assertEq } from '../../asserts/module.f.mjs'
import { stringifyAsTree } from '../serializer/module.f.ts'
import { sort } from '../../types/object/module.f.ts'
import { sort } from '../../types/object/module.f.mjs'
import type { Unknown } from '../module.f.ts'

// DjsTokenWithMetadata carries bigint fields (bf, bigint value) that JSON.stringify can't
Expand Down
2 changes: 1 addition & 1 deletion fjs/djs/transpiler/module.f.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { tokenize } from '../tokenizer/module.f.ts'
import { setReplace, at } from '../../types/ordered_map/module.f.mjs'
import type { OrderedMap } from '../../types/ordered_map/types.ts'
import { stringToList } from '../../text/utf16/module.f.mjs'
import { concat as pathConcat } from '../../path/module.f.ts'
import { concat as pathConcat } from '../../path/module.f.mjs'
import { type ParseError, parseFromTokens } from '../parser/module.f.ts'
import { run, type AstModule } from '../ast/module.f.ts'
import { type Effect, foldStep, pure, step } from '../../effects/module.f.ts'
Expand Down
Loading
Loading