From ba7a772b4572d520e9415c0cd9c2a2c2afd0b67b Mon Sep 17 00:00:00 2001 From: Matt Fysh Date: Wed, 10 Sep 2025 11:10:14 +1000 Subject: [PATCH 1/3] move hooks spec to tests folder --- test/helpers.ts | 2 + {packages/get/src => test}/hooks.spec.ts | 69 +++++++++--------------- 2 files changed, 26 insertions(+), 45 deletions(-) rename {packages/get/src => test}/hooks.spec.ts (62%) diff --git a/test/helpers.ts b/test/helpers.ts index f3f0166..f256463 100644 --- a/test/helpers.ts +++ b/test/helpers.ts @@ -11,6 +11,7 @@ type ExecuteOptions = Partial<{ fetch: Fetch modifier: ModifierHook willThrow: boolean + hooks: Hooks }> export type Fetch = (url: string, opts: RequestInit) => MaybePromise @@ -54,6 +55,7 @@ export async function execute( body: await res.text(), } }, + ...options.hooks, } return executeModule('Home', inputs, hooks) diff --git a/packages/get/src/hooks.spec.ts b/test/hooks.spec.ts similarity index 62% rename from packages/get/src/hooks.spec.ts rename to test/hooks.spec.ts index 36c41f4..24de948 100644 --- a/packages/get/src/hooks.spec.ts +++ b/test/hooks.spec.ts @@ -8,7 +8,7 @@ import type { SliceHook, } from '@getlang/lib' import { invariant } from '@getlang/lib' -import { execute } from './index.js' +import { execute } from './helpers.js' describe('hook', () => { test('on request', async () => { @@ -19,29 +19,27 @@ describe('hook', () => { extract -> h1 ` - const requestHook = mock(async () => ({ + const request = mock(async () => ({ status: 200, headers: new Headers({ 'content-type': 'text/html' }), body: '

test

', })) - const result = await execute(src, {}, { request: requestHook }) + const result = await execute(src, {}, { hooks: { request } }) - expect(requestHook).toHaveBeenCalledWith('http://get.com/', { + expect(request).toHaveServed('http://get.com/', { method: 'GET', - headers: expect.headers( - new globalThis.Headers({ - Accept: 'text/html', - }), - ), + headers: new Headers({ + Accept: 'text/html', + }), }) expect(result).toEqual('test') }) test('on slice', async () => { - const sliceHook = mock(() => 3) - const result = await execute('extract `1 + 2`', {}, { slice: sliceHook }) - expect(sliceHook).toHaveBeenCalledWith('return 1 + 2;;', undefined) + const slice = mock(() => 3) + const result = await execute('extract `1 + 2`', {}, { hooks: { slice } }) + expect(slice).toHaveBeenCalledWith('return 1 + 2;;', undefined) expect(result).toEqual(3) }) @@ -60,17 +58,16 @@ describe('hook', () => { } } `, - } - - const src = ` - set inputA = |"foo"| + Home: ` + set inputA = |"foo"| - extract { - topValue: @Top({ $inputA }) -> value - midValue: @Mid -> value - botValue: |"bot"| - } - ` + extract { + topValue: @Top({ $inputA }) -> value + midValue: @Mid -> value + botValue: |"bot"| + } + `, + } const hooks: Hooks = { import: mock(async (module: string) => { @@ -81,7 +78,7 @@ describe('hook', () => { call: mock(() => {}), extract: mock(() => {}), } - const result = await execute(src, {}, hooks) + const result = await execute(modules, {}, { hooks }) expect(result).toEqual({ topValue: 'top::foo', @@ -92,9 +89,10 @@ describe('hook', () => { botValue: 'bot', }) - expect(hooks.import).toHaveBeenCalledTimes(2) - expect(hooks.import).toHaveBeenNthCalledWith(1, 'Top') - expect(hooks.import).toHaveBeenNthCalledWith(2, 'Mid') + expect(hooks.import).toHaveBeenCalledTimes(3) + expect(hooks.import).toHaveBeenNthCalledWith(1, 'Home') + expect(hooks.import).toHaveBeenNthCalledWith(2, 'Top') + expect(hooks.import).toHaveBeenNthCalledWith(3, 'Mid') expect(hooks.call).toHaveBeenCalledTimes(3) expect(hooks.call).toHaveBeenNthCalledWith(1, 'Top', { inputA: 'foo' }) @@ -127,22 +125,3 @@ describe('hook', () => { ) }) }) - -expect.extend({ - headers(received: unknown, expected: Headers) { - if (!(received instanceof Headers)) { - return { - message: () => 'expected headers object', - pass: false, - } - } - - const pass = this.equals( - Object.fromEntries(received as any), - Object.fromEntries(expected as any), - ) - - const message = () => 'todo' - return { pass, message } - }, -}) From 8c7eb12337adf0e41ed1ef15ea8a629fe68a27c3 Mon Sep 17 00:00:00 2001 From: Matt Fysh Date: Tue, 16 Sep 2025 12:05:15 +1000 Subject: [PATCH 2/3] modifier context and materialize flags --- package.json | 4 +- packages/get/src/calls.ts | 4 +- packages/get/src/execute.ts | 11 ++--- packages/get/src/registry.ts | 47 ++++++------------- packages/lib/src/core/hooks.ts | 4 +- packages/parser/package.json | 2 +- packages/parser/src/passes/desugar.ts | 2 +- packages/parser/src/passes/inference/calls.ts | 2 +- .../parser/src/passes/inference/typeinfo.ts | 2 +- test/helpers.ts | 6 +-- test/hooks.spec.ts | 2 +- test/modifiers.spec.ts | 22 ++++----- 12 files changed, 44 insertions(+), 64 deletions(-) diff --git a/package.json b/package.json index f7cb58f..96406bb 100644 --- a/package.json +++ b/package.json @@ -18,9 +18,9 @@ "test" ], "devDependencies": { - "@biomejs/biome": "^2.2.3", + "@biomejs/biome": "^2.2.4", "@changesets/changelog-github": "^0.5.1", - "@changesets/cli": "^2.29.6", + "@changesets/cli": "^2.29.7", "@types/bun": "^1.2.21", "knip": "^5.63.1", "sherif": "^1.6.1", diff --git a/packages/get/src/calls.ts b/packages/get/src/calls.ts index b440885..998be88 100644 --- a/packages/get/src/calls.ts +++ b/packages/get/src/calls.ts @@ -16,7 +16,9 @@ export async function callModifier( ) { const entry = await registry.importMod(mod) if (entry) { - return entry.mod(context?.data, args) + const ctx = + context && entry.materialize ? materialize(context) : context?.data + return entry.mod(ctx, args) } invariant(context, 'Modifier requires context') diff --git a/packages/get/src/execute.ts b/packages/get/src/execute.ts index 3f2a420..c8ecc97 100644 --- a/packages/get/src/execute.ts +++ b/packages/get/src/execute.ts @@ -107,7 +107,7 @@ export async function execute( async SliceExpr({ slice, typeInfo }) { try { const ctx = scope.context - const deps = ctx && materialize(ctx) + const deps = ctx ? materialize(ctx) : {} const ret = await hooks.slice(slice.value, deps) const data = ret === undefined ? new lib.NullSelection('') : ret @@ -158,12 +158,9 @@ export async function execute( }, async ModifierExpr(node) { - const data = await callModifier( - registry, - node.modifier.value, - node.args.data, - scope.context, - ) + const mod = node.modifier.value + const args = materialize(node.args) + const data = await callModifier(registry, mod, args, scope.context) return { data, typeInfo: node.typeInfo } }, diff --git a/packages/get/src/registry.ts b/packages/get/src/registry.ts index dae0cdc..a3a889d 100644 --- a/packages/get/src/registry.ts +++ b/packages/get/src/registry.ts @@ -3,13 +3,11 @@ import { Type } from '@getlang/ast' import type { Hooks, Modifier } from '@getlang/lib' import { RecursiveCallError, ValueTypeError } from '@getlang/lib/errors' import { analyze, desugar, inference, parse } from '@getlang/parser' -import type { Pattern } from 'acorn' -import { parse as acorn } from 'acorn' -import { traverse } from 'estree-toolkit' type ModEntry = { mod: Modifier useContext: boolean + materialize: boolean returnType: TypeInfo } @@ -53,31 +51,6 @@ function buildImportKey(module: string, typeInfo?: TypeInfo) { return key } -function inferContext(mod: Modifier) { - const src = mod.toString() - const ast = acorn(src, { ecmaVersion: 'latest' }) - let useContext = false - traverse(ast, { - $: { scope: true }, - Program(path) { - const fn = ast.body[0] - let ctxParam: Pattern | undefined - if (fn?.type === 'FunctionDeclaration') { - ctxParam = fn.params[0] - } else if (fn?.type === 'ExpressionStatement') { - if (fn.expression.type === 'ArrowFunctionExpression') { - ctxParam = fn.expression.params[0] - } - } - const fnScope = path.scope?.children[0] - const bindings = Object.values(fnScope?.bindings || {}) - const ctxBinding = bindings.find(b => b?.identifierPath.node === ctxParam) - useContext = Boolean(ctxBinding?.references.length) - }, - }) - return useContext -} - export class Registry { private info: Record> = {} private entries: Record> = {} @@ -91,10 +64,20 @@ export class Registry { if (!compiled) { return null } - const fn = compiled.modifier - const useContext = inferContext(fn) - const returnType = compiled.typeInfo || { type: Type.Value } - return { mod: fn, useContext, returnType } + + const { + modifier: fn, + useContext = false, + materialize = true, + returnType = { type: Type.Value }, + } = compiled + + return { + mod: fn, + useContext, + materialize, + returnType, + } }) return this.modifiers[mod] } diff --git a/packages/lib/src/core/hooks.ts b/packages/lib/src/core/hooks.ts index ae37d96..cdd1378 100644 --- a/packages/lib/src/core/hooks.ts +++ b/packages/lib/src/core/hooks.ts @@ -28,7 +28,9 @@ export type Modifier = (context: any, options: Record) => any export type ModifierHook = (modifier: string) => MaybePromise< | { modifier: Modifier - typeInfo?: TypeInfo + useContext?: boolean + materialize?: boolean + returnType?: TypeInfo } | undefined > diff --git a/packages/parser/package.json b/packages/parser/package.json index cfbb785..3cf59c2 100644 --- a/packages/parser/package.json +++ b/packages/parser/package.json @@ -30,7 +30,7 @@ "@types/nearley": "^2.11.5", "acorn": "^8.15.0", "estree-toolkit": "^1.7.13", - "globals": "^16.3.0", + "globals": "^16.4.0", "lodash-es": "^4.17.21", "moo": "^0.5.2", "nearley": "^2.20.1", diff --git a/packages/parser/src/passes/desugar.ts b/packages/parser/src/passes/desugar.ts index c6b0810..f2dc033 100644 --- a/packages/parser/src/passes/desugar.ts +++ b/packages/parser/src/passes/desugar.ts @@ -23,7 +23,7 @@ const visitors = [ dropDrills, ] -export function desugar(ast: Program, macros: string[] = []) { +export function desugar(ast: Program, macros: string[] = []): Program { const parsers = new RequestParsers() const program = visitors.reduce((ast, pass) => { parsers.reset() diff --git a/packages/parser/src/passes/inference/calls.ts b/packages/parser/src/passes/inference/calls.ts index abebaed..0048e27 100644 --- a/packages/parser/src/passes/inference/calls.ts +++ b/packages/parser/src/passes/inference/calls.ts @@ -3,7 +3,7 @@ import { isToken } from '@getlang/ast' import { transform } from '@getlang/walker' import { LineageTracker } from '../lineage.js' -export function registerCalls(ast: Program, macros: string[] = []) { +export function registerCalls(ast: Program, macros: string[] = []): Program { const scope = new LineageTracker() function registerCall(node: Expr) { diff --git a/packages/parser/src/passes/inference/typeinfo.ts b/packages/parser/src/passes/inference/typeinfo.ts index 9d5baf0..4437139 100644 --- a/packages/parser/src/passes/inference/typeinfo.ts +++ b/packages/parser/src/passes/inference/typeinfo.ts @@ -267,7 +267,7 @@ export function resolveTypes(ast: Program, options: ResolveTypeOptions) { }, } - const program = transform(ast, { scope, ...visitor }) + const program: Program = transform(ast, { scope, ...visitor }) const returnType = ex?.typeInfo ?? { type: Type.Never } return { program, returnType: returnType } diff --git a/test/helpers.ts b/test/helpers.ts index f256463..7da58c0 100644 --- a/test/helpers.ts +++ b/test/helpers.ts @@ -1,6 +1,6 @@ import { expect } from 'bun:test' import { executeModule } from '@getlang/get' -import type { Hooks, Inputs, MaybePromise, ModifierHook } from '@getlang/lib' +import type { Hooks, Inputs, MaybePromise } from '@getlang/lib' import { invariant } from '@getlang/lib' import { ImportError } from '@getlang/lib/errors' import { desugar, parse, print } from '@getlang/parser' @@ -9,7 +9,6 @@ import './expect.js' type ExecuteOptions = Partial<{ fetch: Fetch - modifier: ModifierHook willThrow: boolean hooks: Hooks }> @@ -29,7 +28,7 @@ export async function execute( inputs?: Inputs, options: ExecuteOptions = {}, ): Promise { - const { fetch, modifier, willThrow } = options + const { fetch, willThrow } = options const normalized = typeof program === 'string' ? { Home: program } : program const modules: Record = {} for (const [name, source] of Object.entries(normalized)) { @@ -40,7 +39,6 @@ export async function execute( } const hooks: Hooks = { - modifier, import(module) { const src = modules[module] invariant(src, new ImportError(`Failed to import module: ${module}`)) diff --git a/test/hooks.spec.ts b/test/hooks.spec.ts index 24de948..b0e9bbe 100644 --- a/test/hooks.spec.ts +++ b/test/hooks.spec.ts @@ -39,7 +39,7 @@ describe('hook', () => { test('on slice', async () => { const slice = mock(() => 3) const result = await execute('extract `1 + 2`', {}, { hooks: { slice } }) - expect(slice).toHaveBeenCalledWith('return 1 + 2;;', undefined) + expect(slice).toHaveBeenCalledWith('return 1 + 2;;', {}) expect(result).toEqual(3) }) diff --git a/test/modifiers.spec.ts b/test/modifiers.spec.ts index 59193de..84e427b 100644 --- a/test/modifiers.spec.ts +++ b/test/modifiers.spec.ts @@ -1,5 +1,5 @@ import { describe, expect, test } from 'bun:test' -import type { Modifier } from '@getlang/lib' +import type { Modifier, ModifierHook } from '@getlang/lib' import { invariant } from '@getlang/lib' import { ValueTypeError } from '@getlang/lib/errors' import { execute as exec } from './helpers.js' @@ -7,18 +7,14 @@ import { execute as exec } from './helpers.js' function execute( source: string | Record, name: string, - modifier: Modifier, + fn: Modifier, + useContext?: boolean, ) { - return exec( - source, - {}, - { - modifier(mod) { - expect(mod).toEqual(name) - return { modifier } - }, - }, - ) + const modifier: ModifierHook = mod => { + expect(mod).toEqual(name) + return { modifier: fn, useContext } + } + return exec(source, {}, { hooks: { modifier } }) } describe('modifiers', () => { @@ -67,6 +63,7 @@ describe('modifiers', () => { expect(ctx).toEqual(4) return ctx + 10 }, + true, ) expect(result).toEqual(14) }) @@ -82,6 +79,7 @@ describe('modifiers', () => { expect(ctx).toEqual(4) return ctx + 10 }, + true, ) expect(result).toEqual(14) }) From e9df7dec6fc3f5424a680146d881938cea4a249a Mon Sep 17 00:00:00 2001 From: Matt Fysh Date: Tue, 16 Sep 2025 12:10:56 +1000 Subject: [PATCH 3/3] depwrangler --- .changeset/chilly-bobcats-notice.md | 7 +++ bun.lock | 66 ++++++++++++++--------------- package.json | 4 +- packages/get/package.json | 2 - 4 files changed, 41 insertions(+), 38 deletions(-) create mode 100644 .changeset/chilly-bobcats-notice.md diff --git a/.changeset/chilly-bobcats-notice.md b/.changeset/chilly-bobcats-notice.md new file mode 100644 index 0000000..decc629 --- /dev/null +++ b/.changeset/chilly-bobcats-notice.md @@ -0,0 +1,7 @@ +--- +"@getlang/parser": patch +"@getlang/get": patch +"@getlang/lib": patch +--- + +modifier flags: `useContext` and `materialize` diff --git a/bun.lock b/bun.lock index 0ec4fa0..15a9d51 100644 --- a/bun.lock +++ b/bun.lock @@ -4,10 +4,10 @@ "": { "name": "get", "devDependencies": { - "@biomejs/biome": "^2.2.3", + "@biomejs/biome": "^2.2.4", "@changesets/changelog-github": "^0.5.1", - "@changesets/cli": "^2.29.6", - "@types/bun": "^1.2.21", + "@changesets/cli": "^2.29.7", + "@types/bun": "^1.2.22", "knip": "^5.63.1", "sherif": "^1.6.1", "typescript": "^5.9.2", @@ -15,21 +15,19 @@ }, "packages/ast": { "name": "@getlang/ast", - "version": "0.0.1", + "version": "0.1.0", "dependencies": { "moo": "^0.5.2", }, }, "packages/get": { "name": "@getlang/get", - "version": "0.2.5", + "version": "0.3.0", "dependencies": { - "@getlang/ast": "workspace:^0.0.1", - "@getlang/lib": "workspace:^0.1.5", - "@getlang/parser": "workspace:^0.3.4", - "@getlang/walker": "workspace:^0.0.1", - "acorn": "^8.15.0", - "estree-toolkit": "^1.7.13", + "@getlang/ast": "workspace:^0.1.0", + "@getlang/lib": "workspace:^0.2.0", + "@getlang/parser": "workspace:^0.4.0", + "@getlang/walker": "workspace:^0.1.0", "lodash-es": "^4.17.21", }, "devDependencies": { @@ -38,9 +36,9 @@ }, "packages/lib": { "name": "@getlang/lib", - "version": "0.1.5", + "version": "0.2.0", "dependencies": { - "@getlang/ast": "workspace:^0.0.1", + "@getlang/ast": "workspace:^0.1.0", "@getlang/xpath": "0.0.35-0", "@types/esquery": "^1.5.4", "@types/lodash-es": "^4.17.12", @@ -61,16 +59,16 @@ }, "packages/parser": { "name": "@getlang/parser", - "version": "0.3.4", + "version": "0.4.0", "dependencies": { - "@getlang/ast": "workspace:^0.0.1", - "@getlang/lib": "workspace:^0.1.5", - "@getlang/walker": "workspace:^0.0.1", + "@getlang/ast": "workspace:^0.1.0", + "@getlang/lib": "workspace:^0.2.0", + "@getlang/walker": "workspace:^0.1.0", "@types/moo": "^0.5.10", "@types/nearley": "^2.11.5", "acorn": "^8.15.0", "estree-toolkit": "^1.7.13", - "globals": "^16.3.0", + "globals": "^16.4.0", "lodash-es": "^4.17.21", "moo": "^0.5.2", "nearley": "^2.20.1", @@ -82,9 +80,9 @@ }, "packages/walker": { "name": "@getlang/walker", - "version": "0.0.1", + "version": "0.1.0", "dependencies": { - "@getlang/ast": "workspace:^0.0.1", + "@getlang/ast": "workspace:^0.1.0", }, }, "test": { @@ -103,25 +101,25 @@ "packages": { "@babel/runtime": ["@babel/runtime@7.28.4", "", {}, "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ=="], - "@biomejs/biome": ["@biomejs/biome@2.2.3", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.2.3", "@biomejs/cli-darwin-x64": "2.2.3", "@biomejs/cli-linux-arm64": "2.2.3", "@biomejs/cli-linux-arm64-musl": "2.2.3", "@biomejs/cli-linux-x64": "2.2.3", "@biomejs/cli-linux-x64-musl": "2.2.3", "@biomejs/cli-win32-arm64": "2.2.3", "@biomejs/cli-win32-x64": "2.2.3" }, "bin": { "biome": "bin/biome" } }, "sha512-9w0uMTvPrIdvUrxazZ42Ib7t8Y2yoGLKLdNne93RLICmaHw7mcLv4PPb5LvZLJF3141gQHiCColOh/v6VWlWmg=="], + "@biomejs/biome": ["@biomejs/biome@2.2.4", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.2.4", "@biomejs/cli-darwin-x64": "2.2.4", "@biomejs/cli-linux-arm64": "2.2.4", "@biomejs/cli-linux-arm64-musl": "2.2.4", "@biomejs/cli-linux-x64": "2.2.4", "@biomejs/cli-linux-x64-musl": "2.2.4", "@biomejs/cli-win32-arm64": "2.2.4", "@biomejs/cli-win32-x64": "2.2.4" }, "bin": { "biome": "bin/biome" } }, "sha512-TBHU5bUy/Ok6m8c0y3pZiuO/BZoY/OcGxoLlrfQof5s8ISVwbVBdFINPQZyFfKwil8XibYWb7JMwnT8wT4WVPg=="], - "@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.2.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-OrqQVBpadB5eqzinXN4+Q6honBz+tTlKVCsbEuEpljK8ASSItzIRZUA02mTikl3H/1nO2BMPFiJ0nkEZNy3B1w=="], + "@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RJe2uiyaloN4hne4d2+qVj3d3gFJFbmrr5PYtkkjei1O9c+BjGXgpUPVbi8Pl8syumhzJjFsSIYkcLt2VlVLMA=="], - "@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.2.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-OCdBpb1TmyfsTgBAM1kPMXyYKTohQ48WpiN9tkt9xvU6gKVKHY4oVwteBebiOqyfyzCNaSiuKIPjmHjUZ2ZNMg=="], + "@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-cFsdB4ePanVWfTnPVaUX+yr8qV8ifxjBKMkZwN7gKb20qXPxd/PmwqUH8mY5wnM9+U0QwM76CxFyBRJhC9tQwg=="], - "@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.2.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-g/Uta2DqYpECxG+vUmTAmUKlVhnGEcY7DXWgKP8ruLRa8Si1QHsWknPY3B/wCo0KgYiFIOAZ9hjsHfNb9L85+g=="], + "@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-M/Iz48p4NAzMXOuH+tsn5BvG/Jb07KOMTdSVwJpicmhN309BeEyRyQX+n1XDF0JVSlu28+hiTQ2L4rZPvu7nMw=="], - "@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.2.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-q3w9jJ6JFPZPeqyvwwPeaiS/6NEszZ+pXKF+IczNo8Xj6fsii45a4gEEicKyKIytalV+s829ACZujQlXAiVLBQ=="], + "@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-7TNPkMQEWfjvJDaZRSkDCPT/2r5ESFPKx+TEev+I2BXDGIjfCZk2+b88FOhnJNHtksbOZv8ZWnxrA5gyTYhSsQ=="], - "@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.2.3", "", { "os": "linux", "cpu": "x64" }, "sha512-LEtyYL1fJsvw35CxrbQ0gZoxOG3oZsAjzfRdvRBRHxOpQ91Q5doRVjvWW/wepgSdgk5hlaNzfeqpyGmfSD0Eyw=="], + "@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-orr3nnf2Dpb2ssl6aihQtvcKtLySLta4E2UcXdp7+RTa7mfJjBgIsbS0B9GC8gVu0hjOu021aU8b3/I1tn+pVQ=="], - "@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.2.3", "", { "os": "linux", "cpu": "x64" }, "sha512-y76Dn4vkP1sMRGPFlNc+OTETBhGPJ90jY3il6jAfur8XWrYBQV3swZ1Jo0R2g+JpOeeoA0cOwM7mJG6svDz79w=="], + "@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-m41nFDS0ksXK2gwXL6W6yZTYPMH0LughqbsxInSKetoH6morVj43szqKx79Iudkp8WRT5SxSh7qVb8KCUiewGg=="], - "@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.2.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-Ms9zFYzjcJK7LV+AOMYnjN3pV3xL8Prxf9aWdDVL74onLn5kcvZ1ZMQswE5XHtnd/r/0bnUd928Rpbs14BzVmA=="], + "@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.2.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-NXnfTeKHDFUWfxAefa57DiGmu9VyKi0cDqFpdI+1hJWQjGJhJutHPX0b5m+eXvTKOaf+brU+P0JrQAZMb5yYaQ=="], - "@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.2.3", "", { "os": "win32", "cpu": "x64" }, "sha512-gvCpewE7mBwBIpqk1YrUqNR4mCiyJm6UI3YWQQXkedSSEwzRdodRpaKhbdbHw1/hmTWOVXQ+Eih5Qctf4TCVOQ=="], + "@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.2.4", "", { "os": "win32", "cpu": "x64" }, "sha512-3Y4V4zVRarVh/B/eSHczR4LYoSVyv3Dfuvm3cWs5w/HScccS0+Wt/lHOcDTRYeHjQmMYVC3rIRWqyN2EI52+zg=="], - "@changesets/apply-release-plan": ["@changesets/apply-release-plan@7.0.12", "", { "dependencies": { "@changesets/config": "^3.1.1", "@changesets/get-version-range-type": "^0.4.0", "@changesets/git": "^3.0.4", "@changesets/should-skip-package": "^0.1.2", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", "detect-indent": "^6.0.0", "fs-extra": "^7.0.1", "lodash.startcase": "^4.4.0", "outdent": "^0.5.0", "prettier": "^2.7.1", "resolve-from": "^5.0.0", "semver": "^7.5.3" } }, "sha512-EaET7As5CeuhTzvXTQCRZeBUcisoYPDDcXvgTE/2jmmypKp0RC7LxKj/yzqeh/1qFTZI7oDGFcL1PHRuQuketQ=="], + "@changesets/apply-release-plan": ["@changesets/apply-release-plan@7.0.13", "", { "dependencies": { "@changesets/config": "^3.1.1", "@changesets/get-version-range-type": "^0.4.0", "@changesets/git": "^3.0.4", "@changesets/should-skip-package": "^0.1.2", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", "detect-indent": "^6.0.0", "fs-extra": "^7.0.1", "lodash.startcase": "^4.4.0", "outdent": "^0.5.0", "prettier": "^2.7.1", "resolve-from": "^5.0.0", "semver": "^7.5.3" } }, "sha512-BIW7bofD2yAWoE8H4V40FikC+1nNFEKBisMECccS16W1rt6qqhNTBDmIw5HaqmMgtLNz9e7oiALiEUuKrQ4oHg=="], "@changesets/assemble-release-plan": ["@changesets/assemble-release-plan@6.0.9", "", { "dependencies": { "@changesets/errors": "^0.2.0", "@changesets/get-dependents-graph": "^2.1.3", "@changesets/should-skip-package": "^0.1.2", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", "semver": "^7.5.3" } }, "sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ=="], @@ -129,7 +127,7 @@ "@changesets/changelog-github": ["@changesets/changelog-github@0.5.1", "", { "dependencies": { "@changesets/get-github-info": "^0.6.0", "@changesets/types": "^6.1.0", "dotenv": "^8.1.0" } }, "sha512-BVuHtF+hrhUScSoHnJwTELB4/INQxVFc+P/Qdt20BLiBFIHFJDDUaGsZw+8fQeJTRP5hJZrzpt3oZWh0G19rAQ=="], - "@changesets/cli": ["@changesets/cli@2.29.6", "", { "dependencies": { "@changesets/apply-release-plan": "^7.0.12", "@changesets/assemble-release-plan": "^6.0.9", "@changesets/changelog-git": "^0.2.1", "@changesets/config": "^3.1.1", "@changesets/errors": "^0.2.0", "@changesets/get-dependents-graph": "^2.1.3", "@changesets/get-release-plan": "^4.0.13", "@changesets/git": "^3.0.4", "@changesets/logger": "^0.1.1", "@changesets/pre": "^2.0.2", "@changesets/read": "^0.6.5", "@changesets/should-skip-package": "^0.1.2", "@changesets/types": "^6.1.0", "@changesets/write": "^0.4.0", "@inquirer/external-editor": "^1.0.0", "@manypkg/get-packages": "^1.1.3", "ansi-colors": "^4.1.3", "ci-info": "^3.7.0", "enquirer": "^2.4.1", "fs-extra": "^7.0.1", "mri": "^1.2.0", "p-limit": "^2.2.0", "package-manager-detector": "^0.2.0", "picocolors": "^1.1.0", "resolve-from": "^5.0.0", "semver": "^7.5.3", "spawndamnit": "^3.0.1", "term-size": "^2.1.0" }, "bin": { "changeset": "bin.js" } }, "sha512-6qCcVsIG1KQLhpQ5zE8N0PckIx4+9QlHK3z6/lwKnw7Tir71Bjw8BeOZaxA/4Jt00pcgCnCSWZnyuZf5Il05QQ=="], + "@changesets/cli": ["@changesets/cli@2.29.7", "", { "dependencies": { "@changesets/apply-release-plan": "^7.0.13", "@changesets/assemble-release-plan": "^6.0.9", "@changesets/changelog-git": "^0.2.1", "@changesets/config": "^3.1.1", "@changesets/errors": "^0.2.0", "@changesets/get-dependents-graph": "^2.1.3", "@changesets/get-release-plan": "^4.0.13", "@changesets/git": "^3.0.4", "@changesets/logger": "^0.1.1", "@changesets/pre": "^2.0.2", "@changesets/read": "^0.6.5", "@changesets/should-skip-package": "^0.1.2", "@changesets/types": "^6.1.0", "@changesets/write": "^0.4.0", "@inquirer/external-editor": "^1.0.0", "@manypkg/get-packages": "^1.1.3", "ansi-colors": "^4.1.3", "ci-info": "^3.7.0", "enquirer": "^2.4.1", "fs-extra": "^7.0.1", "mri": "^1.2.0", "p-limit": "^2.2.0", "package-manager-detector": "^0.2.0", "picocolors": "^1.1.0", "resolve-from": "^5.0.0", "semver": "^7.5.3", "spawndamnit": "^3.0.1", "term-size": "^2.1.0" }, "bin": { "changeset": "bin.js" } }, "sha512-R7RqWoaksyyKXbKXBTbT4REdy22yH81mcFK6sWtqSanxUCbUi9Uf+6aqxZtDQouIqPdem2W56CdxXgsxdq7FLQ=="], "@changesets/config": ["@changesets/config@3.1.1", "", { "dependencies": { "@changesets/errors": "^0.2.0", "@changesets/get-dependents-graph": "^2.1.3", "@changesets/logger": "^0.1.1", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", "fs-extra": "^7.0.1", "micromatch": "^4.0.8" } }, "sha512-bd+3Ap2TKXxljCggI0mKPfzCQKeV/TU4yO2h2C6vAihIo8tzseAn2e7klSuiyYYXvgu53zMN1OeYMIQkaQoWnA=="], @@ -239,7 +237,7 @@ "@tybys/wasm-util": ["@tybys/wasm-util@0.10.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ=="], - "@types/bun": ["@types/bun@1.2.21", "", { "dependencies": { "bun-types": "1.2.21" } }, "sha512-NiDnvEqmbfQ6dmZ3EeUO577s4P5bf4HCTXtI6trMc6f6RzirY5IrF3aIookuSpyslFzrnvv2lmEWv5HyC1X79A=="], + "@types/bun": ["@types/bun@1.2.22", "", { "dependencies": { "bun-types": "1.2.22" } }, "sha512-5A/KrKos2ZcN0c6ljRSOa1fYIyCKhZfIVYeuyb4snnvomnpFqC0tTsEkdqNxbAgExV384OETQ//WAjl3XbYqQA=="], "@types/esquery": ["@types/esquery@1.5.4", "", { "dependencies": { "@types/estree": "*" } }, "sha512-yYO4Q8H+KJHKW1rEeSzHxcZi90durqYgWVfnh5K6ZADVBjBv2e1NEveYX5yT2bffgN7RqzH3k9930m+i2yBoMA=="], @@ -279,7 +277,7 @@ "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], - "bun-types": ["bun-types@1.2.21", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-sa2Tj77Ijc/NTLS0/Odjq/qngmEPZfbfnOERi0KRUYhT9R8M4VBioWVmMWE5GrYbKMc+5lVybXygLdibHaqVqw=="], + "bun-types": ["bun-types@1.2.22", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-hwaAu8tct/Zn6Zft4U9BsZcXkYomzpHJX28ofvx7k0Zz2HNz54n1n+tDgxoWFGB4PcFvJXJQloPhaV2eP3Q6EA=="], "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], @@ -351,7 +349,7 @@ "glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], - "globals": ["globals@16.3.0", "", {}, "sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ=="], + "globals": ["globals@16.4.0", "", {}, "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw=="], "globby": ["globby@11.1.0", "", { "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", "fast-glob": "^3.2.9", "ignore": "^5.2.0", "merge2": "^1.4.1", "slash": "^3.0.0" } }, "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g=="], diff --git a/package.json b/package.json index 96406bb..5358243 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "get", "license": "Apache-2.0", "private": true, - "packageManager": "bun@1.2.21", + "packageManager": "bun@1.2.22", "scripts": { "fmt": "biome check --write", "lint": "bun lint:check && bun lint:types && bun lint:unused && bun lint:repo", @@ -21,7 +21,7 @@ "@biomejs/biome": "^2.2.4", "@changesets/changelog-github": "^0.5.1", "@changesets/cli": "^2.29.7", - "@types/bun": "^1.2.21", + "@types/bun": "^1.2.22", "knip": "^5.63.1", "sherif": "^1.6.1", "typescript": "^5.9.2" diff --git a/packages/get/package.json b/packages/get/package.json index 27c14e5..a0a7246 100644 --- a/packages/get/package.json +++ b/packages/get/package.json @@ -21,8 +21,6 @@ "@getlang/lib": "workspace:^0.2.0", "@getlang/parser": "workspace:^0.4.0", "@getlang/walker": "workspace:^0.1.0", - "acorn": "^8.15.0", - "estree-toolkit": "^1.7.13", "lodash-es": "^4.17.21" }, "devDependencies": {