@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.
Files changed (74) hide show
  1. package/README.md +6 -6
  2. package/dist/cli/cli.js +726 -481
  3. package/dist/cli/reference/api.d.ts +9 -7
  4. package/dist/cli/reference/index.d.ts +133 -132
  5. package/dist/cli/src/builtin/bindingNode.d.ts +5 -0
  6. package/dist/cli/src/builtin/core/assertion.d.ts +2 -0
  7. package/dist/cli/src/builtin/index.d.ts +2 -2
  8. package/dist/cli/src/builtin/interface.d.ts +1 -1
  9. package/dist/cli/src/builtin/specialExpressionTypes.d.ts +1 -1
  10. package/dist/cli/src/builtin/specialExpressions/match.d.ts +7 -0
  11. package/dist/cli/src/parser/subParsers/parseBindingTarget.d.ts +4 -2
  12. package/dist/cli/src/parser/subParsers/parseMatch.d.ts +4 -0
  13. package/dist/cli/src/parser/types.d.ts +5 -1
  14. package/dist/full.esm.js +1 -1
  15. package/dist/full.esm.js.map +1 -1
  16. package/dist/full.js +1 -1
  17. package/dist/full.js.map +1 -1
  18. package/dist/index.esm.js +1 -1
  19. package/dist/index.esm.js.map +1 -1
  20. package/dist/index.js +1 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/lits.iife.js +1 -1
  23. package/dist/lits.iife.js.map +1 -1
  24. package/dist/modules/assertion.esm.js +2 -0
  25. package/dist/modules/assertion.esm.js.map +1 -0
  26. package/dist/modules/assertion.js +2 -0
  27. package/dist/modules/assertion.js.map +1 -0
  28. package/dist/modules/reference/api.d.ts +9 -7
  29. package/dist/modules/reference/index.d.ts +133 -132
  30. package/dist/modules/src/builtin/bindingNode.d.ts +5 -0
  31. package/dist/modules/src/builtin/core/assertion.d.ts +2 -0
  32. package/dist/modules/src/builtin/index.d.ts +2 -2
  33. package/dist/modules/src/builtin/interface.d.ts +1 -1
  34. package/dist/modules/src/builtin/specialExpressionTypes.d.ts +1 -1
  35. package/dist/modules/src/builtin/specialExpressions/match.d.ts +7 -0
  36. package/dist/modules/src/full.d.ts +1 -1
  37. package/dist/modules/src/modules/{assert.d.ts → assertion.d.ts} +1 -1
  38. package/dist/modules/src/parser/subParsers/parseBindingTarget.d.ts +4 -2
  39. package/dist/modules/src/parser/subParsers/parseMatch.d.ts +4 -0
  40. package/dist/modules/src/parser/types.d.ts +5 -1
  41. package/dist/reference/api.d.ts +9 -7
  42. package/dist/reference/index.d.ts +133 -132
  43. package/dist/src/builtin/bindingNode.d.ts +5 -0
  44. package/dist/src/builtin/core/assertion.d.ts +2 -0
  45. package/dist/src/builtin/index.d.ts +2 -2
  46. package/dist/src/builtin/interface.d.ts +1 -1
  47. package/dist/src/builtin/specialExpressionTypes.d.ts +1 -1
  48. package/dist/src/builtin/specialExpressions/match.d.ts +7 -0
  49. package/dist/src/full.d.ts +1 -1
  50. package/dist/src/modules/{assert.d.ts → assertion.d.ts} +1 -1
  51. package/dist/src/parser/subParsers/parseBindingTarget.d.ts +4 -2
  52. package/dist/src/parser/subParsers/parseMatch.d.ts +4 -0
  53. package/dist/src/parser/types.d.ts +5 -1
  54. package/dist/testFramework.esm.js +1 -1
  55. package/dist/testFramework.esm.js.map +1 -1
  56. package/dist/testFramework.js +1 -1
  57. package/dist/testFramework.js.map +1 -1
  58. package/package.json +5 -5
  59. package/dist/cli/src/builtin/specialExpressions/switch.d.ts +0 -6
  60. package/dist/cli/src/parser/subParsers/parseSwitch.d.ts +0 -4
  61. package/dist/modules/assert.esm.js +0 -2
  62. package/dist/modules/assert.esm.js.map +0 -1
  63. package/dist/modules/assert.js +0 -2
  64. package/dist/modules/assert.js.map +0 -1
  65. package/dist/modules/src/builtin/specialExpressions/switch.d.ts +0 -6
  66. package/dist/modules/src/parser/subParsers/parseSwitch.d.ts +0 -4
  67. package/dist/src/builtin/specialExpressions/switch.d.ts +0 -6
  68. package/dist/src/parser/subParsers/parseSwitch.d.ts +0 -4
  69. /package/dist/cli/src/builtin/modules/{assert → assertion}/docs.d.ts +0 -0
  70. /package/dist/cli/src/builtin/modules/{assert → assertion}/index.d.ts +0 -0
  71. /package/dist/modules/src/builtin/modules/{assert → assertion}/docs.d.ts +0 -0
  72. /package/dist/modules/src/builtin/modules/{assert → assertion}/index.d.ts +0 -0
  73. /package/dist/src/builtin/modules/{assert → assertion}/docs.d.ts +0 -0
  74. /package/dist/src/builtin/modules/{assert → assertion}/index.d.ts +0 -0
@@ -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/switch").SwitchNode>, 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>];
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['switch'] | typeof specialExpressionTypes['defined?'] | typeof specialExpressionTypes['block'] | typeof specialExpressionTypes['if'] | typeof specialExpressionTypes['unless'] | typeof specialExpressionTypes['||'] | typeof specialExpressionTypes['throw'] | typeof specialExpressionTypes['array'] | typeof specialExpressionTypes['object']
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;
@@ -27,7 +27,7 @@ export declare const categoryRecord: {
27
27
  readonly bitwise: true;
28
28
  readonly misc: true;
29
29
  readonly meta: true;
30
- readonly assert: true;
30
+ readonly assertion: true;
31
31
  readonly vector: true;
32
32
  readonly 'linear-algebra': true;
33
33
  readonly matrix: true;
@@ -14,7 +14,7 @@ export declare const specialExpressionTypes: {
14
14
  readonly loop: 12;
15
15
  readonly object: 13;
16
16
  readonly recur: 14;
17
- readonly switch: 15;
17
+ readonly match: 15;
18
18
  readonly throw: 16;
19
19
  readonly try: 17;
20
20
  readonly unless: 18;
@@ -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,7 +1,7 @@
1
1
  import './initReferenceData';
2
2
  export * from './index';
3
3
  export { allBuiltinModules } from './allModules';
4
- export { assertModule } from './builtin/modules/assert';
4
+ export { assertModule } from './builtin/modules/assertion';
5
5
  export { gridModule } from './builtin/modules/grid';
6
6
  export { randomModule } from './builtin/modules/random';
7
7
  export { vectorModule } from './builtin/modules/vector';
@@ -1,2 +1,2 @@
1
- export { assertModule } from '../builtin/modules/assert';
1
+ export { assertModule } from '../builtin/modules/assertion';
2
2
  export type { LitsModule } from '../builtin/modules/interface';
@@ -1,6 +1,8 @@
1
1
  import type { BindingTarget } from '../types';
2
2
  import type { ParserContext } from '../ParserContext';
3
- export declare function parseBindingTarget(ctx: ParserContext, { requireDefaultValue, noRest }?: {
3
+ export interface ParseBindingTargetOptions {
4
4
  requireDefaultValue?: true;
5
5
  noRest?: true;
6
- }): BindingTarget;
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 BindingTarget = SymbolBindingTarget | RestBindingTarget | ObjectBindingTarget | ArrayBindingTarget;
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 {