const GLSLLinker: {
loadModule:
(
code: string,
name?: string,
entry?: string,
compressed?: boolean,
) => ParsedModule<any>,
loadModuleWithCache:
(
code: string,
name?: string,
entry?: string,
cache?: ParsedModuleCache<any> | null,
) => ParsedModule<any>,
loadStaticModule:
(
code: string,
name: string,
entry?: string,
) => { name: string, code: string, hash: number, table: any },
transpileGLSL:
(
source: string,
resourcePath: string,
esModule?: boolean,
minify?: boolean,
) => string,
bindEntryPoint:
<T extends ParsedModule<any> | ParsedBundle<any>>(
bundle: T,
entry?: string,
) => T,
bundleToAttribute:
(
bundle: ShaderModule<any>,
name?: string,
) => UniformAttribute,
bundleToAttributes:
(
bundle: ShaderModule<any>,
) => UniformAttribute[],
glsl:
(
literals: TemplateStringsArray,
...tokens: string[],
) => ParsedModule<any>,
float: (x: number) => string | 0,
int: (x: number) => string,
uint: (x: number) => string,
defineConstants: (
defs: Record<string, ShaderDefine>,
) => string,
linkBundle:
(
source: ShaderModule<any>,
links?: Record<string, ParsedModule<any> | ParsedBundle<any> | null>,
defines?: Record<string, ShaderDefine>,
) => string,
linkModule:
(
source: ParsedModule<any>,
libraries?: Record<string, ShaderModule<any>>,
links?: Record<string, ParsedModule<any> | ParsedBundle<any> | null>,
defines?: Record<string, ShaderDefine>,
) => string,
linkCode:
(
code: string,
libraries?: Record<string, string>,
links?: Record<string, string | null>,
defines?: Record<string, ShaderDefine>,
cache?: ParsedModuleCache<any> | null,
) => string,
getPreamble: () => string,
setPreamble: (s: string) => string,
bindBundle:
(
subject: ShaderModule<any>,
links?: Record<string, ParsedModule<any> | ParsedBundle<any> | null> | null,
defines?: Record<string, ShaderDefine> | null,
) => ParsedBundle<any>,
bindModule:
(
subject: ShaderModule<any>,
links?: Record<string, ParsedModule<any> | ParsedBundle<any> | null> | null,
defines?: Record<string, ShaderDefine> | null,
) => ParsedBundle<any>,
bindingsToLinks:
(
bindings: ({
uniform: UniformAttribute,
storage?: StorageSource,
texture?: TextureSource,
lambda?:
LambdaSource<ShaderModule<{ modules?: ({ at: number, symbols: string[] } & { name: string, imports: ImportRef[] })[], declarations?: ({ at: number, symbols: string[] } & { func?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, parameters: string[] }, variable?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, locals: ({ name: string, expr: any })[] }, struct?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, struct: { members: ({ type: { name: string, qualifiers?: string[], members?: ({ })[] }, name: string })[] } }, identifiers?: string[], flags: enum { } })[], externals?: ({ at: number, symbols: string[] } & { func?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, parameters: string[] }, variable?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, locals: ({ name: string, expr: any })[] }, struct?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, struct: { members: ({ type: { name: string, qualifiers?: string[], members?: ({ })[] }, name: string })[] } }, identifiers?: string[], flags: enum { } })[], exports?: ({ at: number, symbols: string[] } & { func?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, parameters: string[] }, variable?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, locals: ({ name: string, expr: any })[] }, struct?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, struct: { members: ({ type: { name: string, qualifiers?: string[], members?: ({ })[] }, name: string })[] } }, identifiers?: string[], flags: enum { } })[], symbols?: string[], visibles?: string[], globals?: string[], linkable?: Record<string, true> }>>,
constant?: any,
})[],
) => Record<string,
| ParsedBundle<{ modules?: ({ at: number, symbols: string[] } & { name: string, imports: ImportRef[] })[], declarations?: ({ at: number, symbols: string[] } & { func?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, parameters: string[] }, variable?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, locals: ({ name: string, expr: any })[] }, struct?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, struct: { members: ({ type: { name: string, qualifiers?: string[], members?: ({ })[] }, name: string })[] } }, identifiers?: string[], flags: enum { } })[], externals?: ({ at: number, symbols: string[] } & { func?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, parameters: string[] }, variable?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, locals: ({ name: string, expr: any })[] }, struct?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, struct: { members: ({ type: { name: string, qualifiers?: string[], members?: ({ })[] }, name: string })[] } }, identifiers?: string[], flags: enum { } })[], exports?: ({ at: number, symbols: string[] } & { func?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, parameters: string[] }, variable?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, locals: ({ name: string, expr: any })[] }, struct?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, struct: { members: ({ type: { name: string, qualifiers?: string[], members?: ({ })[] }, name: string })[] } }, identifiers?: string[], flags: enum { } })[], symbols?: string[], visibles?: string[], globals?: string[], linkable?: Record<string, true> }> | ParsedModule<{ modules?: ({ at: number, symbols: string[] } & { name: string, imports: ImportRef[] })[], declarations?: ({ at: number, symbols: string[] } & { func?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, parameters: string[] }, variable?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, locals: ({ name: string, expr: any })[] }, struct?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, struct: { members: ({ type: { name: string, qualifiers?: string[], members?: ({ })[] }, name: string })[] } }, identifiers?: string[], flags: enum { } })[], externals?: ({ at: number, symbols: string[] } & { func?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, parameters: string[] }, variable?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, locals: ({ name: string, expr: any })[] }, struct?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, struct: { members: ({ type: { name: string, qualifiers?: string[], members?: ({ })[] }, name: string })[] } }, identifiers?: string[], flags: enum { } })[], exports?: ({ at: number, symbols: string[] } & { func?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, parameters: string[] }, variable?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, locals: ({ name: string, expr: any })[] }, struct?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, struct: { members: ({ type: { name: string, qualifiers?: string[], members?: ({ })[] }, name: string })[] } }, identifiers?: string[], flags: enum { } })[], symbols?: string[], visibles?: string[], globals?: string[], linkable?: Record<string, true> }>>,
bindingToModule:
(
binding: {
uniform: UniformAttribute,
storage?: StorageSource,
texture?: TextureSource,
lambda?:
LambdaSource<ShaderModule<{ modules?: ({ at: number, symbols: string[] } & { name: string, imports: ImportRef[] })[], declarations?: ({ at: number, symbols: string[] } & { func?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, parameters: string[] }, variable?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, locals: ({ name: string, expr: any })[] }, struct?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, struct: { members: ({ type: { name: string, qualifiers?: string[], members?: ({ })[] }, name: string })[] } }, identifiers?: string[], flags: enum { } })[], externals?: ({ at: number, symbols: string[] } & { func?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, parameters: string[] }, variable?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, locals: ({ name: string, expr: any })[] }, struct?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, struct: { members: ({ type: { name: string, qualifiers?: string[], members?: ({ })[] }, name: string })[] } }, identifiers?: string[], flags: enum { } })[], exports?: ({ at: number, symbols: string[] } & { func?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, parameters: string[] }, variable?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, locals: ({ name: string, expr: any })[] }, struct?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, struct: { members: ({ type: { name: string, qualifiers?: string[], members?: ({ })[] }, name: string })[] } }, identifiers?: string[], flags: enum { } })[], symbols?: string[], visibles?: string[], globals?: string[], linkable?: Record<string, true> }>>,
constant?: any,
},
) =>
| ParsedBundle<{ modules?: ({ at: number, symbols: string[] } & { name: string, imports: ImportRef[] })[], declarations?: ({ at: number, symbols: string[] } & { func?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, parameters: string[] }, variable?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, locals: ({ name: string, expr: any })[] }, struct?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, struct: { members: ({ type: { name: string, qualifiers?: string[], members?: ({ })[] }, name: string })[] } }, identifiers?: string[], flags: enum { } })[], externals?: ({ at: number, symbols: string[] } & { func?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, parameters: string[] }, variable?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, locals: ({ name: string, expr: any })[] }, struct?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, struct: { members: ({ type: { name: string, qualifiers?: string[], members?: ({ })[] }, name: string })[] } }, identifiers?: string[], flags: enum { } })[], exports?: ({ at: number, symbols: string[] } & { func?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, parameters: string[] }, variable?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, locals: ({ name: string, expr: any })[] }, struct?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, struct: { members: ({ type: { name: string, qualifiers?: string[], members?: ({ })[] }, name: string })[] } }, identifiers?: string[], flags: enum { } })[], symbols?: string[], visibles?: string[], globals?: string[], linkable?: Record<string, true> }>
| ParsedModule<{ modules?: ({ at: number, symbols: string[] } & { name: string, imports: ImportRef[] })[], declarations?: ({ at: number, symbols: string[] } & { func?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, parameters: string[] }, variable?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, locals: ({ name: string, expr: any })[] }, struct?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, struct: { members: ({ type: { name: string, qualifiers?: string[], members?: ({ })[] }, name: string })[] } }, identifiers?: string[], flags: enum { } })[], externals?: ({ at: number, symbols: string[] } & { func?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, parameters: string[] }, variable?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, locals: ({ name: string, expr: any })[] }, struct?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, struct: { members: ({ type: { name: string, qualifiers?: string[], members?: ({ })[] }, name: string })[] } }, identifiers?: string[], flags: enum { } })[], exports?: ({ at: number, symbols: string[] } & { func?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, parameters: string[] }, variable?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, locals: ({ name: string, expr: any })[] }, struct?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, struct: { members: ({ type: { name: string, qualifiers?: string[], members?: ({ })[] }, name: string })[] } }, identifiers?: string[], flags: enum { } })[], symbols?: string[], visibles?: string[], globals?: string[], linkable?: Record<string, true> }>,
sourceToModule:
<T>(
source: any,
) =>
| ParsedBundle<{ modules?: ({ at: number, symbols: string[] } & { name: string, imports: ImportRef[] })[], declarations?: ({ at: number, symbols: string[] } & { func?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, parameters: string[] }, variable?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, locals: ({ name: string, expr: any })[] }, struct?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, struct: { members: ({ type: { name: string, qualifiers?: string[], members?: ({ })[] }, name: string })[] } }, identifiers?: string[], flags: enum { } })[], externals?: ({ at: number, symbols: string[] } & { func?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, parameters: string[] }, variable?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, locals: ({ name: string, expr: any })[] }, struct?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, struct: { members: ({ type: { name: string, qualifiers?: string[], members?: ({ })[] }, name: string })[] } }, identifiers?: string[], flags: enum { } })[], exports?: ({ at: number, symbols: string[] } & { func?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, parameters: string[] }, variable?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, locals: ({ name: string, expr: any })[] }, struct?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, struct: { members: ({ type: { name: string, qualifiers?: string[], members?: ({ })[] }, name: string })[] } }, identifiers?: string[], flags: enum { } })[], symbols?: string[], visibles?: string[], globals?: string[], linkable?: Record<string, true> }>
| ParsedModule<{ modules?: ({ at: number, symbols: string[] } & { name: string, imports: ImportRef[] })[], declarations?: ({ at: number, symbols: string[] } & { func?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, parameters: string[] }, variable?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, locals: ({ name: string, expr: any })[] }, struct?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, struct: { members: ({ type: { name: string, qualifiers?: string[], members?: ({ })[] }, name: string })[] } }, identifiers?: string[], flags: enum { } })[], externals?: ({ at: number, symbols: string[] } & { func?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, parameters: string[] }, variable?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, locals: ({ name: string, expr: any })[] }, struct?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, struct: { members: ({ type: { name: string, qualifiers?: string[], members?: ({ })[] }, name: string })[] } }, identifiers?: string[], flags: enum { } })[], exports?: ({ at: number, symbols: string[] } & { func?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, parameters: string[] }, variable?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, locals: ({ name: string, expr: any })[] }, struct?: { type: { name: string, qualifiers?: string[], members?: ({ type: { }, name: string })[] }, name: string, struct: { members: ({ type: { name: string, qualifiers?: string[], members?: ({ })[] }, name: string })[] } }, identifiers?: string[], flags: enum { } })[], symbols?: string[], visibles?: string[], globals?: string[], linkable?: Record<string, true> }>
| null,
resolveBindings: any,
castTo:
(
source: ShaderModule<any>,
type: string,
swizzle: string | { basis: string, signs?: string, gain?: number },
) => ParsedBundle<any>,
chainTo:
(
from: ShaderModule<any>,
to: ShaderModule<any>,
) => ParsedBundle<any>,
diffBy:
(
source: ShaderModule<any>,
offset: number | string | (string | number | null)[] | null,
size:
| ShaderModule<any>
| (ParsedModule<any> | ParsedBundle<any> | null)[]
| null,
) => ParsedBundle<any>,
swizzleTo:
(
from: string,
to: string,
swizzle: string | { basis: string, signs?: string, gain?: number },
) => ParsedBundle<any>,
makeASTParser:
(
code: string,
tree: Tree,
) => {
getImports:
() => ({
at: number,
symbols: string[],
} & {
name: string,
imports: ImportRef[],
})[],
getFunctions:
() => ({
at: number,
symbols: string[],
} & {
func: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
parameters: string[],
},
identifiers?: string[],
flags: enum {
},
})[],
getDeclarations:
() => ({
at: number,
symbols: string[],
} & {
func?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
parameters: string[],
},
variable?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
locals: ({ name: string, expr: any })[],
},
struct?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
struct: {
members:
({
type: {
name: string,
qualifiers?: string[],
members?: ({ })[],
},
name: string,
})[],
},
},
identifiers?: string[],
flags: enum {
},
})[],
getSymbolTable:
() => {
modules?:
({
at: number,
symbols: string[],
} & {
name: string,
imports: ImportRef[],
})[],
declarations?:
({
at: number,
symbols: string[],
} & {
func?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
parameters: string[],
},
variable?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
locals: ({ name: string, expr: any })[],
},
struct?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
struct: {
members:
({
type: {
name: string,
qualifiers?: string[],
members?: ({ })[],
},
name: string,
})[],
},
},
identifiers?: string[],
flags: enum {
},
})[],
externals?:
({
at: number,
symbols: string[],
} & {
func?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
parameters: string[],
},
variable?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
locals: ({ name: string, expr: any })[],
},
struct?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
struct: {
members:
({
type: {
name: string,
qualifiers?: string[],
members?: ({ })[],
},
name: string,
})[],
},
},
identifiers?: string[],
flags: enum {
},
})[],
exports?:
({
at: number,
symbols: string[],
} & {
func?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
parameters: string[],
},
variable?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
locals: ({ name: string, expr: any })[],
},
struct?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
struct: {
members:
({
type: {
name: string,
qualifiers?: string[],
members?: ({ })[],
},
name: string,
})[],
},
},
identifiers?: string[],
flags: enum {
},
})[],
symbols?: string[],
visibles?: string[],
globals?: string[],
linkable?: Record<string, true>,
},
getShakeTable:
(
table?: {
modules?:
({
at: number,
symbols: string[],
} & {
name: string,
imports: ImportRef[],
})[],
declarations?:
({
at: number,
symbols: string[],
} & {
func?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
parameters: string[],
},
variable?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
locals: ({ name: string, expr: any })[],
},
struct?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
struct: {
members:
({
type: {
name: string,
qualifiers?: string[],
members?: ({ })[],
},
name: string,
})[],
},
},
identifiers?: string[],
flags: enum {
},
})[],
externals?:
({
at: number,
symbols: string[],
} & {
func?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
parameters: string[],
},
variable?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
locals: ({ name: string, expr: any })[],
},
struct?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
struct: {
members:
({
type: {
name: string,
qualifiers?: string[],
members?: ({ })[],
},
name: string,
})[],
},
},
identifiers?: string[],
flags: enum {
},
})[],
exports?:
({
at: number,
symbols: string[],
} & {
func?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
parameters: string[],
},
variable?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
locals: ({ name: string, expr: any })[],
},
struct?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
struct: {
members:
({
type: {
name: string,
qualifiers?: string[],
members?: ({ })[],
},
name: string,
})[],
},
},
identifiers?: string[],
flags: enum {
},
})[],
symbols?: string[],
visibles?: string[],
globals?: string[],
linkable?: Record<string, true>,
},
) => ShakeTable | undefined,
},
compressAST:
(
_: string,
tree: Tree,
symbols?: string[],
) => CompressedNode[],
decompressAST:
(
nodes: CompressedNode[],
symbols?: string[],
) => Tree,
rewriteUsingAST:
(
code: string,
tree: Tree,
rename: Map<string, string>,
shake?: number[],
) => string,
makeModuleCache:
(
options?: Record<string, any>,
) => LRUCache<number,
{ name: string, code: string, hash: number, table: {
modules?:
({
at: number,
symbols: string[],
} & {
name: string,
imports: ImportRef[],
})[],
declarations?:
({
at: number,
symbols: string[],
} & {
func?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
parameters: string[],
},
variable?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
locals: ({ name: string, expr: any })[],
},
struct?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
struct: {
members:
({
type: {
name: string,
qualifiers?: string[],
members?: ({ })[],
},
name: string,
})[],
},
},
identifiers?: string[],
flags: enum {
},
})[],
externals?:
({
at: number,
symbols: string[],
} & {
func?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
parameters: string[],
},
variable?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
locals: ({ name: string, expr: any })[],
},
struct?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
struct: {
members:
({
type: {
name: string,
qualifiers?: string[],
members?: ({ })[],
},
name: string,
})[],
},
},
identifiers?: string[],
flags: enum {
},
})[],
exports?:
({
at: number,
symbols: string[],
} & {
func?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
parameters: string[],
},
variable?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
locals: ({ name: string, expr: any })[],
},
struct?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
struct: {
members:
({
type: {
name: string,
qualifiers?: string[],
members?: ({ })[],
},
name: string,
})[],
},
},
identifiers?: string[],
flags: enum {
},
})[],
symbols?: string[],
visibles?: string[],
globals?: string[],
linkable?: Record<string, true>,
}, tree?: Tree, shake?: ShakeTable, virtual?: VirtualTable<{ modules?: ({
at: number,
symbols: string[],
} & {
name: string,
imports: ImportRef[],
})[], declarations?: ({
at: number,
symbols: string[],
} & {
func?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
parameters: string[],
},
variable?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
locals: ({ name: string, expr: any })[],
},
struct?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
struct: {
members:
({
type: {
name: string,
qualifiers?: string[],
members?: ({ })[],
},
name: string,
})[],
},
},
identifiers?: string[],
flags: enum {
},
})[], externals?: ({
at: number,
symbols: string[],
} & {
func?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
parameters: string[],
},
variable?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
locals: ({ name: string, expr: any })[],
},
struct?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
struct: {
members:
({
type: {
name: string,
qualifiers?: string[],
members?: ({ })[],
},
name: string,
})[],
},
},
identifiers?: string[],
flags: enum {
},
})[], exports?: ({
at: number,
symbols: string[],
} & {
func?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
parameters: string[],
},
variable?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
locals: ({ name: string, expr: any })[],
},
struct?: {
type: {
name: string,
qualifiers?: string[],
members?: ({ type: {
}, name: string })[],
},
name: string,
struct: {
members:
({
type: {
name: string,
qualifiers?: string[],
members?: ({ })[],
},
name: string,
})[],
},
},
identifiers?: string[],
flags: enum {
},
})[], symbols?: string[], visibles?: string[], globals?: string[], linkable?: Record<string, true> }>, entry?: string, key?: number }>,
getBundleEntry: (
bundle: ShaderModule<any>,
) => string | undefined,
getBundleHash: (
bundle: ShaderModule<any>,
) => number,
getBundleKey: (
bundle: ShaderModule<any>,
) => number,
parser: LRParser,
}
packages / shader / src / index.ts