functionalscript 0.8.0 → 0.8.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 (113) hide show
  1. package/bnf/data/module.f.d.ts +6 -0
  2. package/bnf/data/module.f.js +57 -4
  3. package/bnf/data/test.f.d.ts +1 -0
  4. package/bnf/data/test.f.js +67 -1
  5. package/ci/module.f.d.ts +3 -0
  6. package/ci/module.f.js +169 -0
  7. package/ci/module.js +3 -0
  8. package/crypto/hmac/module.f.d.ts +5 -4
  9. package/crypto/hmac/module.f.js +9 -18
  10. package/crypto/hmac/test.f.d.ts +1 -0
  11. package/crypto/hmac/test.f.js +16 -8
  12. package/crypto/prime_field/module.f.d.ts +1 -1
  13. package/crypto/prime_field/module.f.js +4 -3
  14. package/crypto/prime_field/test.f.js +13 -13
  15. package/crypto/rfc6979/module.f.d.ts +15 -0
  16. package/crypto/rfc6979/module.f.js +98 -0
  17. package/crypto/rfc6979/test.f.d.ts +10 -0
  18. package/crypto/rfc6979/test.f.js +490 -0
  19. package/crypto/secp/module.f.d.ts +4 -4
  20. package/crypto/secp/module.f.js +1 -1
  21. package/crypto/secp/test.f.js +8 -8
  22. package/crypto/sha2/module.f.d.ts +11 -5
  23. package/crypto/sha2/module.f.js +4 -3
  24. package/crypto/sha2/test.f.d.ts +4 -1
  25. package/crypto/sha2/test.f.js +41 -31
  26. package/crypto/sign/module.f.d.ts +1 -1
  27. package/crypto/sign/module.f.js +3 -2
  28. package/dev/tf/all.test.js +9 -1
  29. package/djs/ast/module.f.d.ts +3 -3
  30. package/djs/ast/test.f.js +7 -8
  31. package/djs/parser/module.f.d.ts +3 -3
  32. package/djs/parser/module.f.js +4 -4
  33. package/djs/parser/test.f.js +76 -77
  34. package/djs/serializer/module.f.d.ts +8 -8
  35. package/djs/serializer/module.f.js +4 -7
  36. package/djs/serializer/test.f.js +8 -9
  37. package/djs/tokenizer/module.f.d.ts +2 -2
  38. package/djs/tokenizer/module.f.js +3 -5
  39. package/djs/tokenizer/test.f.js +8 -10
  40. package/djs/transpiler/module.f.d.ts +3 -3
  41. package/djs/transpiler/module.f.js +2 -0
  42. package/fsc/bnf.f.d.ts +1 -1
  43. package/fsc/bnf.f.js +39 -51
  44. package/fsc/json.f.d.ts +1 -1
  45. package/fsc/json.f.js +56 -81
  46. package/fsc/test.f.js +4 -6
  47. package/fsm/module.f.js +3 -3
  48. package/fsm/test.f.js +21 -25
  49. package/html/module.f.js +17 -4
  50. package/html/test.f.d.ts +7 -0
  51. package/html/test.f.js +37 -0
  52. package/issues/031-json.f.d.ts +1 -0
  53. package/js/tokenizer/module.f.d.ts +4 -4
  54. package/js/tokenizer/module.f.js +12 -17
  55. package/js/tokenizer/test.f.js +9 -11
  56. package/json/module.f.d.ts +6 -6
  57. package/json/module.f.js +5 -10
  58. package/json/parser/module.f.d.ts +4 -4
  59. package/json/parser/module.f.js +7 -4
  60. package/json/parser/test.f.js +47 -49
  61. package/json/serializer/module.f.d.ts +6 -6
  62. package/json/serializer/module.f.js +3 -2
  63. package/json/serializer/test.f.js +13 -13
  64. package/json/test.f.js +13 -15
  65. package/json/tokenizer/module.f.d.ts +4 -4
  66. package/json/tokenizer/module.f.js +6 -7
  67. package/json/tokenizer/test.f.js +7 -9
  68. package/package.json +5 -5
  69. package/text/ascii/test.f.js +2 -2
  70. package/text/module.f.d.ts +3 -2
  71. package/text/module.f.js +2 -2
  72. package/text/test.f.js +3 -3
  73. package/text/utf16/test.f.js +2 -2
  74. package/text/utf8/test.f.js +2 -2
  75. package/types/array/test.f.js +2 -2
  76. package/types/bigint/module.f.d.ts +6 -3
  77. package/types/bigint/module.f.js +12 -11
  78. package/types/bigint/test.f.d.ts +2 -0
  79. package/types/bigint/test.f.js +21 -2
  80. package/types/bit_vec/module.f.d.ts +66 -34
  81. package/types/bit_vec/module.f.js +97 -32
  82. package/types/bit_vec/test.f.d.ts +7 -0
  83. package/types/bit_vec/test.f.js +283 -62
  84. package/types/btree/find/test.f.js +9 -8
  85. package/types/btree/remove/test.f.js +4 -4
  86. package/types/btree/set/test.f.js +4 -4
  87. package/types/btree/test.f.js +7 -7
  88. package/types/byte_set/test.f.js +2 -2
  89. package/types/function/compare/module.f.d.ts +15 -1
  90. package/types/function/compare/module.f.js +1 -1
  91. package/types/function/compare/test.f.js +37 -4
  92. package/types/list/test.f.js +93 -93
  93. package/types/monoid/module.f.d.ts +4 -4
  94. package/types/monoid/module.f.js +3 -3
  95. package/types/monoid/test.f.js +3 -3
  96. package/types/nominal/module.f.d.ts +5 -0
  97. package/types/nominal/module.f.js +4 -0
  98. package/types/nominal/test.f.d.ts +5 -0
  99. package/types/nominal/test.f.js +53 -0
  100. package/types/number/module.f.js +2 -2
  101. package/types/range_map/test.f.js +21 -21
  102. package/types/sorted_list/test.f.js +10 -10
  103. package/types/sorted_set/test.f.js +14 -14
  104. package/types/string/module.f.js +2 -2
  105. package/types/string_set/module.f.js +3 -3
  106. package/bnf/func/module.f.d.ts +0 -148
  107. package/bnf/func/module.f.js +0 -132
  108. package/bnf/func/test.f.d.ts +0 -12
  109. package/bnf/func/test.f.js +0 -171
  110. package/bnf/func/testlib.f.d.ts +0 -25
  111. package/bnf/func/testlib.f.js +0 -150
  112. /package/{issues/31-json.f.d.ts → ci/module.d.ts} +0 -0
  113. /package/issues/{31-json.f.js → 031-json.f.js} +0 -0
@@ -1,171 +0,0 @@
1
- import { stringify } from "../../json/module.f.js";
2
- import { sort } from "../../types/object/module.f.js";
3
- import { cp, str, range, remove, set, repeat0, join0, } from "./module.f.js";
4
- const deterministic = () => {
5
- const wsSet = () => set('\t\n\r '); // 9,10,13,32
6
- // {"empty":true,"map":[[false,8],[true,10],[false,12],[true,13],[false,31],[true,32]]}
7
- const ws = repeat0(wsSet);
8
- // {"empty":true,"map":[[false,42],[true,43],[false,44],[true,45]]}
9
- const sign = () => [
10
- [],
11
- ...set('+-'), // 43
12
- ];
13
- // {"empty":false,"map":[[false,48],[true,57]]}
14
- const onenine = () => [
15
- [range('19')]
16
- ];
17
- // {"empty":false,"map":[[false,47],[true,57]]}
18
- const digit = () => [
19
- str('0'),
20
- [onenine],
21
- ];
22
- // {"empty":true,"map":[[false,47],[true,57]]}
23
- const digits0 = repeat0(digit);
24
- // {"empty":false,"map":[[false,47],[true,57]]}
25
- const digits1 = () => [
26
- [digit, digits0]
27
- ];
28
- const e = () => set('Ee'); // 69, 101
29
- // {"empty":true,"map":[[false,68],[true,69],[false,100],[true,101]]}
30
- const exponent = () => [
31
- [],
32
- [e, sign, digits1], // 69 | 101
33
- ];
34
- // {"empty":true,"map":[[false,45],[true,46]]}
35
- const fraction = () => [
36
- [],
37
- [cp('.'), digits1] // 46
38
- ];
39
- // {"empty":false,"map":[[false,47],[true,57]]}
40
- const unsignedInteger = () => [
41
- str('0'), // 48
42
- [onenine, digits0], // 49-57
43
- ];
44
- // {"empty":false,"map":[[false,44],[true,45],[false,47],[true,57]]}
45
- const integer = () => [
46
- [unsignedInteger], // 48-57
47
- [cp('-'), unsignedInteger], // 45
48
- ];
49
- // {"empty":false,"map":[[false,44],[true,45],[false,47],[true,57]]}
50
- const number = () => [
51
- [integer, fraction, exponent]
52
- ];
53
- // {"empty":false,"map":[[false,47],[true,57],[false,64],[true,70],[false,96],[true,102]]}
54
- const hex = () => [
55
- [digit], // 48-57
56
- [range('AF')], // A..F
57
- [range('af')], // a..f
58
- ];
59
- // {"empty":false,"map":[[false,33],[true,34],[false,46],[true,47],[false,91],[true,92],[false,97],[true,98],[false,101],[true,102],[false,109],[true,110],[false,113],[true,114],[false,115],[true,117]]}
60
- const escape = () => [
61
- ...set('"\\/bfnrt'),
62
- [cp('u'), hex, hex, hex, hex] // 117
63
- ];
64
- // {"empty":false,"map":[[false,31],[true,33],[false,34],[true,1114111]]}
65
- const character = () => [
66
- ...remove([0x20, 0x10FFFF], [cp('"'), cp('\\')]),
67
- [cp('\\'), escape], // 92
68
- ];
69
- // {"empty":true,"map":[[false,31],[true,33],[false,34],[true,1114111]]}
70
- const characters = repeat0(character);
71
- // {"empty":false,"map":[[false,33],[true,34]]}
72
- const string = () => [
73
- [cp('"'), characters, cp('"')]
74
- ];
75
- const comma = () => [[cp(','), ws]];
76
- // {"empty":false,"map":[[false,33],[true,34],[false,44],[true,45],[false,47],[true,57],[false,90],[true,91],[false,101],[true,102],[false,109],[true,110],[false,115],[true,116],[false,122],[true,123]]}
77
- const element = () => [
78
- [value, ws]
79
- ];
80
- const list = (open, rule, close) => () => [
81
- [cp(open), ws, join0(rule, comma), cp(close)]
82
- ];
83
- // {"empty":false,"map":[[false,90],[true,91]]}
84
- const array = list('[', element, ']');
85
- // {"empty":false,"map":[[false,33],[true,34]]}
86
- const member = () => [
87
- [string, ws, cp(':'), ws, element]
88
- ];
89
- // {"empty":false,"map":[[false,122],[true,123]]}
90
- const object = list('{', member, '}');
91
- // {"empty":false,"map":[[false,33],[true,34],[false,44],[true,45],[false,47],[true,57],[false,90],[true,91],[false,101],[true,102],[false,109],[true,110],[false,115],[true,116],[false,122],[true,123]]}
92
- const value = () => [
93
- [object], // 123
94
- [array], // 91
95
- [string], // 34
96
- [number], // 45, 48-57
97
- str('true'), // 116
98
- str('false'), // 102
99
- str('null'), // 110
100
- ];
101
- // {"empty":false,"map":[[false,8],[true,10],[false,12],[true,13],[false,31],[true,32],[false,33],[true,34],[false,44],[true,45],[false,47],[true,57],[false,90],[true,91],[false,101],[true,102],[false,109],[true,110],[false,115],[true,116],[false,122],[true,123]]}
102
- const json = [ws, element];
103
- const _ = json;
104
- };
105
- //
106
- const s = stringify(sort);
107
- export default {
108
- example: {
109
- module: () => {
110
- // Matches 'A-Z', 'a-z', and '0-9'
111
- const grammar = () => [
112
- [range('AZ')],
113
- [range('az')],
114
- [range('09')],
115
- ];
116
- const _ = grammar;
117
- },
118
- types: () => {
119
- const alpha = range('AZ'); // Matches 'A-Z'
120
- const id2 = [alpha, alpha]; // Matches two uppercase letters
121
- const digit = range('09'); // Matches '0-9'
122
- // Matches two uppercase letters or one digit
123
- const id2OrDigit = [
124
- id2,
125
- [digit],
126
- ];
127
- // Matches 'true', 'false'
128
- const bool = () => [
129
- str('true'),
130
- str('false'),
131
- ];
132
- // zero or more alpha symbols
133
- const alpha0x = () => [
134
- [], // Empty
135
- [alpha, alpha0x] // Recursive
136
- ];
137
- const id = [alpha, alpha0x];
138
- const _ = [id2OrDigit, bool, id];
139
- },
140
- str: () => {
141
- const ranges = str('abc'); // [[97, 97], [98, 98], [99, 99]]
142
- const result = s(ranges);
143
- if (result !== '[[97,97],[98,98],[99,99]]') {
144
- throw result;
145
- }
146
- },
147
- cp: () => {
148
- const range = cp('A'); // [65, 65]
149
- const result = s(range);
150
- if (result !== '[65,65]') {
151
- throw result;
152
- }
153
- },
154
- range: () => {
155
- const r = range('AZ'); // [65, 90]
156
- const result = s(r);
157
- if (result !== '[65,90]') {
158
- throw result;
159
- }
160
- },
161
- remove: () => {
162
- const result = s(remove([65, 90], [cp('C'), cp('W')])); // [A..Z] w/o C and W
163
- if (result !== '[[[65,66]],[[68,86]],[[88,90]]]') {
164
- throw result;
165
- }
166
- }
167
- },
168
- remove: () => {
169
- const _x = remove([0x20, 0x10FFFF], [cp('"'), cp('\\')]);
170
- }
171
- };
@@ -1,25 +0,0 @@
1
- import { type Rule } from './module.f.ts';
2
- export declare const classic: () => {
3
- readonly ws: Rule;
4
- readonly sign: Rule;
5
- readonly digits: Rule;
6
- readonly exponent: Rule;
7
- readonly fraction: Rule;
8
- readonly onenine: Rule;
9
- readonly digit: Rule;
10
- readonly string: Rule;
11
- readonly member: Rule;
12
- readonly members: Rule;
13
- readonly object: Rule;
14
- readonly array: Rule;
15
- readonly integer: Rule;
16
- readonly number: Rule;
17
- readonly value: Rule;
18
- readonly element: Rule;
19
- readonly elements: Rule;
20
- readonly json: Rule;
21
- readonly hex: Rule;
22
- readonly escape: Rule;
23
- readonly character: Rule;
24
- readonly characters: Rule;
25
- };
@@ -1,150 +0,0 @@
1
- import { cp, range, remove, str } from "./module.f.js";
2
- // https://www.json.org/json-en.html
3
- export const classic = () => {
4
- // {"empty":true,"map":[[false,8],[true,10],[false,12],[true,13],[false,31],[true,32]]}
5
- const ws = () => [
6
- [],
7
- [cp(' '), ws], // 32
8
- [cp('\n'), ws], // 10
9
- [cp('\r'), ws], // 13
10
- [cp('\t'), ws], // 9
11
- ];
12
- // {"empty":true,"map":[[false,42],[true,43],[false,44],[true,45]]}
13
- const sign = () => [
14
- [],
15
- str('+'), // 43
16
- str('-'), // 45
17
- ];
18
- // {"empty":false,"map":[[false,48],[true,57]]}
19
- const onenine = () => [[[0x31, 0x39]]];
20
- // {"empty":false,"map":[[false,47],[true,57]]}
21
- const digit = () => [
22
- str('0'),
23
- [onenine],
24
- ];
25
- // {"empty":false,"map":[[false,47],[true,57]]}
26
- const digits = () => [
27
- [digit],
28
- [digit, digits]
29
- ];
30
- // {"empty":true,"map":[[false,68],[true,69],[false,100],[true,101]]}
31
- const exponent = () => [
32
- [],
33
- [cp('E'), sign, digits], // 69
34
- [cp('e'), sign, digits], // 101
35
- ];
36
- // {"empty":true,"map":[[false,45],[true,46]]}
37
- const fraction = () => [
38
- [],
39
- [cp('.'), digits] // 46
40
- ];
41
- // {"empty":false,"map":[[false,44],[true,45],[false,47],[true,57]]}
42
- const integer = () => [
43
- [digit], // 48-57
44
- [onenine, digits],
45
- [cp('-'), digit], // 45
46
- [cp('-'), onenine, digits],
47
- ];
48
- // {"empty":false,"map":[[false,44],[true,45],[false,47],[true,57]]}
49
- const number = () => [
50
- [integer, fraction, exponent]
51
- ];
52
- // {"empty":false,"map":[[false,47],[true,57],[false,64],[true,70],[false,96],[true,102]]}
53
- const hex = () => [
54
- [digit], // 48-57
55
- [range('AF')], // A..F
56
- [range('af')], // a..f
57
- ];
58
- // {"empty":false,"map":[[false,33],[true,34],[false,46],[true,47],[false,91],[true,92],[false,97],[true,98],[false,101],[true,102],[false,109],[true,110],[false,113],[true,114],[false,115],[true,117]]}
59
- const escape = () => [
60
- str('"'), // 34
61
- str('\\'), // 92
62
- str('/'), // 47
63
- str('b'), // 98
64
- str('f'), // 102
65
- str('n'), // 110
66
- str('r'), // 114
67
- str('t'), // 116
68
- [cp('u'), hex, hex, hex, hex] // 117
69
- ];
70
- // {"empty":false,"map":[[false,31],[true,33],[false,34],[true,1114111]]}
71
- const character = () => [
72
- ...remove([0x20, 0x10FFFF], [cp('"'), cp('\\')]),
73
- [cp('\\'), escape],
74
- ];
75
- // {"empty":true,"map":[[false,31],[true,33],[false,34],[true,1114111]]}
76
- const characters = () => [
77
- [],
78
- [character, characters]
79
- ];
80
- // {"empty":false,"map":[[false,33],[true,34]]}
81
- const string = () => [
82
- [cp('"'), characters, cp('"')]
83
- ];
84
- // {"empty":false,"map":[[false,8],[true,10],[false,12],[true,13],[false,31],[true,32],[false,33],[true,34],[false,44],[true,45],[false,47],[true,57],[false,90],[true,91],[false,101],[true,102],[false,109],[true,110],[false,115],[true,116],[false,122],[true,123]]}
85
- const element = () => [
86
- [ws, value, ws]
87
- ];
88
- // {"empty":false,"map":[[false,8],[true,10],[false,12],[true,13],[false,31],[true,32],[false,33],[true,34],[false,44],[true,45],[false,47],[true,57],[false,90],[true,91],[false,101],[true,102],[false,109],[true,110],[false,115],[true,116],[false,122],[true,123]]}
89
- const elements = () => [
90
- [element],
91
- [element, cp(','), elements]
92
- ];
93
- // {"empty":false,"map":[[false,90],[true,91]]}
94
- const array = () => [
95
- [cp('['), ws, cp(']')], // 91
96
- [cp('['), elements, cp(']')],
97
- ];
98
- // {"empty":false,"map":[[false,8],[true,10],[false,12],[true,13],[false,31],[true,32],[false,33],[true,34]]}
99
- const member = () => [
100
- [ws, string, ws, cp(':'), element]
101
- ];
102
- // {"empty":false,"map":[[false,8],[true,10],[false,12],[true,13],[false,31],[true,32],[false,33],[true,34]]}
103
- const members = () => [
104
- [member],
105
- [member, cp(','), members],
106
- ];
107
- // {"empty":false,"map":[[false,122],[true,123]]}
108
- const object = () => [
109
- [cp('{'), ws, cp('}')], // 123
110
- [cp('{'), members, cp('}')],
111
- ];
112
- // {"empty":false,"map":[[false,33],[true,34],[false,44],[true,45],[false,47],[true,57],[false,90],[true,91],[false,101],[true,102],[false,109],[true,110],[false,115],[true,116],[false,122],[true,123]]}
113
- const value = () => [
114
- [object], // 123
115
- [array], // 91
116
- [string], // 34
117
- [number], // 45, 48-57
118
- str('true'), // 116
119
- str('false'), // 102
120
- str('null'), // 110
121
- ];
122
- // {"empty":false,"map":[[false,8],[true,10],[false,12],[true,13],[false,31],[true,32],[false,33],[true,34],[false,44],[true,45],[false,47],[true,57],[false,90],[true,91],[false,101],[true,102],[false,109],[true,110],[false,115],[true,116],[false,122],[true,123]]}
123
- const json = () => [
124
- [element]
125
- ];
126
- return {
127
- ws,
128
- sign,
129
- digits,
130
- exponent,
131
- fraction,
132
- onenine,
133
- digit,
134
- string,
135
- member,
136
- members,
137
- object,
138
- array,
139
- integer,
140
- number,
141
- value,
142
- element,
143
- elements,
144
- json,
145
- hex,
146
- escape,
147
- character,
148
- characters,
149
- };
150
- };
File without changes
File without changes