diff --git a/package-lock.json b/package-lock.json index de17ebd..1840600 100644 --- a/package-lock.json +++ b/package-lock.json @@ -760,9 +760,9 @@ } }, "node_modules/@fink/larix": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@fink/larix/-/larix-18.3.0.tgz", - "integrity": "sha512-NjKxVST18q3CXRPTZQn6v8sAUNISZoqeSA5o2FfeGb/uzPtD6fCtl+EhMtyFEvjdfMTYpvUdZpq7HKQ5CaOXUw==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@fink/larix/-/larix-18.4.0.tgz", + "integrity": "sha512-IHGxJMklecataYBgxwfNGVDFAJTzjl8EZvMa2fx7UgsGLcIPOzpyw4hz78h6tpWXUSoJzsHnsEdnLeGDhgIxqw==", "dependencies": { "@fink/prattler": "^7.0.0", "@fink/std-lib": "^8.0.1" @@ -772,9 +772,9 @@ } }, "node_modules/@fink/loxia": { - "version": "21.3.0", - "resolved": "https://registry.npmjs.org/@fink/loxia/-/loxia-21.3.0.tgz", - "integrity": "sha512-+OOqTV7k9V6Al/H8aE3yjsrSps1leQE/Kkeltjl0dFqflZAqbuo3W+E5snMfDo08Xt+ZNAmk6LhHj15937GNuw==", + "version": "21.6.0", + "resolved": "https://registry.npmjs.org/@fink/loxia/-/loxia-21.6.0.tgz", + "integrity": "sha512-+cmvJjett+xDkkPV8HlsHnhlfsWot2ZsBeBU/e3+LRYCSYty4K6s6E2qcFFRd7pZQ0BiFTC2tkPnSiussjlDtg==", "dependencies": { "@babel/core": "^7.10.5", "@babel/traverse": "^7.10.5", @@ -1606,18 +1606,18 @@ } }, "node_modules/@octokit/openapi-types": { - "version": "8.1.4", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-8.1.4.tgz", - "integrity": "sha512-NnGr4NNDqO5wjSDJo5nxrGtzZUwoT23YasqK2H4Pav/6vSgeVTxuqCL9Aeh+cWfTxDomj1M4Os5BrXFsvl7qiQ==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-8.2.1.tgz", + "integrity": "sha512-BJz6kWuL3n+y+qM8Pv+UGbSxH6wxKf/SBs5yzGufMHwDefsa+Iq7ZGy1BINMD2z9SkXlIzk1qiu988rMuGXEMg==", "dev": true }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "2.13.6", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.13.6.tgz", - "integrity": "sha512-ai7TNKLi8tGkDvLM7fm0X1fbIP9u1nfXnN49ZAw2PgSoQou9yixKn5c3m0awuLacbuX2aXEvJpv1gKm3jboabg==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.14.0.tgz", + "integrity": "sha512-S2uEu2uHeI7Vf+Lvj8tv3O5/5TCAa8GHS0dUQN7gdM7vKA6ZHAbR6HkAVm5yMb1mbedLEbxOuQ+Fa0SQ7tCDLA==", "dev": true, "dependencies": { - "@octokit/types": "^6.17.3" + "@octokit/types": "^6.18.0" }, "peerDependencies": { "@octokit/core": ">=2" @@ -1633,12 +1633,12 @@ } }, "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.3.7.tgz", - "integrity": "sha512-LAgTLOsJ86ig2wYSpcSx+UWt7aQYYsEZ/Tf/pksAVQWKNcGuTVCDl9OUiPhQ7DZelNozYVWTO9Iyjd/soe4tug==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.4.1.tgz", + "integrity": "sha512-Nx0g7I5ayAYghsLJP4Q1Ch2W9jYYM0FlWWWZocUro8rNxVwuZXGfFd7Rcqi9XDWepSXjg1WByiNJnZza2hIOvQ==", "dev": true, "dependencies": { - "@octokit/types": "^6.17.4", + "@octokit/types": "^6.18.1", "deprecation": "^2.3.1" }, "peerDependencies": { @@ -1671,24 +1671,24 @@ } }, "node_modules/@octokit/rest": { - "version": "18.6.6", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.6.6.tgz", - "integrity": "sha512-kCLvz8MSh+KToXySdqUp80caBom1ZQmsX3gbT3osfbJy6fD86QObUjzAOD3D3Awz3X7ng24+lB+imvSr5EnM7g==", + "version": "18.6.7", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.6.7.tgz", + "integrity": "sha512-Kn6WrI2ZvmAztdx+HEaf88RuJn+LK72S8g6OpciE4kbZddAN84fu4fiPGxcEu052WmqKVnA/cnQsbNlrYC6rqQ==", "dev": true, "dependencies": { "@octokit/core": "^3.5.0", "@octokit/plugin-paginate-rest": "^2.6.2", "@octokit/plugin-request-log": "^1.0.2", - "@octokit/plugin-rest-endpoint-methods": "5.3.7" + "@octokit/plugin-rest-endpoint-methods": "5.4.1" } }, "node_modules/@octokit/types": { - "version": "6.17.4", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.17.4.tgz", - "integrity": "sha512-Ghk/JC4zC/1al1GwH6p8jVX6pLdypSWmbnx6h79C/yo3DeaDd6MsNsBFlHu22KbkFh+CdcAzFqdP7UdPaPPmmA==", + "version": "6.18.1", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.18.1.tgz", + "integrity": "sha512-5YsddjO1U+xC8ZYKV8yZYebW55PCc7qiEEeZ+wZRr6qyclynzfyD65KZ5FdtIeP0/cANyFaD7hV69qElf1nMsQ==", "dev": true, "dependencies": { - "@octokit/openapi-types": "^8.1.4" + "@octokit/openapi-types": "^8.2.1" } }, "node_modules/@semantic-release/commit-analyzer": { @@ -1912,9 +1912,9 @@ } }, "node_modules/@types/babel__core": { - "version": "7.1.14", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz", - "integrity": "sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g==", + "version": "7.1.15", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.15.tgz", + "integrity": "sha512-bxlMKPDbY8x5h6HBwVzEOk2C8fb6SLfYQ5Jw3uBYuYF1lfWk/kbLd81la82vrIkBb0l+JdmrZaDikPrNxpS/Ew==", "dev": true, "dependencies": { "@babel/parser": "^7.1.0", @@ -1925,18 +1925,18 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", - "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", + "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", "dev": true, "dependencies": { "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__template": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz", - "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", "dev": true, "dependencies": { "@babel/parser": "^7.1.0", @@ -1944,9 +1944,9 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.0.tgz", - "integrity": "sha512-IilJZ1hJBUZwMOVDNTdflOOLzJB/ZtljYVa7k3gEZN/jqIJIPkWHC6dvbX+DD2CwZDHB9wAKzZPzzqMIkW37/w==", + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.1.tgz", + "integrity": "sha512-DomsDK/nX3XXHs6jlQ8/YYE6jZAuhmoGAFfcYi1h1jbBNGS7Efdx74FKLTO3HCCyLqQyLlNbql87xqa7C3M/FQ==", "dev": true, "dependencies": { "@babel/types": "^7.3.0" @@ -1986,21 +1986,21 @@ } }, "node_modules/@types/minimist": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", - "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", "dev": true }, "node_modules/@types/node": { - "version": "15.12.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.5.tgz", - "integrity": "sha512-se3yX7UHv5Bscf8f1ERKvQOD6sTyycH3hdaoozvaLxgUiY5lIGEeH37AD0G0Qi9kPqihPn0HOfd2yaIEN9VwEg==", + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.0.1.tgz", + "integrity": "sha512-hBOx4SUlEPKwRi6PrXuTGw1z6lz0fjsibcWCM378YxsSu/6+C30L6CR49zIBKHiwNWCYIcOLjg4OHKZaFeLAug==", "dev": true }, "node_modules/@types/normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", "dev": true }, "node_modules/@types/parse-json": { @@ -2010,36 +2010,36 @@ "dev": true }, "node_modules/@types/prettier": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.3.0.tgz", - "integrity": "sha512-hkc1DATxFLQo4VxPDpMH1gCkPpBbpOoJ/4nhuXw4n63/0R6bCpQECj4+K226UJ4JO/eJQz+1mC2I7JsWanAdQw==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.3.2.tgz", + "integrity": "sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog==", "dev": true }, "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", "dev": true }, "node_modules/@types/stack-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz", - "integrity": "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, "node_modules/@types/yargs": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.3.tgz", - "integrity": "sha512-YlFfTGS+zqCgXuXNV26rOIeETOkXnGQXP/pjjL9P0gO/EP9jTmc7pUBhx+jVEIxpq41RX33GQ7N3DzOSfZoglQ==", + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", "dev": true, "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs-parser": { - "version": "20.2.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz", - "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==", + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", "dev": true }, "node_modules/abab": { @@ -2540,9 +2540,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001241", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001241.tgz", - "integrity": "sha512-1uoSZ1Pq1VpH0WerIMqwptXHNNGfdl7d1cJUFs80CwQ/lVzdhTvsFZCeNFslze7AjsQnb4C85tzclPa1VShbeQ==", + "version": "1.0.30001243", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001243.tgz", + "integrity": "sha512-vNxw9mkTBtkmLFnJRv/2rhs1yufpDfCkBZexG3Y0xdOH2Z/eE/85E4Dl5j1YUN34nZVsSp6vVRFQRrez9wJMRA==", "funding": { "type": "opencollective", "url": "https://opencollective.com/browserslist" @@ -3117,9 +3117,9 @@ } }, "node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dependencies": { "ms": "2.1.2" }, @@ -3357,9 +3357,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.3.763", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.763.tgz", - "integrity": "sha512-UyvEPae0wvzsyNJhVfGeFSOlUkHEze8xSIiExO5tZQ8QTr7obFiJWGk3U4e7afFOJMQJDszqU/3Pk5jtKiaSEg==" + "version": "1.3.770", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.770.tgz", + "integrity": "sha512-Kyh8DGK1KfEZuYKIHvuOmrKotsKZQ+qBkDIWHciE3QoFkxXB1KzPP+tfLilSHAfxTON0yYMnFCWkQtUOR7g6KQ==" }, "node_modules/emittery": { "version": "0.8.1", @@ -3652,9 +3652,9 @@ "dev": true }, "node_modules/fastq": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", - "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.1.tgz", + "integrity": "sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -7332,9 +7332,9 @@ } }, "node_modules/npm": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-7.19.0.tgz", - "integrity": "sha512-bak/ZycWS8kalVFJ2m1JEo2pgvSwEDA9FMGthGnufAKciu4X4kpJMDZKe8VZKNaA/cXehd9XI7QdSZXmZauR8Q==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/npm/-/npm-7.19.1.tgz", + "integrity": "sha512-aN3hZzGkPzKOyhjXtOhnQTGumorFhgpOU6xfuQsF1nJKh4DhsgfOMG4s/SNx56r4xHPvM5m/sk914wzDgKba3A==", "bundleDependencies": [ "@npmcli/arborist", "@npmcli/ci-detect", @@ -12491,9 +12491,9 @@ } }, "node_modules/ws": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.1.tgz", - "integrity": "sha512-2c6faOUH/nhoQN6abwMloF7Iyl0ZS2E9HGtsiLrWn0zOOMWlhtDmdf/uihDt6jnuCxgtwGBNy6Onsoy2s2O2Ow==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.2.tgz", + "integrity": "sha512-lkF7AWRicoB9mAgjeKbGqVUekLnSNO4VjKVnuPHpQeOxZOErX6BPXwJk70nFslRCEEA8EVW7ZjKwXaP9N+1sKQ==", "dev": true, "engines": { "node": ">=8.3.0" @@ -13171,18 +13171,18 @@ "integrity": "sha512-MhxiNEpJ6aenKBfJfryet6z6D7uUF8jDRJcGyEyQaOPmyIUQHMH03YU016ElEzdwFwbKvdMz3Vpxde/oGxVACQ==" }, "@fink/larix": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@fink/larix/-/larix-18.3.0.tgz", - "integrity": "sha512-NjKxVST18q3CXRPTZQn6v8sAUNISZoqeSA5o2FfeGb/uzPtD6fCtl+EhMtyFEvjdfMTYpvUdZpq7HKQ5CaOXUw==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@fink/larix/-/larix-18.4.0.tgz", + "integrity": "sha512-IHGxJMklecataYBgxwfNGVDFAJTzjl8EZvMa2fx7UgsGLcIPOzpyw4hz78h6tpWXUSoJzsHnsEdnLeGDhgIxqw==", "requires": { "@fink/prattler": "^7.0.0", "@fink/std-lib": "^8.0.1" } }, "@fink/loxia": { - "version": "21.3.0", - "resolved": "https://registry.npmjs.org/@fink/loxia/-/loxia-21.3.0.tgz", - "integrity": "sha512-+OOqTV7k9V6Al/H8aE3yjsrSps1leQE/Kkeltjl0dFqflZAqbuo3W+E5snMfDo08Xt+ZNAmk6LhHj15937GNuw==", + "version": "21.6.0", + "resolved": "https://registry.npmjs.org/@fink/loxia/-/loxia-21.6.0.tgz", + "integrity": "sha512-+cmvJjett+xDkkPV8HlsHnhlfsWot2ZsBeBU/e3+LRYCSYty4K6s6E2qcFFRd7pZQ0BiFTC2tkPnSiussjlDtg==", "requires": { "@babel/core": "^7.10.5", "@babel/traverse": "^7.10.5", @@ -13811,18 +13811,18 @@ } }, "@octokit/openapi-types": { - "version": "8.1.4", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-8.1.4.tgz", - "integrity": "sha512-NnGr4NNDqO5wjSDJo5nxrGtzZUwoT23YasqK2H4Pav/6vSgeVTxuqCL9Aeh+cWfTxDomj1M4Os5BrXFsvl7qiQ==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-8.2.1.tgz", + "integrity": "sha512-BJz6kWuL3n+y+qM8Pv+UGbSxH6wxKf/SBs5yzGufMHwDefsa+Iq7ZGy1BINMD2z9SkXlIzk1qiu988rMuGXEMg==", "dev": true }, "@octokit/plugin-paginate-rest": { - "version": "2.13.6", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.13.6.tgz", - "integrity": "sha512-ai7TNKLi8tGkDvLM7fm0X1fbIP9u1nfXnN49ZAw2PgSoQou9yixKn5c3m0awuLacbuX2aXEvJpv1gKm3jboabg==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.14.0.tgz", + "integrity": "sha512-S2uEu2uHeI7Vf+Lvj8tv3O5/5TCAa8GHS0dUQN7gdM7vKA6ZHAbR6HkAVm5yMb1mbedLEbxOuQ+Fa0SQ7tCDLA==", "dev": true, "requires": { - "@octokit/types": "^6.17.3" + "@octokit/types": "^6.18.0" } }, "@octokit/plugin-request-log": { @@ -13833,12 +13833,12 @@ "requires": {} }, "@octokit/plugin-rest-endpoint-methods": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.3.7.tgz", - "integrity": "sha512-LAgTLOsJ86ig2wYSpcSx+UWt7aQYYsEZ/Tf/pksAVQWKNcGuTVCDl9OUiPhQ7DZelNozYVWTO9Iyjd/soe4tug==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.4.1.tgz", + "integrity": "sha512-Nx0g7I5ayAYghsLJP4Q1Ch2W9jYYM0FlWWWZocUro8rNxVwuZXGfFd7Rcqi9XDWepSXjg1WByiNJnZza2hIOvQ==", "dev": true, "requires": { - "@octokit/types": "^6.17.4", + "@octokit/types": "^6.18.1", "deprecation": "^2.3.1" } }, @@ -13868,24 +13868,24 @@ } }, "@octokit/rest": { - "version": "18.6.6", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.6.6.tgz", - "integrity": "sha512-kCLvz8MSh+KToXySdqUp80caBom1ZQmsX3gbT3osfbJy6fD86QObUjzAOD3D3Awz3X7ng24+lB+imvSr5EnM7g==", + "version": "18.6.7", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.6.7.tgz", + "integrity": "sha512-Kn6WrI2ZvmAztdx+HEaf88RuJn+LK72S8g6OpciE4kbZddAN84fu4fiPGxcEu052WmqKVnA/cnQsbNlrYC6rqQ==", "dev": true, "requires": { "@octokit/core": "^3.5.0", "@octokit/plugin-paginate-rest": "^2.6.2", "@octokit/plugin-request-log": "^1.0.2", - "@octokit/plugin-rest-endpoint-methods": "5.3.7" + "@octokit/plugin-rest-endpoint-methods": "5.4.1" } }, "@octokit/types": { - "version": "6.17.4", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.17.4.tgz", - "integrity": "sha512-Ghk/JC4zC/1al1GwH6p8jVX6pLdypSWmbnx6h79C/yo3DeaDd6MsNsBFlHu22KbkFh+CdcAzFqdP7UdPaPPmmA==", + "version": "6.18.1", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.18.1.tgz", + "integrity": "sha512-5YsddjO1U+xC8ZYKV8yZYebW55PCc7qiEEeZ+wZRr6qyclynzfyD65KZ5FdtIeP0/cANyFaD7hV69qElf1nMsQ==", "dev": true, "requires": { - "@octokit/openapi-types": "^8.1.4" + "@octokit/openapi-types": "^8.2.1" } }, "@semantic-release/commit-analyzer": { @@ -14064,9 +14064,9 @@ "dev": true }, "@types/babel__core": { - "version": "7.1.14", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz", - "integrity": "sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g==", + "version": "7.1.15", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.15.tgz", + "integrity": "sha512-bxlMKPDbY8x5h6HBwVzEOk2C8fb6SLfYQ5Jw3uBYuYF1lfWk/kbLd81la82vrIkBb0l+JdmrZaDikPrNxpS/Ew==", "dev": true, "requires": { "@babel/parser": "^7.1.0", @@ -14077,18 +14077,18 @@ } }, "@types/babel__generator": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", - "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", + "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", "dev": true, "requires": { "@babel/types": "^7.0.0" } }, "@types/babel__template": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz", - "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", "dev": true, "requires": { "@babel/parser": "^7.1.0", @@ -14096,9 +14096,9 @@ } }, "@types/babel__traverse": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.0.tgz", - "integrity": "sha512-IilJZ1hJBUZwMOVDNTdflOOLzJB/ZtljYVa7k3gEZN/jqIJIPkWHC6dvbX+DD2CwZDHB9wAKzZPzzqMIkW37/w==", + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.1.tgz", + "integrity": "sha512-DomsDK/nX3XXHs6jlQ8/YYE6jZAuhmoGAFfcYi1h1jbBNGS7Efdx74FKLTO3HCCyLqQyLlNbql87xqa7C3M/FQ==", "dev": true, "requires": { "@babel/types": "^7.3.0" @@ -14138,21 +14138,21 @@ } }, "@types/minimist": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", - "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", "dev": true }, "@types/node": { - "version": "15.12.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.5.tgz", - "integrity": "sha512-se3yX7UHv5Bscf8f1ERKvQOD6sTyycH3hdaoozvaLxgUiY5lIGEeH37AD0G0Qi9kPqihPn0HOfd2yaIEN9VwEg==", + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.0.1.tgz", + "integrity": "sha512-hBOx4SUlEPKwRi6PrXuTGw1z6lz0fjsibcWCM378YxsSu/6+C30L6CR49zIBKHiwNWCYIcOLjg4OHKZaFeLAug==", "dev": true }, "@types/normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", "dev": true }, "@types/parse-json": { @@ -14162,36 +14162,36 @@ "dev": true }, "@types/prettier": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.3.0.tgz", - "integrity": "sha512-hkc1DATxFLQo4VxPDpMH1gCkPpBbpOoJ/4nhuXw4n63/0R6bCpQECj4+K226UJ4JO/eJQz+1mC2I7JsWanAdQw==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.3.2.tgz", + "integrity": "sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog==", "dev": true }, "@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", "dev": true }, "@types/stack-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz", - "integrity": "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, "@types/yargs": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.3.tgz", - "integrity": "sha512-YlFfTGS+zqCgXuXNV26rOIeETOkXnGQXP/pjjL9P0gO/EP9jTmc7pUBhx+jVEIxpq41RX33GQ7N3DzOSfZoglQ==", + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", "dev": true, "requires": { "@types/yargs-parser": "*" } }, "@types/yargs-parser": { - "version": "20.2.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz", - "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==", + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", "dev": true }, "abab": { @@ -14583,9 +14583,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001241", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001241.tgz", - "integrity": "sha512-1uoSZ1Pq1VpH0WerIMqwptXHNNGfdl7d1cJUFs80CwQ/lVzdhTvsFZCeNFslze7AjsQnb4C85tzclPa1VShbeQ==" + "version": "1.0.30001243", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001243.tgz", + "integrity": "sha512-vNxw9mkTBtkmLFnJRv/2rhs1yufpDfCkBZexG3Y0xdOH2Z/eE/85E4Dl5j1YUN34nZVsSp6vVRFQRrez9wJMRA==" }, "capture-stack-trace": { "version": "1.0.1", @@ -15046,9 +15046,9 @@ "dev": true }, "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "requires": { "ms": "2.1.2" } @@ -15227,9 +15227,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.763", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.763.tgz", - "integrity": "sha512-UyvEPae0wvzsyNJhVfGeFSOlUkHEze8xSIiExO5tZQ8QTr7obFiJWGk3U4e7afFOJMQJDszqU/3Pk5jtKiaSEg==" + "version": "1.3.770", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.770.tgz", + "integrity": "sha512-Kyh8DGK1KfEZuYKIHvuOmrKotsKZQ+qBkDIWHciE3QoFkxXB1KzPP+tfLilSHAfxTON0yYMnFCWkQtUOR7g6KQ==" }, "emittery": { "version": "0.8.1", @@ -15446,9 +15446,9 @@ "dev": true }, "fastq": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", - "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.1.tgz", + "integrity": "sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw==", "dev": true, "requires": { "reusify": "^1.0.4" @@ -18252,9 +18252,9 @@ "dev": true }, "npm": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-7.19.0.tgz", - "integrity": "sha512-bak/ZycWS8kalVFJ2m1JEo2pgvSwEDA9FMGthGnufAKciu4X4kpJMDZKe8VZKNaA/cXehd9XI7QdSZXmZauR8Q==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/npm/-/npm-7.19.1.tgz", + "integrity": "sha512-aN3hZzGkPzKOyhjXtOhnQTGumorFhgpOU6xfuQsF1nJKh4DhsgfOMG4s/SNx56r4xHPvM5m/sk914wzDgKba3A==", "dev": true, "requires": { "@npmcli/arborist": "^2.6.4", @@ -22096,9 +22096,9 @@ } }, "ws": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.1.tgz", - "integrity": "sha512-2c6faOUH/nhoQN6abwMloF7Iyl0ZS2E9HGtsiLrWn0zOOMWlhtDmdf/uihDt6jnuCxgtwGBNy6Onsoy2s2O2Ow==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.2.tgz", + "integrity": "sha512-lkF7AWRicoB9mAgjeKbGqVUekLnSNO4VjKVnuPHpQeOxZOErX6BPXwJk70nFslRCEEA8EVW7ZjKwXaP9N+1sKQ==", "dev": true, "requires": {} }, diff --git a/src/lang/block/init.fnk b/src/lang/block/init.fnk index 186749e..26e157a 100644 --- a/src/lang/block/init.fnk +++ b/src/lang/block/init.fnk @@ -1,4 +1,5 @@ -{curr_loc, curr_value} = import '@fink/prattler/parser.fnk' +{advance, curr_loc, curr_value, next_is} = import '@fink/prattler/parser.fnk' + {add_separator, add_operator} = import '@fink/prattler/expressions.fnk' {prefix, terminator} = import '../expressions.fnk' @@ -23,12 +24,27 @@ named_block = fn token_type, expr_type, block_expr: ...prefix token_type nud: fn: fn ctx: - {start} = curr_loc ctx + {start, end} = curr_loc ctx op = curr_value ctx - [{exprs: args}, body_ctx] = terminated_block ctx, ':' - [{exprs, comments, loc}, next_ctx] = indented_block body_ctx, block_expr - [{type: expr_type, op, args, exprs, comments, loc: {start, end: loc.end}}, next_ctx] + match ctx: + next_is ?, 'fn': + [expr, next_ctx] = single_expression ctx + args = [expr] + callee = {type: 'ident', value: token_type, loc: {start, end}} + [{type: 'call', callee, args, loc: {...expr.loc, start}}, next_ctx] + + next_is ?, '=': + op = '=' + left = {type: 'ident', value: token_type, loc: {start, end}} + [right, next_ctx] = single_expression advance ctx + [{type: 'assign', op, left, right, loc: {start, end: right.loc.end}}, next_ctx] + + else: + [{exprs: args}, body_ctx] = terminated_block ctx, ':' + + [{exprs, comments, loc}, next_ctx] = indented_block body_ctx, block_expr + [{type: expr_type, op, args, exprs, comments, loc: {start, end: loc.end}}, next_ctx] diff --git a/src/lang/iterable/init.test.fnk b/src/lang/iterable/init.test.fnk index 90adc47..ebcacbe 100644 --- a/src/lang/iterable/init.test.fnk +++ b/src/lang/iterable/init.test.fnk @@ -1,6 +1,6 @@ {describe, it, expect, to_match_snapshot} = import '@fink/jest/test.fnk' -{parse_expr} = import '../../parser.fnk' +{parse, parse_expr} = import '../../parser.fnk' describe 'fold item, accu: ...', fn: @@ -89,3 +89,66 @@ describe 'until item: ...', fn: ' to_match_snapshot + + +describe 'fn-blocks', fn: + it 'parses imports', fn: + expect + parse ' + {fold, unfold, map, filter, while, until} = import "@fink/std-lib/iter.fnk" + ' + to_match_snapshot + + it 'parses map', fn: + expect + parse ' + map = fn: false + map fn item: + item * 2 + ' + to_match_snapshot + + it 'parses filter', fn: + expect + parse ' + filter = fn: false + filter fn item: + item > 2 + ' + to_match_snapshot + + it 'parses unfold', fn: + expect + parse ' + unfold = fn: false + unfold fn item: + item + ' + to_match_snapshot + + it 'parses fold', fn: + expect + parse ' + fold = fn: false + fold fn item: + item + ' + to_match_snapshot + + it 'parses while', fn: + expect + parse ' + while = fn: false + while fn item: + item + ' + to_match_snapshot + + it 'parses until', fn: + expect + parse ' + until = fn: false + until fn item: + item + ' + to_match_snapshot diff --git a/src/lang/iterable/init.test.fnk.snap b/src/lang/iterable/init.test.fnk.snap index aa023ff..c3ca81c 100644 --- a/src/lang/iterable/init.test.fnk.snap +++ b/src/lang/iterable/init.test.fnk.snap @@ -11,6 +11,115 @@ block filter (1:0-4:0) number (2:14-2:15) 0 `; +exports[`fn-blocks parses filter 1`] = ` +module (1:0-4:0) + assign = (1:0-1:18) + ident (1:0-1:6) filter + block fn (1:9-1:18): + literal (1:13-1:18) false + call (2:0-4:0) + ident (2:0-2:6) filter + block fn (2:7-4:0) + ident (2:10-2:14) item + : + comp > (3:2-3:10) + ident (3:2-3:6) item + number (3:9-3:10) 2 +`; + +exports[`fn-blocks parses fold 1`] = ` +module (1:0-4:0) + assign = (1:0-1:16) + ident (1:0-1:4) fold + block fn (1:7-1:16): + literal (1:11-1:16) false + call (2:0-4:0) + ident (2:0-2:4) fold + block fn (2:5-4:0) + ident (2:8-2:12) item + : + ident (3:2-3:6) item +`; + +exports[`fn-blocks parses imports 1`] = ` +module (1:0-2:0) + assign = (1:0-1:75) + rec (1:0-1:41) + rec:kv (1:1-1:5) + ident (1:1-1:5) fold + rec:kv (1:7-1:13) + ident (1:7-1:13) unfold + rec:kv (1:15-1:18) + ident (1:15-1:18) map + rec:kv (1:20-1:26) + ident (1:20-1:26) filter + rec:kv (1:28-1:33) + ident (1:28-1:33) while + rec:kv (1:35-1:40) + ident (1:35-1:40) until + prefix import (1:44-1:75) + string " (1:51-1:75) + '@fink/std-lib/iter.fnk' +`; + +exports[`fn-blocks parses map 1`] = ` +module (1:0-4:0) + assign = (1:0-1:15) + ident (1:0-1:3) map + block fn (1:6-1:15): + literal (1:10-1:15) false + call (2:0-4:0) + ident (2:0-2:3) map + block fn (2:4-4:0) + ident (2:7-2:11) item + : + arithm * (3:2-3:10) + ident (3:2-3:6) item + number (3:9-3:10) 2 +`; + +exports[`fn-blocks parses unfold 1`] = ` +module (1:0-4:0) + assign = (1:0-1:18) + ident (1:0-1:6) unfold + block fn (1:9-1:18): + literal (1:13-1:18) false + call (2:0-4:0) + ident (2:0-2:6) unfold + block fn (2:7-4:0) + ident (2:10-2:14) item + : + ident (3:2-3:6) item +`; + +exports[`fn-blocks parses until 1`] = ` +module (1:0-4:0) + assign = (1:0-1:17) + ident (1:0-1:5) until + block fn (1:8-1:17): + literal (1:12-1:17) false + call (2:0-4:0) + ident (2:0-2:5) until + block fn (2:6-4:0) + ident (2:9-2:13) item + : + ident (3:2-3:6) item +`; + +exports[`fn-blocks parses while 1`] = ` +module (1:0-4:0) + assign = (1:0-1:17) + ident (1:0-1:5) while + block fn (1:8-1:17): + literal (1:12-1:17) false + call (2:0-4:0) + ident (2:0-2:5) while + block fn (2:6-4:0) + ident (2:9-2:13) item + : + ident (3:2-3:6) item +`; + exports[`fold item, accu: ... parses 1`] = ` block fold (1:0-4:0) ident (1:5-1:9) item diff --git a/src/lang/literals/record.fnk b/src/lang/literals/record.fnk index 1a3ff38..ac2c016 100644 --- a/src/lang/literals/record.fnk +++ b/src/lang/literals/record.fnk @@ -26,6 +26,7 @@ key_expr = fn ctx: {type: ? in ['ident', '...', '(', 'str-start']}: single_expression ctx, 0 + # TODO should this be {value: ? in keywords} and be the first match? {type: ? in keywords}: identifier advance ctx