@mojir/lits 2.5.2 → 2.6.1
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 +6 -6
- package/dist/cli/cli.js +726 -481
- package/dist/cli/reference/api.d.ts +9 -7
- package/dist/cli/reference/index.d.ts +133 -132
- package/dist/cli/src/builtin/bindingNode.d.ts +5 -0
- package/dist/cli/src/builtin/core/assertion.d.ts +2 -0
- package/dist/cli/src/builtin/index.d.ts +2 -2
- package/dist/cli/src/builtin/interface.d.ts +1 -1
- package/dist/cli/src/builtin/specialExpressionTypes.d.ts +1 -1
- package/dist/cli/src/builtin/specialExpressions/match.d.ts +7 -0
- package/dist/cli/src/parser/subParsers/parseBindingTarget.d.ts +4 -2
- package/dist/cli/src/parser/subParsers/parseMatch.d.ts +4 -0
- package/dist/cli/src/parser/types.d.ts +5 -1
- package/dist/full.esm.js +1 -1
- package/dist/full.esm.js.map +1 -1
- package/dist/full.js +1 -1
- package/dist/full.js.map +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lits.iife.js +1 -1
- package/dist/lits.iife.js.map +1 -1
- package/dist/modules/assertion.esm.js +2 -0
- package/dist/modules/assertion.esm.js.map +1 -0
- package/dist/modules/assertion.js +2 -0
- package/dist/modules/assertion.js.map +1 -0
- package/dist/modules/reference/api.d.ts +9 -7
- package/dist/modules/reference/index.d.ts +133 -132
- package/dist/modules/src/builtin/bindingNode.d.ts +5 -0
- package/dist/modules/src/builtin/core/assertion.d.ts +2 -0
- package/dist/modules/src/builtin/index.d.ts +2 -2
- package/dist/modules/src/builtin/interface.d.ts +1 -1
- package/dist/modules/src/builtin/specialExpressionTypes.d.ts +1 -1
- package/dist/modules/src/builtin/specialExpressions/match.d.ts +7 -0
- package/dist/modules/src/full.d.ts +1 -1
- package/dist/modules/src/modules/{assert.d.ts → assertion.d.ts} +1 -1
- package/dist/modules/src/parser/subParsers/parseBindingTarget.d.ts +4 -2
- package/dist/modules/src/parser/subParsers/parseMatch.d.ts +4 -0
- package/dist/modules/src/parser/types.d.ts +5 -1
- package/dist/reference/api.d.ts +9 -7
- package/dist/reference/index.d.ts +133 -132
- package/dist/src/builtin/bindingNode.d.ts +5 -0
- package/dist/src/builtin/core/assertion.d.ts +2 -0
- package/dist/src/builtin/index.d.ts +2 -2
- package/dist/src/builtin/interface.d.ts +1 -1
- package/dist/src/builtin/specialExpressionTypes.d.ts +1 -1
- package/dist/src/builtin/specialExpressions/match.d.ts +7 -0
- package/dist/src/full.d.ts +1 -1
- package/dist/src/modules/{assert.d.ts → assertion.d.ts} +1 -1
- package/dist/src/parser/subParsers/parseBindingTarget.d.ts +4 -2
- package/dist/src/parser/subParsers/parseMatch.d.ts +4 -0
- package/dist/src/parser/types.d.ts +5 -1
- package/dist/testFramework.esm.js +1 -1
- package/dist/testFramework.esm.js.map +1 -1
- package/dist/testFramework.js +1 -1
- package/dist/testFramework.js.map +1 -1
- package/package.json +5 -5
- package/dist/cli/src/builtin/specialExpressions/switch.d.ts +0 -6
- package/dist/cli/src/parser/subParsers/parseSwitch.d.ts +0 -4
- package/dist/modules/assert.esm.js +0 -2
- package/dist/modules/assert.esm.js.map +0 -1
- package/dist/modules/assert.js +0 -2
- package/dist/modules/assert.js.map +0 -1
- package/dist/modules/src/builtin/specialExpressions/switch.d.ts +0 -6
- package/dist/modules/src/parser/subParsers/parseSwitch.d.ts +0 -4
- package/dist/src/builtin/specialExpressions/switch.d.ts +0 -6
- package/dist/src/parser/subParsers/parseSwitch.d.ts +0 -4
- /package/dist/cli/src/builtin/modules/{assert → assertion}/docs.d.ts +0 -0
- /package/dist/cli/src/builtin/modules/{assert → assertion}/index.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{assert → assertion}/docs.d.ts +0 -0
- /package/dist/modules/src/builtin/modules/{assert → assertion}/index.d.ts +0 -0
- /package/dist/src/builtin/modules/{assert → assertion}/docs.d.ts +0 -0
- /package/dist/src/builtin/modules/{assert → assertion}/index.d.ts +0 -0
|
@@ -4,3 +4,8 @@ import type { MaybePromise } from '../utils/maybePromise';
|
|
|
4
4
|
export declare function walkDefaults(bindingTarget: BindingTarget, onDefault: (Node: AstNode) => void): void;
|
|
5
5
|
export declare function evaluateBindingNodeValues(target: BindingTarget, value: Any, evaluate: (Node: AstNode) => MaybePromise<Any>): MaybePromise<Record<string, Any>>;
|
|
6
6
|
export declare function getAllBindingTargetNames(bindingTarget: BindingTarget): Record<string, true>;
|
|
7
|
+
/**
|
|
8
|
+
* Non-throwing pattern matching. Returns bindings on match, null on mismatch.
|
|
9
|
+
* Used by `switch` pattern matching.
|
|
10
|
+
*/
|
|
11
|
+
export declare function tryMatch(target: BindingTarget, value: Any, evaluate: (Node: AstNode) => MaybePromise<Any>): MaybePromise<Record<string, Any> | null>;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { Builtin } from './interface';
|
|
2
2
|
import { specialExpressionTypes } from './specialExpressionTypes';
|
|
3
|
-
export declare const specialExpressions: readonly [import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/qq").QqNode>, import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/and").AndNode>, import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/or").OrNode>, import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/array").ArrayNode>, import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/cond").CondNode>, import("./interface").BuiltinSpecialExpression<boolean, import("./specialExpressions/defined").DefinedNode>, import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/block").DoNode>, import("./interface").BuiltinSpecialExpression<null, import("./specialExpressions/loops").DoSeqNode>, import("./interface").BuiltinSpecialExpression<import("..").LitsFunction, import("./specialExpressions/functions").LambdaNode>, import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/loops").ForNode>, import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/if").IfNode>, import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/let").LetNode>, import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/loop").LoopNode>, import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/object").ObjectNode>, import("./interface").BuiltinSpecialExpression<null, import("./specialExpressions/recur").RecurNode>, import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/
|
|
3
|
+
export declare const specialExpressions: readonly [import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/qq").QqNode>, import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/and").AndNode>, import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/or").OrNode>, import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/array").ArrayNode>, import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/cond").CondNode>, import("./interface").BuiltinSpecialExpression<boolean, import("./specialExpressions/defined").DefinedNode>, import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/block").DoNode>, import("./interface").BuiltinSpecialExpression<null, import("./specialExpressions/loops").DoSeqNode>, import("./interface").BuiltinSpecialExpression<import("..").LitsFunction, import("./specialExpressions/functions").LambdaNode>, import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/loops").ForNode>, import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/if").IfNode>, import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/let").LetNode>, import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/loop").LoopNode>, import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/object").ObjectNode>, import("./interface").BuiltinSpecialExpression<null, import("./specialExpressions/recur").RecurNode>, import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/match").MatchNode>, import("./interface").BuiltinSpecialExpression<null, import("./specialExpressions/throw").ThrowNode>, import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/try").TryNode>, import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/unless").UnlessNode>, import("./interface").BuiltinSpecialExpression<import("../interface").Any, import("./specialExpressions/import").ImportNode>];
|
|
4
4
|
export type SpecialExpressions = typeof specialExpressions;
|
|
5
5
|
export type SpecialExpression = SpecialExpressions[number];
|
|
6
6
|
export type SpecialExpressionName = keyof typeof specialExpressionTypes;
|
|
7
7
|
export type CommonSpecialExpressionType = [
|
|
8
|
-
typeof specialExpressionTypes['??'] | typeof specialExpressionTypes['&&'] | typeof specialExpressionTypes['cond'] | typeof specialExpressionTypes['
|
|
8
|
+
typeof specialExpressionTypes['??'] | typeof specialExpressionTypes['&&'] | typeof specialExpressionTypes['cond'] | typeof specialExpressionTypes['match'] | typeof specialExpressionTypes['defined?'] | typeof specialExpressionTypes['block'] | typeof specialExpressionTypes['if'] | typeof specialExpressionTypes['unless'] | typeof specialExpressionTypes['||'] | typeof specialExpressionTypes['throw'] | typeof specialExpressionTypes['array'] | typeof specialExpressionTypes['object']
|
|
9
9
|
];
|
|
10
10
|
export type SpecialExpressionType = typeof specialExpressionTypes[SpecialExpressionName];
|
|
11
11
|
export declare const builtin: Builtin;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Any } from '../../interface';
|
|
2
|
+
import type { AstNode, BindingTarget, SpecialExpressionNode } from '../../parser/types';
|
|
3
|
+
import type { BuiltinSpecialExpression } from '../interface';
|
|
4
|
+
import type { specialExpressionTypes } from '../specialExpressionTypes';
|
|
5
|
+
export type MatchCase = [BindingTarget, AstNode, AstNode | undefined];
|
|
6
|
+
export type MatchNode = SpecialExpressionNode<[typeof specialExpressionTypes['match'], AstNode, MatchCase[]]>;
|
|
7
|
+
export declare const matchSpecialExpression: BuiltinSpecialExpression<Any, MatchNode>;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { BindingTarget } from '../types';
|
|
2
2
|
import type { ParserContext } from '../ParserContext';
|
|
3
|
-
export
|
|
3
|
+
export interface ParseBindingTargetOptions {
|
|
4
4
|
requireDefaultValue?: true;
|
|
5
5
|
noRest?: true;
|
|
6
|
-
|
|
6
|
+
allowLiteralPatterns?: true;
|
|
7
|
+
}
|
|
8
|
+
export declare function parseBindingTarget(ctx: ParserContext, { requireDefaultValue, noRest, allowLiteralPatterns }?: ParseBindingTargetOptions): BindingTarget;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { MatchNode } from '../../builtin/specialExpressions/match';
|
|
2
|
+
import { type SymbolToken } from '../../tokenizer/token';
|
|
3
|
+
import type { ParserContext } from '../ParserContext';
|
|
4
|
+
export declare function parseMatch(ctx: ParserContext, token: SymbolToken): MatchNode;
|
|
@@ -106,6 +106,8 @@ export declare const bindingTargetTypes: {
|
|
|
106
106
|
readonly rest: 12;
|
|
107
107
|
readonly object: 13;
|
|
108
108
|
readonly array: 14;
|
|
109
|
+
readonly literal: 15;
|
|
110
|
+
readonly wildcard: 16;
|
|
109
111
|
};
|
|
110
112
|
export type BindingTargetType = typeof bindingTargetTypes[keyof typeof bindingTargetTypes];
|
|
111
113
|
type GenericTarget<T extends BindingTargetType, Payload extends unknown[]> = [T, Payload] | [T, Payload, SourceCodeInfo];
|
|
@@ -113,7 +115,9 @@ export type SymbolBindingTarget = GenericTarget<typeof bindingTargetTypes.symbol
|
|
|
113
115
|
export type RestBindingTarget = GenericTarget<typeof bindingTargetTypes.rest, [string, AstNode | undefined]>;
|
|
114
116
|
export type ObjectBindingTarget = GenericTarget<typeof bindingTargetTypes.object, [Record<string, BindingTarget>, AstNode | undefined]>;
|
|
115
117
|
export type ArrayBindingTarget = GenericTarget<typeof bindingTargetTypes.array, [(BindingTarget | null)[], AstNode | undefined]>;
|
|
116
|
-
export type
|
|
118
|
+
export type LiteralBindingTarget = GenericTarget<typeof bindingTargetTypes.literal, [AstNode]>;
|
|
119
|
+
export type WildcardBindingTarget = GenericTarget<typeof bindingTargetTypes.wildcard, []>;
|
|
120
|
+
export type BindingTarget = SymbolBindingTarget | RestBindingTarget | ObjectBindingTarget | ArrayBindingTarget | LiteralBindingTarget | WildcardBindingTarget;
|
|
117
121
|
export type BindingNode = AstNode<typeof NodeTypes.Binding, [BindingTarget, AstNode]>;
|
|
118
122
|
type AstBody = AstNode[];
|
|
119
123
|
export interface Ast {
|