functionalscript 0.0.573 → 0.0.575
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/npm-publish.yml +7 -0
- package/dev/index.mjs +3 -0
- package/dev/module.mjs +57 -1
- package/index.f.cjs +40 -0
- package/jsr.json +3 -3
- package/nodejs/version/module.f.cjs +20 -11
- package/nodejs/version/test.f.cjs +2 -2
- package/package.json +4 -2
- package/types/bigint/README.md +3 -3
|
@@ -18,11 +18,18 @@ jobs:
|
|
|
18
18
|
with:
|
|
19
19
|
node-version: 22
|
|
20
20
|
registry-url: https://registry.npmjs.org/
|
|
21
|
+
- uses: denoland/setup-deno@v1
|
|
22
|
+
with:
|
|
23
|
+
deno-version: 2
|
|
21
24
|
# - run: npm ci
|
|
22
25
|
- run: npm run version
|
|
26
|
+
- run: npm run index
|
|
23
27
|
- run: npm publish
|
|
24
28
|
env:
|
|
25
29
|
NODE_AUTH_TOKEN: ${{secrets.npm_token}}
|
|
30
|
+
- run: deno publish
|
|
31
|
+
|
|
32
|
+
|
|
26
33
|
|
|
27
34
|
# publish-gpr:
|
|
28
35
|
# runs-on: ubuntu-latest
|
package/dev/index.mjs
ADDED
package/dev/module.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { readdir, readFile } from 'node:fs/promises'
|
|
1
|
+
import { readdir, readFile, writeFile } from 'node:fs/promises'
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @typedef {{
|
|
@@ -165,3 +165,59 @@ export const loadModuleMap = async () => {
|
|
|
165
165
|
|
|
166
166
|
return build()
|
|
167
167
|
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* @typedef {{
|
|
171
|
+
* readonly[k in string]: string | FolderMap
|
|
172
|
+
* }} FolderMap
|
|
173
|
+
*/
|
|
174
|
+
|
|
175
|
+
/** @type {(m: FolderMap) => (s: readonly string[]) => FolderMap } */
|
|
176
|
+
const folderMapAdd = m => s => {
|
|
177
|
+
const [first, ...rest] = s
|
|
178
|
+
const firstResult = m[first]
|
|
179
|
+
return typeof firstResult === 'string'
|
|
180
|
+
? m
|
|
181
|
+
: {
|
|
182
|
+
...m,
|
|
183
|
+
[first]: rest.length === 1
|
|
184
|
+
? rest[0]
|
|
185
|
+
: folderMapAdd(firstResult === undefined ? {} : firstResult)(rest)
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
const indent = ' '
|
|
190
|
+
|
|
191
|
+
/** @type {(i: string) => (p: string) => (m: FolderMap) => string} */
|
|
192
|
+
const codeAdd = i => p => m => {
|
|
193
|
+
let result = ''
|
|
194
|
+
for (const [k, v] of Object.entries(m)) {
|
|
195
|
+
const np = `${p}${k}/`
|
|
196
|
+
if (typeof v === 'string') {
|
|
197
|
+
result += `${i}${k}: require("${np}${v}"),\n`
|
|
198
|
+
} else {
|
|
199
|
+
result += `${i}${k}: \{\n`
|
|
200
|
+
result += codeAdd(i + indent)(np)(v)
|
|
201
|
+
result += `${i}\},\n`
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return result
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
export const index = async() => {
|
|
208
|
+
/** @type {FolderMap} */
|
|
209
|
+
let m = {}
|
|
210
|
+
for (const k in await loadModuleMap()) {
|
|
211
|
+
const [, ...s] = k.split('/')
|
|
212
|
+
if (s[s.length - 1] === 'module.f.cjs') {
|
|
213
|
+
m = folderMapAdd(m)(s)
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
console.log(m)
|
|
217
|
+
let s =
|
|
218
|
+
'// Generated file.\n' +
|
|
219
|
+
'module.exports = {\n'
|
|
220
|
+
s += codeAdd(indent)('./')(m)
|
|
221
|
+
s += '}\n'
|
|
222
|
+
await writeFile('index.f.cjs', s)
|
|
223
|
+
}
|
package/index.f.cjs
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// Generated file.
|
|
2
|
+
module.exports = {
|
|
3
|
+
types: {
|
|
4
|
+
nullable: require("./types/nullable/module.f.cjs"),
|
|
5
|
+
array: require("./types/array/module.f.cjs"),
|
|
6
|
+
function: require("./types/function/module.f.cjs"),
|
|
7
|
+
list: require("./types/list/module.f.cjs"),
|
|
8
|
+
btree: require("./types/btree/module.f.cjs"),
|
|
9
|
+
string: require("./types/string/module.f.cjs"),
|
|
10
|
+
map: require("./types/map/module.f.cjs"),
|
|
11
|
+
object: require("./types/object/module.f.cjs"),
|
|
12
|
+
bigint: require("./types/bigint/module.f.cjs"),
|
|
13
|
+
bigfloat: require("./types/bigfloat/module.f.cjs"),
|
|
14
|
+
sorted_list: require("./types/sorted_list/module.f.cjs"),
|
|
15
|
+
number: require("./types/number/module.f.cjs"),
|
|
16
|
+
range: require("./types/range/module.f.cjs"),
|
|
17
|
+
range_map: require("./types/range_map/module.f.cjs"),
|
|
18
|
+
result: require("./types/result/module.f.cjs"),
|
|
19
|
+
string_set: require("./types/string_set/module.f.cjs"),
|
|
20
|
+
sorted_set: require("./types/sorted_set/module.f.cjs"),
|
|
21
|
+
byte_set: require("./types/byte_set/module.f.cjs"),
|
|
22
|
+
nibble_set: require("./types/nibble_set/module.f.cjs"),
|
|
23
|
+
},
|
|
24
|
+
com: require("./com/module.f.cjs"),
|
|
25
|
+
text: require("./text/module.f.cjs"),
|
|
26
|
+
json: require("./json/module.f.cjs"),
|
|
27
|
+
js: {
|
|
28
|
+
tokenizer: require("./js/tokenizer/module.f.cjs"),
|
|
29
|
+
},
|
|
30
|
+
commonjs: require("./commonjs/module.f.cjs"),
|
|
31
|
+
dev: require("./dev/module.f.cjs"),
|
|
32
|
+
djs: require("./djs/module.f.cjs"),
|
|
33
|
+
fsc: require("./fsc/module.f.cjs"),
|
|
34
|
+
fsm: require("./fsm/module.f.cjs"),
|
|
35
|
+
html: require("./html/module.f.cjs"),
|
|
36
|
+
nodejs: require("./nodejs/module.f.cjs"),
|
|
37
|
+
prime_field: require("./prime_field/module.f.cjs"),
|
|
38
|
+
secp: require("./secp/module.f.cjs"),
|
|
39
|
+
sha2: require("./sha2/module.f.cjs"),
|
|
40
|
+
}
|
package/jsr.json
CHANGED
|
@@ -24,17 +24,26 @@
|
|
|
24
24
|
|
|
25
25
|
const { stringify, parse } = JSON
|
|
26
26
|
|
|
27
|
-
/** @type {<T>(node: Node<T>) => T} */
|
|
28
|
-
const version = ({ child_process, fs }) =>
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
27
|
+
/** @type {<T>(node: Node<T>) => readonly[T, T]} */
|
|
28
|
+
const version = ({ child_process, fs }) => {
|
|
29
|
+
const version = `0.0.${child_process.execSync('git log --oneline').toString().split('\n').length - 1}`
|
|
30
|
+
const f = (/** @type {string} */jsonFile) => {
|
|
31
|
+
const file = `${jsonFile}.json`
|
|
32
|
+
return fs.writeFileSync(
|
|
33
|
+
file,
|
|
34
|
+
stringify(
|
|
35
|
+
{
|
|
36
|
+
...parse(fs.readFileSync(file).toString()),
|
|
37
|
+
version
|
|
38
|
+
},
|
|
39
|
+
null,
|
|
40
|
+
2))
|
|
41
|
+
}
|
|
42
|
+
return [
|
|
43
|
+
f('package'),
|
|
44
|
+
f('jsr')
|
|
45
|
+
]
|
|
46
|
+
}
|
|
38
47
|
|
|
39
48
|
module.exports = {
|
|
40
49
|
/** @readonly */
|
package/package.json
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "functionalscript",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.575",
|
|
4
4
|
"description": "FunctionalScript is a functional subset of JavaScript",
|
|
5
|
+
"main": "index.f.cjs",
|
|
5
6
|
"scripts": {
|
|
6
7
|
"tsc": "tsc",
|
|
7
8
|
"test": "tsc && npm run test-only",
|
|
9
|
+
"index": "node ./dev/index.mjs",
|
|
8
10
|
"version": "node ./nodejs/version/main.cjs",
|
|
9
11
|
"test-only": "node --trace-uncaught ./dev/test.mjs",
|
|
10
12
|
"comtest": "node ./com/test/build.cjs"
|
|
@@ -29,7 +31,7 @@
|
|
|
29
31
|
},
|
|
30
32
|
"homepage": "https://github.com/functionalscript/functionalscript#readme",
|
|
31
33
|
"devDependencies": {
|
|
32
|
-
"@types/node": "^22.
|
|
34
|
+
"@types/node": "^22.10.0",
|
|
33
35
|
"typescript": "^5.7.2"
|
|
34
36
|
}
|
|
35
37
|
}
|
package/types/bigint/README.md
CHANGED
|
@@ -4,9 +4,9 @@ Bun has a `bigint` size limitation. It's `1_048_575` bits (`1024 ** 2`) or `131_
|
|
|
4
4
|
|
|
5
5
|
## Benchmarks
|
|
6
6
|
|
|
7
|
-
###
|
|
7
|
+
### log2 versus toString (2024/11/25)
|
|
8
8
|
|
|
9
|
-
|Framework|
|
|
9
|
+
|Framework|log2(x) |x.toString(2).length|
|
|
10
10
|
|---------|------------------|--------------------|
|
|
11
11
|
|Bun |1.781681 |2.079615 |
|
|
12
12
|
|Deno 1 |0.710344 |1.917003 |
|
|
@@ -17,7 +17,7 @@ Bun has a `bigint` size limitation. It's `1_048_575` bits (`1024 ** 2`) or `131_
|
|
|
17
17
|
|Node 22 |0.983075 |2.336697 |
|
|
18
18
|
|Node 23 |0.699960 |1.872965 |
|
|
19
19
|
|
|
20
|
-
`
|
|
20
|
+
`log2` wins.
|
|
21
21
|
|
|
22
22
|
### Minus versus Not
|
|
23
23
|
|