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.
@@ -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
@@ -0,0 +1,3 @@
1
+ import { index } from "./module.mjs"
2
+
3
+ index()
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
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "@functionalscript/functionalscript",
3
- "version": "0.0.0",
4
- "exports": "./module.f.cjs"
2
+ "name": "@functionalscript/functionalscript",
3
+ "version": "0.0.576",
4
+ "exports": "./index.f.cjs"
5
5
  }
@@ -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
- fs.writeFileSync(
30
- 'package.json',
31
- stringify(
32
- {
33
- ...parse(fs.readFileSync('package.json').toString()),
34
- version: `0.0.${child_process.execSync('git log --oneline').toString().split('\n').length - 1}`
35
- },
36
- null,
37
- 2))
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 */
@@ -86,6 +86,6 @@ module.exports = () => {
86
86
  writeFileSync: (_, content) => content
87
87
  }
88
88
  }
89
- const v = _.version(node)
90
- if (v !== e) { throw [v, e] }
89
+ const [n, d] = _.version(node)
90
+ if (n !== e) { throw [n, e] }
91
91
  }
package/package.json CHANGED
@@ -1,10 +1,12 @@
1
1
  {
2
2
  "name": "functionalscript",
3
- "version": "0.0.574",
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.9.3",
34
+ "@types/node": "^22.10.0",
33
35
  "typescript": "^5.7.2"
34
36
  }
35
37
  }