functionalscript 0.0.574 → 0.0.576
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 +9 -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
|
@@ -10,6 +10,8 @@ on:
|
|
|
10
10
|
jobs:
|
|
11
11
|
publish-npm:
|
|
12
12
|
runs-on: ubuntu-latest
|
|
13
|
+
permissions:
|
|
14
|
+
id-token: write # This is required for requesting the JWT
|
|
13
15
|
steps:
|
|
14
16
|
- uses: actions/checkout@v2
|
|
15
17
|
with:
|
|
@@ -18,11 +20,18 @@ jobs:
|
|
|
18
20
|
with:
|
|
19
21
|
node-version: 22
|
|
20
22
|
registry-url: https://registry.npmjs.org/
|
|
23
|
+
- uses: denoland/setup-deno@v1
|
|
24
|
+
with:
|
|
25
|
+
deno-version: 2
|
|
21
26
|
# - run: npm ci
|
|
22
27
|
- run: npm run version
|
|
28
|
+
- run: npm run index
|
|
23
29
|
- run: npm publish
|
|
24
30
|
env:
|
|
25
31
|
NODE_AUTH_TOKEN: ${{secrets.npm_token}}
|
|
32
|
+
- run: deno publish
|
|
33
|
+
|
|
34
|
+
|
|
26
35
|
|
|
27
36
|
# publish-gpr:
|
|
28
37
|
# 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.576",
|
|
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
|
}
|