@mojir/lits 1.1.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.
Files changed (229) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +146 -0
  3. package/dist/cli/cli/src/cli.d.ts +2 -0
  4. package/dist/cli/cli/src/cliDocumentation/formatCliDescription.d.ts +3 -0
  5. package/dist/cli/cli/src/cliDocumentation/getCliArgumentInfo.d.ts +3 -0
  6. package/dist/cli/cli/src/cliDocumentation/getCliDocumentation.d.ts +2 -0
  7. package/dist/cli/cli/src/cliDocumentation/getCliFunctionExamples.d.ts +3 -0
  8. package/dist/cli/cli/src/cliDocumentation/getCliFunctionSignature.d.ts +3 -0
  9. package/dist/cli/cli/src/cliDocumentation/getCliTitle.d.ts +3 -0
  10. package/dist/cli/cli/src/cliDocumentation/getCliType.d.ts +3 -0
  11. package/dist/cli/cli/src/cliFormatterRules.d.ts +13 -0
  12. package/dist/cli/cli/src/colorizer.d.ts +906 -0
  13. package/dist/cli/cli/src/createReadlineInterface.d.ts +6 -0
  14. package/dist/cli/cli.js +14963 -0
  15. package/dist/cli/common/clojureDocs.d.ts +1 -0
  16. package/dist/cli/common/createFormatter.d.ts +6 -0
  17. package/dist/cli/common/utils.d.ts +3 -0
  18. package/dist/cli/reference/api.d.ts +59 -0
  19. package/dist/cli/reference/categories/array.d.ts +3 -0
  20. package/dist/cli/reference/categories/assert.d.ts +3 -0
  21. package/dist/cli/reference/categories/bitwise.d.ts +3 -0
  22. package/dist/cli/reference/categories/collection.d.ts +3 -0
  23. package/dist/cli/reference/categories/functional.d.ts +3 -0
  24. package/dist/cli/reference/categories/math.d.ts +3 -0
  25. package/dist/cli/reference/categories/misc.d.ts +3 -0
  26. package/dist/cli/reference/categories/object.d.ts +3 -0
  27. package/dist/cli/reference/categories/predicate.d.ts +3 -0
  28. package/dist/cli/reference/categories/regularExpression.d.ts +3 -0
  29. package/dist/cli/reference/categories/sequence.d.ts +3 -0
  30. package/dist/cli/reference/categories/specialExpressions.d.ts +3 -0
  31. package/dist/cli/reference/categories/string.d.ts +3 -0
  32. package/dist/cli/reference/datatype.d.ts +3 -0
  33. package/dist/cli/reference/examples.d.ts +16 -0
  34. package/dist/cli/reference/index.d.ts +50 -0
  35. package/dist/cli/reference/shorthand.d.ts +3 -0
  36. package/dist/cli/src/Lits/Cache.d.ts +16 -0
  37. package/dist/cli/src/Lits/Lits.d.ts +50 -0
  38. package/dist/cli/src/analyze/index.d.ts +2 -0
  39. package/dist/cli/src/analyze/interface.d.ts +12 -0
  40. package/dist/cli/src/analyze/utils.d.ts +3 -0
  41. package/dist/cli/src/builtin/index.d.ts +5 -0
  42. package/dist/cli/src/builtin/interface.d.ts +43 -0
  43. package/dist/cli/src/builtin/normalExpressions/categories/array.d.ts +2 -0
  44. package/dist/cli/src/builtin/normalExpressions/categories/assert.d.ts +2 -0
  45. package/dist/cli/src/builtin/normalExpressions/categories/bitwise.d.ts +2 -0
  46. package/dist/cli/src/builtin/normalExpressions/categories/collection.d.ts +2 -0
  47. package/dist/cli/src/builtin/normalExpressions/categories/functional.d.ts +2 -0
  48. package/dist/cli/src/builtin/normalExpressions/categories/math.d.ts +2 -0
  49. package/dist/cli/src/builtin/normalExpressions/categories/misc.d.ts +2 -0
  50. package/dist/cli/src/builtin/normalExpressions/categories/object.d.ts +2 -0
  51. package/dist/cli/src/builtin/normalExpressions/categories/predicates.d.ts +2 -0
  52. package/dist/cli/src/builtin/normalExpressions/categories/regexp.d.ts +2 -0
  53. package/dist/cli/src/builtin/normalExpressions/categories/sequence.d.ts +4 -0
  54. package/dist/cli/src/builtin/normalExpressions/categories/string.d.ts +2 -0
  55. package/dist/cli/src/builtin/normalExpressions/index.d.ts +2 -0
  56. package/dist/cli/src/builtin/specialExpressions/and.d.ts +3 -0
  57. package/dist/cli/src/builtin/specialExpressions/comment.d.ts +2 -0
  58. package/dist/cli/src/builtin/specialExpressions/cond.d.ts +8 -0
  59. package/dist/cli/src/builtin/specialExpressions/declared.d.ts +2 -0
  60. package/dist/cli/src/builtin/specialExpressions/def.d.ts +3 -0
  61. package/dist/cli/src/builtin/specialExpressions/defs.d.ts +3 -0
  62. package/dist/cli/src/builtin/specialExpressions/do.d.ts +3 -0
  63. package/dist/cli/src/builtin/specialExpressions/functions.d.ts +9 -0
  64. package/dist/cli/src/builtin/specialExpressions/if-let.d.ts +3 -0
  65. package/dist/cli/src/builtin/specialExpressions/if-not.d.ts +3 -0
  66. package/dist/cli/src/builtin/specialExpressions/if.d.ts +3 -0
  67. package/dist/cli/src/builtin/specialExpressions/let.d.ts +3 -0
  68. package/dist/cli/src/builtin/specialExpressions/loop.d.ts +3 -0
  69. package/dist/cli/src/builtin/specialExpressions/loops.d.ts +12 -0
  70. package/dist/cli/src/builtin/specialExpressions/or.d.ts +3 -0
  71. package/dist/cli/src/builtin/specialExpressions/qq.d.ts +3 -0
  72. package/dist/cli/src/builtin/specialExpressions/recur.d.ts +2 -0
  73. package/dist/cli/src/builtin/specialExpressions/throw.d.ts +2 -0
  74. package/dist/cli/src/builtin/specialExpressions/time.d.ts +3 -0
  75. package/dist/cli/src/builtin/specialExpressions/try.d.ts +3 -0
  76. package/dist/cli/src/builtin/specialExpressions/when-first.d.ts +3 -0
  77. package/dist/cli/src/builtin/specialExpressions/when-let.d.ts +3 -0
  78. package/dist/cli/src/builtin/specialExpressions/when-not.d.ts +3 -0
  79. package/dist/cli/src/builtin/specialExpressions/when.d.ts +3 -0
  80. package/dist/cli/src/builtin/utils.d.ts +18 -0
  81. package/dist/cli/src/cli.d.ts +2 -0
  82. package/dist/cli/src/cliDocumentation/formatCliDescription.d.ts +3 -0
  83. package/dist/cli/src/cliDocumentation/getCliArgumentInfo.d.ts +3 -0
  84. package/dist/cli/src/cliDocumentation/getCliDocumentation.d.ts +2 -0
  85. package/dist/cli/src/cliDocumentation/getCliFunctionExamples.d.ts +3 -0
  86. package/dist/cli/src/cliDocumentation/getCliFunctionSignature.d.ts +3 -0
  87. package/dist/cli/src/cliDocumentation/getCliTitle.d.ts +3 -0
  88. package/dist/cli/src/cliDocumentation/getCliType.d.ts +3 -0
  89. package/dist/cli/src/cliFormatterRules.d.ts +13 -0
  90. package/dist/cli/src/colorizer.d.ts +906 -0
  91. package/dist/cli/src/constants/constants.d.ts +42 -0
  92. package/dist/cli/src/createReadlineInterface.d.ts +6 -0
  93. package/dist/cli/src/errors.d.ts +26 -0
  94. package/dist/cli/src/evaluator/ContextStack.d.ts +21 -0
  95. package/dist/cli/src/evaluator/functionExecutors.d.ts +11 -0
  96. package/dist/cli/src/evaluator/index.d.ts +5 -0
  97. package/dist/cli/src/evaluator/interface.d.ts +12 -0
  98. package/dist/cli/src/index.d.ts +12 -0
  99. package/dist/cli/src/interface.d.ts +8 -0
  100. package/dist/cli/src/parser/index.d.ts +3 -0
  101. package/dist/cli/src/parser/interface.d.ts +160 -0
  102. package/dist/cli/src/parser/parsers.d.ts +4 -0
  103. package/dist/cli/src/reservedNames.d.ts +7 -0
  104. package/dist/cli/src/testFramework/index.d.ts +14 -0
  105. package/dist/cli/src/tokenizer/index.d.ts +2 -0
  106. package/dist/cli/src/tokenizer/interface.d.ts +25 -0
  107. package/dist/cli/src/tokenizer/sugar/applyCollectionAccessor.d.ts +2 -0
  108. package/dist/cli/src/tokenizer/sugar/index.d.ts +3 -0
  109. package/dist/cli/src/tokenizer/tokenizers.d.ts +19 -0
  110. package/dist/cli/src/typeGuards/array.d.ts +9 -0
  111. package/dist/cli/src/typeGuards/astNode.d.ts +17 -0
  112. package/dist/cli/src/typeGuards/index.d.ts +15 -0
  113. package/dist/cli/src/typeGuards/lits.d.ts +21 -0
  114. package/dist/cli/src/typeGuards/litsFunction.d.ts +12 -0
  115. package/dist/cli/src/typeGuards/number.d.ts +66 -0
  116. package/dist/cli/src/typeGuards/string.d.ts +15 -0
  117. package/dist/cli/src/typeGuards/token.d.ts +13 -0
  118. package/dist/cli/src/utils/debug/debugTools.d.ts +3 -0
  119. package/dist/cli/src/utils/debug/getSourceCodeInfo.d.ts +2 -0
  120. package/dist/cli/src/utils/getAssertionError.d.ts +3 -0
  121. package/dist/cli/src/utils/index.d.ts +10 -0
  122. package/dist/cli/src/utils/symbols.d.ts +2 -0
  123. package/dist/common/clojureDocs.d.ts +1 -0
  124. package/dist/common/createFormatter.d.ts +6 -0
  125. package/dist/common/utils.d.ts +3 -0
  126. package/dist/index.esm.js +7078 -0
  127. package/dist/index.esm.js.map +1 -0
  128. package/dist/index.js +7095 -0
  129. package/dist/index.js.map +1 -0
  130. package/dist/lits.iife.js +7100 -0
  131. package/dist/lits.iife.js.map +1 -0
  132. package/dist/reference/api.d.ts +59 -0
  133. package/dist/reference/categories/array.d.ts +3 -0
  134. package/dist/reference/categories/assert.d.ts +3 -0
  135. package/dist/reference/categories/bitwise.d.ts +3 -0
  136. package/dist/reference/categories/collection.d.ts +3 -0
  137. package/dist/reference/categories/functional.d.ts +3 -0
  138. package/dist/reference/categories/math.d.ts +3 -0
  139. package/dist/reference/categories/misc.d.ts +3 -0
  140. package/dist/reference/categories/object.d.ts +3 -0
  141. package/dist/reference/categories/predicate.d.ts +3 -0
  142. package/dist/reference/categories/regularExpression.d.ts +3 -0
  143. package/dist/reference/categories/sequence.d.ts +3 -0
  144. package/dist/reference/categories/specialExpressions.d.ts +3 -0
  145. package/dist/reference/categories/string.d.ts +3 -0
  146. package/dist/reference/datatype.d.ts +3 -0
  147. package/dist/reference/index.d.ts +50 -0
  148. package/dist/reference/shorthand.d.ts +3 -0
  149. package/dist/src/Lits/Cache.d.ts +16 -0
  150. package/dist/src/Lits/Lits.d.ts +50 -0
  151. package/dist/src/analyze/index.d.ts +2 -0
  152. package/dist/src/analyze/interface.d.ts +12 -0
  153. package/dist/src/analyze/utils.d.ts +3 -0
  154. package/dist/src/builtin/index.d.ts +5 -0
  155. package/dist/src/builtin/interface.d.ts +43 -0
  156. package/dist/src/builtin/normalExpressions/categories/array.d.ts +2 -0
  157. package/dist/src/builtin/normalExpressions/categories/assert.d.ts +2 -0
  158. package/dist/src/builtin/normalExpressions/categories/bitwise.d.ts +2 -0
  159. package/dist/src/builtin/normalExpressions/categories/collection.d.ts +2 -0
  160. package/dist/src/builtin/normalExpressions/categories/functional.d.ts +2 -0
  161. package/dist/src/builtin/normalExpressions/categories/math.d.ts +2 -0
  162. package/dist/src/builtin/normalExpressions/categories/misc.d.ts +2 -0
  163. package/dist/src/builtin/normalExpressions/categories/object.d.ts +2 -0
  164. package/dist/src/builtin/normalExpressions/categories/predicates.d.ts +2 -0
  165. package/dist/src/builtin/normalExpressions/categories/regexp.d.ts +2 -0
  166. package/dist/src/builtin/normalExpressions/categories/sequence.d.ts +4 -0
  167. package/dist/src/builtin/normalExpressions/categories/string.d.ts +2 -0
  168. package/dist/src/builtin/normalExpressions/index.d.ts +2 -0
  169. package/dist/src/builtin/specialExpressions/and.d.ts +3 -0
  170. package/dist/src/builtin/specialExpressions/comment.d.ts +2 -0
  171. package/dist/src/builtin/specialExpressions/cond.d.ts +8 -0
  172. package/dist/src/builtin/specialExpressions/declared.d.ts +2 -0
  173. package/dist/src/builtin/specialExpressions/def.d.ts +3 -0
  174. package/dist/src/builtin/specialExpressions/defs.d.ts +3 -0
  175. package/dist/src/builtin/specialExpressions/do.d.ts +3 -0
  176. package/dist/src/builtin/specialExpressions/functions.d.ts +9 -0
  177. package/dist/src/builtin/specialExpressions/if-let.d.ts +3 -0
  178. package/dist/src/builtin/specialExpressions/if-not.d.ts +3 -0
  179. package/dist/src/builtin/specialExpressions/if.d.ts +3 -0
  180. package/dist/src/builtin/specialExpressions/let.d.ts +3 -0
  181. package/dist/src/builtin/specialExpressions/loop.d.ts +3 -0
  182. package/dist/src/builtin/specialExpressions/loops.d.ts +12 -0
  183. package/dist/src/builtin/specialExpressions/or.d.ts +3 -0
  184. package/dist/src/builtin/specialExpressions/qq.d.ts +3 -0
  185. package/dist/src/builtin/specialExpressions/recur.d.ts +2 -0
  186. package/dist/src/builtin/specialExpressions/throw.d.ts +2 -0
  187. package/dist/src/builtin/specialExpressions/time.d.ts +3 -0
  188. package/dist/src/builtin/specialExpressions/try.d.ts +3 -0
  189. package/dist/src/builtin/specialExpressions/when-first.d.ts +3 -0
  190. package/dist/src/builtin/specialExpressions/when-let.d.ts +3 -0
  191. package/dist/src/builtin/specialExpressions/when-not.d.ts +3 -0
  192. package/dist/src/builtin/specialExpressions/when.d.ts +3 -0
  193. package/dist/src/builtin/utils.d.ts +18 -0
  194. package/dist/src/constants/constants.d.ts +42 -0
  195. package/dist/src/errors.d.ts +26 -0
  196. package/dist/src/evaluator/ContextStack.d.ts +21 -0
  197. package/dist/src/evaluator/functionExecutors.d.ts +11 -0
  198. package/dist/src/evaluator/index.d.ts +5 -0
  199. package/dist/src/evaluator/interface.d.ts +12 -0
  200. package/dist/src/index.d.ts +12 -0
  201. package/dist/src/interface.d.ts +8 -0
  202. package/dist/src/parser/index.d.ts +3 -0
  203. package/dist/src/parser/interface.d.ts +160 -0
  204. package/dist/src/parser/parsers.d.ts +4 -0
  205. package/dist/src/reservedNames.d.ts +7 -0
  206. package/dist/src/testFramework/index.d.ts +14 -0
  207. package/dist/src/tokenizer/index.d.ts +2 -0
  208. package/dist/src/tokenizer/interface.d.ts +25 -0
  209. package/dist/src/tokenizer/sugar/applyCollectionAccessor.d.ts +2 -0
  210. package/dist/src/tokenizer/sugar/index.d.ts +3 -0
  211. package/dist/src/tokenizer/tokenizers.d.ts +19 -0
  212. package/dist/src/typeGuards/array.d.ts +9 -0
  213. package/dist/src/typeGuards/astNode.d.ts +17 -0
  214. package/dist/src/typeGuards/index.d.ts +15 -0
  215. package/dist/src/typeGuards/lits.d.ts +21 -0
  216. package/dist/src/typeGuards/litsFunction.d.ts +12 -0
  217. package/dist/src/typeGuards/number.d.ts +66 -0
  218. package/dist/src/typeGuards/string.d.ts +15 -0
  219. package/dist/src/typeGuards/token.d.ts +13 -0
  220. package/dist/src/utils/debug/debugTools.d.ts +3 -0
  221. package/dist/src/utils/debug/getSourceCodeInfo.d.ts +2 -0
  222. package/dist/src/utils/getAssertionError.d.ts +3 -0
  223. package/dist/src/utils/index.d.ts +10 -0
  224. package/dist/src/utils/symbols.d.ts +2 -0
  225. package/dist/testFramework.esm.js +7197 -0
  226. package/dist/testFramework.esm.js.map +1 -0
  227. package/dist/testFramework.js +7200 -0
  228. package/dist/testFramework.js.map +1 -0
  229. package/package.json +62 -0
@@ -0,0 +1,42 @@
1
+ export declare enum AstNodeType {
2
+ Number = 201,
3
+ String = 202,
4
+ NormalExpression = 203,
5
+ SpecialExpression = 204,
6
+ Name = 205,
7
+ Modifier = 206,
8
+ ReservedName = 207,
9
+ Binding = 208,
10
+ Argument = 209,
11
+ Partial = 210
12
+ }
13
+ export declare const astNodeTypeName: Map<AstNodeType, string>;
14
+ export declare function isAstNodeType(type: unknown): type is AstNodeType;
15
+ export declare enum TokenType {
16
+ Bracket = 101,
17
+ Number = 102,
18
+ Name = 103,
19
+ String = 104,
20
+ ReservedName = 105,
21
+ Modifier = 106,
22
+ RegexpShorthand = 107,
23
+ FnShorthand = 108,
24
+ CollectionAccessor = 109
25
+ }
26
+ export declare const tokenTypeName: Map<TokenType, string>;
27
+ export declare function isTokenType(type: unknown): type is TokenType;
28
+ export declare enum FunctionType {
29
+ UserDefined = 301,
30
+ Partial = 302,
31
+ Comp = 303,
32
+ Constantly = 304,
33
+ Juxt = 305,
34
+ Complement = 306,
35
+ EveryPred = 307,
36
+ SomePred = 308,
37
+ Fnil = 309,
38
+ Builtin = 310,
39
+ NativeJsFunction = 399
40
+ }
41
+ export declare const functionTypeName: Map<FunctionType, string>;
42
+ export declare function isFunctionType(type: unknown): type is FunctionType;
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ /// <reference types="node" />
3
+ import type { ReadLine, ReadLineOptions } from 'node:readline';
4
+ type Options = Required<Pick<ReadLineOptions, 'completer' | 'historySize' | 'prompt'>>;
5
+ export declare function createReadlineInterface(options: Options): ReadLine;
6
+ export {};
@@ -0,0 +1,26 @@
1
+ import type { Arr } from './interface';
2
+ import type { SourceCodeInfo } from './tokenizer/interface';
3
+ export declare class RecurSignal extends Error {
4
+ params: Arr;
5
+ constructor(params: Arr);
6
+ }
7
+ export declare class LitsError extends Error {
8
+ readonly sourceCodeInfo?: SourceCodeInfo;
9
+ readonly shortMessage: string;
10
+ constructor(message: string | Error, sourceCodeInfo?: SourceCodeInfo);
11
+ getCodeMarker(): string | undefined;
12
+ }
13
+ export declare class NotAFunctionError extends LitsError {
14
+ constructor(fn: unknown, sourceCodeInfo?: SourceCodeInfo);
15
+ }
16
+ export declare class UserDefinedError extends LitsError {
17
+ constructor(message: string | Error, sourceCodeInfo?: SourceCodeInfo);
18
+ }
19
+ export declare class AssertionError extends LitsError {
20
+ constructor(message: string | Error, sourceCodeInfo?: SourceCodeInfo);
21
+ }
22
+ export declare class UndefinedSymbolError extends LitsError {
23
+ symbol: string;
24
+ constructor(symbolName: string, sourceCodeInfo?: SourceCodeInfo);
25
+ }
26
+ export declare function isLitsError(error: unknown): error is LitsError;
@@ -0,0 +1,21 @@
1
+ import type { ExtraData, NameNode, NativeJsFunction } from '../parser/interface';
2
+ import type { Any } from '../interface';
3
+ import type { LazyValue } from '../Lits/Lits';
4
+ import type { Context, LookUpResult } from './interface';
5
+ export declare class ContextStack {
6
+ private contexts;
7
+ globalContext: Context;
8
+ private values?;
9
+ private lazyValues?;
10
+ private nativeJsFunctions?;
11
+ constructor({ contexts, values: hostValues, lazyValues: lazyHostValues, nativeJsFunctions, }: {
12
+ contexts: Context[];
13
+ values?: Record<string, unknown>;
14
+ lazyValues?: Record<string, LazyValue>;
15
+ nativeJsFunctions?: Record<string, NativeJsFunction>;
16
+ });
17
+ create(context: Context, extraData?: ExtraData): ContextStack;
18
+ getValue(name: string): unknown;
19
+ lookUp(node: NameNode): LookUpResult;
20
+ evaluateName(node: NameNode): Any;
21
+ }
@@ -0,0 +1,11 @@
1
+ import type { Any, Arr } from '../interface';
2
+ import type { LitsFunctionType } from '../parser/interface';
3
+ import type { SourceCodeInfo } from '../tokenizer/interface';
4
+ import type { EvaluateAstNode, ExecuteFunction } from './interface';
5
+ import type { ContextStack } from './ContextStack';
6
+ type FunctionExecutors = Record<LitsFunctionType, (fn: any, params: Arr, sourceCodeInfo: SourceCodeInfo | undefined, contextStack: ContextStack, helpers: {
7
+ evaluateAstNode: EvaluateAstNode;
8
+ executeFunction: ExecuteFunction;
9
+ }) => Any>;
10
+ export declare const functionExecutors: FunctionExecutors;
11
+ export {};
@@ -0,0 +1,5 @@
1
+ import type { Ast, AstNode } from '../parser/interface';
2
+ import type { Any } from '../interface';
3
+ import type { ContextStack } from './ContextStack';
4
+ export declare function evaluate(ast: Ast, contextStack: ContextStack): Any;
5
+ export declare function evaluateAstNode(node: AstNode, contextStack: ContextStack): Any;
@@ -0,0 +1,12 @@
1
+ import type { Any, Arr } from '../interface';
2
+ import type { AstNode, BuiltinFunction } from '../parser/interface';
3
+ import type { SourceCodeInfo } from '../tokenizer/interface';
4
+ import type { ContextStack } from './ContextStack';
5
+ export interface ContextEntry {
6
+ value: Any;
7
+ }
8
+ export type Context = Record<string, ContextEntry>;
9
+ export type EvaluateAstNode = (node: AstNode, contextStack: ContextStack) => Any;
10
+ export type ExecuteFunction = (fn: Any, params: Arr, contextStack: ContextStack, sourceCodeInfo?: SourceCodeInfo) => Any;
11
+ export type LookUpResult = ContextEntry | BuiltinFunction | 'specialExpression' | null;
12
+ export declare function isContextEntry(value: unknown): value is ContextEntry;
@@ -0,0 +1,12 @@
1
+ export { AstNodeType, TokenType, FunctionType } from './constants/constants';
2
+ export { isBuiltinFunction, isLitsFunction, asLitsFunction, assertLitsFunction, isUserDefinedFunction, asUserDefinedFunction, assertUserDefinedFunction, isNativeJsFunction, asNativeJsFunction, assertNativeJsFunction, } from './typeGuards/litsFunction';
3
+ export { type LitsFunction, type NativeJsFunction, type ExtraData } from './parser/interface';
4
+ export type { Context } from './evaluator/interface';
5
+ export type { Ast } from './parser/interface';
6
+ export type { Token, SourceCodeInfo } from './tokenizer/interface';
7
+ export { normalExpressionKeys, specialExpressionKeys } from './builtin';
8
+ export { reservedNames } from './reservedNames';
9
+ export { Lits } from './Lits/Lits';
10
+ export { type LitsError, isLitsError } from './errors';
11
+ export type { LitsParams, LitsRuntimeInfo, LazyValue } from './Lits/Lits';
12
+ export { createNativeJsFunction } from './utils';
@@ -0,0 +1,8 @@
1
+ import type { RegularExpression } from './parser/interface';
2
+ import type { LitsFunction } from '.';
3
+ export type Arr = unknown[];
4
+ export type Seq = string | Arr;
5
+ export type Obj = Record<string, unknown>;
6
+ export type Coll = Seq | Obj;
7
+ export type Any = Coll | string | number | boolean | null | LitsFunction | RegularExpression;
8
+ export type UnknownRecord = Record<string, unknown>;
@@ -0,0 +1,3 @@
1
+ import type { TokenStream } from '../tokenizer/interface';
2
+ import type { Ast } from './interface';
3
+ export declare function parse(tokenStream: TokenStream): Ast;
@@ -0,0 +1,160 @@
1
+ import type { SpecialExpressionName } from '../builtin/interface';
2
+ import type { Condition } from '../builtin/specialExpressions/cond';
3
+ import type { LoopBindingNode } from '../builtin/specialExpressions/loops';
4
+ import type { Arity, FunctionOverload } from '../builtin/utils';
5
+ import type { Context } from '../evaluator/interface';
6
+ import type { Any, Arr } from '../interface';
7
+ import type { ReservedName } from '../reservedNames';
8
+ import type { SourceCodeInfo, Token, TokenStream } from '../tokenizer/interface';
9
+ import type { FUNCTION_SYMBOL, REGEXP_SYMBOL } from '../utils/symbols';
10
+ import type { AstNodeType, FunctionType } from '../constants/constants';
11
+ import type { JsFunction, LazyValue } from '../Lits/Lits';
12
+ export interface EvaluatedFunctionArguments {
13
+ mandatoryArguments: string[];
14
+ restArgument?: string;
15
+ }
16
+ export interface EvaluatedFunctionOverload {
17
+ as: EvaluatedFunctionArguments;
18
+ b: AstNode[];
19
+ a: Arity;
20
+ f: Context;
21
+ }
22
+ export type ExtraData = Record<string, LazyValue>;
23
+ interface GenericLitsFunction {
24
+ [FUNCTION_SYMBOL]: true;
25
+ sourceCodeInfo?: SourceCodeInfo;
26
+ t: FunctionType;
27
+ }
28
+ export interface RegularExpression {
29
+ [REGEXP_SYMBOL]: true;
30
+ sourceCodeInfo?: SourceCodeInfo;
31
+ s: string;
32
+ f: string;
33
+ }
34
+ export interface NativeJsFunction extends GenericLitsFunction {
35
+ t: FunctionType.NativeJsFunction;
36
+ n: string | undefined;
37
+ f: JsFunction;
38
+ }
39
+ export interface UserDefinedFunction extends GenericLitsFunction {
40
+ t: FunctionType.UserDefined;
41
+ n: string | undefined;
42
+ o: EvaluatedFunctionOverload[];
43
+ x?: ExtraData;
44
+ }
45
+ export interface PartialFunction extends GenericLitsFunction {
46
+ t: FunctionType.Partial;
47
+ f: Any;
48
+ p: Arr;
49
+ }
50
+ export interface CompFunction extends GenericLitsFunction {
51
+ t: FunctionType.Comp;
52
+ f: Arr;
53
+ }
54
+ export interface ConstantlyFunction extends GenericLitsFunction {
55
+ t: FunctionType.Constantly;
56
+ v: Any;
57
+ }
58
+ export interface JuxtFunction extends GenericLitsFunction {
59
+ t: FunctionType.Juxt;
60
+ f: Arr;
61
+ }
62
+ export interface ComplementFunction extends GenericLitsFunction {
63
+ t: FunctionType.Complement;
64
+ f: Any;
65
+ }
66
+ export interface EveryPredFunction extends GenericLitsFunction {
67
+ t: FunctionType.EveryPred;
68
+ f: Arr;
69
+ }
70
+ export interface SomePredFunction extends GenericLitsFunction {
71
+ t: FunctionType.SomePred;
72
+ f: Arr;
73
+ }
74
+ export interface FNilFunction extends GenericLitsFunction {
75
+ t: FunctionType.Fnil;
76
+ f: Any;
77
+ p: Arr;
78
+ }
79
+ export interface BuiltinFunction extends GenericLitsFunction {
80
+ t: FunctionType.Builtin;
81
+ n: string;
82
+ }
83
+ export type LitsFunction = NativeJsFunction | UserDefinedFunction | BuiltinFunction | PartialFunction | CompFunction | ConstantlyFunction | JuxtFunction | ComplementFunction | EveryPredFunction | SomePredFunction | FNilFunction;
84
+ export type LitsFunctionType = LitsFunction['t'];
85
+ export type ModifierName = '&' | '&let' | '&when' | '&while';
86
+ interface GenericNode {
87
+ t: AstNodeType;
88
+ tkn?: Token;
89
+ }
90
+ export type ExpressionNode = NormalExpressionNode | SpecialExpressionNode | NumberNode | StringNode;
91
+ export type ParseBinding = (tokens: TokenStream, position: number) => [number, BindingNode];
92
+ export type ParseBindings = (tokens: TokenStream, position: number) => [number, BindingNode[]];
93
+ export type ParseArgument = (tokens: TokenStream, position: number) => [number, ArgumentNode | ModifierNode];
94
+ export type ParseExpression = (tokens: TokenStream, position: number) => [number, ExpressionNode];
95
+ export type ParseTokens = (tokens: TokenStream, position: number) => [number, AstNode[]];
96
+ export type ParseToken = (tokens: TokenStream, position: number) => [number, AstNode];
97
+ export interface NumberNode extends GenericNode {
98
+ t: AstNodeType.Number;
99
+ v: number;
100
+ }
101
+ export interface StringNode extends GenericNode {
102
+ t: AstNodeType.String;
103
+ v: string;
104
+ }
105
+ export interface NameNode extends GenericNode {
106
+ t: AstNodeType.Name;
107
+ v: string;
108
+ }
109
+ export interface ModifierNode extends GenericNode {
110
+ t: AstNodeType.Modifier;
111
+ v: ModifierName;
112
+ }
113
+ export interface ReservedNameNode extends GenericNode {
114
+ t: AstNodeType.ReservedName;
115
+ v: ReservedName;
116
+ }
117
+ interface NormalExpressionNodeBase extends GenericNode {
118
+ t: AstNodeType.NormalExpression;
119
+ p: AstNode[];
120
+ }
121
+ export interface NormalExpressionNodeWithName extends NormalExpressionNodeBase {
122
+ n: string;
123
+ e?: ExpressionNode;
124
+ }
125
+ interface NormalExpressionNodeExpression extends NormalExpressionNodeBase {
126
+ n?: never;
127
+ e: ExpressionNode;
128
+ }
129
+ export type NormalExpressionNode = NormalExpressionNodeWithName | NormalExpressionNodeExpression;
130
+ export interface BindingNode extends GenericNode {
131
+ t: AstNodeType.Binding;
132
+ n: string;
133
+ v: AstNode;
134
+ }
135
+ export interface ArgumentNode extends GenericNode {
136
+ t: AstNodeType.Argument;
137
+ n: string;
138
+ d?: AstNode;
139
+ }
140
+ export interface SpecialExpressionNode extends GenericNode {
141
+ t: AstNodeType.SpecialExpression;
142
+ n: SpecialExpressionName;
143
+ p: AstNode[];
144
+ b?: BindingNode;
145
+ bs?: BindingNode[];
146
+ c?: Condition[];
147
+ f?: AstNode;
148
+ o?: FunctionOverload[];
149
+ l?: LoopBindingNode[];
150
+ m?: AstNode;
151
+ te?: AstNode;
152
+ e?: NameNode;
153
+ ce?: AstNode;
154
+ }
155
+ export type AstNode = NumberNode | StringNode | ReservedNameNode | NameNode | NormalExpressionNode | ModifierNode | SpecialExpressionNode;
156
+ type AstBody = AstNode[];
157
+ export interface Ast {
158
+ b: AstBody;
159
+ }
160
+ export {};
@@ -0,0 +1,4 @@
1
+ import type { TokenStream } from '../tokenizer/interface';
2
+ import type { AstNode, NumberNode } from './interface';
3
+ export declare function parseNumber(tokenStream: TokenStream, position: number): [number, NumberNode];
4
+ export declare function parseToken(tokenStream: TokenStream, position: number): [number, AstNode];
@@ -0,0 +1,7 @@
1
+ import type { Any } from './interface';
2
+ export type ReservedName = 'true' | 'false' | 'nil' | 'null' | 'undefined' | '===' | '!==' | '&&' | '||';
3
+ export declare const reservedNamesRecord: Record<ReservedName, {
4
+ value: Any;
5
+ forbidden?: true;
6
+ }>;
7
+ export declare const reservedNames: ReservedName[];
@@ -0,0 +1,14 @@
1
+ export interface RunTestParams {
2
+ testPath: string;
3
+ testNamePattern?: RegExp;
4
+ }
5
+ export interface TestResult {
6
+ /**
7
+ * Test report
8
+ * http://testanything.org/
9
+ */
10
+ tap: string;
11
+ success: boolean;
12
+ }
13
+ export declare function runTest({ testPath: filePath, testNamePattern }: RunTestParams): TestResult;
14
+ export declare function getErrorYaml(error: unknown): string;
@@ -0,0 +1,2 @@
1
+ import type { TokenStream, TokenizeParams } from './interface';
2
+ export declare function tokenize(input: string, params: TokenizeParams): TokenStream;
@@ -0,0 +1,25 @@
1
+ import type { TokenType } from '../constants/constants';
2
+ export interface SourceCodeInfo {
3
+ position?: {
4
+ line: number;
5
+ column: number;
6
+ };
7
+ code?: string;
8
+ filePath?: string;
9
+ }
10
+ export interface Token {
11
+ t: TokenType;
12
+ v: string;
13
+ o?: Record<string, boolean>;
14
+ sourceCodeInfo?: SourceCodeInfo;
15
+ }
16
+ export type TokenDescriptor = [length: number, token: Token | undefined];
17
+ export type Tokenizer = (input: string, position: number, sourceCodeInfo?: SourceCodeInfo) => TokenDescriptor;
18
+ export interface TokenStream {
19
+ tokens: Token[];
20
+ filePath?: string;
21
+ }
22
+ export interface TokenizeParams {
23
+ debug: boolean;
24
+ filePath?: string;
25
+ }
@@ -0,0 +1,2 @@
1
+ import type { SugarFunction } from '.';
2
+ export declare const applyCollectionAccessors: SugarFunction;
@@ -0,0 +1,3 @@
1
+ import type { TokenStream } from '../interface';
2
+ export type SugarFunction = (tokenStream: TokenStream) => TokenStream;
3
+ export declare function getSugar(): SugarFunction[];
@@ -0,0 +1,19 @@
1
+ import type { Tokenizer } from './interface';
2
+ export declare const nameCharacters = "[@%0-9a-zA-Z\u00E0\u00E1\u00E2\u00E3\u0103\u00E4\u0101\u00E5\u00E6\u0107\u010D\u00E7\u00E8\u00E9\u00EA\u0115\u00EB\u0113\u00EC\u00ED\u00EE\u012D\u00EF\u00F0\u0142\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u0151\u00F8\u0161\u00F9\u00FA\u00FB\u00FC\u0171\u00FD\u00FF\u00FE\u00C0\u00C1\u00C2\u00C3\u0102\u00C4\u0100\u00C5\u00C6\u0106\u010C\u00C7\u00C8\u00C9\u00CA\u0114\u00CB\u0112\u00CC\u00CD\u00CE\u012C\u00CF\u00D0\u0141\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u0150\u00D8\u0160\u00D9\u00DA\u00DB\u00DC\u0170\u00DD\u00DE\u00DF_^?=!$%<>+*/-]";
3
+ export declare const skipWhiteSpace: Tokenizer;
4
+ export declare const skipComment: Tokenizer;
5
+ export declare const tokenizeLeftParen: Tokenizer;
6
+ export declare const tokenizeRightParen: Tokenizer;
7
+ export declare const tokenizeLeftBracket: Tokenizer;
8
+ export declare const tokenizeRightBracket: Tokenizer;
9
+ export declare const tokenizeLeftCurly: Tokenizer;
10
+ export declare const tokenizeRightCurly: Tokenizer;
11
+ export declare const tokenizeString: Tokenizer;
12
+ export declare const tokenizeCollectionAccessor: Tokenizer;
13
+ export declare const tokenizeSymbolString: Tokenizer;
14
+ export declare const tokenizeRegexpShorthand: Tokenizer;
15
+ export declare const tokenizeFnShorthand: Tokenizer;
16
+ export declare const tokenizeNumber: Tokenizer;
17
+ export declare const tokenizeReservedName: Tokenizer;
18
+ export declare const tokenizeName: Tokenizer;
19
+ export declare const tokenizeModifier: Tokenizer;
@@ -0,0 +1,9 @@
1
+ import type { SourceCodeInfo } from '../tokenizer/interface';
2
+ export declare function asArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): unknown[];
3
+ export declare function assertArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is unknown[];
4
+ export declare function isStringArray(value: unknown): value is string[];
5
+ export declare function asStringArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): string[];
6
+ export declare function assertStringArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is string[];
7
+ export declare function isCharArray(value: unknown): value is string[];
8
+ export declare function asCharArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): string[];
9
+ export declare function assertCharArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is string[];
@@ -0,0 +1,17 @@
1
+ import type { AstNode, ExpressionNode, NameNode, NormalExpressionNode, NormalExpressionNodeWithName } from '../parser/interface';
2
+ import type { SourceCodeInfo } from '../tokenizer/interface';
3
+ export declare function isAstNode(value: unknown): value is AstNode;
4
+ export declare function asAstNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): AstNode;
5
+ export declare function assertAstNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is AstNode;
6
+ export declare function isNameNode(value: unknown): value is NameNode;
7
+ export declare function asNameNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): NameNode;
8
+ export declare function assertNameNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is NameNode;
9
+ export declare function isNormalExpressionNode(value: unknown): value is NormalExpressionNode;
10
+ export declare function asNormalExpressionNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): NormalExpressionNode;
11
+ export declare function assertNormalExpressionNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is NormalExpressionNode;
12
+ export declare function isNormalExpressionNodeWithName(value: unknown): value is NormalExpressionNodeWithName;
13
+ export declare function asNormalExpressionNodeWithName(value: unknown, sourceCodeInfo?: SourceCodeInfo): NormalExpressionNodeWithName;
14
+ export declare function assertNormalExpressionNodeWithName(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is NormalExpressionNodeWithName;
15
+ export declare function isExpressionNode(value: unknown): value is ExpressionNode;
16
+ export declare function asExpressionNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): ExpressionNode;
17
+ export declare function assertExpressionNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is ExpressionNode;
@@ -0,0 +1,15 @@
1
+ import type { UnknownRecord } from '../interface';
2
+ import type { NormalExpressionNode, SpecialExpressionNode } from '../parser/interface';
3
+ import type { SourceCodeInfo } from '../tokenizer/interface';
4
+ export declare function assertEventNumberOfParams(node: NormalExpressionNode): void;
5
+ export declare function isNonUndefined<T>(value: T | undefined): value is T;
6
+ export declare function asNonUndefined<T>(value: T | undefined, sourceCodeInfo?: SourceCodeInfo): T;
7
+ export declare function assertNonUndefined<T>(value: T | undefined, sourceCodeInfo?: SourceCodeInfo): asserts value is T;
8
+ export declare function assertUnreachable(_: never): never;
9
+ export declare function isUnknownRecord(value: unknown): value is Record<string, unknown>;
10
+ export declare function assertUnknownRecord(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is UnknownRecord;
11
+ export declare function asUnknownRecord(value: unknown, sourceCodeInfo?: SourceCodeInfo): UnknownRecord;
12
+ export declare function assertNumberOfParams(count: number | {
13
+ min?: number;
14
+ max?: number;
15
+ }, node: NormalExpressionNode | SpecialExpressionNode): void;
@@ -0,0 +1,21 @@
1
+ import type { Any, Coll, Obj, Seq } from '../interface';
2
+ import type { RegularExpression } from '../parser/interface';
3
+ import type { SourceCodeInfo } from '../tokenizer/interface';
4
+ export declare function isAny(value: unknown): value is Any;
5
+ export declare function asAny(value: unknown, sourceCodeInfo?: SourceCodeInfo): Any;
6
+ export declare function assertAny(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Any;
7
+ export declare function isSeq(value: unknown): value is Seq;
8
+ export declare function asSeq(value: unknown, sourceCodeInfo?: SourceCodeInfo): Seq;
9
+ export declare function assertSeq(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Seq;
10
+ export declare function isObj(value: unknown): value is Obj;
11
+ export declare function asObj(value: unknown, sourceCodeInfo?: SourceCodeInfo): Obj;
12
+ export declare function assertObj(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Obj;
13
+ export declare function isColl(value: unknown): value is Coll;
14
+ export declare function asColl(value: unknown, sourceCodeInfo?: SourceCodeInfo): Coll;
15
+ export declare function assertColl(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Coll;
16
+ export declare function isRegularExpression(regexp: unknown): regexp is RegularExpression;
17
+ export declare function asRegularExpression(value: unknown, sourceCodeInfo?: SourceCodeInfo): RegularExpression;
18
+ export declare function assertRegularExpression(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is RegularExpression;
19
+ export declare function isStringOrRegularExpression(value: unknown): value is string | RegularExpression;
20
+ export declare function asStringOrRegularExpression(value: unknown, sourceCodeInfo?: SourceCodeInfo): string | RegularExpression;
21
+ export declare function assertStringOrRegularExpression(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is string | RegularExpression;
@@ -0,0 +1,12 @@
1
+ import type { BuiltinFunction, LitsFunction, NativeJsFunction, UserDefinedFunction } from '../parser/interface';
2
+ import type { SourceCodeInfo } from '../tokenizer/interface';
3
+ export declare function isLitsFunction(value: unknown): value is LitsFunction;
4
+ export declare function asLitsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): LitsFunction;
5
+ export declare function assertLitsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is LitsFunction;
6
+ export declare function isUserDefinedFunction(value: unknown): value is UserDefinedFunction;
7
+ export declare function asUserDefinedFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): UserDefinedFunction;
8
+ export declare function assertUserDefinedFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is UserDefinedFunction;
9
+ export declare function isNativeJsFunction(value: unknown): value is NativeJsFunction;
10
+ export declare function asNativeJsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): NativeJsFunction;
11
+ export declare function assertNativeJsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is NativeJsFunction;
12
+ export declare function isBuiltinFunction(value: unknown): value is BuiltinFunction;
@@ -0,0 +1,66 @@
1
+ import type { SourceCodeInfo } from '../tokenizer/interface';
2
+ type SignOptions = {
3
+ positive?: true;
4
+ negative?: never;
5
+ nonPositive?: never;
6
+ nonNegative?: never;
7
+ zero?: never;
8
+ nonZero?: never;
9
+ } | {
10
+ positive?: never;
11
+ negative?: true;
12
+ nonPositive?: never;
13
+ nonNegative?: never;
14
+ zero?: never;
15
+ nonZero?: never;
16
+ } | {
17
+ positive?: never;
18
+ negative?: never;
19
+ nonPositive?: true;
20
+ nonNegative?: never;
21
+ zero?: never;
22
+ nonZero?: never;
23
+ } | {
24
+ positive?: never;
25
+ negative?: never;
26
+ nonPositive?: never;
27
+ nonNegative?: true;
28
+ zero?: never;
29
+ nonZero?: never;
30
+ } | {
31
+ positive?: never;
32
+ negative?: never;
33
+ nonPositive?: never;
34
+ nonNegative?: never;
35
+ zero?: true;
36
+ nonZero?: never;
37
+ } | {
38
+ positive?: never;
39
+ negative?: never;
40
+ nonPositive?: never;
41
+ nonNegative?: never;
42
+ zero?: never;
43
+ nonZero?: true;
44
+ };
45
+ type GtOptions = {
46
+ gt?: number;
47
+ gte?: never;
48
+ } | {
49
+ gt?: never;
50
+ gte?: number;
51
+ };
52
+ type LtOptions = {
53
+ lt?: number;
54
+ lte?: never;
55
+ } | {
56
+ lt?: never;
57
+ lte?: number;
58
+ };
59
+ type NumberOptions = {
60
+ integer?: true;
61
+ finite?: true;
62
+ } & SignOptions & GtOptions & LtOptions;
63
+ export declare function isNumber(value: unknown, options?: NumberOptions): value is number;
64
+ export declare function assertNumber(value: unknown, sourceCodeInfo?: SourceCodeInfo, options?: NumberOptions): asserts value is number;
65
+ export declare function asNumber(value: unknown, sourceCodeInfo: SourceCodeInfo | undefined, options?: NumberOptions): number;
66
+ export {};
@@ -0,0 +1,15 @@
1
+ import type { SourceCodeInfo } from '../tokenizer/interface';
2
+ type StringAssertionOptions = {
3
+ nonEmpty?: true;
4
+ char?: never;
5
+ } | {
6
+ nonEmpty?: never;
7
+ char?: true;
8
+ };
9
+ export declare function isString(value: unknown, options?: StringAssertionOptions): value is string;
10
+ export declare function assertString(value: unknown, sourceCodeInfo: SourceCodeInfo | undefined, options?: StringAssertionOptions): asserts value is string;
11
+ export declare function asString(value: unknown, sourceCodeInfo: SourceCodeInfo | undefined, options?: StringAssertionOptions): string;
12
+ export declare function isStringOrNumber(value: unknown): value is string | number;
13
+ export declare function asStringOrNumber(value: unknown, sourceCodeInfo?: SourceCodeInfo): string | number;
14
+ export declare function assertStringOrNumber(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is string | number;
15
+ export {};
@@ -0,0 +1,13 @@
1
+ import { type TokenType } from '../constants/constants';
2
+ import type { Token } from '../tokenizer/interface';
3
+ type TokenAssertionOptions = {
4
+ type: TokenType;
5
+ value?: string;
6
+ } | {
7
+ type?: never;
8
+ value?: never;
9
+ };
10
+ export declare function isToken(value: unknown, options?: TokenAssertionOptions): value is Token;
11
+ export declare function assertToken(value: unknown, filePath: string | undefined, options?: TokenAssertionOptions): asserts value is Token;
12
+ export declare function asToken(value: unknown, filePath: string | undefined, options?: TokenAssertionOptions): Token;
13
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { SourceCodeInfo } from '../../tokenizer/interface';
2
+ export declare function valueToString(value: unknown): string;
3
+ export declare function getCodeMarker(sourceCodeInfo: SourceCodeInfo): string;
@@ -0,0 +1,2 @@
1
+ import type { SourceCodeInfo } from '../../tokenizer/interface';
2
+ export declare function getSourceCodeInfo(anyValue: any, sourceCodeInfo?: SourceCodeInfo): SourceCodeInfo | undefined;
@@ -0,0 +1,3 @@
1
+ import { LitsError } from '../errors';
2
+ import type { SourceCodeInfo } from '../tokenizer/interface';
3
+ export declare function getAssertionError(typeName: string, value: unknown, sourceCodeInfo?: SourceCodeInfo): LitsError;
@@ -0,0 +1,10 @@
1
+ import type { Any, Coll } from '../interface';
2
+ import type { NativeJsFunction } from '../parser/interface';
3
+ import type { SourceCodeInfo } from '../tokenizer/interface';
4
+ export declare function collHasKey(coll: unknown, key: string | number): boolean;
5
+ export declare function compare(a: unknown, b: unknown): number;
6
+ export declare function deepEqual(a: Any, b: Any, sourceCodeInfo?: SourceCodeInfo): boolean;
7
+ export declare function toNonNegativeInteger(num: number): number;
8
+ export declare function toAny(value: unknown): Any;
9
+ export declare function cloneColl<T extends Coll>(value: T): T;
10
+ export declare function createNativeJsFunction(fn: (...args: any[]) => unknown, name?: string): NativeJsFunction;
@@ -0,0 +1,2 @@
1
+ export declare const FUNCTION_SYMBOL = "__fn";
2
+ export declare const REGEXP_SYMBOL = "__re";
@@ -0,0 +1 @@
1
+ export declare function getClojureDocsLink(functionName: string, clojureDocs?: string | null): string | null;
@@ -0,0 +1,6 @@
1
+ import type { FormatterRule } from '../cli/src/cliFormatterRules';
2
+ export type TextFormatter = (text: string) => string;
3
+ export declare function createFormatter(rules: FormatterRule[], options?: {
4
+ prefix?: string;
5
+ suffix?: string;
6
+ }): TextFormatter;
@@ -0,0 +1,3 @@
1
+ export declare function throttle<T extends (...args: any[]) => void>(func: T): (this: any, ...args: Parameters<T>) => void;
2
+ export declare function stringifyValue(value: unknown, html: boolean): string;
3
+ export declare function findAllOccurrences(input: string, pattern: RegExp): Set<string>;