@ibyar/expressions 1.0.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -1
- package/api/abstract.js.map +1 -1
- package/api/class/class.js +143 -93
- package/api/class/class.js.map +1 -1
- package/api/class/decorator.js +8 -3
- package/api/class/decorator.js.map +1 -1
- package/api/computing/call.js +8 -3
- package/api/computing/call.js.map +1 -1
- package/api/computing/debugger.js +8 -3
- package/api/computing/debugger.js.map +1 -1
- package/api/computing/new.js +8 -3
- package/api/computing/new.js.map +1 -1
- package/api/computing/rest.js +8 -3
- package/api/computing/rest.js.map +1 -1
- package/api/computing/return.js +8 -3
- package/api/computing/return.js.map +1 -1
- package/api/computing/spread.js +8 -3
- package/api/computing/spread.js.map +1 -1
- package/api/computing/throw.js +38 -23
- package/api/computing/throw.js.map +1 -1
- package/api/computing/yield.js +8 -3
- package/api/computing/yield.js.map +1 -1
- package/api/definition/array.js +23 -13
- package/api/definition/array.js.map +1 -1
- package/api/definition/bind.js +8 -3
- package/api/definition/bind.js.map +1 -1
- package/api/definition/comment.js +8 -3
- package/api/definition/comment.js.map +1 -1
- package/api/definition/function.js +53 -33
- package/api/definition/function.js.map +1 -1
- package/api/definition/member.js +8 -3
- package/api/definition/member.js.map +1 -1
- package/api/definition/object.js +38 -23
- package/api/definition/object.js.map +1 -1
- package/api/definition/statement.js +8 -3
- package/api/definition/statement.js.map +1 -1
- package/api/definition/values.js +68 -43
- package/api/definition/values.js.map +1 -1
- package/api/deserialize/deserialize.js.map +1 -1
- package/api/expression.d.ts +3 -0
- package/api/expression.d.ts.map +1 -1
- package/api/expression.js.map +1 -1
- package/api/module/common.js +8 -3
- package/api/module/common.js.map +1 -1
- package/api/module/export.js +53 -33
- package/api/module/export.js.map +1 -1
- package/api/module/import.js +68 -43
- package/api/module/import.js.map +1 -1
- package/api/operators/assignment.js +6 -2
- package/api/operators/assignment.js.map +1 -1
- package/api/operators/await.js +8 -3
- package/api/operators/await.js.map +1 -1
- package/api/operators/binary.js +6 -2
- package/api/operators/binary.js.map +1 -1
- package/api/operators/chaining.js +8 -3
- package/api/operators/chaining.js.map +1 -1
- package/api/operators/comma.js +8 -3
- package/api/operators/comma.js.map +1 -1
- package/api/operators/grouping.js +8 -3
- package/api/operators/grouping.js.map +1 -1
- package/api/operators/logical.js +6 -2
- package/api/operators/logical.js.map +1 -1
- package/api/operators/pipeline.js +8 -3
- package/api/operators/pipeline.js.map +1 -1
- package/api/operators/ternary.js +8 -3
- package/api/operators/ternary.js.map +1 -1
- package/api/operators/unary.js +6 -2
- package/api/operators/unary.js.map +1 -1
- package/api/operators/update.js +6 -2
- package/api/operators/update.js.map +1 -1
- package/api/program.js +8 -3
- package/api/program.js.map +1 -1
- package/api/statement/control/block.js +8 -3
- package/api/statement/control/block.js.map +1 -1
- package/api/statement/control/empty.js +8 -3
- package/api/statement/control/empty.js.map +1 -1
- package/api/statement/control/if.js +8 -3
- package/api/statement/control/if.js.map +1 -1
- package/api/statement/control/switch.js +38 -23
- package/api/statement/control/switch.js.map +1 -1
- package/api/statement/control/terminate.js +38 -23
- package/api/statement/control/terminate.js.map +1 -1
- package/api/statement/control/with.js +8 -3
- package/api/statement/control/with.js.map +1 -1
- package/api/statement/declarations/declares.js +23 -13
- package/api/statement/declarations/declares.js.map +1 -1
- package/api/statement/iterations/for.js +53 -33
- package/api/statement/iterations/for.js.map +1 -1
- package/api/statement/iterations/while.js +23 -13
- package/api/statement/iterations/while.js.map +1 -1
- package/bin/cli.d.ts +3 -0
- package/bin/cli.d.ts.map +1 -0
- package/bin/cli.js +73 -0
- package/bin/cli.js.map +1 -0
- package/package.json +8 -5
- package/scope/builder.d.ts +27 -0
- package/scope/builder.d.ts.map +1 -0
- package/scope/builder.js +73 -0
- package/scope/builder.js.map +1 -0
- package/scope/event.js.map +1 -1
- package/scope/finalizer.js.map +1 -1
- package/scope/index.d.ts +1 -0
- package/scope/index.d.ts.map +1 -1
- package/scope/index.js +1 -0
- package/scope/index.js.map +1 -1
- package/scope/pool.js.map +1 -1
- package/scope/proxy.js.map +1 -1
- package/scope/scope.d.ts.map +1 -1
- package/scope/scope.js +4 -3
- package/scope/scope.js.map +1 -1
- package/scope/signal.d.ts +75 -0
- package/scope/signal.d.ts.map +1 -0
- package/scope/signal.js +226 -0
- package/scope/signal.js.map +1 -0
- package/scope/stack.d.ts +1 -1
- package/scope/stack.d.ts.map +1 -1
- package/scope/stack.js +1 -1
- package/scope/stack.js.map +1 -1
- package/scope/variable.d.ts +1 -0
- package/scope/variable.d.ts.map +1 -0
- package/scope/variable.js +2 -0
- package/scope/variable.js.map +1 -0
- package/scope/variables.d.ts +66 -0
- package/scope/variables.d.ts.map +1 -0
- package/scope/variables.js +214 -0
- package/scope/variables.js.map +1 -0
- package/v8/enums.d.ts +5 -5
- package/v8/enums.d.ts.map +1 -1
- package/v8/enums.js +2 -4
- package/v8/enums.js.map +1 -1
- package/v8/factory.js.map +1 -1
- package/v8/inline.js.map +1 -1
- package/v8/parser.js.map +1 -1
- package/v8/stream.js +1 -2
- package/v8/stream.js.map +1 -1
- package/v8/token.js +1 -2
- package/v8/token.js.map +1 -1
- package/visit/visitor.js.map +1 -1
- package/v8/nodes.d.ts +0 -0
- package/v8/nodes.js +0 -2
- package/v8/nodes.js.map +0 -1
package/scope/stack.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack.d.ts","sourceRoot":"","sources":["../../../src/expressions/scope/stack.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"stack.d.ts","sourceRoot":"","sources":["../../../src/expressions/scope/stack.ts"],"names":[],"mappings":"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"}
|
package/scope/stack.js
CHANGED
package/scope/stack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack.js","sourceRoot":"","sources":["../../../src/expressions/scope/stack.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DeclarationExpression } from '../api/expression.js';\nimport { LanguageMode } from '../v8/language.js';\nimport { JavaScriptParser } from '../v8/parser.js';\nimport { finalizerRegister } from './finalizer.js';\nimport {\n\tModuleContext, ModuleImport, ModuleScope, ReactiveScope,\n\tReactiveScopeControl, Scope, Context, WebModuleScope\n} from './scope.js';\n\n\nexport interface AwaitPromiseInfo {\n\tpromise: Promise<any>;\n\tnode: DeclarationExpression;\n\n\tdeclareVariable: boolean;\n}\n\nexport interface AsyncIterableInfo {\n\titerable: AsyncIterable<any>;\n\tforAwaitBody: (iterator: any) => any;\n}\n\nexport interface Stack {\n\t/**\n\t * a list of promises to resolve in an 'async' scope as 'async function'\n\t */\n\tawaitPromise: Array<AwaitPromiseInfo>;\n\n\t/**\n\t * resolve await promise in 'await for in' scope\n\t */\n\tforAwaitAsyncIterable?: AsyncIterableInfo;\n\n\t/**\n\t * is this stack has a propertyKey\n\t * @param propertyKey \n\t */\n\thas(propertyKey: PropertyKey): boolean;\n\n\t/**\n\t * get the first value for provided property key,\n\t * \n\t * will search current stack in all scope till find the first key, else undefined\n\t * @param propertyKey \n\t */\n\tget(propertyKey: PropertyKey): any;\n\n\t/**\n\t * set the value of `propertyKey` in its context provider with `value`.\n\t * else define it in the first scope 'local scope'\n\t * @param propertyKey \n\t * @param value \n\t * @param receiver \n\t */\n\tset(propertyKey: PropertyKey, value: any, receiver?: any): boolean;\n\n\t/**\n\t * declare variable at last scope in the stack,\n\t * \n\t * @param propertyKey the name of property mey be string | number | symbol, \n\t * @param propertyValue if not exist will be initialize with 'undefined' value\n\t */\n\tdeclareVariable(propertyKey: PropertyKey, propertyValue?: any): any;\n\n\n\t/**\n\t * get context object of this provider,\n\t * search for the first context object that has `propertyKey`.\n\t * \n\t * search for the first context that have property key,\n\t * if not found will return the stack local scop as a default value\n\t * @param propertyKey the property key\n\t */\n\tfindScope<T extends Context>(propertyKey: PropertyKey): Scope<T>;\n\n\tresolveAwait(value: AwaitPromiseInfo): void;\n\n\t/**\n\t * get a reference to the last scope in this stack\n\t */\n\tlastScope<T extends Context>(): Scope<T>;\n\n\t/**\n\t * clear every thing after this scope, and even this scope\n\t * @param scope \n\t */\n\tclearTo<T extends Context>(scope: Scope<T>): boolean;\n\n\t/**\n\t * clear every thing after this scope, but not this scope\n\t * @param scope \n\t */\n\tclearTill<T extends Context>(scope: Scope<T>): boolean;\n\n\tpopScope<T extends Context>(): Scope<T>;\n\n\tremoveScope<T extends Context>(scope: Scope<T>): void;\n\n\tpushScope<T extends Context>(scope: Scope<T>): void;\n\n\tpushBlockScope<T extends Context>(): Scope<T>;\n\n\tpushBlockScopeFor<T extends Context>(context: T): Scope<T>;\n\n\tpushReactiveScope<T extends Context>(): ReactiveScope<T>;\n\n\tpushReactiveScopeFor<T extends Context>(context: T): ReactiveScope<T>;\n\n\t/**\n\t * create new stack instance with the same reference to the current scope array\n\t */\n\tcopyStack(): Stack;\n\n\t/**\n\t * used when want to update ui-view like, you want to replace an array with another \n\t * without reflect changes on view until reattached again.\n\t */\n\tdetach(): void;\n\n\t/**\n\t * apply all the not emitted changes, and continue emit in time.\n\t */\n\treattach(): void;\n\n\t/**\n\t * import module scope from another stack, by the help of ModuleScopeResolver.\n\t * \n\t * used with import statement\n\t */\n\timportModule(source: string, importCallOptions?: ImportCallOptions): ModuleScope;\n\n\t/**\n\t * get the current module for this stack.\n\t * \n\t * used with export statement\n\t */\n\tgetModule(): ModuleScope | undefined;\n\n\t/**\n\t * register action to do on destroy this stack\n\t */\n\tonDestroy(action: () => void): void;\n}\n\nexport class Stack implements Stack {\n\tstatic for(...contexts: Scope<Context>[]): Stack {\n\t\tif (contexts.length === 0) {\n\t\t\treturn new Stack();\n\t\t}\n\t\treturn new Stack(contexts.map(context => new Scope<Context>(context)));\n\t}\n\tstatic forScopes(...scopes: Scope<Context>[]): Stack {\n\t\tif (scopes.length === 0) {\n\t\t\tscopes.push(Scope.blockScope());\n\t\t}\n\t\treturn new Stack(scopes);\n\t}\n\tstatic moduleScope(resolver: ModuleScopeResolver, moduleSource: string, ...globalScopes: Scope<Context>[]) {\n\t\treturn new Stack(globalScopes, resolver, moduleSource);\n\t}\n\tawaitPromise: AwaitPromiseInfo[] = [];\n\tforAwaitAsyncIterable?: AsyncIterableInfo | undefined;\n\n\tprotected readonly stack: Array<Scope<any>>;\n\tprotected readonly moduleScope?: ModuleScope;\n\tprotected readonly moduleSource?: string;\n\tprotected readonly resolver?: ModuleScopeResolver;\n\n\tprotected readonly onDestroyActions: (() => void)[] = [];\n\n\tconstructor();\n\tconstructor(globalScope: Scope<Context>);\n\tconstructor(globalScope: Scope<Context>, resolver: ModuleScopeResolver, moduleSource: string);\n\n\tconstructor(stack: Array<Scope<Context>>);\n\tconstructor(stack: Array<Scope<Context>>, resolver: ModuleScopeResolver, moduleSource: string);\n\n\tconstructor(stack: Stack);\n\tconstructor(stack: Stack, resolver: ModuleScopeResolver, moduleSource: string);\n\n\tconstructor(globals?: Stack | Array<Scope<Context>> | Scope<Context>, resolver?: ModuleScopeResolver, moduleSource?: string) {\n\t\tif (Array.isArray(globals)) {\n\t\t\tthis.stack = globals.slice();\n\t\t} else if (globals instanceof Stack) {\n\t\t\tthis.stack = globals.stack.slice();\n\t\t} else if (typeof globals == 'object') {\n\t\t\tthis.stack = [globals];\n\t\t} else {\n\t\t\tthis.stack = [];\n\t\t}\n\t\tif (resolver && moduleSource) {\n\t\t\tthis.resolver = resolver;\n\t\t\tthis.moduleSource = moduleSource;\n\t\t\t// init module scope for import and export\n\t\t\tthis.moduleScope = new ModuleScope(this.initModuleContext());\n\t\t\tthis.pushScope(this.moduleScope);\n\t\t\t// for the rest of module body\n\t\t\tthis.pushReactiveScope();\n\t\t} else {\n\t\t\t// not a module scope\n\t\t\tthis.pushBlockScope();\n\t\t}\n\t\tfinalizerRegister(this, this.onDestroyActions, this);\n\t}\n\tprivate initModuleContext(): ModuleContext {\n\t\tconst importFunc = (path: string) => {\n\t\t\tconst module = this.importModule(path);\n\t\t\tif (module instanceof WebModuleScope) {\n\t\t\t\treturn module.resolveImport();\n\t\t\t}\n\t\t\treturn Promise.resolve(module.getContext());\n\t\t};\n\t\timportFunc.meta = {\n\t\t\turl: createRootURL(this.moduleSource!),\n\t\t\tresolve: (specified: string, parent?: string | URL): Promise<string> => {\n\t\t\t\treturn Promise.resolve(this.resolver!.resolveURL(specified, parent ?? importFunc.meta.url));\n\t\t\t}\n\t\t};\n\t\tconst im: ModuleImport & ((path: string) => Promise<any>) = importFunc as any;\n\t\treturn { import: im };\n\t}\n\thas(propertyKey: PropertyKey): boolean {\n\t\treturn this.stack.find(context => context.has(propertyKey)) ? true : false;\n\t}\n\tget(propertyKey: PropertyKey) {\n\t\treturn this.findScope<Context>(propertyKey).get(propertyKey);\n\t}\n\tset(propertyKey: PropertyKey, value: any, receiver?: any): boolean {\n\t\treturn this.findScope<Context>(propertyKey).set(propertyKey, value, receiver);\n\t}\n\tdeclareVariable(propertyKey: PropertyKey, propertyValue?: any) {\n\t\treturn this.lastScope<Context>().set(propertyKey, propertyValue);\n\t}\n\tfindScope<T extends Context>(propertyKey: PropertyKey): Scope<T> {\n\t\tlet lastIndex = this.stack.length;\n\t\twhile (lastIndex--) {\n\t\t\tconst scope = this.stack[lastIndex];\n\t\t\tif (scope.has(propertyKey)) {\n\t\t\t\treturn scope;\n\t\t\t}\n\t\t}\n\t\treturn this.lastScope();\n\t}\n\tresolveAwait(value: AwaitPromiseInfo): void {\n\t\tthis.awaitPromise.push(value);\n\t}\n\tpopScope<T extends Context>(): Scope<T> {\n\t\treturn this.stack.pop()!;\n\t}\n\tremoveScope<T extends Context>(scope: Scope<T>): void {\n\t\tconst index = this.stack.lastIndexOf(scope);\n\t\tthis.stack.splice(index, 1);\n\t}\n\tpushScope<T extends Context>(scope: Scope<T>): void {\n\t\tthis.stack.push(scope);\n\t}\n\tpushBlockScope<T extends Context>(propertyKeys?: (keyof T)[]): Scope<T> {\n\t\tconst scope = Scope.blockScope<T>(propertyKeys);\n\t\tthis.stack.push(scope);\n\t\treturn scope;\n\t}\n\tpushBlockScopeFor<T extends Context>(context: T, propertyKeys?: (keyof T)[]): Scope<T> {\n\t\tconst scope = Scope.for<T>(context, propertyKeys);\n\t\tthis.stack.push(scope);\n\t\treturn scope;\n\t}\n\tpushReactiveScope<T extends Context>(propertyKeys?: (keyof T)[]): ReactiveScope<T> {\n\t\tconst scope = ReactiveScope.blockScope<T>(propertyKeys);\n\t\tthis.stack.push(scope);\n\t\treturn scope;\n\t}\n\tpushReactiveScopeFor<T extends Context>(context: T, propertyKeys?: (keyof T)[]): ReactiveScope<T> {\n\t\tconst scope = ReactiveScope.for(context, propertyKeys);\n\t\tthis.stack.push(scope);\n\t\treturn scope;\n\t}\n\tlastScope<T extends Context>(): Scope<T> {\n\t\treturn this.stack[this.stack.length - 1];\n\t}\n\tclearTo<T extends Context>(scope: Scope<T>): boolean {\n\t\tconst index = this.stack.lastIndexOf(scope);\n\t\tif (index === -1) {\n\t\t\treturn false;\n\t\t}\n\t\tthis.stack.splice(index);\n\t\treturn true;\n\t}\n\tclearTill<T extends Context>(scope: Scope<T>): boolean {\n\t\tconst index = this.stack.lastIndexOf(scope);\n\t\tif (index === -1) {\n\t\t\treturn false;\n\t\t}\n\t\tthis.stack.splice(index + 1);\n\t\treturn true;\n\t}\n\tcopyStack(): Stack {\n\t\treturn new Stack(this.stack.slice(), this.resolver!, this.moduleSource!);\n\t}\n\tdetach(): void {\n\t\tthis.getReactiveScopeControls().forEach(scope => scope.detach());\n\t}\n\treattach(): void {\n\t\tthis.getReactiveScopeControls().forEach(scope => scope.reattach());\n\t}\n\tdetectChanges() {\n\t\tthis.getReactiveScope().forEach(scope => scope.detectChanges());\n\t}\n\tprivate getReactiveScopeControls(): ReactiveScopeControl<any>[] {\n\t\treturn this.stack.filter(scope => scope instanceof ReactiveScopeControl) as ReactiveScopeControl<any>[];\n\t}\n\tprivate getReactiveScope(): ReactiveScope<any>[] {\n\t\treturn this.stack.filter(scope => scope instanceof ReactiveScope) as ReactiveScope<any>[];\n\t}\n\timportModule(source: string, importCallOptions?: ImportCallOptions): ModuleScope {\n\t\tif (!this.resolver || !this.moduleScope) {\n\t\t\t// should o the parse and import the module\n\t\t\tthrow new Error('Module Resolver is undefined');\n\t\t}\n\t\treturn this.resolver.resolve(source, this.moduleScope, importCallOptions);\n\t}\n\tgetModule(): ModuleScope | undefined {\n\t\treturn this.moduleScope;\n\t}\n\n\tonDestroy(action: () => void): void {\n\t\tthis.onDestroyActions.push(action);\n\t}\n}\n\n\nexport interface ModuleScopeResolver {\n\tresolve(source: string, moduleScope: ModuleScope, importCallOptions?: ImportCallOptions): ModuleScope;\n\tresolveURL(specified: string, parent: string | URL): string;\n}\n\nconst ROOT_URL = 'https://root';\nexport function createRootURL(source: string): URL {\n\treturn new URL(source, ROOT_URL);\n}\n\n\nexport interface ResolverConfig {\n\t/**\n\t * allow import modules from external http(s) module\n\t */\n\tallowImportExternal?: boolean;\n\n};\n\n/**\n * file system provider\n */\nexport interface ModuleSourceProvider {\n\t[url: string]: string;\n}\n\nexport class ModuleScopeResolver implements ModuleScopeResolver {\n\tprotected modules: [string, ModuleScope][] = [];\n\n\tconstructor(protected globalStack: Stack, protected provider: ModuleSourceProvider, protected config?: ResolverConfig) { }\n\tprivate register(source: string, moduleScope: ModuleScope) {\n\t\tconst stackInfo = this.modules.find(tuple => tuple[0] == source && tuple[1] == moduleScope);\n\t\tif (stackInfo) {\n\t\t\tstackInfo[1] = moduleScope;\n\t\t} else {\n\t\t\tthis.modules.push([source, moduleScope]);\n\t\t}\n\t}\n\tresolve(source: keyof ModuleSourceProvider): ModuleScope;\n\tresolve(source: keyof ModuleSourceProvider, moduleScope: ModuleScope, importCallOptions?: ImportCallOptions): ModuleScope;\n\tresolve(source: string, moduleScope?: ModuleScope, importCallOptions?: ImportCallOptions): ModuleScope {\n\t\tif (this.isValidHTTPUrl(source)) {\n\t\t\treturn this.resolveExternalModule(source, importCallOptions);\n\t\t}\n\t\tif (source.startsWith('/')) {\n\t\t\treturn this.findScopeBySource(source, importCallOptions);\n\t\t}\n\t\tconst currentSource = this.findSourceByScope(moduleScope!);\n\t\tconst absoluteUrl = this.resolveURL(source, currentSource);\n\t\treturn this.findScopeBySource(absoluteUrl, importCallOptions);\n\t}\n\tresolveURL(specified: string, parent: string | URL): string {\n\t\tconst currentUrl = parent instanceof URL ? parent.href : createRootURL(parent).href;\n\t\tconst importedUrl = new URL(specified, currentUrl).href;\n\t\tconst absoluteUrl = importedUrl.replace(ROOT_URL, '');\n\t\treturn absoluteUrl;\n\t}\n\tprotected findScopeBySource(source: string, importCallOptions?: ImportCallOptions): ModuleScope {\n\t\tif (importCallOptions?.assert?.type) {\n\t\t\tconst type = importCallOptions.assert.type;\n\t\t\tif (!source.endsWith(`.${type}`)) {\n\t\t\t\tthrow new Error(`Can't find module scope`);\n\t\t\t}\n\t\t}\n\t\tconst importedScope = this.modules.find(tuple => tuple[0] == source)?.[1];\n\t\tif (!importedScope) {\n\t\t\t// search in the file system provider\n\t\t\tconst javascriptSource = this.provider[source];\n\t\t\tif (javascriptSource || javascriptSource == '') {\n\t\t\t\t// module exists\n\t\t\t\tconst moduleProgram = JavaScriptParser.parse(javascriptSource, { mode: LanguageMode.Strict });\n\t\t\t\tconst stack = new Stack(this.globalStack, this, source);\n\t\t\t\t// register with absoluteUrl\n\t\t\t\tthis.register(source, stack.getModule()!);\n\t\t\t\tmoduleProgram.get(stack);\n\t\t\t\treturn stack.getModule()!;\n\t\t\t}\n\t\t\tthrow new Error(`Can't find module scope`);\n\t\t}\n\t\treturn importedScope;\n\t}\n\tprotected findSourceByScope(moduleScope: ModuleScope): string {\n\t\tconst importedSource = this.modules.find(tuple => tuple[1] == moduleScope)?.[0];\n\t\tif (!importedSource) {\n\t\t\tthrow new Error(`Can't resolve scope source`);\n\t\t}\n\t\treturn importedSource;\n\t}\n\tprotected resolveExternalModule(source: string, importCallOptions?: ImportCallOptions): WebModuleScope {\n\t\tif (!this.config?.allowImportExternal) {\n\t\t\tthrow new Error(`Error: Import External Module is not allowed.`);\n\t\t}\n\t\tconst webScope = new WebModuleScope(source, importCallOptions);\n\t\tthis.modules.push([source, webScope]);\n\t\treturn webScope;\n\t}\n\tprotected readonly isValidHTTPUrl = (string: string) => {\n\t\tlet url: URL;\n\t\ttry {\n\t\t\turl = new URL(string);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t\treturn url.protocol === 'http:' || url.protocol === 'https:';\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"stack.js","sourceRoot":"","sources":["../../../src/expressions/scope/stack.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DeclarationExpression } from '../api/expression.js';\nimport { LanguageMode } from '../v8/language.js';\nimport { JavaScriptParser } from '../v8/parser.js';\nimport { finalizerRegister } from './finalizer.js';\nimport {\n\tModuleContext, ModuleImport, ModuleScope, ReactiveScope,\n\tReactiveScopeControl, Scope, Context, WebModuleScope\n} from './scope.js';\n\n\nexport interface AwaitPromiseInfo {\n\tpromise: Promise<any>;\n\tnode: DeclarationExpression;\n\n\tdeclareVariable: boolean;\n}\n\nexport interface AsyncIterableInfo {\n\titerable: AsyncIterable<any>;\n\tforAwaitBody: (iterator: any) => any;\n}\n\nexport interface Stack {\n\t/**\n\t * a list of promises to resolve in an 'async' scope as 'async function'\n\t */\n\tawaitPromise: Array<AwaitPromiseInfo>;\n\n\t/**\n\t * resolve await promise in 'await for in' scope\n\t */\n\tforAwaitAsyncIterable?: AsyncIterableInfo;\n\n\t/**\n\t * is this stack has a propertyKey\n\t * @param propertyKey \n\t */\n\thas(propertyKey: PropertyKey): boolean;\n\n\t/**\n\t * get the first value for provided property key,\n\t * \n\t * will search current stack in all scope till find the first key, else undefined\n\t * @param propertyKey \n\t */\n\tget(propertyKey: PropertyKey): any;\n\n\t/**\n\t * set the value of `propertyKey` in its context provider with `value`.\n\t * else define it in the first scope 'local scope'\n\t * @param propertyKey \n\t * @param value \n\t * @param receiver \n\t */\n\tset(propertyKey: PropertyKey, value: any, receiver?: any): boolean;\n\n\t/**\n\t * declare variable at last scope in the stack,\n\t * \n\t * @param propertyKey the name of property mey be string | number | symbol, \n\t * @param propertyValue if not exist will be initialize with 'undefined' value\n\t */\n\tdeclareVariable(propertyKey: PropertyKey, propertyValue?: any): any;\n\n\n\t/**\n\t * get context object of this provider,\n\t * search for the first context object that has `propertyKey`.\n\t * \n\t * search for the first context that have property key,\n\t * if not found will return the stack local scop as a default value\n\t * @param propertyKey the property key\n\t */\n\tfindScope<T extends Context>(propertyKey: PropertyKey): Scope<T>;\n\n\tresolveAwait(value: AwaitPromiseInfo): void;\n\n\t/**\n\t * get a reference to the last scope in this stack\n\t */\n\tlastScope<T extends Context>(): Scope<T>;\n\n\t/**\n\t * clear every thing after this scope, and even this scope\n\t * @param scope \n\t */\n\tclearTo<T extends Context>(scope: Scope<T>): boolean;\n\n\t/**\n\t * clear every thing after this scope, but not this scope\n\t * @param scope \n\t */\n\tclearTill<T extends Context>(scope: Scope<T>): boolean;\n\n\tpopScope<T extends Context>(): Scope<T>;\n\n\tremoveScope<T extends Context>(scope: Scope<T>): void;\n\n\tpushScope<T extends Context>(scope: Scope<T>): void;\n\n\tpushBlockScope<T extends Context>(): Scope<T>;\n\n\tpushBlockScopeFor<T extends Context>(context: T): Scope<T>;\n\n\tpushReactiveScope<T extends Context>(): ReactiveScope<T>;\n\n\tpushReactiveScopeFor<T extends Context>(context: T): ReactiveScope<T>;\n\n\t/**\n\t * create new stack instance with the same reference to the current scope array\n\t */\n\tcopyStack(): Stack;\n\n\t/**\n\t * used when want to update ui-view like, you want to replace an array with another \n\t * without reflect changes on view until reattached again.\n\t */\n\tdetach(): void;\n\n\t/**\n\t * apply all the not emitted changes, and continue emit in time.\n\t */\n\treattach(): void;\n\n\t/**\n\t * import module scope from another stack, by the help of ModuleScopeResolver.\n\t * \n\t * used with import statement\n\t */\n\timportModule(source: string, importCallOptions?: ImportCallOptions): ModuleScope;\n\n\t/**\n\t * get the current module for this stack.\n\t * \n\t * used with export statement\n\t */\n\tgetModule(): ModuleScope | undefined;\n\n\t/**\n\t * register action to do on destroy this stack\n\t */\n\tonDestroy(action: () => void): void;\n}\n\nexport class Stack implements Stack {\n\tstatic for(...contexts: Context[]): Stack {\n\t\tif (contexts.length === 0) {\n\t\t\treturn new Stack();\n\t\t}\n\t\treturn new Stack(contexts.map(context => new Scope<Context>(context)));\n\t}\n\tstatic forScopes(...scopes: Scope<Context>[]): Stack {\n\t\tif (scopes.length === 0) {\n\t\t\tscopes.push(Scope.blockScope());\n\t\t}\n\t\treturn new Stack(scopes);\n\t}\n\tstatic moduleScope(resolver: ModuleScopeResolver, moduleSource: string, ...globalScopes: Scope<Context>[]) {\n\t\treturn new Stack(globalScopes, resolver, moduleSource);\n\t}\n\tawaitPromise: AwaitPromiseInfo[] = [];\n\tforAwaitAsyncIterable?: AsyncIterableInfo | undefined;\n\n\tprotected readonly stack: Array<Scope<any>>;\n\tprotected readonly moduleScope?: ModuleScope;\n\tprotected readonly moduleSource?: string;\n\tprotected readonly resolver?: ModuleScopeResolver;\n\n\tprotected readonly onDestroyActions: (() => void)[] = [];\n\n\tconstructor();\n\tconstructor(globalScope: Scope<Context>);\n\tconstructor(globalScope: Scope<Context>, resolver: ModuleScopeResolver, moduleSource: string);\n\n\tconstructor(stack: Array<Scope<Context>>);\n\tconstructor(stack: Array<Scope<Context>>, resolver: ModuleScopeResolver, moduleSource: string);\n\n\tconstructor(stack: Stack);\n\tconstructor(stack: Stack, resolver: ModuleScopeResolver, moduleSource: string);\n\n\tconstructor(globals?: Stack | Array<Scope<Context>> | Scope<Context>, resolver?: ModuleScopeResolver, moduleSource?: string) {\n\t\tif (Array.isArray(globals)) {\n\t\t\tthis.stack = globals.slice();\n\t\t} else if (globals instanceof Stack) {\n\t\t\tthis.stack = globals.stack.slice();\n\t\t} else if (typeof globals == 'object') {\n\t\t\tthis.stack = [globals];\n\t\t} else {\n\t\t\tthis.stack = [];\n\t\t}\n\t\tif (resolver && moduleSource) {\n\t\t\tthis.resolver = resolver;\n\t\t\tthis.moduleSource = moduleSource;\n\t\t\t// init module scope for import and export\n\t\t\tthis.moduleScope = new ModuleScope(this.initModuleContext());\n\t\t\tthis.pushScope(this.moduleScope);\n\t\t\t// for the rest of module body\n\t\t\tthis.pushReactiveScope();\n\t\t} else if (this.stack.length === 0) {\n\t\t\t// not a module scope\n\t\t\tthis.pushBlockScope();\n\t\t}\n\t\tfinalizerRegister(this, this.onDestroyActions, this);\n\t}\n\tprivate initModuleContext(): ModuleContext {\n\t\tconst importFunc = (path: string) => {\n\t\t\tconst module = this.importModule(path);\n\t\t\tif (module instanceof WebModuleScope) {\n\t\t\t\treturn module.resolveImport();\n\t\t\t}\n\t\t\treturn Promise.resolve(module.getContext());\n\t\t};\n\t\timportFunc.meta = {\n\t\t\turl: createRootURL(this.moduleSource!),\n\t\t\tresolve: (specified: string, parent?: string | URL): Promise<string> => {\n\t\t\t\treturn Promise.resolve(this.resolver!.resolveURL(specified, parent ?? importFunc.meta.url));\n\t\t\t}\n\t\t};\n\t\tconst im: ModuleImport & ((path: string) => Promise<any>) = importFunc as any;\n\t\treturn { import: im };\n\t}\n\thas(propertyKey: PropertyKey): boolean {\n\t\treturn this.stack.find(context => context.has(propertyKey)) ? true : false;\n\t}\n\tget(propertyKey: PropertyKey) {\n\t\treturn this.findScope<Context>(propertyKey).get(propertyKey);\n\t}\n\tset(propertyKey: PropertyKey, value: any, receiver?: any): boolean {\n\t\treturn this.findScope<Context>(propertyKey).set(propertyKey, value, receiver);\n\t}\n\tdeclareVariable(propertyKey: PropertyKey, propertyValue?: any) {\n\t\treturn this.lastScope<Context>().set(propertyKey, propertyValue);\n\t}\n\tfindScope<T extends Context>(propertyKey: PropertyKey): Scope<T> {\n\t\tlet lastIndex = this.stack.length;\n\t\twhile (lastIndex--) {\n\t\t\tconst scope = this.stack[lastIndex];\n\t\t\tif (scope.has(propertyKey)) {\n\t\t\t\treturn scope;\n\t\t\t}\n\t\t}\n\t\treturn this.lastScope();\n\t}\n\tresolveAwait(value: AwaitPromiseInfo): void {\n\t\tthis.awaitPromise.push(value);\n\t}\n\tpopScope<T extends Context>(): Scope<T> {\n\t\treturn this.stack.pop()!;\n\t}\n\tremoveScope<T extends Context>(scope: Scope<T>): void {\n\t\tconst index = this.stack.lastIndexOf(scope);\n\t\tthis.stack.splice(index, 1);\n\t}\n\tpushScope<T extends Context>(scope: Scope<T>): void {\n\t\tthis.stack.push(scope);\n\t}\n\tpushBlockScope<T extends Context>(propertyKeys?: (keyof T)[]): Scope<T> {\n\t\tconst scope = Scope.blockScope<T>(propertyKeys);\n\t\tthis.stack.push(scope);\n\t\treturn scope;\n\t}\n\tpushBlockScopeFor<T extends Context>(context: T, propertyKeys?: (keyof T)[]): Scope<T> {\n\t\tconst scope = Scope.for<T>(context, propertyKeys);\n\t\tthis.stack.push(scope);\n\t\treturn scope;\n\t}\n\tpushReactiveScope<T extends Context>(propertyKeys?: (keyof T)[]): ReactiveScope<T> {\n\t\tconst scope = ReactiveScope.blockScope<T>(propertyKeys);\n\t\tthis.stack.push(scope);\n\t\treturn scope;\n\t}\n\tpushReactiveScopeFor<T extends Context>(context: T, propertyKeys?: (keyof T)[]): ReactiveScope<T> {\n\t\tconst scope = ReactiveScope.for(context, propertyKeys);\n\t\tthis.stack.push(scope);\n\t\treturn scope;\n\t}\n\tlastScope<T extends Context>(): Scope<T> {\n\t\treturn this.stack[this.stack.length - 1];\n\t}\n\tclearTo<T extends Context>(scope: Scope<T>): boolean {\n\t\tconst index = this.stack.lastIndexOf(scope);\n\t\tif (index === -1) {\n\t\t\treturn false;\n\t\t}\n\t\tthis.stack.splice(index);\n\t\treturn true;\n\t}\n\tclearTill<T extends Context>(scope: Scope<T>): boolean {\n\t\tconst index = this.stack.lastIndexOf(scope);\n\t\tif (index === -1) {\n\t\t\treturn false;\n\t\t}\n\t\tthis.stack.splice(index + 1);\n\t\treturn true;\n\t}\n\tcopyStack(): Stack {\n\t\treturn new Stack(this.stack.slice(), this.resolver!, this.moduleSource!);\n\t}\n\tdetach(): void {\n\t\tthis.getReactiveScopeControls().forEach(scope => scope.detach());\n\t}\n\treattach(): void {\n\t\tthis.getReactiveScopeControls().forEach(scope => scope.reattach());\n\t}\n\tdetectChanges() {\n\t\tthis.getReactiveScope().forEach(scope => scope.detectChanges());\n\t}\n\tprivate getReactiveScopeControls(): ReactiveScopeControl<any>[] {\n\t\treturn this.stack.filter(scope => scope instanceof ReactiveScopeControl) as ReactiveScopeControl<any>[];\n\t}\n\tprivate getReactiveScope(): ReactiveScope<any>[] {\n\t\treturn this.stack.filter(scope => scope instanceof ReactiveScope) as ReactiveScope<any>[];\n\t}\n\timportModule(source: string, importCallOptions?: ImportCallOptions): ModuleScope {\n\t\tif (!this.resolver || !this.moduleScope) {\n\t\t\t// should o the parse and import the module\n\t\t\tthrow new Error('Module Resolver is undefined');\n\t\t}\n\t\treturn this.resolver.resolve(source, this.moduleScope, importCallOptions);\n\t}\n\tgetModule(): ModuleScope | undefined {\n\t\treturn this.moduleScope;\n\t}\n\n\tonDestroy(action: () => void): void {\n\t\tthis.onDestroyActions.push(action);\n\t}\n}\n\n\nexport interface ModuleScopeResolver {\n\tresolve(source: string, moduleScope: ModuleScope, importCallOptions?: ImportCallOptions): ModuleScope;\n\tresolveURL(specified: string, parent: string | URL): string;\n}\n\nconst ROOT_URL = 'https://root';\nexport function createRootURL(source: string): URL {\n\treturn new URL(source, ROOT_URL);\n}\n\n\nexport interface ResolverConfig {\n\t/**\n\t * allow import modules from external http(s) module\n\t */\n\tallowImportExternal?: boolean;\n\n};\n\n/**\n * file system provider\n */\nexport interface ModuleSourceProvider {\n\t[url: string]: string;\n}\n\nexport class ModuleScopeResolver implements ModuleScopeResolver {\n\tprotected modules: [string, ModuleScope][] = [];\n\n\tconstructor(protected globalStack: Stack, protected provider: ModuleSourceProvider, protected config?: ResolverConfig) { }\n\tprivate register(source: string, moduleScope: ModuleScope) {\n\t\tconst stackInfo = this.modules.find(tuple => tuple[0] == source && tuple[1] == moduleScope);\n\t\tif (stackInfo) {\n\t\t\tstackInfo[1] = moduleScope;\n\t\t} else {\n\t\t\tthis.modules.push([source, moduleScope]);\n\t\t}\n\t}\n\tresolve(source: keyof ModuleSourceProvider): ModuleScope;\n\tresolve(source: keyof ModuleSourceProvider, moduleScope: ModuleScope, importCallOptions?: ImportCallOptions): ModuleScope;\n\tresolve(source: string, moduleScope?: ModuleScope, importCallOptions?: ImportCallOptions): ModuleScope {\n\t\tif (this.isValidHTTPUrl(source)) {\n\t\t\treturn this.resolveExternalModule(source, importCallOptions);\n\t\t}\n\t\tif (source.startsWith('/')) {\n\t\t\treturn this.findScopeBySource(source, importCallOptions);\n\t\t}\n\t\tconst currentSource = this.findSourceByScope(moduleScope!);\n\t\tconst absoluteUrl = this.resolveURL(source, currentSource);\n\t\treturn this.findScopeBySource(absoluteUrl, importCallOptions);\n\t}\n\tresolveURL(specified: string, parent: string | URL): string {\n\t\tconst currentUrl = parent instanceof URL ? parent.href : createRootURL(parent).href;\n\t\tconst importedUrl = new URL(specified, currentUrl).href;\n\t\tconst absoluteUrl = importedUrl.replace(ROOT_URL, '');\n\t\treturn absoluteUrl;\n\t}\n\tprotected findScopeBySource(source: string, importCallOptions?: ImportCallOptions): ModuleScope {\n\t\tif (importCallOptions?.assert?.type) {\n\t\t\tconst type = importCallOptions.assert.type;\n\t\t\tif (!source.endsWith(`.${type}`)) {\n\t\t\t\tthrow new Error(`Can't find module scope`);\n\t\t\t}\n\t\t}\n\t\tconst importedScope = this.modules.find(tuple => tuple[0] == source)?.[1];\n\t\tif (!importedScope) {\n\t\t\t// search in the file system provider\n\t\t\tconst javascriptSource = this.provider[source];\n\t\t\tif (javascriptSource || javascriptSource == '') {\n\t\t\t\t// module exists\n\t\t\t\tconst moduleProgram = JavaScriptParser.parse(javascriptSource, { mode: LanguageMode.Strict });\n\t\t\t\tconst stack = new Stack(this.globalStack, this, source);\n\t\t\t\t// register with absoluteUrl\n\t\t\t\tthis.register(source, stack.getModule()!);\n\t\t\t\tmoduleProgram.get(stack);\n\t\t\t\treturn stack.getModule()!;\n\t\t\t}\n\t\t\tthrow new Error(`Can't find module scope`);\n\t\t}\n\t\treturn importedScope;\n\t}\n\tprotected findSourceByScope(moduleScope: ModuleScope): string {\n\t\tconst importedSource = this.modules.find(tuple => tuple[1] == moduleScope)?.[0];\n\t\tif (!importedSource) {\n\t\t\tthrow new Error(`Can't resolve scope source`);\n\t\t}\n\t\treturn importedSource;\n\t}\n\tprotected resolveExternalModule(source: string, importCallOptions?: ImportCallOptions): WebModuleScope {\n\t\tif (!this.config?.allowImportExternal) {\n\t\t\tthrow new Error(`Error: Import External Module is not allowed.`);\n\t\t}\n\t\tconst webScope = new WebModuleScope(source, importCallOptions);\n\t\tthis.modules.push([source, webScope]);\n\t\treturn webScope;\n\t}\n\tprotected readonly isValidHTTPUrl = (string: string) => {\n\t\tlet url: URL;\n\t\ttry {\n\t\t\turl = new URL(string);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t\treturn url.protocol === 'http:' || url.protocol === 'https:';\n\t}\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=variable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variable.d.ts","sourceRoot":"","sources":["../../../src/expressions/scope/variable.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variable.js","sourceRoot":"","sources":["../../../src/expressions/scope/variable.ts"],"names":[],"mappings":"","sourcesContent":[""]}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { ReactiveScope } from './scope.js';
|
|
2
|
+
type CleanupFn = () => void;
|
|
3
|
+
export declare class SignalScope extends ReactiveScope<Array<any>> {
|
|
4
|
+
private state;
|
|
5
|
+
private watch;
|
|
6
|
+
constructor();
|
|
7
|
+
createSignal<T>(initValue: T): Signal<T>;
|
|
8
|
+
createSignalFn<T>(initValue: T): {
|
|
9
|
+
(): T;
|
|
10
|
+
set(value: T): void;
|
|
11
|
+
update(updateFn: (value: T) => T): void;
|
|
12
|
+
};
|
|
13
|
+
createLazy<T>(updateFn: () => T): Lazy<T>;
|
|
14
|
+
createLazyFn<T>(updateFn: () => T): () => T;
|
|
15
|
+
createComputed<T>(updateFn: () => T): Computed<T>;
|
|
16
|
+
createComputedFn<T>(updateFn: () => T): () => T;
|
|
17
|
+
createEffect(effectFn: (onCleanup?: CleanupFn) => void): {
|
|
18
|
+
destroy(): void;
|
|
19
|
+
};
|
|
20
|
+
watchState(): void;
|
|
21
|
+
untrack(): void;
|
|
22
|
+
observeIndex(index: number): void;
|
|
23
|
+
track(): void;
|
|
24
|
+
readState(): number[];
|
|
25
|
+
observeState(updateFn: () => void): {
|
|
26
|
+
[k: string]: import("./scope.js").ScopeSubscription<any[]>;
|
|
27
|
+
};
|
|
28
|
+
restoreState(): void;
|
|
29
|
+
}
|
|
30
|
+
export declare abstract class ReactiveNode<T> {
|
|
31
|
+
abstract get(): T;
|
|
32
|
+
}
|
|
33
|
+
declare const SIGNAL: unique symbol;
|
|
34
|
+
export interface Reactive<T> {
|
|
35
|
+
[SIGNAL]: ReactiveNode<T>;
|
|
36
|
+
}
|
|
37
|
+
export declare function isReactive<T = any>(value: unknown): value is Reactive<T>;
|
|
38
|
+
export declare class Computed<T> extends ReactiveNode<T> {
|
|
39
|
+
#private;
|
|
40
|
+
static bindFn<T>(instance: Computed<T>): void;
|
|
41
|
+
static computed<T>(instance: Computed<T>): () => T;
|
|
42
|
+
constructor(scope: SignalScope, index: number, initValue: T);
|
|
43
|
+
get(): T;
|
|
44
|
+
}
|
|
45
|
+
export declare class Lazy<T> extends ReactiveNode<T> {
|
|
46
|
+
#private;
|
|
47
|
+
static bindFn<T>(instance: Lazy<T>): void;
|
|
48
|
+
static lazy<T>(instance: Lazy<T>): () => T;
|
|
49
|
+
constructor(scope: SignalScope, index: number, updateFn: () => T);
|
|
50
|
+
get(): T;
|
|
51
|
+
}
|
|
52
|
+
export declare class Signal<T> extends ReactiveNode<T> {
|
|
53
|
+
#private;
|
|
54
|
+
static bindFn<T>(instance: Signal<T>): void;
|
|
55
|
+
static writable<T>(instance: Signal<T>): {
|
|
56
|
+
(): T;
|
|
57
|
+
set(value: T): void;
|
|
58
|
+
update(updateFn: (value: T) => T): void;
|
|
59
|
+
};
|
|
60
|
+
constructor(scope: SignalScope, index: number, initValue: T);
|
|
61
|
+
get(): T;
|
|
62
|
+
set(value: T): void;
|
|
63
|
+
update(updateFn: (value: T) => T): void;
|
|
64
|
+
}
|
|
65
|
+
export {};
|
|
66
|
+
//# sourceMappingURL=variables.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../../src/expressions/scope/variables.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import { ReactiveScope } from './scope.js';
|
|
2
|
+
function compute(updateFn) {
|
|
3
|
+
try {
|
|
4
|
+
return updateFn();
|
|
5
|
+
}
|
|
6
|
+
catch (error) {
|
|
7
|
+
return error;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export class SignalScope extends ReactiveScope {
|
|
11
|
+
state = [];
|
|
12
|
+
watch = true;
|
|
13
|
+
constructor() {
|
|
14
|
+
super([]);
|
|
15
|
+
}
|
|
16
|
+
createSignal(initValue) {
|
|
17
|
+
const signal = new Signal(this, this.getContext().length, initValue);
|
|
18
|
+
Signal.bindFn(signal);
|
|
19
|
+
return signal;
|
|
20
|
+
}
|
|
21
|
+
createSignalFn(initValue) {
|
|
22
|
+
const signal = new Signal(this, this.getContext().length, initValue);
|
|
23
|
+
return Signal.writable(signal);
|
|
24
|
+
}
|
|
25
|
+
createLazy(updateFn) {
|
|
26
|
+
const lazy = new Lazy(this, this.getContext().length, updateFn);
|
|
27
|
+
Lazy.bindFn(lazy);
|
|
28
|
+
return lazy;
|
|
29
|
+
}
|
|
30
|
+
createLazyFn(updateFn) {
|
|
31
|
+
const lazy = new Lazy(this, this.getContext().length, updateFn);
|
|
32
|
+
return Lazy.lazy(lazy);
|
|
33
|
+
}
|
|
34
|
+
createComputed(updateFn) {
|
|
35
|
+
const index = this.getContext().length;
|
|
36
|
+
this.watchState();
|
|
37
|
+
const value = compute(updateFn);
|
|
38
|
+
const computed = new Computed(this, index, value);
|
|
39
|
+
Computed.bindFn(computed);
|
|
40
|
+
const observeComputed = () => {
|
|
41
|
+
this.watchState();
|
|
42
|
+
const value = compute(updateFn);
|
|
43
|
+
const state = this.readState();
|
|
44
|
+
this.restoreState();
|
|
45
|
+
Object.keys(subscriptions)
|
|
46
|
+
.filter(index => !state.includes(+index))
|
|
47
|
+
.forEach(index => subscriptions[index].pause());
|
|
48
|
+
state.forEach(index => {
|
|
49
|
+
subscriptions[index]?.resume();
|
|
50
|
+
subscriptions[index] ??= this.subscribe(index, observeComputed);
|
|
51
|
+
});
|
|
52
|
+
this.set(index, value);
|
|
53
|
+
};
|
|
54
|
+
const subscriptions = this.observeState(observeComputed);
|
|
55
|
+
this.restoreState();
|
|
56
|
+
return computed;
|
|
57
|
+
}
|
|
58
|
+
createComputedFn(updateFn) {
|
|
59
|
+
const computed = this.createComputed(updateFn);
|
|
60
|
+
return Computed.computed(computed);
|
|
61
|
+
}
|
|
62
|
+
createEffect(effectFn) {
|
|
63
|
+
let cleanupFn;
|
|
64
|
+
let isCleanupRegistered = false;
|
|
65
|
+
const cleanupRegister = onClean => {
|
|
66
|
+
cleanupFn = onClean;
|
|
67
|
+
isCleanupRegistered = true;
|
|
68
|
+
};
|
|
69
|
+
const callback = () => {
|
|
70
|
+
isCleanupRegistered = false;
|
|
71
|
+
const error = compute(() => effectFn(cleanupRegister));
|
|
72
|
+
if (error instanceof Error) {
|
|
73
|
+
console.error(error);
|
|
74
|
+
}
|
|
75
|
+
if (!isCleanupRegistered) {
|
|
76
|
+
cleanupFn = undefined;
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
this.watchState();
|
|
80
|
+
callback();
|
|
81
|
+
const observeComputed = () => {
|
|
82
|
+
cleanupFn?.();
|
|
83
|
+
this.watchState();
|
|
84
|
+
callback();
|
|
85
|
+
const state = this.readState();
|
|
86
|
+
this.restoreState();
|
|
87
|
+
Object.keys(subscriptions)
|
|
88
|
+
.filter(index => !state.includes(+index))
|
|
89
|
+
.forEach(index => subscriptions[index].pause());
|
|
90
|
+
state.forEach(index => {
|
|
91
|
+
subscriptions[index]?.resume();
|
|
92
|
+
subscriptions[index] ??= this.subscribe(index, observeComputed);
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
const subscriptions = this.observeState(observeComputed);
|
|
96
|
+
this.restoreState();
|
|
97
|
+
return {
|
|
98
|
+
destroy: () => {
|
|
99
|
+
Object.values(subscriptions).forEach(sub => sub.unsubscribe());
|
|
100
|
+
cleanupFn?.();
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
watchState() {
|
|
105
|
+
this.state.push([]);
|
|
106
|
+
}
|
|
107
|
+
untrack() {
|
|
108
|
+
this.watch = false;
|
|
109
|
+
}
|
|
110
|
+
observeIndex(index) {
|
|
111
|
+
if (this.watch) {
|
|
112
|
+
this.state.at(-1)?.push(index);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
track() {
|
|
116
|
+
this.watch = true;
|
|
117
|
+
}
|
|
118
|
+
readState() {
|
|
119
|
+
return this.state.at(-1) ?? [];
|
|
120
|
+
}
|
|
121
|
+
observeState(updateFn) {
|
|
122
|
+
return Object.fromEntries(this.readState().map(index => [index, this.subscribe(index, updateFn)]));
|
|
123
|
+
}
|
|
124
|
+
restoreState() {
|
|
125
|
+
this.state.pop();
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
export class ReactiveNode {
|
|
129
|
+
}
|
|
130
|
+
const SIGNAL = Symbol('Signal');
|
|
131
|
+
export function isReactive(value) {
|
|
132
|
+
return value[SIGNAL] !== undefined;
|
|
133
|
+
}
|
|
134
|
+
export class Computed extends ReactiveNode {
|
|
135
|
+
static bindFn(instance) {
|
|
136
|
+
instance.get = instance.get.bind(instance);
|
|
137
|
+
}
|
|
138
|
+
static computed(instance) {
|
|
139
|
+
const fn = () => instance.get();
|
|
140
|
+
fn[SIGNAL] = instance;
|
|
141
|
+
return fn;
|
|
142
|
+
}
|
|
143
|
+
#index;
|
|
144
|
+
#scope;
|
|
145
|
+
constructor(scope, index, initValue) {
|
|
146
|
+
super();
|
|
147
|
+
this.#scope = scope;
|
|
148
|
+
this.#index = index;
|
|
149
|
+
scope.set(index, initValue);
|
|
150
|
+
}
|
|
151
|
+
get() {
|
|
152
|
+
this.#scope.observeIndex(this.#index);
|
|
153
|
+
return this.#scope.get(this.#index);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
export class Lazy extends ReactiveNode {
|
|
157
|
+
static bindFn(instance) {
|
|
158
|
+
instance.get = instance.get.bind(instance);
|
|
159
|
+
}
|
|
160
|
+
static lazy(instance) {
|
|
161
|
+
const fn = () => instance.get();
|
|
162
|
+
fn[SIGNAL] = instance;
|
|
163
|
+
return fn;
|
|
164
|
+
}
|
|
165
|
+
#index;
|
|
166
|
+
#scope;
|
|
167
|
+
#updateFn;
|
|
168
|
+
constructor(scope, index, updateFn) {
|
|
169
|
+
super();
|
|
170
|
+
this.#scope = scope;
|
|
171
|
+
this.#index = index;
|
|
172
|
+
this.#updateFn = updateFn;
|
|
173
|
+
scope.set(index, compute(updateFn));
|
|
174
|
+
}
|
|
175
|
+
get() {
|
|
176
|
+
const value = compute(this.#updateFn);
|
|
177
|
+
this.#scope.set(this.#index, value);
|
|
178
|
+
this.#scope.observeIndex(this.#index);
|
|
179
|
+
return this.#scope.get(this.#index);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
export class Signal extends ReactiveNode {
|
|
183
|
+
static bindFn(instance) {
|
|
184
|
+
instance.get = instance.get.bind(instance);
|
|
185
|
+
instance.set = instance.set.bind(instance);
|
|
186
|
+
instance.update = instance.update.bind(instance);
|
|
187
|
+
}
|
|
188
|
+
static writable(instance) {
|
|
189
|
+
const fn = () => instance.get();
|
|
190
|
+
fn.set = (value) => instance.set(value);
|
|
191
|
+
fn.update = (updateFn) => instance.update(updateFn);
|
|
192
|
+
fn[SIGNAL] = instance;
|
|
193
|
+
return fn;
|
|
194
|
+
}
|
|
195
|
+
#index;
|
|
196
|
+
#scope;
|
|
197
|
+
constructor(scope, index, initValue) {
|
|
198
|
+
super();
|
|
199
|
+
this.#scope = scope;
|
|
200
|
+
this.#index = index;
|
|
201
|
+
scope.set(index, initValue);
|
|
202
|
+
}
|
|
203
|
+
get() {
|
|
204
|
+
this.#scope.observeIndex(this.#index);
|
|
205
|
+
return this.#scope.get(this.#index);
|
|
206
|
+
}
|
|
207
|
+
set(value) {
|
|
208
|
+
this.#scope.set(this.#index, value);
|
|
209
|
+
}
|
|
210
|
+
update(updateFn) {
|
|
211
|
+
this.set(updateFn(this.get()));
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=variables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variables.js","sourceRoot":"","sources":["../../../src/expressions/scope/variables.ts"],"names":[],"mappings":"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","sourcesContent":["import { ReactiveScope } from './scope.js';\n\ntype CleanupFn = () => void;\ntype CleanupRegister = (cleanupFn?: CleanupFn) => void;\n\nfunction compute<T>(updateFn: () => T): T | unknown {\n\ttry {\n\t\treturn updateFn();\n\t} catch (error) {\n\t\treturn error;\n\t}\n}\n\nexport class SignalScope extends ReactiveScope<Array<any>> {\n\n\tprivate state: number[][] = [];\n\tprivate watch = true;\n\n\tconstructor() {\n\t\tsuper([]);\n\t}\n\n\tcreateSignal<T>(initValue: T): Signal<T> {\n\t\tconst signal = new Signal<T>(this, this.getContext().length, initValue);\n\t\tSignal.bindFn(signal);\n\t\treturn signal;\n\t}\n\tcreateSignalFn<T>(initValue: T) {\n\t\tconst signal = new Signal<T>(this, this.getContext().length, initValue);\n\t\treturn Signal.writable(signal);\n\t}\n\n\tcreateLazy<T>(updateFn: () => T): Lazy<T> {\n\t\tconst lazy = new Lazy<T>(this, this.getContext().length, updateFn);\n\t\tLazy.bindFn(lazy);\n\t\treturn lazy;\n\t}\n\n\tcreateLazyFn<T>(updateFn: () => T) {\n\t\tconst lazy = new Lazy<T>(this, this.getContext().length, updateFn);\n\t\treturn Lazy.lazy(lazy);\n\t}\n\n\tcreateComputed<T>(updateFn: () => T): Computed<T> {\n\t\tconst index = this.getContext().length;\n\t\tthis.watchState();\n\t\tconst value = compute(updateFn);\n\t\tconst computed = new Computed<T>(this, index, value as T);\n\t\tComputed.bindFn(computed);\n\t\tconst observeComputed = () => {\n\t\t\tthis.watchState();\n\t\t\tconst value = compute(updateFn);\n\t\t\tconst state = this.readState();\n\t\t\tthis.restoreState();\n\t\t\tObject.keys(subscriptions)\n\t\t\t\t.filter(index => !state.includes(+index))\n\t\t\t\t.forEach(index => subscriptions[index].pause());\n\t\t\tstate.forEach(index => {\n\t\t\t\tsubscriptions[index]?.resume();\n\t\t\t\tsubscriptions[index] ??= this.subscribe(index, observeComputed);\n\t\t\t});\n\t\t\tthis.set(index, value);\n\t\t};\n\t\tconst subscriptions = this.observeState(observeComputed);\n\t\tthis.restoreState();\n\t\treturn computed;\n\t}\n\n\tcreateComputedFn<T>(updateFn: () => T) {\n\t\tconst computed = this.createComputed(updateFn);\n\t\treturn Computed.computed(computed);\n\t}\n\n\tcreateEffect(effectFn: (onCleanup?: CleanupFn) => void): { destroy(): void } {\n\t\tlet cleanupFn: (() => void) | undefined;\n\t\tlet isCleanupRegistered = false;\n\t\tconst cleanupRegister: CleanupRegister = onClean => {\n\t\t\tcleanupFn = onClean;\n\t\t\tisCleanupRegistered = true;\n\t\t};\n\t\tconst callback = () => {\n\t\t\tisCleanupRegistered = false;\n\t\t\tconst error = compute(() => effectFn(cleanupRegister)) as any;\n\t\t\tif (error instanceof Error) {\n\t\t\t\tconsole.error(error);\n\t\t\t}\n\t\t\tif (!isCleanupRegistered) {\n\t\t\t\tcleanupFn = undefined;\n\t\t\t}\n\t\t};\n\t\tthis.watchState();\n\t\tcallback();\n\t\tconst observeComputed = () => {\n\t\t\tcleanupFn?.();\n\t\t\tthis.watchState();\n\t\t\tcallback();\n\t\t\tconst state = this.readState();\n\t\t\tthis.restoreState();\n\t\t\tObject.keys(subscriptions)\n\t\t\t\t.filter(index => !state.includes(+index))\n\t\t\t\t.forEach(index => subscriptions[index].pause());\n\t\t\tstate.forEach(index => {\n\t\t\t\tsubscriptions[index]?.resume();\n\t\t\t\tsubscriptions[index] ??= this.subscribe(index, observeComputed);\n\t\t\t});\n\t\t};\n\t\tconst subscriptions = this.observeState(observeComputed);\n\t\tthis.restoreState();\n\t\treturn {\n\t\t\tdestroy: () => {\n\t\t\t\tObject.values(subscriptions).forEach(sub => sub.unsubscribe());\n\t\t\t\tcleanupFn?.();\n\t\t\t},\n\t\t};\n\t}\n\n\twatchState() {\n\t\tthis.state.push([]);\n\t}\n\n\tuntrack() {\n\t\tthis.watch = false;\n\t}\n\n\tobserveIndex(index: number) {\n\t\tif (this.watch) {\n\t\t\tthis.state.at(-1)?.push(index);\n\t\t}\n\t}\n\n\ttrack() {\n\t\tthis.watch = true;\n\t}\n\n\treadState() {\n\t\treturn this.state.at(-1) ?? [];\n\t}\n\n\tobserveState(updateFn: () => void) {\n\t\treturn Object.fromEntries(this.readState().map(index => [index, this.subscribe(index, updateFn)]));\n\t}\n\n\trestoreState() {\n\t\tthis.state.pop();\n\t}\n\n}\n\nexport abstract class ReactiveNode<T> {\n\tabstract get(): T;\n}\n\nconst SIGNAL = Symbol('Signal');\n\nexport interface Reactive<T> {\n\t[SIGNAL]: ReactiveNode<T>;\n}\n\nexport function isReactive<T = any>(value: unknown): value is Reactive<T> {\n\treturn (value as Partial<Reactive<T>>)[SIGNAL] !== undefined;\n}\n\n\nexport class Computed<T> extends ReactiveNode<T> {\n\n\tstatic bindFn<T>(instance: Computed<T>) {\n\t\tinstance.get = instance.get.bind(instance);\n\t}\n\n\tstatic computed<T>(instance: Computed<T>) {\n\t\tconst fn = () => instance.get();\n\t\t(fn as any)[SIGNAL] = instance;\n\t\treturn fn;\n\t}\n\n\t#index: number;\n\t#scope: SignalScope;\n\n\tconstructor(scope: SignalScope, index: number, initValue: T) {\n\t\tsuper();\n\t\tthis.#scope = scope;\n\t\tthis.#index = index;\n\t\tscope.set(index, initValue);\n\t}\n\n\tget(): T {\n\t\tthis.#scope.observeIndex(this.#index);\n\t\treturn this.#scope.get(this.#index);\n\t}\n\n}\n\nexport class Lazy<T> extends ReactiveNode<T> {\n\n\tstatic bindFn<T>(instance: Lazy<T>) {\n\t\tinstance.get = instance.get.bind(instance);\n\t}\n\n\tstatic lazy<T>(instance: Lazy<T>) {\n\t\tconst fn = () => instance.get();\n\t\t(fn as any)[SIGNAL] = instance;\n\t\treturn fn;\n\t}\n\n\t#index: number;\n\t#scope: SignalScope;\n\t#updateFn: () => T;\n\n\tconstructor(scope: SignalScope, index: number, updateFn: () => T) {\n\t\tsuper();\n\t\tthis.#scope = scope;\n\t\tthis.#index = index;\n\t\tthis.#updateFn = updateFn;\n\t\tscope.set(index, compute(updateFn) as T);\n\t}\n\n\toverride get(): T {\n\t\tconst value = compute(this.#updateFn);\n\t\tthis.#scope.set(this.#index, value);\n\t\tthis.#scope.observeIndex(this.#index);\n\t\treturn this.#scope.get(this.#index);\n\t}\n\n}\n\nexport class Signal<T> extends ReactiveNode<T> {\n\n\tstatic bindFn<T>(instance: Signal<T>) {\n\t\tinstance.get = instance.get.bind(instance);\n\t\tinstance.set = instance.set.bind(instance);\n\t\tinstance.update = instance.update.bind(instance);\n\t}\n\n\tstatic writable<T>(instance: Signal<T>) {\n\t\tconst fn = () => instance.get();\n\t\tfn.set = (value: T) => instance.set(value);\n\t\tfn.update = (updateFn: (value: T) => T) => instance.update(updateFn);\n\t\t(fn as any)[SIGNAL] = instance;\n\t\treturn fn;\n\t}\n\n\t#index: number;\n\t#scope: SignalScope;\n\n\tconstructor(scope: SignalScope, index: number, initValue: T) {\n\t\tsuper();\n\t\tthis.#scope = scope;\n\t\tthis.#index = index;\n\t\tscope.set(index, initValue);\n\t}\n\n\tget(): T {\n\t\tthis.#scope.observeIndex(this.#index);\n\t\treturn this.#scope.get(this.#index);\n\t}\n\n\tset(value: T) {\n\t\tthis.#scope.set(this.#index, value);\n\t}\n\n\tupdate(updateFn: (value: T) => T): void {\n\t\tthis.set(updateFn(this.get()));\n\t}\n\n}\n"]}
|
package/v8/enums.d.ts
CHANGED
|
@@ -160,12 +160,12 @@ export declare enum FunctionNameValidity {
|
|
|
160
160
|
FunctionNameValidityUnknown = "FunctionNameValidityUnknown"
|
|
161
161
|
}
|
|
162
162
|
export declare enum ObjectLiteralPropertyKind {
|
|
163
|
-
CONSTANT = "CONSTANT"
|
|
164
|
-
COMPUTED = "COMPUTED"
|
|
165
|
-
MATERIALIZED_LITERAL = "MATERIALIZED_LITERAL"
|
|
163
|
+
CONSTANT = "CONSTANT",// Property with constant value (compile time).
|
|
164
|
+
COMPUTED = "COMPUTED",// Property with computed value (execution time).
|
|
165
|
+
MATERIALIZED_LITERAL = "MATERIALIZED_LITERAL",// Property value is a materialized literal.
|
|
166
166
|
GETTER = "GETTER",
|
|
167
|
-
SETTER = "SETTER"
|
|
168
|
-
PROTOTYPE = "PROTOTYPE"
|
|
167
|
+
SETTER = "SETTER",// Property is an accessor function.
|
|
168
|
+
PROTOTYPE = "PROTOTYPE",// Property is __proto__.
|
|
169
169
|
SPREAD = "SPREAD"
|
|
170
170
|
}
|
|
171
171
|
export declare class ObjectLiteralProperty {
|
package/v8/enums.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../../src/expressions/v8/enums.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../../src/expressions/v8/enums.ts"],"names":[],"mappings":"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"}
|
package/v8/enums.js
CHANGED
|
@@ -330,10 +330,9 @@ export var ObjectLiteralPropertyKind;
|
|
|
330
330
|
ObjectLiteralPropertyKind["PROTOTYPE"] = "PROTOTYPE";
|
|
331
331
|
ObjectLiteralPropertyKind["SPREAD"] = "SPREAD";
|
|
332
332
|
})(ObjectLiteralPropertyKind || (ObjectLiteralPropertyKind = {}));
|
|
333
|
-
class ObjectLiteralProperty {
|
|
333
|
+
export class ObjectLiteralProperty {
|
|
334
334
|
static Kind = ObjectLiteralPropertyKind;
|
|
335
335
|
}
|
|
336
|
-
export { ObjectLiteralProperty };
|
|
337
336
|
export var ClassLiteralPropertyKind;
|
|
338
337
|
(function (ClassLiteralPropertyKind) {
|
|
339
338
|
ClassLiteralPropertyKind["METHOD"] = "METHOD";
|
|
@@ -341,10 +340,9 @@ export var ClassLiteralPropertyKind;
|
|
|
341
340
|
ClassLiteralPropertyKind["SETTER"] = "SETTER";
|
|
342
341
|
ClassLiteralPropertyKind["FIELD"] = "FIELD";
|
|
343
342
|
})(ClassLiteralPropertyKind || (ClassLiteralPropertyKind = {}));
|
|
344
|
-
class ClassLiteralProperty {
|
|
343
|
+
export class ClassLiteralProperty {
|
|
345
344
|
static Kind = ClassLiteralPropertyKind;
|
|
346
345
|
}
|
|
347
|
-
export { ClassLiteralProperty };
|
|
348
346
|
export function classPropertyKindFor(kind) {
|
|
349
347
|
switch (kind) {
|
|
350
348
|
case PropertyKind.AccessorGetter:
|