functionalscript 0.0.342 → 0.0.349

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 (62) hide show
  1. package/.github/workflows/node.js.yml +2 -0
  2. package/.github/workflows/npm-publish.yml +1 -1
  3. package/commonjs/README.md +14 -8
  4. package/commonjs/build/{index.js → main.f.js} +14 -8
  5. package/commonjs/build/{test.js → test.f.js} +6 -6
  6. package/commonjs/main.f.js +20 -0
  7. package/commonjs/module/function/{index.js → main.f.js} +1 -1
  8. package/commonjs/module/{index.js → main.f.js} +3 -1
  9. package/commonjs/package/dependencies/{index.js → main.f.js} +3 -3
  10. package/commonjs/package/dependencies/{test.js → test.f.js} +1 -1
  11. package/commonjs/package/{index.js → main.f.js} +8 -3
  12. package/commonjs/package/{test.js → test.f.js} +2 -2
  13. package/commonjs/path/{index.js → main.f.js} +3 -3
  14. package/commonjs/path/{test.js → test.f.js} +7 -7
  15. package/dev/{index.js → main.f.js} +0 -0
  16. package/html/{index.js → main.f.js} +3 -4
  17. package/html/test.f.js +13 -0
  18. package/io/commonjs/{index.js → main.js} +3 -3
  19. package/io/commonjs/test.js +2 -2
  20. package/io/nodejs/version/{index.js → main.js} +0 -0
  21. package/io/result/{index.js → main.js} +1 -1
  22. package/json/{index.js → main.f.js} +31 -29
  23. package/json/{test.js → test.f.js} +3 -3
  24. package/json/tokenizer/{index.js → main.f.js} +3 -3
  25. package/json/tokenizer/{test.js → test.f.js} +4 -4
  26. package/main.f.js +14 -0
  27. package/package.json +6 -5
  28. package/sha2/{index.js → main.f.js} +1 -1
  29. package/sha2/{test.js → test.f.js} +4 -4
  30. package/test.f.js +78 -0
  31. package/types/array/{index.js → main.f.js} +1 -2
  32. package/types/array/{test.js → test.f.js} +3 -3
  33. package/types/btree/find/{index.js → main.f.js} +4 -4
  34. package/types/btree/find/{test.js → test.f.js} +7 -7
  35. package/types/btree/main.f.js +40 -0
  36. package/types/btree/remove/{index.js → main.f.js} +6 -6
  37. package/types/btree/remove/{test.js → test.f.js} +6 -6
  38. package/types/btree/set/{index.js → main.f.js} +4 -4
  39. package/types/btree/set/{test.js → test.f.js} +5 -5
  40. package/types/btree/{test.js → test.f.js} +11 -11
  41. package/types/btree/{index.js → types/main.f.js} +1 -33
  42. package/types/function/compare/{index.js → main.f.js} +1 -1
  43. package/types/function/compare/{test.js → test.f.js} +1 -1
  44. package/types/function/{index.js → main.f.js} +4 -0
  45. package/types/function/operator/{index.js → main.f.js} +0 -0
  46. package/types/list/{index.js → main.f.js} +3 -3
  47. package/types/list/{test.js → test.f.js} +4 -4
  48. package/types/main.f.js +20 -0
  49. package/types/map/{index.js → main.f.js} +10 -9
  50. package/types/map/{test.js → test.f.js} +3 -3
  51. package/types/object/{index.js → main.f.js} +2 -2
  52. package/types/object/{test.js → test.f.js} +1 -1
  53. package/types/option/{index.js → main.f.js} +0 -0
  54. package/types/range/{index.js → main.f.js} +0 -0
  55. package/types/range/{test.js → test.f.js} +1 -1
  56. package/types/result/{index.js → main.f.js} +0 -0
  57. package/types/{stringSet/index.js → stringset/main.f.js} +9 -10
  58. package/types/{stringSet/test.js → stringset/test.f.js} +1 -1
  59. package/commonjs/index.js +0 -11
  60. package/html/test.js +0 -6
  61. package/index.js +0 -76
  62. package/test.js +0 -125
@@ -1,7 +1,7 @@
1
- const _ = require('../index.js')
2
- const list = require('../../list/index.js')
3
- const cmp = require('../../function/compare/index.js')
4
- const array = require('../../array/index.js')
1
+ const _ = require('../types/main.f.js')
2
+ const list = require('../../list/main.f.js')
3
+ const cmp = require('../../function/compare/main.f.js')
4
+ const array = require('../../array/main.f.js')
5
5
 
6
6
  /**
7
7
  * @template T
@@ -1,10 +1,10 @@
1
- const _ = require('./index.js')
2
- const list = require('../../list/index.js')
3
- const json = require('../../../json/index.js')
4
- const { sort } = require('../../object/index.js')
5
- const btree = require('../index.js')
6
- const { stringCmp } = require('../../function/compare/index.js')
7
- const s = require('../set/index.js')
1
+ const _ = require('./main.f.js')
2
+ const list = require('../../list/main.f.js')
3
+ const json = require('../../../json/main.f.js')
4
+ const { sort } = require('../../object/main.f.js')
5
+ const btree = require('../types/main.f.js')
6
+ const { stringCmp } = require('../../function/compare/main.f.js')
7
+ const s = require('../set/main.f.js')
8
8
 
9
9
  const jsonStr = json.stringify(sort)
10
10
 
@@ -0,0 +1,40 @@
1
+ const list = require('../list/main.f.js')
2
+ const option = require('../option/main.f.js')
3
+ const _ = require('./types/main.f.js')
4
+
5
+ /** @type {<T>(node: _.Node<T>) => list.Thunk<T>} */
6
+ const nodeValues = node => () => {
7
+ switch (node.length) {
8
+ case 1: case 2: { return node }
9
+ case 3: {
10
+ return list.flat([
11
+ nodeValues(node[0]),
12
+ [node[1]],
13
+ nodeValues(node[2])
14
+ ])
15
+ }
16
+ default: {
17
+ return list.flat([
18
+ nodeValues(node[0]),
19
+ [node[1]],
20
+ nodeValues(node[2]),
21
+ [node[3]],
22
+ nodeValues(node[4])
23
+ ])
24
+ }
25
+ }
26
+ }
27
+
28
+ /** @type {<T>(tree: _.Tree<T>) => list.List<T>} */
29
+ const values = option.map(nodeValues)
30
+
31
+ module.exports = {
32
+ /** @readonly */
33
+ find: require('./find/main.f.js'),
34
+ /** @readonly */
35
+ remove: require('./remove/main.f.js'),
36
+ /** @readonly */
37
+ set: require('./set/main.f.js'),
38
+ /** @readonly */
39
+ values,
40
+ }
@@ -1,9 +1,9 @@
1
- const _ = require('../index.js')
2
- const cmp = require('../../function/compare/index.js')
3
- const find = require('../find/index.js')
4
- const list = require('../../list/index.js')
5
- const array = require('../../array/index.js')
6
- const option = require('../../option/index.js')
1
+ const _ = require('../types/main.f.js')
2
+ const cmp = require('../../function/compare/main.f.js')
3
+ const find = require('../find/main.f.js')
4
+ const list = require('../../list/main.f.js')
5
+ const array = require('../../array/main.f.js')
6
+ const option = require('../../option/main.f.js')
7
7
 
8
8
  /**
9
9
  * @template T
@@ -1,9 +1,9 @@
1
- const _ = require('./index.js')
2
- const btree = require('../index.js')
3
- const s = require('../set/index.js')
4
- const { stringCmp } = require('../../function/compare/index.js')
5
- const json = require('../../../json/index.js')
6
- const { sort } = require('../../object/index.js')
1
+ const _ = require('./main.f.js')
2
+ const btree = require('../types/main.f.js')
3
+ const s = require('../set/main.f.js')
4
+ const { stringCmp } = require('../../function/compare/main.f.js')
5
+ const json = require('../../../json/main.f.js')
6
+ const { sort } = require('../../object/main.f.js')
7
7
 
8
8
  /** @type {(node: btree.Node<string>) => (value: string) => btree.Node<string>} */
9
9
  const set = node => value => s.set(stringCmp(value))(value)(node)
@@ -1,7 +1,7 @@
1
- const _ = require('../index.js')
2
- const find = require('../find/index.js')
3
- const cmp = require('../../function/compare/index.js')
4
- const list = require('../../list/index.js')
1
+ const _ = require('../types/main.f.js')
2
+ const find = require('../find/main.f.js')
3
+ const cmp = require('../../function/compare/main.f.js')
4
+ const list = require('../../list/main.f.js')
5
5
 
6
6
  /**
7
7
  * @template T
@@ -1,8 +1,8 @@
1
- const _ = require('./index.js')
2
- const btree = require('../index.js')
3
- const { stringCmp } = require('../../function/compare/index.js')
4
- const json = require('../../../json/index.js')
5
- const { sort } = require('../../object/index.js')
1
+ const _ = require('./main.f.js')
2
+ const btree = require('../types/main.f.js')
3
+ const { stringCmp } = require('../../function/compare/main.f.js')
4
+ const json = require('../../../json/main.f.js')
5
+ const { sort } = require('../../object/main.f.js')
6
6
 
7
7
  /** @type {(node: btree.Node<string>) => (value: string) => btree.Node<string>} */
8
8
  const set = node => value => _.set(stringCmp(value))(value)(node)
@@ -1,15 +1,15 @@
1
- const btree = require('./index.js')
2
- const { values } = btree
3
- const json = require('../../json/index.js')
4
- const { sort } = require('../object/index.js')
5
- const { stringCmp } = require('../function/compare/index.js')
6
- const list = require('../list/index.js')
7
- const s = require('./set/index.js')
8
- const f = require('./find/index.js')
1
+ const btree = require('./types/main.f.js')
2
+ const { values } = require('./main.f.js')
3
+ const json = require('../../json/main.f.js')
4
+ const { sort } = require('../object/main.f.js')
5
+ const { stringCmp } = require('../function/compare/main.f.js')
6
+ const list = require('../list/main.f.js')
7
+ const s = require('./set/main.f.js')
8
+ const f = require('./find/main.f.js')
9
9
 
10
- require('./find/test.js')
11
- require('./set/test.js')
12
- require('./remove/test.js')
10
+ require('./find/test.f.js')
11
+ require('./set/test.f.js')
12
+ require('./remove/test.f.js')
13
13
 
14
14
  const jsonStr = json.stringify(sort)
15
15
 
@@ -1,6 +1,3 @@
1
- const seq = require('../list/index.js')
2
- const option = require('../option/index.js')
3
-
4
1
  /**
5
2
  * @template T
6
3
  * @typedef {readonly[T]} Array1
@@ -54,29 +51,6 @@ const option = require('../option/index.js')
54
51
  * @typedef {Node<T> | undefined} Tree
55
52
  */
56
53
 
57
- /** @type {<T>(node: Node<T>) => seq.Thunk<T>} */
58
- const nodeValues = node => () => {
59
- switch (node.length) {
60
- case 1: case 2: { return node }
61
- case 3: {
62
- return seq.flat([
63
- nodeValues(node[0]),
64
- [node[1]],
65
- nodeValues(node[2])
66
- ])
67
- }
68
- default: {
69
- return seq.flat([
70
- nodeValues(node[0]),
71
- [node[1]],
72
- nodeValues(node[2]),
73
- [node[3]],
74
- nodeValues(node[4])
75
- ])
76
- }
77
- }
78
- }
79
-
80
54
  /**
81
55
  * @template T
82
56
  * @typedef {readonly[Node<T>]} Branch1
@@ -87,10 +61,4 @@ const nodeValues = node => () => {
87
61
  * @typedef { readonly[...Branch5<T>, T, Node<T>] } Branch7
88
62
  */
89
63
 
90
- /** @type {<T>(tree: Tree<T>) => seq.List<T>} */
91
- const values = option.map(nodeValues)
92
-
93
- module.exports = {
94
- /** @readonly */
95
- values,
96
- }
64
+ module.exports = {}
@@ -1,4 +1,4 @@
1
- const array = require('../../array/index.js')
1
+ const array = require('../../array/main.f.js')
2
2
 
3
3
  /** @typedef {array.Index3} Index3 */
4
4
  /** @typedef {array.Index5} Index5 */
@@ -1,4 +1,4 @@
1
- const _ = require('./index.js')
1
+ const _ = require('./main.f.js')
2
2
 
3
3
  {
4
4
  const result = _.numberCmp(4)(5)
@@ -18,6 +18,10 @@ const identity = value => value
18
18
  const flip = f => b => a => f(a)(b)
19
19
 
20
20
  module.exports = {
21
+ /** @readonly */
22
+ compare: require('./compare/main.f.js'),
23
+ /** @readonly */
24
+ operator: require('./operator/main.f.js'),
21
25
  /** @readonly */
22
26
  identity,
23
27
  /** @readonly */
File without changes
@@ -1,6 +1,6 @@
1
- const { compose, identity } = require('../function/index.js')
2
- const operator = require('../function/operator/index.js')
3
- const { logicalNot, strictEqual, stateScanToScan, reduceToScan, foldToScan } = require('../function/operator/index.js')
1
+ const { compose, identity } = require('../function/main.f.js')
2
+ const operator = require('../function/operator/main.f.js')
3
+ const { logicalNot, strictEqual, stateScanToScan, reduceToScan, foldToScan } = operator
4
4
 
5
5
  /**
6
6
  * @template T
@@ -1,7 +1,7 @@
1
- const _ = require('./index.js')
2
- const json = require('../../json/index.js')
3
- const { sort } = require('../object/index.js')
4
- const { addition, strictEqual, foldToScan } = require('../function/operator/index.js')
1
+ const _ = require('./main.f.js')
2
+ const json = require('../../json/main.f.js')
3
+ const { sort } = require('../object/main.f.js')
4
+ const { addition, strictEqual, foldToScan } = require('../function/operator/main.f.js')
5
5
 
6
6
  /** @type {(sequence: _.List<json.Unknown>) => string} */
7
7
  const stringify = sequence => json.stringify(sort)(_.toArray(sequence))
@@ -0,0 +1,20 @@
1
+ module.exports = {
2
+ /** @readonly */
3
+ array: require('./array/main.f.js'),
4
+ /** @readonly */
5
+ btree: require('./btree/main.f.js'),
6
+ /** @readonly */
7
+ function: require('./function/main.f.js'),
8
+ /** @readonly */
9
+ list: require('./list/main.f.js'),
10
+ /** @readonly */
11
+ map: require('./map/main.f.js'),
12
+ /** @readonly */
13
+ object: require('./object/main.f.js'),
14
+ /** @readonly */
15
+ range: require('./range/main.f.js'),
16
+ /** @readonly */
17
+ result: require('./result/main.f.js'),
18
+ /** @readonly */
19
+ stringSet: require('./stringset/main.f.js'),
20
+ }
@@ -1,11 +1,12 @@
1
- const btree = require('../btree/index.js')
2
- const { values } = require("../btree/index.js")
3
- const find = require('../btree/find/index.js')
4
- const s = require('../btree/set/index.js')
5
- const compare = require('../function/compare/index.js')
6
- const { stringCmp } = require('../function/compare/index.js')
7
- const list = require('../list/index.js')
8
- const btRemove = require('../btree/remove/index.js')
1
+ const btTypes = require('../btree/types/main.f.js')
2
+ const btree = require('../btree/main.f.js')
3
+ const { values } = require("../btree/main.f.js")
4
+ const find = require('../btree/find/main.f.js')
5
+ const s = require('../btree/set/main.f.js')
6
+ const compare = require('../function/compare/main.f.js')
7
+ const { stringCmp } = require('../function/compare/main.f.js')
8
+ const list = require('../list/main.f.js')
9
+ const btRemove = require('../btree/remove/main.f.js')
9
10
 
10
11
  /** @typedef {compare.Sign} Sign */
11
12
 
@@ -21,7 +22,7 @@ const btRemove = require('../btree/remove/index.js')
21
22
 
22
23
  /**
23
24
  * @template T
24
- * @typedef {btree.Tree<Entry<T>>} Map
25
+ * @typedef {btTypes.Tree<Entry<T>>} Map
25
26
  */
26
27
 
27
28
  /** @type {(a: string) => <T>(b: Entry<T>) => Sign} */
@@ -1,5 +1,5 @@
1
- const { at, set, empty, entries, remove } = require('./index.js')
2
- const seq = require('../list/index.js')
1
+ const { at, set, empty, entries, remove } = require('./main.f.js')
2
+ const seq = require('../list/main.f.js')
3
3
 
4
4
  {
5
5
  let m = set('a')(1)(undefined)
@@ -53,7 +53,7 @@ const seq = require('../list/index.js')
53
53
  }
54
54
 
55
55
  {
56
- /** @type {import('.').Map<number>} */
56
+ /** @type {import('./main.f').Map<number>} */
57
57
  let m = empty
58
58
  for (let i = 0; i < 100_000; ++i) {
59
59
  m = set((i * i).toString())(i)(m)
@@ -1,5 +1,5 @@
1
- const list = require('../list/index.js')
2
- const map = require('../map/index.js')
1
+ const list = require('../list/main.f.js')
2
+ const map = require('../map/main.f.js')
3
3
 
4
4
  /**
5
5
  * @template T
@@ -1,4 +1,4 @@
1
- const _ = require('./index.js')
1
+ const _ = require('./main.f.js')
2
2
 
3
3
  {
4
4
  const a = {}
File without changes
File without changes
@@ -1,4 +1,4 @@
1
- const _ = require('./index.js')
1
+ const _ = require('./main.f.js')
2
2
 
3
3
  {
4
4
  if (!_.contains([0, 5])(1)) { throw 1 }
File without changes
@@ -1,18 +1,17 @@
1
- const btree = require('../btree/index.js')
2
- const find = require('../btree/find/index.js')
3
- const btSet = require('../btree/set/index.js')
4
- const btRemove = require('../btree/remove/index.js')
5
- const { stringCmp } = require("../function/compare/index.js")
6
- const list = require('../list/index.js')
7
- const { compose } = require('../function/index.js')
1
+ const btTypes = require('../btree/types/main.f.js')
2
+ const btree = require('../btree/main.f.js')
3
+ const { find } = btree
4
+ const { stringCmp } = require("../function/compare/main.f.js")
5
+ const list = require('../list/main.f.js')
6
+ const { compose } = require('../function/main.f.js')
8
7
 
9
- /** @typedef {btree.Tree<string>} StringSet */
8
+ /** @typedef {btTypes.Tree<string>} StringSet */
10
9
 
11
10
  /** @type {(value: string) => (set: StringSet) => boolean} */
12
11
  const contains = value => s => s !== undefined && find.isFound(find.find(stringCmp(value))(s).first)
13
12
 
14
13
  /** @type {(value: string) => (s: StringSet) => StringSet} */
15
- const set = value => btSet.set(stringCmp(value))(value)
14
+ const set = value => btree.set.set(stringCmp(value))(value)
16
15
 
17
16
  /** @type {(s: StringSet) => list.List<string>} */
18
17
  const values = btree.values
@@ -20,7 +19,7 @@ const values = btree.values
20
19
  const fromValues = list.reduce(set)(undefined)
21
20
 
22
21
  /** @type {(value: string) => (s: StringSet) => StringSet} */
23
- const remove = compose(stringCmp)(btRemove.remove)
22
+ const remove = compose(stringCmp)(btree.remove.remove)
24
23
 
25
24
  module.exports = {
26
25
  /** @readonly */
@@ -1,4 +1,4 @@
1
- const _ = require('./index.js')
1
+ const _ = require('./main.f.js')
2
2
 
3
3
  {
4
4
  const r = _.set('hello')(undefined)
package/commonjs/index.js DELETED
@@ -1,11 +0,0 @@
1
- /** @typedef {(packageName: string) => PackageMap|Package|undefined} PackageMap */
2
-
3
- /**
4
- * @typedef {readonly[
5
- * string,
6
- * PackageMap,
7
- * (fileName: string) => string|undefined
8
- * ]} Package
9
- */
10
-
11
- module.exports = {}
package/html/test.js DELETED
@@ -1,6 +0,0 @@
1
- const _ = require('./index.js')
2
-
3
- {
4
- const r = _.htmlToString(['html', []])
5
- if (r !== '<!DOCTYPE html><html></html>') { throw r }
6
- }
package/index.js DELETED
@@ -1,76 +0,0 @@
1
- /** @type {<F>(c: string, found: (before: string, after: string) => F, notFound: (c: string, source: string) => F) => (source: string) => F} */
2
- const splitOne = (c, found, notFound) => source => {
3
- const i = source.indexOf(c)
4
- return i !== -1 ? found(source.substring(0, i), source.substring(i + 1)) : notFound(c, source)
5
- }
6
-
7
- /** @type {<T>(f: (_: T) => boolean) => (_: Iterable<T>) => boolean} */
8
- const every = f => i => {
9
- for (let e of i) {
10
- if (!f(e)) {
11
- return false
12
- }
13
- }
14
- return true
15
- }
16
-
17
- /** @typedef {{org: string, name: string}} RepoId */
18
- /** @typedef {{repo: RepoId}} ModuleRepoId */
19
- /** @typedef {{repo: RepoId, branch: string}} ModuleRepoBranchId */
20
- /** @typedef {{repo: RepoId, commit: string}} ModuleRepoCommitId */
21
- /** @typedef {ModuleRepoId|ModuleRepoBranchId|ModuleRepoCommitId} ModuleId */
22
-
23
- /** @typedef {(..._: string[]) => string} GetMsg */
24
- /** @typedef {'expected'|'unknownProtocol'} ErrorId */
25
- /** @typedef {{[_ in ErrorId]: GetMsg}} ErrorMap */
26
- /** @typedef {{ id: ErrorId, params: string[]}} ErrorValue */
27
-
28
- /**
29
- * @template T
30
- * @typedef {<R>(v: (_: T) => R, e: (_: ErrorValue) => R) => R} Result
31
- */
32
-
33
- /** @type {<T>(_: T) => Result<T>} */
34
- const value = v => vf => vf(v)
35
-
36
- /**
37
- * @typedef {<R, T>(_: (_: T) => R, e: (_: ErrorValue) => R) => R} ErrorResult
38
- */
39
-
40
- /** @type {(e: ErrorValue) => ErrorResult} */
41
- const error = e => (_, ef) => ef(e)
42
-
43
- /** @type {(id: ErrorId) => (...params: string[]) => ErrorResult} */
44
- const createError = id => (...params) => error({ id, params })
45
-
46
- /** @type {(_: string) => Result<ModuleId>} */
47
- const parseRepo = repo => {
48
- const s = repo.split('/')
49
- return s.length === 2 ? value({ repo: { org: s[0], name: s[1] } }) : createError('expected')('/', repo)
50
- }
51
-
52
- /** @type {(_: string) => boolean} */
53
- const isCommit = name => name.length === 40 && every(c => "0123456789ABCDEFabcdef".includes(c))(name)
54
-
55
- /** @type {(repo: string, branch: string) => Result<ModuleId>} */
56
- const parseRepoAndBranchCommit = (repo, branchCommit) =>
57
- parseRepo(repo)(
58
- ({repo}) => value(isCommit(branchCommit) ? { repo, commit: branchCommit } : { repo, branch: branchCommit }),
59
- error)
60
-
61
- const parseGitHubId = splitOne('#', parseRepoAndBranchCommit, (_, repo) => parseRepo(repo))
62
-
63
- /** @type {(protocol: string, id: string) => Result<ModuleId>} */
64
- const parseProtocolAndId = (protocol, id) => protocol === 'github'
65
- ? parseGitHubId(id) : createError('unknownProtocol')(protocol)
66
-
67
- module.exports = {
68
- every,
69
- isCommit,
70
- parseModuleUrl: splitOne(':', parseProtocolAndId, createError('expected')),
71
- /** @type {ErrorMap} */
72
- errorMap: {
73
- expected: (c, s) => `expected '${c}' in '${s}'`,
74
- unknownProtocol: protocol => `unknown protocol '${protocol}'`,
75
- },
76
- }
package/test.js DELETED
@@ -1,125 +0,0 @@
1
- const i = require('./index.js')
2
-
3
- require('./types/list/test.js')
4
- require('./types/array/test.js')
5
- require('./types/btree/test.js')
6
- require('./sha2/test.js')
7
- require('./json/test.js')
8
- require('./json/tokenizer/test.js')
9
- require('./types/object/test.js')
10
- require('./io/commonjs/test.js')
11
- require('./commonjs/package/dependencies/test.js')
12
- require('./commonjs/package/test.js')
13
- require('./commonjs/path/test.js')
14
- require('./types/function/compare/test.js')
15
- require('./types/stringSet/test.js')
16
- require('./commonjs/build/test.js')
17
- require('./types/range/test.js')
18
- require('./html/test.js')
19
-
20
- /** @type {() => never} */
21
- const assert = () => { throw 'assert' }
22
-
23
- /** @type {(_: boolean) => void} */
24
- const assert_if = c => { if (c) { throw 'assert_if' } }
25
-
26
- {
27
- i.parseModuleUrl('')(
28
- assert,
29
- e => assert_if(e.id !== 'expected' || e.params[0] !== ':'))
30
- }
31
-
32
- {
33
- i.parseModuleUrl(':')(
34
- assert,
35
- e => assert_if(e.id !== 'unknownProtocol'))
36
- }
37
-
38
- {
39
- i.parseModuleUrl('github:r')(
40
- assert,
41
- e => assert_if(e.id !== 'expected'))
42
- }
43
-
44
- {
45
- i.parseModuleUrl('github:functionalscript/node-example')(
46
- v => assert_if(
47
- v.repo.org !== 'functionalscript' ||
48
- v.repo.name !== 'node-example' ||
49
- 'branch' in v),
50
- assert)
51
- }
52
-
53
- {
54
- i.parseModuleUrl('github:functionalscript/node-example#main')(
55
- v => assert_if(
56
- v.repo.org !== 'functionalscript' ||
57
- v.repo.name !== 'node-example' ||
58
- !('branch' in v) ||
59
- v.branch !== 'main'),
60
- assert)
61
- }
62
-
63
- {
64
- i.parseModuleUrl('github:functionalscript/node-example#4b14a7a2b11cf53f037931eb7bef240f96dcea64')(
65
- v => assert_if(
66
- v.repo.org !== 'functionalscript' ||
67
- v.repo.name !== 'node-example' ||
68
- !('commit' in v) ||
69
- v.commit !== '4b14a7a2b11cf53f037931eb7bef240f96dcea64'),
70
- assert)
71
- }
72
-
73
- {
74
- const c = (()=>{})['constructor']
75
- const f = c('return 5')
76
- const result = f()
77
- if (result !== 5) { throw 'function' }
78
- }
79
-
80
- {
81
- /** @type {any} */
82
- const o = {}
83
- const c = o['constructor']
84
- // console.log(c)
85
- // console.log(c(()=>{}))
86
- }
87
-
88
- {
89
- /** @type {any} */
90
- const o = {
91
- constructor: undefined
92
- }
93
- const c = o['constructor']
94
- //console.log(c)
95
- }
96
-
97
- {
98
- /** @type {any} */
99
- const b = '42'
100
- const r = Number(b)
101
- //console.log(r)
102
- }
103
-
104
- {
105
- /** @type {any} */
106
- const o = {}
107
- //const c = o['constructor']
108
- //const c = o['__proto__']
109
- //const c = o['__defineGetter__']
110
- //const c = o['__defineSetter__']
111
- //const c = o['__lookupGetter__']
112
- //const c = o['__lookupSetter__']
113
- //const c = o['hasOwnProperty']
114
- //const c = o['isPrototypeOf']
115
- //const c = o['propertyIsEnumerable']
116
- //const c = o['toString']
117
- const c = o['valueOf']
118
- //console.log(c)
119
- }
120
-
121
- {
122
- const x = { 'a': 12 }
123
- const c = Object.getOwnPropertyDescriptor(x, 'constructor')
124
- const a = Object.getOwnPropertyDescriptor(x, 'a')
125
- }