functionalscript 0.1.609 → 0.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.
Files changed (175) hide show
  1. package/com/cpp/module.f.d.mts +4 -8
  2. package/com/cpp/module.f.mjs +20 -25
  3. package/com/cpp/testlib.f.mjs +3 -4
  4. package/com/cs/module.f.d.mts +4 -8
  5. package/com/cs/module.f.mjs +18 -23
  6. package/com/cs/testlib.f.mjs +3 -5
  7. package/com/rust/module.f.d.mts +3 -7
  8. package/com/rust/module.f.mjs +25 -30
  9. package/com/rust/testlib.f.mjs +3 -5
  10. package/com/test/build.f.d.mts +2 -2
  11. package/com/test/build.f.mjs +2 -2
  12. package/com/test/build.mjs +4 -4
  13. package/com/types/module.f.d.mts +5 -10
  14. package/com/types/module.f.mjs +5 -12
  15. package/commonjs/build/module.f.d.mts +13 -17
  16. package/commonjs/build/module.f.mjs +23 -28
  17. package/commonjs/build/test.f.mjs +4 -4
  18. package/commonjs/module/function/module.f.d.mts +0 -2
  19. package/commonjs/module/function/module.f.mjs +0 -2
  20. package/commonjs/module/module.f.d.mts +16 -21
  21. package/commonjs/module/module.f.mjs +2 -9
  22. package/commonjs/module.d.mts +1 -5
  23. package/commonjs/module.f.d.mts +0 -2
  24. package/commonjs/module.f.mjs +0 -2
  25. package/commonjs/module.mjs +2 -7
  26. package/commonjs/package/dependencies/module.f.d.mts +3 -7
  27. package/commonjs/package/dependencies/module.f.mjs +5 -10
  28. package/commonjs/package/dependencies/test.f.mjs +1 -1
  29. package/commonjs/package/module.f.d.mts +12 -18
  30. package/commonjs/package/module.f.mjs +6 -13
  31. package/commonjs/package/test.f.mjs +1 -1
  32. package/commonjs/path/module.f.d.mts +25 -32
  33. package/commonjs/path/module.f.mjs +12 -23
  34. package/commonjs/path/test.f.mjs +11 -11
  35. package/commonjs/test.mjs +1 -1
  36. package/dev/module.f.d.mts +1 -4
  37. package/dev/module.f.mjs +1 -4
  38. package/dev/test/module.f.d.mts +2 -3
  39. package/dev/test/module.f.mjs +4 -6
  40. package/djs/module.f.d.mts +13 -18
  41. package/djs/module.f.mjs +12 -19
  42. package/djs/parser/module.f.d.mts +11 -15
  43. package/djs/parser/module.f.mjs +18 -24
  44. package/djs/parser/test.f.mjs +9 -9
  45. package/djs/test.f.mjs +4 -4
  46. package/djs/tokenizer/module.f.d.mts +6 -10
  47. package/djs/tokenizer/module.f.mjs +18 -23
  48. package/djs/tokenizer/test.f.mjs +6 -6
  49. package/fsc/module.f.d.mts +4 -9
  50. package/fsc/module.f.mjs +17 -24
  51. package/fsc/test.f.mjs +3 -3
  52. package/fsm/module.f.d.mts +13 -20
  53. package/fsm/module.f.mjs +27 -38
  54. package/fsm/test.f.mjs +8 -8
  55. package/html/module.f.d.mts +7 -12
  56. package/html/module.f.mjs +14 -23
  57. package/html/test.f.mjs +4 -4
  58. package/js/tokenizer/module.f.d.mts +10 -15
  59. package/js/tokenizer/module.f.mjs +55 -62
  60. package/js/tokenizer/test.f.mjs +6 -6
  61. package/json/module.f.d.mts +18 -26
  62. package/json/module.f.mjs +18 -31
  63. package/json/parser/module.f.d.mts +9 -13
  64. package/json/parser/module.f.mjs +9 -14
  65. package/json/parser/test.f.mjs +7 -7
  66. package/json/serializer/module.f.d.mts +11 -20
  67. package/json/serializer/module.f.mjs +14 -29
  68. package/json/serializer/test.f.mjs +2 -2
  69. package/json/test.f.mjs +3 -3
  70. package/json/tokenizer/module.f.d.mts +6 -10
  71. package/json/tokenizer/module.f.mjs +14 -19
  72. package/json/tokenizer/test.f.mjs +6 -6
  73. package/jsr.json +1 -1
  74. package/nodejs/version/main.mjs +1 -1
  75. package/nodejs/version/module.f.d.mts +4 -9
  76. package/nodejs/version/module.f.mjs +2 -7
  77. package/nodejs/version/test.f.mjs +3 -3
  78. package/package.json +1 -1
  79. package/prime_field/module.f.d.mts +20 -23
  80. package/prime_field/module.f.mjs +9 -12
  81. package/prime_field/test.f.mjs +1 -1
  82. package/secp/module.f.d.mts +27 -28
  83. package/secp/module.f.mjs +38 -39
  84. package/secp/test.f.mjs +4 -4
  85. package/sha2/module.f.d.mts +8 -16
  86. package/sha2/module.f.mjs +7 -20
  87. package/sha2/test.f.mjs +4 -4
  88. package/text/ascii/module.f.d.mts +69 -72
  89. package/text/ascii/module.f.mjs +5 -10
  90. package/text/ascii/test.f.mjs +3 -3
  91. package/text/module.f.d.mts +9 -14
  92. package/text/module.f.mjs +7 -14
  93. package/text/sgr/module.f.d.mts +7 -9
  94. package/text/sgr/module.f.mjs +2 -4
  95. package/text/test.f.mjs +3 -3
  96. package/text/utf16/module.f.d.mts +8 -15
  97. package/text/utf16/module.f.mjs +17 -28
  98. package/text/utf16/test.f.mjs +5 -5
  99. package/text/utf8/module.f.d.mts +4 -9
  100. package/text/utf8/module.f.mjs +9 -16
  101. package/text/utf8/test.f.mjs +4 -4
  102. package/types/array/module.f.d.mts +14 -24
  103. package/types/array/module.f.mjs +8 -25
  104. package/types/array/test.f.mjs +3 -3
  105. package/types/bigfloat/module.f.d.mts +4 -9
  106. package/types/bigfloat/module.f.mjs +3 -10
  107. package/types/bigfloat/test.f.mjs +1 -1
  108. package/types/bigint/module.f.d.mts +16 -64
  109. package/types/bigint/module.f.mjs +11 -30
  110. package/types/bigint/test.f.mjs +1 -1
  111. package/types/btree/find/module.f.d.mts +20 -26
  112. package/types/btree/find/module.f.mjs +8 -17
  113. package/types/btree/find/test.f.mjs +7 -7
  114. package/types/btree/module.f.d.mts +4 -8
  115. package/types/btree/module.f.mjs +6 -11
  116. package/types/btree/remove/module.f.d.mts +7 -12
  117. package/types/btree/remove/module.f.mjs +10 -17
  118. package/types/btree/remove/test.f.mjs +5 -5
  119. package/types/btree/set/module.f.d.mts +3 -7
  120. package/types/btree/set/module.f.mjs +4 -9
  121. package/types/btree/set/test.f.mjs +4 -4
  122. package/types/btree/test.f.mjs +9 -9
  123. package/types/btree/types/module.f.d.mts +0 -2
  124. package/types/btree/types/module.f.mjs +0 -2
  125. package/types/byte_set/module.f.d.mts +16 -29
  126. package/types/byte_set/module.f.mjs +14 -39
  127. package/types/byte_set/test.f.mjs +5 -5
  128. package/types/function/compare/module.f.d.mts +9 -15
  129. package/types/function/compare/module.f.mjs +3 -12
  130. package/types/function/compare/test.f.mjs +1 -1
  131. package/types/function/module.f.d.mts +20 -27
  132. package/types/function/module.f.mjs +4 -15
  133. package/types/function/operator/module.f.d.mts +28 -43
  134. package/types/function/operator/module.f.mjs +14 -41
  135. package/types/function/test.f.mjs +1 -1
  136. package/types/list/module.f.d.mts +56 -91
  137. package/types/list/module.f.mjs +45 -114
  138. package/types/list/test.f.mjs +10 -10
  139. package/types/map/module.f.d.mts +15 -24
  140. package/types/map/module.f.mjs +15 -30
  141. package/types/map/test.f.mjs +2 -2
  142. package/types/nibble_set/module.f.d.mts +10 -20
  143. package/types/nibble_set/module.f.mjs +7 -24
  144. package/types/nibble_set/test.f.mjs +2 -2
  145. package/types/nullable/module.f.d.mts +3 -8
  146. package/types/nullable/module.f.mjs +2 -9
  147. package/types/nullable/test.f.mjs +1 -1
  148. package/types/number/module.f.d.mts +7 -13
  149. package/types/number/module.f.mjs +8 -19
  150. package/types/number/test.f.mjs +1 -1
  151. package/types/object/module.f.d.mts +11 -18
  152. package/types/object/module.f.mjs +9 -20
  153. package/types/object/test.f.mjs +1 -1
  154. package/types/range/module.f.d.mts +3 -8
  155. package/types/range/module.f.mjs +2 -9
  156. package/types/range/test.f.mjs +1 -1
  157. package/types/range_map/module.f.d.mts +9 -15
  158. package/types/range_map/module.f.mjs +9 -18
  159. package/types/range_map/test.f.mjs +32 -32
  160. package/types/result/module.d.mts +3 -3
  161. package/types/result/module.f.d.mts +6 -12
  162. package/types/result/module.f.mjs +3 -12
  163. package/types/result/module.mjs +2 -2
  164. package/types/sorted_list/module.f.d.mts +22 -28
  165. package/types/sorted_list/module.f.mjs +10 -19
  166. package/types/sorted_list/test.f.mjs +7 -7
  167. package/types/sorted_set/module.f.d.mts +6 -12
  168. package/types/sorted_set/module.f.mjs +7 -16
  169. package/types/sorted_set/test.f.mjs +7 -7
  170. package/types/string/module.f.d.mts +8 -14
  171. package/types/string/module.f.mjs +10 -21
  172. package/types/string/test.f.mjs +2 -2
  173. package/types/string_set/module.f.d.mts +8 -16
  174. package/types/string_set/module.f.mjs +12 -27
  175. package/types/string_set/test.f.mjs +1 -1
@@ -1,8 +1,4 @@
1
- declare namespace _default {
2
- export { cpp };
3
- }
4
- export default _default;
5
- /** @type {(name: string) => (lib: Types.Library) => Text.Block} */
6
- declare const cpp: (name: string) => (lib: Types.Library) => Text.Block;
7
- import * as Types from '../types/module.f.mjs';
8
- import * as Text from '../../text/module.f.mjs';
1
+ /** @type {(name: string) => (lib: types.Library) => text.Block} */
2
+ export const cpp: (name: string) => (lib: types.Library) => text.Block;
3
+ import * as types from '../types/module.f.mjs';
4
+ import * as text from '../../text/module.f.mjs';
@@ -1,15 +1,15 @@
1
1
  // @ts-self-types="./module.f.d.mts"
2
- import types, * as Types from '../types/module.f.mjs'
3
- import text, * as Text from '../../text/module.f.mjs'
2
+ import * as types from '../types/module.f.mjs'
3
+ import * as text from '../../text/module.f.mjs'
4
4
  import * as O from '../../types/object/module.f.mjs'
5
- import list from '../../types/list/module.f.mjs'
6
- import string from '../../types/string/module.f.mjs'
5
+ import * as list from '../../types/list/module.f.mjs'
6
+ import * as string from '../../types/string/module.f.mjs'
7
7
  const { join } = string
8
8
  const { paramList } = types
9
9
  const { map, flatMap, flat } = list
10
10
  const { entries } = Object
11
11
 
12
- /** @type {(name: string) => (body: Text.Block) => Text.Block} */
12
+ /** @type {(name: string) => (body: text.Block) => text.Block} */
13
13
  const struct = name => body => [`struct ${name}`, '{', body, '};']
14
14
 
15
15
  const baseTypeMap = {
@@ -28,7 +28,7 @@ const baseTypeMap = {
28
28
  bool: 'bool',
29
29
  }
30
30
 
31
- /** @type {(t: Types.BaseType) => string} */
31
+ /** @type {(t: types.BaseType) => string} */
32
32
  const baseType = t => baseTypeMap[t]
33
33
 
34
34
  const resultVoid = types.result('void')
@@ -44,17 +44,17 @@ const ptr = id => `${id} const*`
44
44
  /** @type {(id: string) => string} */
45
45
  const ref = id => `${id} const&`
46
46
 
47
- /** @type {(p: Types.Field) => string} */
47
+ /** @type {(p: types.Field) => string} */
48
48
  const paramName = ([name]) => name
49
49
 
50
50
  const mapParamName = map(paramName)
51
51
 
52
52
  const joinComma = join(', ')
53
53
 
54
- /** @type {(name: string) => (lib: Types.Library) => Text.Block} */
55
- const cpp = name => lib => {
54
+ /** @type {(name: string) => (lib: types.Library) => text.Block} */
55
+ export const cpp = name => lib => {
56
56
 
57
- /** @type {(t: Types.Type) => string|null} */
57
+ /** @type {(t: types.Type) => string|null} */
58
58
  const interface_ = t => {
59
59
  if (!(t instanceof Array) || t.length !== 1) {
60
60
  return null
@@ -63,7 +63,7 @@ const cpp = name => lib => {
63
63
  return 'interface' in lib[name] ? name : null
64
64
  }
65
65
 
66
- /** @type {(i: (t: string) => string) => (t: Types.Type) => string} */
66
+ /** @type {(i: (t: string) => string) => (t: types.Type) => string} */
67
67
  const objectType = i => t => {
68
68
  if (typeof (t) === 'string') { return baseType(t) }
69
69
  if (t.length === 2) { return `${type(t[1])} const*` }
@@ -75,27 +75,27 @@ const cpp = name => lib => {
75
75
 
76
76
  const resultType = objectType(ptr)
77
77
 
78
- /** @type {(s: Types.Field) => Text.Item} */
78
+ /** @type {(s: types.Field) => text.Item} */
79
79
  const field = ([name, t]) => `${type(t)} ${name};`
80
80
 
81
81
  const mapField = map(field)
82
82
 
83
- /** @type {(s: Types.Struct) => Text.Block} */
83
+ /** @type {(s: types.Struct) => text.Block} */
84
84
  const defStruct = s => mapField(entries(s.struct))
85
85
 
86
- /** @type {(fa: Types.FieldArray) => string} */
86
+ /** @type {(fa: types.FieldArray) => string} */
87
87
  const cppResult = resultVoid(resultType)
88
88
 
89
- /** @type {(p: Types.Field) => string} */
89
+ /** @type {(p: types.Field) => string} */
90
90
  const param = ([name, t]) => `${objectType(ref)(t)} ${name}`
91
91
 
92
92
  const mapParam = map(param)
93
93
 
94
- /** @type {(result: string) => (paramArrayStr: string) => (name: string) => Text.Item} */
94
+ /** @type {(result: string) => (paramArrayStr: string) => (name: string) => text.Item} */
95
95
  const methodHeader = result => paramArrayStr => name =>
96
96
  `virtual ${result} ${name}${paramArrayStr} const noexcept = 0;`
97
97
 
98
- /** @type {(m: Types.Method) => readonly Text.Item[]} */
98
+ /** @type {(m: types.Method) => readonly text.Item[]} */
99
99
  const method = ([name, paramArray]) => {
100
100
  const result = cppResult(paramArray)
101
101
  const paramL = paramList(paramArray)
@@ -116,7 +116,7 @@ const cpp = name => lib => {
116
116
 
117
117
  const mapMethod = flatMap(method)
118
118
 
119
- /** @type {(i: Types.Interface) => Text.Block} */
119
+ /** @type {(i: types.Interface) => text.Block} */
120
120
  const defInterface = ({ guid, interface: i }) => {
121
121
  const g = guid.replaceAll('-', '');
122
122
  const lo = g.substring(0, 16);
@@ -127,7 +127,7 @@ const cpp = name => lib => {
127
127
  ])
128
128
  }
129
129
 
130
- /** @type {(kv: O.Entry<Types.Definition>) => Text.Block} */
130
+ /** @type {(kv: O.Entry<types.Definition>) => text.Block} */
131
131
  const def = ([name, d]) => 'interface' in d
132
132
  ? [
133
133
  `class ${name} : public ::nanocom::IUnknown`,
@@ -138,7 +138,7 @@ const cpp = name => lib => {
138
138
  ]
139
139
  : struct(name)(defStruct(d))
140
140
 
141
- /** @type {(kv: O.Entry<Types.Definition>) => Text.Block} */
141
+ /** @type {(kv: O.Entry<types.Definition>) => text.Block} */
142
142
  const forward = ([name]) => [`struct ${name};`]
143
143
 
144
144
  const e = entries(lib)
@@ -148,8 +148,3 @@ const cpp = name => lib => {
148
148
  namespace(name)(flat([flatMap(forward)(e), flatMap(def)(e)]))
149
149
  ])
150
150
  }
151
-
152
- export default {
153
- /** @readonly */
154
- cpp,
155
- }
@@ -1,9 +1,8 @@
1
- import string from '../../types/string/module.f.mjs'
1
+ import * as string from '../../types/string/module.f.mjs'
2
2
  const { join } = string
3
- import text from '../../text/module.f.mjs'
3
+ import * as text from '../../text/module.f.mjs'
4
4
  const { flat } = text
5
5
  import library from '../types/testlib.f.mjs'
6
- import m from './module.f.mjs'
7
- const { cpp } = m
6
+ import { cpp } from './module.f.mjs'
8
7
 
9
8
  export default () => join('\n')(flat(' ')(cpp('My')(library)))
@@ -1,8 +1,4 @@
1
- declare namespace _default {
2
- export { cs };
3
- }
4
- export default _default;
5
- /** @type {(name: string) => (library: typesT.Library) => textT.Block} */
6
- declare const cs: (name: string) => (library: typesT.Library) => textT.Block;
7
- import * as typesT from '../types/module.f.mjs';
8
- import * as textT from '../../text/module.f.mjs';
1
+ /** @type {(name: string) => (library: types.Library) => text.Block} */
2
+ export const cs: (name: string) => (library: types.Library) => text.Block;
3
+ import * as types from '../types/module.f.mjs';
4
+ import * as text from '../../text/module.f.mjs';
@@ -1,11 +1,11 @@
1
1
  // @ts-self-types="./module.f.d.mts"
2
- import types, * as typesT from '../types/module.f.mjs'
2
+ import * as types from '../types/module.f.mjs'
3
3
  const { result, paramList } = types
4
- import text, * as textT from '../../text/module.f.mjs'
4
+ import * as text from '../../text/module.f.mjs'
5
5
  const { curly } = text
6
- import list, * as List from '../../types/list/module.f.mjs'
6
+ import * as list from '../../types/list/module.f.mjs'
7
7
  const { flat, map, some, flatMap } = list
8
- import string from '../../types/string/module.f.mjs'
8
+ import * as string from '../../types/string/module.f.mjs'
9
9
  const { join } = string
10
10
  import * as O from '../../types/object/module.f.mjs'
11
11
  const { entries } = Object
@@ -14,11 +14,11 @@ const { entries } = Object
14
14
  const using = v => `using ${v};`
15
15
 
16
16
  /**
17
- * @type {(attributes: List.List<string>) =>
17
+ * @type {(attributes: list.List<string>) =>
18
18
  * (type: string) =>
19
19
  * (name: string) =>
20
- * (body: textT.Block) =>
21
- * List.List<textT.Item>}
20
+ * (body: text.Block) =>
21
+ * list.List<text.Item>}
22
22
  */
23
23
  const typeDef = attributes => type => name => body =>
24
24
  flat([
@@ -42,33 +42,33 @@ const baseTypeMap = {
42
42
  usize: 'UIntPtr',
43
43
  }
44
44
 
45
- /** @type {(t: typesT.BaseType) => string} */
45
+ /** @type {(t: types.BaseType) => string} */
46
46
  const baseType = t => baseTypeMap[t]
47
47
 
48
48
  /** @type {(isUnsafe: boolean) => string} */
49
49
  const unsafe = isUnsafe => isUnsafe ? 'unsafe ' : ''
50
50
 
51
- /** @type {(t: typesT.Type) => readonly[boolean, string]} */
51
+ /** @type {(t: types.Type) => readonly[boolean, string]} */
52
52
  const fullType = t =>
53
53
  typeof (t) === 'string' ? [false, baseType(t)] :
54
54
  t.length === 1 ? [false, t[0]] :
55
55
  [true, `${type(t[1])}*`]
56
56
 
57
- /** @type {(m: typesT.Type) => string} */
57
+ /** @type {(m: types.Type) => string} */
58
58
  const type = t => fullType(t)[1]
59
59
 
60
- /** @type {(f: typesT.Field) => string} */
60
+ /** @type {(f: types.Field) => string} */
61
61
  const param = ([name, t]) => `${type(t)} ${name}`
62
62
 
63
63
  const mapParam = map(param)
64
64
 
65
- /** @type {(f: typesT.Field) => string} */
65
+ /** @type {(f: types.Field) => string} */
66
66
  const field = ([name, comType]) => {
67
67
  const [isUnsafe, t] = fullType(comType)
68
68
  return `public ${unsafe(isUnsafe)}${t} ${name};`
69
69
  }
70
70
 
71
- /** @type {(field: typesT.Field) => boolean} */
71
+ /** @type {(field: types.Field) => boolean} */
72
72
  const isUnsafeField = field => fullType(field[1])[0]
73
73
 
74
74
  const mapIsUnsafeField = map(isUnsafeField)
@@ -77,7 +77,7 @@ const resultVoid = result('void')
77
77
 
78
78
  const joinComma = join(', ')
79
79
 
80
- /** @type {(e: O.Entry<typesT.FieldArray>) => readonly string[]} */
80
+ /** @type {(e: O.Entry<types.FieldArray>) => readonly string[]} */
81
81
  const method = ([name, m]) => {
82
82
  const paramAndResultList = entries(m)
83
83
  const pl = paramList(m)
@@ -96,7 +96,7 @@ const mapField = map(field)
96
96
 
97
97
  const flatMapMethod = flatMap(method)
98
98
 
99
- /** @type {(e: O.Entry<typesT.Definition>) => List.List<textT.Item>} */
99
+ /** @type {(e: O.Entry<types.Definition>) => list.List<text.Item>} */
100
100
  const def = ([n, d]) => {
101
101
  return !('interface' in d) ?
102
102
  struct(n)(mapField(entries(d.struct))) :
@@ -111,21 +111,16 @@ const flatMapDef = flatMap(def)
111
111
 
112
112
  const namespace = curly('namespace')
113
113
 
114
- /** @type {textT.Block} */
114
+ /** @type {text.Block} */
115
115
  const header = [
116
116
  using('System'),
117
117
  using('System.Runtime.InteropServices'),
118
118
  ''
119
119
  ]
120
120
 
121
- /** @type {(name: string) => (library: typesT.Library) => textT.Block} */
122
- const cs = name => library => {
121
+ /** @type {(name: string) => (library: types.Library) => text.Block} */
122
+ export const cs = name => library => {
123
123
  const v = flatMapDef(entries(library))
124
124
  const ns = namespace(name)(v)
125
125
  return flat([header, ns])
126
126
  }
127
-
128
- export default {
129
- /** @readonly */
130
- cs,
131
- }
@@ -1,10 +1,8 @@
1
- import text from '../../text/module.f.mjs'
1
+ import * as text from '../../text/module.f.mjs'
2
2
  const { flat } = text
3
- import string from '../../types/string/module.f.mjs'
3
+ import * as string from '../../types/string/module.f.mjs'
4
4
  const { join } = string
5
- import x from './module.f.mjs'
5
+ import { cs } from './module.f.mjs'
6
6
  import library from '../types/testlib.f.mjs'
7
7
 
8
- const { cs } = x
9
-
10
8
  export default join('\n')(flat(' ')(cs('My')(library)))
@@ -1,7 +1,5 @@
1
- declare namespace _default {
2
- export { rust };
3
- }
4
- export default _default;
1
+ /** @type {(library: types.Library) => Text.Block} */
2
+ export const rust: (library: types.Library) => Text.Block;
5
3
  export type OptionalProperty<T> = T | {};
6
4
  export type Where = {
7
5
  readonly where: readonly string[];
@@ -22,7 +20,5 @@ export type Trait = {
22
20
  readonly where?: readonly string[];
23
21
  readonly content: Text.Block;
24
22
  };
25
- /** @type {(library: Types.Library) => Text.Block} */
26
- declare const rust: (library: Types.Library) => Text.Block;
23
+ import * as types from '../types/module.f.mjs';
27
24
  import * as Text from '../../text/module.f.mjs';
28
- import * as Types from '../types/module.f.mjs';
@@ -1,14 +1,14 @@
1
1
  // @ts-self-types="./module.f.d.mts"
2
- import types, * as Types from '../types/module.f.mjs'
2
+ import * as types from '../types/module.f.mjs'
3
3
  const { paramList } = types
4
4
  import * as Text from '../../text/module.f.mjs'
5
5
  import * as O from '../../types/object/module.f.mjs'
6
- import list, * as List from '../../types/list/module.f.mjs'
6
+ import * as list from '../../types/list/module.f.mjs'
7
7
  const { flat, map, flatMap } = list
8
8
  const { entries } = Object
9
- import func from '../../types/function/module.f.mjs'
9
+ import * as func from '../../types/function/module.f.mjs'
10
10
  const { fn } = func
11
- import string from '../../types/string/module.f.mjs'
11
+ import * as string from '../../types/string/module.f.mjs'
12
12
  const { join } = string
13
13
 
14
14
  /** @type {(field: string) => string} */
@@ -16,7 +16,7 @@ const rustField = field => `pub ${field},`
16
16
 
17
17
  const mapRustField = map(rustField)
18
18
 
19
- /** @type {(b: List.Thunk<string>) => (name: string) => Text.Block} */
19
+ /** @type {(b: list.Thunk<string>) => (name: string) => Text.Block} */
20
20
  const rustStruct = b => name => [`#[repr(C)]`, `pub struct ${name} {`, mapRustField(b), `}`]
21
21
 
22
22
  const commaJoin = join(', ')
@@ -29,21 +29,21 @@ const obj = name => `&${name}::Object`
29
29
 
30
30
  const self = ['&self']
31
31
 
32
- /** @type {(p: Types.Field) => string} */
32
+ /** @type {(p: types.Field) => string} */
33
33
  const paramName = ([n]) => n
34
34
 
35
- /** @type {(p: Types.FieldArray) => List.Thunk<string>} */
35
+ /** @type {(p: types.FieldArray) => list.Thunk<string>} */
36
36
  const callList = p => map(paramName)(paramList(p))
37
37
 
38
- /** @type {(p: Types.FieldArray) => string} */
38
+ /** @type {(p: types.FieldArray) => string} */
39
39
  const call = p => commaJoin(callList(p))
40
40
 
41
- /** @type {(p: Types.FieldArray) => string} */
41
+ /** @type {(p: types.FieldArray) => string} */
42
42
  const virtualCall = p => commaJoin(flat([['self'], callList(p)]))
43
43
 
44
44
  const super_ = 'super::'
45
45
 
46
- /** @type {(m: Types.Method) => string} */
46
+ /** @type {(m: types.Method) => string} */
47
47
  const assign = ([n]) => `${n}: Self::${n},`
48
48
 
49
49
  const mapAssign = map(assign)
@@ -131,12 +131,12 @@ const traitImpl = t => {
131
131
 
132
132
  const where = ['Self: nanocom::Class<Interface = Interface>', 'nanocom::CObject<Self>: Ex']
133
133
 
134
- /** @type {(library: Types.Library) => Text.Block} */
135
- const rust = library => {
134
+ /** @type {(library: types.Library) => Text.Block} */
135
+ export const rust = library => {
136
136
 
137
- /** @type {(p: string) => (o: (_: string) => string) => (t: Types.Type) => string} */
137
+ /** @type {(p: string) => (o: (_: string) => string) => (t: types.Type) => string} */
138
138
  const type = p => {
139
- /** @type {(o: (_: string) => string) => (t: Types.Type) => string} */
139
+ /** @type {(o: (_: string) => string) => (t: types.Type) => string} */
140
140
  const f = o => t => {
141
141
  if (typeof t === 'string') { return t }
142
142
  if (t.length === 2) { return `*const ${f(ref)(t[1])}` }
@@ -147,7 +147,7 @@ const rust = library => {
147
147
  return f
148
148
  }
149
149
 
150
- /** @type {(p: string) => (o: (_: string) => string) => (f: Types.Field) => string} */
150
+ /** @type {(p: string) => (o: (_: string) => string) => (f: types.Field) => string} */
151
151
  const pf = p => o => ([name, t]) => `${name}: ${type(p)(o)(t)}`
152
152
 
153
153
  const param = pf(super_)(obj)
@@ -156,36 +156,36 @@ const rust = library => {
156
156
 
157
157
  const mapField = map(pf('')(ref))
158
158
 
159
- /** @type {(fa: Types.FieldArray) => (name: string) => Text.Block} */
159
+ /** @type {(fa: types.FieldArray) => (name: string) => Text.Block} */
160
160
  const struct = fn(entries)
161
161
  .then(mapField)
162
162
  .then(rustStruct)
163
163
  .result
164
164
 
165
- /** @type {(first: readonly string[]) => (p: Types.FieldArray) => string} */
165
+ /** @type {(first: readonly string[]) => (p: types.FieldArray) => string} */
166
166
  const func = first => p => {
167
167
  const resultStr = '_' in p ? ` -> ${type(super_)(ref)(p._)}` : ''
168
168
  const params = commaJoin(flat([first, mapParam(paramList(p))]))
169
169
  return `(${params})${resultStr}`
170
170
  }
171
171
 
172
- /** @type {(n: string) => (p: Types.FieldArray) => string} */
172
+ /** @type {(n: string) => (p: types.FieldArray) => string} */
173
173
  const virtualFnType = n => p => `extern "system" fn${n}${func(this_)(p)}`
174
174
 
175
- /** @type {(m: Types.Method) => string} */
175
+ /** @type {(m: types.Method) => string} */
176
176
  const virtualFn = ([n, p]) => `${n}: unsafe ${virtualFnType('')(p)}`
177
177
 
178
178
  const mapVirtualFn = map(virtualFn)
179
179
 
180
- /** @type {(m: Types.Method) => string} */
180
+ /** @type {(m: types.Method) => string} */
181
181
  const headerFn = ([n, p]) => `fn ${n}${func(self)(p)}`
182
182
 
183
- /** @type {(m: Types.Method) => string} */
183
+ /** @type {(m: types.Method) => string} */
184
184
  const traitFn = m => `${headerFn(m)};`
185
185
 
186
186
  const mapTraitFn = map(traitFn)
187
187
 
188
- /** @type {(m: Types.Method) => Text.Block} */
188
+ /** @type {(m: types.Method) => Text.Block} */
189
189
  const implFn = m => {
190
190
  const [n, p] = m
191
191
  return [
@@ -197,7 +197,7 @@ const rust = library => {
197
197
 
198
198
  const flatMapImplFn = flatMap(implFn)
199
199
 
200
- /** @type {(m: Types.Method) => Text.Block} */
200
+ /** @type {(m: types.Method) => Text.Block} */
201
201
  const impl = ([n, p]) => {
202
202
  const type = virtualFnType(` ${n}`)(p)
203
203
  return [
@@ -209,7 +209,7 @@ const rust = library => {
209
209
 
210
210
  const flatMapImpl = flatMap(impl)
211
211
 
212
- /** @type {(i: Types.Interface) => (name: string) => Text.Block} */
212
+ /** @type {(i: types.Interface) => (name: string) => Text.Block} */
213
213
  const interface_ = ({ interface: i, guid }) => name => {
214
214
 
215
215
  const e = entries(i)
@@ -253,13 +253,8 @@ const rust = library => {
253
253
  ]
254
254
  }
255
255
 
256
- /** @type {(type: O.Entry<Types.Definition>) => Text.Block} */
256
+ /** @type {(type: O.Entry<types.Definition>) => Text.Block} */
257
257
  const def = ([name, type]) => ('interface' in type ? interface_(type) : struct(type.struct))(name)
258
258
 
259
259
  return flat([['#![allow(non_snake_case)]'], flatMap(def)(entries(library))])
260
260
  }
261
-
262
- export default {
263
- /** @readonly */
264
- rust,
265
- }
@@ -1,10 +1,8 @@
1
- import text from '../../text/module.f.mjs'
1
+ import * as text from '../../text/module.f.mjs'
2
2
  const { flat } = text
3
- import string from '../../types/string/module.f.mjs'
3
+ import * as string from '../../types/string/module.f.mjs'
4
4
  const { join } = string
5
- import x from './module.f.mjs'
5
+ import { rust } from './module.f.mjs'
6
6
  import library from '../types/testlib.f.mjs'
7
7
 
8
- const { rust } = x
9
-
10
8
  export default join('\n')(flat(' ')(rust(library)))
@@ -14,7 +14,7 @@ export type Output = {
14
14
  readonly name: string;
15
15
  readonly content: string;
16
16
  };
17
- readonly line: List.List<List.List<string>>;
17
+ readonly line: list.List<list.List<string>>;
18
18
  };
19
19
  export type Func = (nodejs: NodeJs) => Output;
20
20
  /** @type {Func} */
@@ -23,4 +23,4 @@ declare const cpp: Func;
23
23
  declare const cs: Func;
24
24
  /** @type {Func} */
25
25
  declare const rust: Func;
26
- import * as List from '../../types/list/module.f.mjs';
26
+ import * as list from '../../types/list/module.f.mjs';
@@ -1,4 +1,4 @@
1
- import list, * as List from '../../types/list/module.f.mjs'
1
+ import * as list from '../../types/list/module.f.mjs'
2
2
  const { flat } = list
3
3
 
4
4
  import cppContent from '../cpp/testlib.f.mjs'
@@ -34,7 +34,7 @@ import rustContent from '../rust/testlib.f.mjs'
34
34
  * readonly name: string
35
35
  * readonly content: string
36
36
  * }
37
- * readonly line: List.List<List.List<string>>
37
+ * readonly line: list.List<list.List<string>>
38
38
  * }} Output
39
39
  */
40
40
 
@@ -3,12 +3,12 @@ import { execSync } from 'node:child_process'
3
3
  import { platform, exit } from 'node:process'
4
4
  import build, * as Build from './build.f.mjs'
5
5
  const { cpp, cs, rust } = build
6
- import string from '../../types/string/module.f.mjs'
6
+ import * as string from '../../types/string/module.f.mjs'
7
7
  const { join } = string
8
8
  const { log, error } = console
9
- import sgr from '../../text/sgr/module.f.mjs'
10
- const { bold, reset } = sgr
11
- import list from '../../types/list/module.f.mjs'
9
+ import * as sgr from '../../text/sgr/module.f.mjs'
10
+ const { bold, reset } = sgr.codes
11
+ import * as list from '../../types/list/module.f.mjs'
12
12
 
13
13
  import { fileURLToPath } from 'node:url'
14
14
  import { dirname } from 'node:path'
@@ -1,8 +1,7 @@
1
- declare namespace _default {
2
- export { paramList };
3
- export { result };
4
- }
5
- export default _default;
1
+ /** @type {(fa: FieldArray) => list.List<Field> } */
2
+ export const paramList: (fa: FieldArray) => list.List<Field>;
3
+ /** @type {<T>(v: T) => (f: (type: Type) => T) => (fa: FieldArray) => T} */
4
+ export const result: <T>(v: T) => (f: (type: Type) => T) => (fa: FieldArray) => T;
6
5
  export type Library = { readonly [k in string]: Definition; };
7
6
  export type Definition = Struct | Interface;
8
7
  export type Struct = {
@@ -20,9 +19,5 @@ export type Type = BaseType | Id | Pointer;
20
19
  export type Id = readonly [string];
21
20
  export type BaseType = "u8" | "i8" | "u16" | "i16" | "u32" | "i32" | "u64" | "i64" | "usize" | "isize" | "f32" | "f64" | "bool";
22
21
  export type Pointer = readonly ["*", Type];
23
- /** @type {(fa: FieldArray) => List.List<Field> } */
24
- declare const paramList: (fa: FieldArray) => List.List<Field>;
25
- /** @type {<T>(v: T) => (f: (type: Type) => T) => (fa: FieldArray) => T} */
26
- declare const result: <T>(v: T) => (f: (type: Type) => T) => (fa: FieldArray) => T;
22
+ import * as list from '../../types/list/module.f.mjs';
27
23
  import * as O from '../../types/object/module.f.mjs';
28
- import * as List from '../../types/list/module.f.mjs';
@@ -1,7 +1,7 @@
1
1
  // @ts-self-types="./module.f.d.mts"
2
2
  import * as O from '../../types/object/module.f.mjs'
3
- import list, * as List from '../../types/list/module.f.mjs'
4
- import f from '../../types/function/module.f.mjs'
3
+ import * as list from '../../types/list/module.f.mjs'
4
+ import * as f from '../../types/function/module.f.mjs'
5
5
  const { compose } = f
6
6
  const { filter } = list
7
7
  const { entries } = Object
@@ -60,15 +60,8 @@ const isParam = ([name]) => name !== '_'
60
60
 
61
61
  const filterParam = filter(isParam)
62
62
 
63
- /** @type {(fa: FieldArray) => List.List<Field> } */
64
- const paramList = compose(entries)(filterParam)
63
+ /** @type {(fa: FieldArray) => list.List<Field> } */
64
+ export const paramList = compose(entries)(filterParam)
65
65
 
66
66
  /** @type {<T>(v: T) => (f: (type: Type) => T) => (fa: FieldArray) => T} */
67
- const result = v => f => fa => '_' in fa ? f(fa._) : v
68
-
69
- export default {
70
- /** @readonly */
71
- paramList,
72
- /** @readonly */
73
- result,
74
- }
67
+ export const result = v => f => fa => '_' in fa ? f(fa._) : v
@@ -1,24 +1,20 @@
1
- declare namespace _default {
2
- export { getOrBuild };
3
- }
4
- export default _default;
5
- export type Config<M> = {
6
- readonly packageGet: packageT.Get;
7
- readonly moduleMapInterface: moduleT.MapInterface<M>;
8
- readonly moduleId: moduleT.Id;
9
- readonly moduleMap: M;
10
- };
11
- export type Result<M> = readonly [moduleT.State, M];
12
1
  /**
13
2
  * @type {(compile: function_.Compile) =>
14
- * (packageGet: packageT.Get) =>
15
- * <M>(moduleMapInterface: moduleT.MapInterface<M>) =>
16
- * (moduleId: moduleT.Id) =>
3
+ * (packageGet: package_.Get) =>
4
+ * <M>(moduleMapInterface: module.MapInterface<M>) =>
5
+ * (moduleId: module.Id) =>
17
6
  * (moduleMap: M) =>
18
7
  * Result<M>
19
8
  * }
20
9
  */
21
- declare const getOrBuild: (compile: function_.Compile) => (packageGet: packageT.Get) => <M>(moduleMapInterface: moduleT.MapInterface<M>) => (moduleId: moduleT.Id) => (moduleMap: M) => Result<M>;
22
- import * as packageT from '../package/module.f.mjs';
23
- import * as moduleT from '../module/module.f.mjs';
10
+ export const getOrBuild: (compile: function_.Compile) => (packageGet: package_.Get) => <M>(moduleMapInterface: module.MapInterface<M>) => (moduleId: module.Id) => (moduleMap: M) => Result<M>;
11
+ export type Config<M> = {
12
+ readonly packageGet: package_.Get;
13
+ readonly moduleMapInterface: module.MapInterface<M>;
14
+ readonly moduleId: module.Id;
15
+ readonly moduleMap: M;
16
+ };
17
+ export type Result<M> = readonly [module.State, M];
24
18
  import * as function_ from '../module/function/module.f.mjs';
19
+ import * as package_ from '../package/module.f.mjs';
20
+ import * as module from '../module/module.f.mjs';