1import { assert, describe, it } from "@effect/vitest"
2import { Schema, SchemaParser } from "effect"
3import * as Registry from "effect/internal/schema/compilerRegistry"
4
5describe("Schema compiler startup", () => {
6 it("allows late global activation without replacing a maker's interpreted entry", async () => {
7 const schema = Schema.Struct({ a: Schema.String })
8 assert.deepStrictEqual(SchemaParser.make(schema)({ a: "a" }), { a: "a" })
9 const before = Registry.resolve(schema.ast)
10 assert.strictEqual(before.compiled, undefined)
11 const unused = Schema.Struct({ a: Schema.Number })
12 const make = SchemaParser.make(unused)
13 await import("effect/schema/SchemaJITCompiler/enable")
14 assert.strictEqual(Registry.resolve(schema.ast), before)
15 assert.deepStrictEqual(SchemaParser.decodeUnknownSync(schema)({ a: "a" }), { a: "a" })
16 assert.deepStrictEqual(make({ a: 1 }), { a: 1 })
17 assert.strictEqual(Registry.resolve(unused.ast).compiled !== undefined, true)
18 })
19})