Conversion crashes on the p5js typescript type definitions
Closed this issue · 5 comments
Hi, I'm trying to convert the p5js typescript bindings, but ts2fable
crashes. I might be using ts2fable
in the wrong way, as I'm not entirely sure what I have to use after the -e
flag.
Minimal setup:
$ dotnet new fable
$ npm install --save-dev @types/p5 ts2fable p5
$ npx ts2fable node_modules/@types/p5/index.d.ts src/P5.fs -e @types/p5
This outputs a bunch of stuff but then suddenly crashes with the message:
// ... older output omitted
createIExportsModule [p5/src/core/shape/attributes; src; core; shape; attributes], ../../../index
createIExportsModule [p5/src/core/shape/curves], ./src/core/shape/curves
createIExportsModule [p5/src/core/shape/curves; src; core; shape; curves], ../../../index
createIExportsModule [p5/src/core/shape/vertex], ./src/core/shape/vertex
createIExportsModule [p5/src/core/shape/vertex; src; core; shape; vertex], ../../../index
Error: clo4$$1 is not a function
As I said, I'm not entirely sure if I'm using -e
right. I tried -e p5
, -e @types/p5 p5
as well, with the same result.
You need to use ts2fable@next
. "current" ts2fable on npm is unfortunately very old :(
With ts2fable@next
it doesn't crash any more
(npx ts2fable --version
should show 0.8.0
with some build number (like 0.8.0-build.718
))
about --export
:
That's only needed when you want to specify multiple .d.ts
files. For just one file use:
npx ts2fable node_modules/@types/p5/index.d.ts src/P5.fs
And: (I think we should add that to the cmd --help
documentation)
- If you specify
.d.ts
in front and in back again it uses these file twice -> duplicates in resulting fs file --export
collects files -> must be file paths to.d.ts
files
And with p5
: p5
isn't that great supported by ts2fable: declarations split over many .d.ts
files and it uses <reference path="....d.ts">
(instead of import
s).
So ts2fable node_modules/@types/p5/index.d.ts src/P5.fs
just translates what is in index.d.ts
-- not all other .d.ts
files. Probably not what you want
Here comes --export
into play: ts2fable src/P5.fs --export FILES
For FILES
we must list all .d.ts
inside p5
:
$p5 = Get-Item ./node_modules/@types/p5
$files = Get-ChildItem -Recurse -Path $p5 -Include *.d.ts
$fileNames = $files | Select-Object -ExpandProperty FullName
npx ts2fable ./src/P5.fs --export $fileNames
Now every .d.ts
file gets included.
But the result isn't all correct as multiple .d.ts
files aren't that great supported. ts2fable just translates each .d.ts
and throws all together into the resulting .fs
file.
The types seem to be ok, but the structure is a bit off.
Especially because the individual .d.ts
files all contain something like:
import * as p5 from '../../index';
declare module '../../index' {
//...
}
which ts2fable currently cannot handle, but instead does:
module P5 = ______index
module ______index =
But a first glance that should be fixable by hand and/or search/replace.
Like renaming module ___index
to module P5
, removing module P5 = ____index
and removing let [<ImportAll("p5")>] ``../../index``: ______index.IExports = jsNative
Thank you for your time to write such a detailed response, I appreciate it. It seems I'll have to take a deep dive into fable and ts2fable, your writeup will certainly help a lot. Thanks again!
Sharing notes on my exercise with p5 ts2fable bindings. Lets say one should use the above linked perfect-fifth library for any serious attempt at using p5 in F#. But I could not figure out how the p5 bindings in this tutorial were created: semuserable/fable-basic-interop#29
Above instructions,
Works in npm i -g ts2fable@0.8.0-build.718
Fails in npm i -g ts2fable@0.9.0-build.725
which is current @next
In powershell, the $fileNames
array or ([string]$fileNames)
cast string would have ts2fable not find the files. I had to copy and paste the file list string into the prompt.
Also, while there is a great explanation on the issue above. It does not seems worth sorting out for such a marginal experiment.
Sharing the current build error log for science:
ts2fable .\src\App\p5.fs --export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\lib\addons\p5.sound.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\accessibility\describe.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\accessibility\outputs.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\color\creating_reading.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\color\p5.Color.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\color\setting.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\core\shape\2d_primitives.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\core\shape\attributes.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\core\shape\curves.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\core\shape\vertex.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\core\constants.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\core\environment.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\core\p5.Element.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\core\p5.Graphics.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\core\p5.Renderer.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\core\rendering.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\core\structure.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\core\transform.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\data\local_storage.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\data\p5.TypedDict.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\dom\dom.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\events\acceleration.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\events\keyboard.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\events\mouse.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\events\touch.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\image\image.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\image\loading_displaying.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\image\p5.Image.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\image\pixels.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\io\files.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\io\p5.Table.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\io\p5.TableRow.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\io\p5.XML.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\math\calculation.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\math\math.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\math\noise.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\math\p5.Vector.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\math\random.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\math\trigonometry.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\typography\attributes.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\typography\loading_displaying.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\typography\p5.Font.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\utilities\array_functions.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\utilities\conversion.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\utilities\string_functions.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\utilities\time_date.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\webgl\3d_primitives.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\webgl\interaction.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\webgl\light.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\webgl\loading.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\webgl\material.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\webgl\p5.Camera.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\webgl\p5.Geometry.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\webgl\p5.RendererGL.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\webgl\p5.Shader.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\constants.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\global.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\index.d.ts C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\literals.d.ts
ts2fable 0.9.0-build.725
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\lib\addons\p5.sound.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\accessibility\describe.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\accessibility\outputs.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\color\creating_reading.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\color\p5.Color.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\color\setting.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\core\shape\2d_primitives.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\core\shape\attributes.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\core\shape\curves.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\core\shape\vertex.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\core\constants.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\core\environment.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\core\p5.Element.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\core\p5.Graphics.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\core\p5.Renderer.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\core\rendering.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\core\structure.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\core\transform.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\data\local_storage.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\data\p5.TypedDict.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\dom\dom.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\events\acceleration.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\events\keyboard.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\events\mouse.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\events\touch.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\image\image.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\image\loading_displaying.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\image\p5.Image.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\image\pixels.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\io\files.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\io\p5.Table.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\io\p5.TableRow.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\io\p5.XML.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\math\calculation.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\math\math.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\math\noise.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\math\p5.Vector.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\math\random.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\math\trigonometry.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\typography\attributes.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\typography\loading_displaying.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\typography\p5.Font.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\utilities\array_functions.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\utilities\conversion.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\utilities\string_functions.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\utilities\time_date.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\webgl\3d_primitives.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\webgl\interaction.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\webgl\light.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\webgl\loading.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\webgl\material.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\webgl\p5.Camera.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\webgl\p5.Geometry.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\webgl\p5.RendererGL.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\src\webgl\p5.Shader.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\constants.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\global.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\index.d.ts
export C:\Users\Poro\dev\MyFirstFableApp\node_modules\@types\p5\literals.d.ts
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 271
unsupported Statement kind: 266
createIExportsModule [p5],
unsupported Statement kind: 276
TypeError: Cannot read properties of undefined (reading 'kind')
at readTypeNode (file:///C:/Users/Poro/AppData/Roaming/npm/node_modules/ts2fable/dist/ts2fable.js:15870:30)
at readAliasDeclaration (file:///C:/Users/Poro/AppData/Roaming/npm/node_modules/ts2fable/dist/ts2fable.js:16231:16)
at tryReadStatement (file:///C:/Users/Poro/AppData/Roaming/npm/node_modules/ts2fable/dist/ts2fable.js:16330:28)
at readStatement (file:///C:/Users/Poro/AppData/Roaming/npm/node_modules/ts2fable/dist/ts2fable.js:16359:24)
at file:///C:/Users/Poro/AppData/Roaming/npm/node_modules/ts2fable/dist/ts2fable.js:16403:103
at collect$1 (file:///C:/Users/Poro/AppData/Roaming/npm/node_modules/ts2fable/dist/ts2fable.js:4140:18)
at readSourceFile (file:///C:/Users/Poro/AppData/Roaming/npm/node_modules/ts2fable/dist/ts2fable.js:16403:85)
at file:///C:/Users/Poro/AppData/Roaming/npm/node_modules/ts2fable/dist/ts2fable.js:16576:70
at file:///C:/Users/Poro/AppData/Roaming/npm/node_modules/ts2fable/dist/ts2fable.js:4168:34
at fold$1 (file:///C:/Users/Poro/AppData/Roaming/npm/node_modules/ts2fable/dist/ts2fable.js:4011:15)
```
Cheers
Fixed in #472
Error was absolute on my side:
ts2fable doesn't work with current TypeScript (5.1
) -- but in package.json
it was specified as ok :/
-> new ts2fable installs used new TS versions ... which failed.
I now pin TS to 5.0.x
.
Updated package should soon be available (see #472 for status)
Edit: is updated
In powershell, the $fileNames array or ([string]$fileNames) cast string would have ts2fable not find the files. I had to copy and paste the file list string into the prompt.
That's strange. I just checked with the exact same commands, and ts2fable correctly uses all files.
Some possible issues:
- old powershell (
powershell.exe
(old, windows) vspwsh.exe
(new, multiple os)). There are a lot of differences betweenpowershell
andpwsh
. Though I think neither should be about arrays - You seem to run on a unix system (just
ts2fable
, withoutnpx
ornode
before -> uses shebang). Try running with npx:npx ts2fable ...
. Maybe there's some different with arguments passing? (thoughnode path/to/ts2fable.js ....
works ... and that should be the same as just calling ts2fable)
Cast is unnecessary. PS tries to converts arguments automatically into correct type.
But here might be another issue: if $fileNames
is empty it is not a real empty array -- but a null-ish element. which might be an issue? Arrays in PS are really strange. If you want to make sure it is indeed an array: Wrap into @()
(@($fileNames)
).
But that should not matter if p5
path is correct. Do $p5
, $files
, and $fileNames
all show the expected results or is any of these empty?