git.iko.soy/rowtype-yoga/purescript-vitest
on main help sign in
Start
cb75dadMark Eibes
.gitignorenew file+12
@@ -0,0 +1,12 @@
1+
2+bower_components/
3+node_modules/
4+.pulp-cache/
5+output/
6+output-es/
7+generated-docs/
8+.psc-package/
9+.psc*
10+.purs*
11+.psa*
12+.spago
LICENSEnew file+14
@@ -0,0 +1,14 @@
1+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
2+ Version 2, December 2004
3+
4+ Copyright (C) 2024 Mark Eibes
5+
6+ Everyone is permitted to copy and distribute verbatim or modified
7+ copies of this license document, and changing it is allowed as long
8+ as the name is changed.
9+
10+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
11+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
12+
13+ 0. You just DO WHAT THE FUCK YOU WANT TO.
14+
spago.locknew file+1275
@@ -0,0 +1,1275 @@
1+{
2+ "workspace": {
3+ "packages": {
4+ "vitest": {
5+ "path": "./",
6+ "core": {
7+ "dependencies": [
8+ "console",
9+ "effect",
10+ "js-promise-aff",
11+ "prelude",
12+ "web-dom",
13+ "web-html"
14+ ],
15+ "build_plan": [
16+ "aff",
17+ "arrays",
18+ "bifunctors",
19+ "console",
20+ "const",
21+ "contravariant",
22+ "control",
23+ "datetime",
24+ "distributive",
25+ "effect",
26+ "either",
27+ "enums",
28+ "exceptions",
29+ "exists",
30+ "foldable-traversable",
31+ "foreign",
32+ "functions",
33+ "functors",
34+ "gen",
35+ "identity",
36+ "integers",
37+ "invariant",
38+ "js-date",
39+ "js-promise",
40+ "js-promise-aff",
41+ "lazy",
42+ "lists",
43+ "maybe",
44+ "media-types",
45+ "newtype",
46+ "nonempty",
47+ "now",
48+ "nullable",
49+ "numbers",
50+ "ordered-collections",
51+ "orders",
52+ "parallel",
53+ "partial",
54+ "prelude",
55+ "profunctor",
56+ "refs",
57+ "safe-coerce",
58+ "st",
59+ "strings",
60+ "tailrec",
61+ "transformers",
62+ "tuples",
63+ "type-equality",
64+ "unfoldable",
65+ "unsafe-coerce",
66+ "web-dom",
67+ "web-events",
68+ "web-file",
69+ "web-html",
70+ "web-storage"
71+ ]
72+ },
73+ "test": {
74+ "dependencies": [],
75+ "build_plan": []
76+ }
77+ }
78+ },
79+ "package_set": {
80+ "address": {
81+ "registry": "61.3.1"
82+ },
83+ "compiler": ">=0.15.15 <0.16.0",
84+ "content": {
85+ "abc-parser": "2.0.1",
86+ "ace": "9.1.0",
87+ "address-rfc2821": "0.1.1",
88+ "aff": "8.0.0",
89+ "aff-bus": "6.0.0",
90+ "aff-coroutines": "9.0.0",
91+ "aff-promise": "4.0.0",
92+ "aff-retry": "2.0.0",
93+ "affjax": "13.0.0",
94+ "affjax-node": "1.0.0",
95+ "affjax-web": "1.0.0",
96+ "ansi": "7.0.0",
97+ "apexcharts": "0.5.0",
98+ "applicative-phases": "1.0.0",
99+ "argonaut": "9.0.0",
100+ "argonaut-aeson-generic": "0.4.1",
101+ "argonaut-codecs": "9.1.0",
102+ "argonaut-core": "7.0.0",
103+ "argonaut-generic": "8.0.0",
104+ "argonaut-traversals": "10.0.0",
105+ "argparse-basic": "2.0.0",
106+ "array-builder": "0.1.2",
107+ "array-search": "0.6.0",
108+ "arraybuffer": "13.2.0",
109+ "arraybuffer-builder": "3.1.0",
110+ "arraybuffer-types": "3.0.2",
111+ "arrays": "7.3.0",
112+ "arrays-extra": "0.6.1",
113+ "arrays-zipper": "2.0.1",
114+ "ask": "1.0.0",
115+ "assert": "6.0.0",
116+ "assert-multiple": "0.4.0",
117+ "avar": "5.0.0",
118+ "b64": "0.0.8",
119+ "barbies": "1.0.1",
120+ "barlow-lens": "0.9.0",
121+ "bifunctors": "6.0.0",
122+ "bigints": "7.0.1",
123+ "bolson": "0.3.9",
124+ "bookhound": "0.1.7",
125+ "bower-json": "3.0.0",
126+ "call-by-name": "4.0.1",
127+ "canvas": "6.0.0",
128+ "canvas-action": "9.0.0",
129+ "cartesian": "1.0.6",
130+ "catenable-lists": "7.0.0",
131+ "cbor-stream": "1.3.0",
132+ "chameleon": "1.0.0",
133+ "chameleon-halogen": "1.0.3",
134+ "chameleon-react-basic": "1.1.0",
135+ "chameleon-styled": "2.5.0",
136+ "chameleon-transformers": "1.0.0",
137+ "channel": "1.0.0",
138+ "checked-exceptions": "3.1.1",
139+ "choku": "1.0.2",
140+ "classless": "0.1.1",
141+ "classless-arbitrary": "0.1.1",
142+ "classless-decode-json": "0.1.1",
143+ "classless-encode-json": "0.1.3",
144+ "classnames": "2.0.0",
145+ "codec": "6.1.0",
146+ "codec-argonaut": "10.0.0",
147+ "codec-json": "2.0.0",
148+ "colors": "7.0.1",
149+ "concur-core": "0.5.0",
150+ "concur-react": "0.5.0",
151+ "concurrent-queues": "3.0.0",
152+ "console": "6.1.0",
153+ "const": "6.0.0",
154+ "contravariant": "6.0.0",
155+ "control": "6.0.0",
156+ "convertable-options": "1.0.0",
157+ "coroutines": "7.0.0",
158+ "css": "6.0.0",
159+ "css-class-name-extractor": "0.0.3",
160+ "css-frameworks": "1.0.1",
161+ "csv-stream": "2.3.0",
162+ "data-mvc": "0.0.2",
163+ "datetime": "6.1.0",
164+ "datetime-parsing": "0.2.0",
165+ "debounce": "0.1.0",
166+ "debug": "6.0.2",
167+ "decimals": "7.1.0",
168+ "default-values": "1.0.1",
169+ "deku": "0.9.23",
170+ "deno": "0.0.5",
171+ "dissect": "1.0.0",
172+ "distributive": "6.0.0",
173+ "dom-filereader": "7.0.0",
174+ "dom-indexed": "12.0.0",
175+ "dom-simple": "0.4.0",
176+ "dotenv": "4.0.3",
177+ "droplet": "0.6.0",
178+ "dts": "1.0.0",
179+ "dual-numbers": "1.0.3",
180+ "dynamic-buffer": "3.0.1",
181+ "echarts-simple": "0.0.1",
182+ "effect": "4.0.0",
183+ "either": "6.1.0",
184+ "elmish": "0.13.0",
185+ "elmish-enzyme": "0.1.1",
186+ "elmish-hooks": "0.10.3",
187+ "elmish-html": "0.9.0",
188+ "elmish-testing-library": "0.3.2",
189+ "email-validate": "7.0.0",
190+ "encoding": "0.0.9",
191+ "enums": "6.0.1",
192+ "env-names": "0.4.0",
193+ "error": "2.0.0",
194+ "eta-conversion": "0.3.2",
195+ "exceptions": "6.1.0",
196+ "exists": "6.0.0",
197+ "exitcodes": "4.0.0",
198+ "expect-inferred": "3.0.0",
199+ "ezfetch": "1.1.0",
200+ "fahrtwind": "2.0.0",
201+ "fallback": "0.1.0",
202+ "fast-vect": "1.2.0",
203+ "fetch": "4.1.0",
204+ "fetch-argonaut": "1.0.1",
205+ "fetch-core": "5.1.0",
206+ "fetch-yoga-json": "1.1.0",
207+ "ffi-simple": "0.5.1",
208+ "fft-js": "0.1.0",
209+ "filterable": "5.0.0",
210+ "fix-functor": "0.1.0",
211+ "fixed-points": "7.0.0",
212+ "fixed-precision": "5.0.0",
213+ "flame": "1.3.0",
214+ "float32": "2.0.0",
215+ "fmt": "0.2.1",
216+ "foldable-traversable": "6.0.0",
217+ "foldable-traversable-extra": "0.0.6",
218+ "foreign": "7.0.0",
219+ "foreign-object": "4.1.0",
220+ "foreign-readwrite": "3.4.0",
221+ "forgetmenot": "0.1.0",
222+ "fork": "6.0.0",
223+ "form-urlencoded": "7.0.0",
224+ "formatters": "7.0.0",
225+ "framer-motion": "1.0.1",
226+ "free": "7.1.0",
227+ "freeap": "7.0.0",
228+ "freer-free": "0.0.1",
229+ "freet": "7.0.0",
230+ "functions": "6.0.0",
231+ "functor1": "3.0.0",
232+ "functors": "5.0.0",
233+ "fuzzy": "0.4.0",
234+ "gen": "4.0.0",
235+ "generate-values": "1.0.1",
236+ "generic-router": "0.0.1",
237+ "geojson": "0.0.5",
238+ "geometria": "2.2.0",
239+ "gojs": "0.1.1",
240+ "grain": "3.0.0",
241+ "grain-router": "3.0.0",
242+ "grain-virtualized": "3.0.0",
243+ "graphs": "8.1.0",
244+ "group": "4.1.1",
245+ "halogen": "7.0.0",
246+ "halogen-bootstrap5": "5.3.2",
247+ "halogen-canvas": "1.0.0",
248+ "halogen-css": "10.0.0",
249+ "halogen-echarts-simple": "0.0.4",
250+ "halogen-formless": "4.0.3",
251+ "halogen-helix": "1.0.1",
252+ "halogen-hooks": "0.6.3",
253+ "halogen-hooks-extra": "0.9.0",
254+ "halogen-infinite-scroll": "1.1.0",
255+ "halogen-store": "0.5.4",
256+ "halogen-storybook": "2.0.0",
257+ "halogen-subscriptions": "2.0.0",
258+ "halogen-svg-elems": "8.0.0",
259+ "halogen-typewriter": "1.0.4",
260+ "halogen-vdom": "8.0.0",
261+ "halogen-vdom-string-renderer": "0.5.0",
262+ "halogen-xterm": "2.0.0",
263+ "heckin": "2.0.1",
264+ "heterogeneous": "0.6.0",
265+ "homogeneous": "0.4.0",
266+ "http-methods": "6.0.0",
267+ "httpurple": "4.0.0",
268+ "huffman": "0.4.0",
269+ "humdrum": "0.0.1",
270+ "hyrule": "2.3.8",
271+ "identity": "6.0.0",
272+ "identy": "4.0.1",
273+ "indexed-db": "1.0.0",
274+ "indexed-monad": "3.0.0",
275+ "int64": "3.0.0",
276+ "integers": "6.0.0",
277+ "interpolate": "5.0.2",
278+ "intersection-observer": "1.0.1",
279+ "invariant": "6.0.0",
280+ "jarilo": "1.0.1",
281+ "jelly": "0.10.0",
282+ "jelly-router": "0.3.0",
283+ "jelly-signal": "0.4.0",
284+ "jest": "1.0.0",
285+ "js-abort-controller": "1.0.0",
286+ "js-bigints": "2.2.1",
287+ "js-date": "8.0.0",
288+ "js-fetch": "0.2.1",
289+ "js-fileio": "3.0.0",
290+ "js-intl": "1.1.4",
291+ "js-iterators": "0.1.1",
292+ "js-maps": "0.1.2",
293+ "js-promise": "1.0.0",
294+ "js-promise-aff": "1.0.0",
295+ "js-timers": "6.1.0",
296+ "js-uri": "3.1.0",
297+ "jsdom": "1.0.0",
298+ "json": "1.1.0",
299+ "json-codecs": "5.0.0",
300+ "justifill": "0.5.0",
301+ "jwt": "0.0.9",
302+ "labeled-data": "0.2.0",
303+ "language-cst-parser": "0.14.0",
304+ "lazy": "6.0.0",
305+ "lazy-joe": "1.0.0",
306+ "lcg": "4.0.0",
307+ "leibniz": "5.0.0",
308+ "leveldb": "1.0.1",
309+ "liminal": "1.0.1",
310+ "linalg": "6.0.0",
311+ "lists": "7.0.0",
312+ "literals": "1.0.2",
313+ "logging": "3.0.0",
314+ "logging-journald": "0.4.0",
315+ "lumi-components": "18.0.0",
316+ "machines": "7.0.0",
317+ "maps-eager": "0.5.0",
318+ "marionette": "1.0.0",
319+ "marionette-react-basic-hooks": "0.1.1",
320+ "marked": "0.1.0",
321+ "matrices": "5.0.1",
322+ "matryoshka": "1.0.0",
323+ "maybe": "6.0.0",
324+ "media-types": "6.0.0",
325+ "meowclient": "1.0.0",
326+ "midi": "4.0.0",
327+ "milkis": "9.0.0",
328+ "minibench": "4.0.1",
329+ "mmorph": "7.0.0",
330+ "monad-control": "5.0.0",
331+ "monad-logger": "1.3.1",
332+ "monad-loops": "0.5.0",
333+ "monad-unlift": "1.0.1",
334+ "monoid-extras": "0.0.1",
335+ "monoidal": "0.16.0",
336+ "morello": "0.4.0",
337+ "mote": "3.0.0",
338+ "motsunabe": "2.0.0",
339+ "mvc": "0.0.1",
340+ "mysql": "6.0.1",
341+ "n3": "0.1.0",
342+ "nano-id": "1.1.0",
343+ "nanoid": "0.1.0",
344+ "naturals": "3.0.0",
345+ "nested-functor": "0.2.1",
346+ "newtype": "5.0.0",
347+ "nextjs": "0.1.1",
348+ "nextui": "0.2.0",
349+ "node-buffer": "9.0.0",
350+ "node-child-process": "11.1.0",
351+ "node-event-emitter": "3.0.0",
352+ "node-execa": "5.0.0",
353+ "node-fs": "9.2.0",
354+ "node-glob-basic": "1.3.0",
355+ "node-http": "9.1.0",
356+ "node-http2": "1.1.1",
357+ "node-human-signals": "1.0.0",
358+ "node-net": "5.1.0",
359+ "node-os": "5.1.0",
360+ "node-path": "5.0.0",
361+ "node-process": "11.2.0",
362+ "node-readline": "8.1.1",
363+ "node-sqlite3": "8.0.0",
364+ "node-stream-pipes": "2.1.6",
365+ "node-streams": "9.0.0",
366+ "node-tls": "0.3.1",
367+ "node-url": "7.0.1",
368+ "node-zlib": "0.4.0",
369+ "nonempty": "7.0.0",
370+ "now": "6.0.0",
371+ "npm-package-json": "2.0.0",
372+ "nullable": "6.0.0",
373+ "numberfield": "0.2.2",
374+ "numbers": "9.0.1",
375+ "oak": "3.1.1",
376+ "oak-debug": "1.2.2",
377+ "object-maps": "0.3.0",
378+ "ocarina": "1.5.4",
379+ "oooooooooorrrrrrrmm-lib": "0.0.1",
380+ "open-colors-scales-and-schemes": "1.0.0",
381+ "open-folds": "6.4.0",
382+ "open-foreign-generic": "11.0.3",
383+ "open-memoize": "6.2.0",
384+ "open-mkdirp-aff": "1.2.0",
385+ "open-pairing": "6.2.0",
386+ "open-smolder": "12.0.2",
387+ "options": "7.0.0",
388+ "optparse": "5.0.1",
389+ "ordered-collections": "3.2.0",
390+ "ordered-set": "0.4.0",
391+ "orders": "6.0.0",
392+ "owoify": "1.2.0",
393+ "pairs": "9.0.1",
394+ "parallel": "7.0.0",
395+ "parsing": "10.2.0",
396+ "parsing-dataview": "3.2.4",
397+ "partial": "4.0.0",
398+ "pathy": "9.0.0",
399+ "pha": "0.13.0",
400+ "phaser": "0.7.0",
401+ "phylio": "1.1.2",
402+ "pipes": "8.0.0",
403+ "pirates-charm": "0.0.1",
404+ "pmock": "0.9.0",
405+ "point-free": "1.0.0",
406+ "pointed-list": "0.5.1",
407+ "polymorphic-vectors": "4.0.0",
408+ "posix-types": "6.0.0",
409+ "postgresql": "2.0.20",
410+ "precise": "6.0.0",
411+ "precise-datetime": "7.0.0",
412+ "prelude": "6.0.1",
413+ "prettier-printer": "3.0.0",
414+ "printf": "0.1.0",
415+ "priority-queue": "0.1.2",
416+ "profunctor": "6.0.1",
417+ "profunctor-lenses": "8.0.0",
418+ "protobuf": "4.4.0",
419+ "psa-utils": "8.0.0",
420+ "psci-support": "6.0.0",
421+ "punycode": "1.0.0",
422+ "qualified-do": "2.2.0",
423+ "quantities": "12.2.0",
424+ "quickcheck": "8.0.1",
425+ "quickcheck-combinators": "0.1.3",
426+ "quickcheck-laws": "7.0.0",
427+ "quickcheck-utf8": "0.0.0",
428+ "random": "6.0.0",
429+ "rationals": "6.0.0",
430+ "rdf": "0.1.0",
431+ "react": "11.0.0",
432+ "react-aria": "0.2.0",
433+ "react-basic": "17.0.0",
434+ "react-basic-classic": "3.0.0",
435+ "react-basic-dnd": "10.1.0",
436+ "react-basic-dom": "7.0.0",
437+ "react-basic-dom-beta": "0.1.1",
438+ "react-basic-emotion": "7.1.0",
439+ "react-basic-hooks": "8.2.0",
440+ "react-basic-storybook": "2.0.0",
441+ "react-dom": "8.0.0",
442+ "react-halo": "3.0.0",
443+ "react-icons": "1.1.5",
444+ "react-markdown": "0.1.0",
445+ "react-testing-library": "4.0.1",
446+ "react-virtuoso": "1.0.0",
447+ "reactix": "0.6.1",
448+ "read": "1.0.1",
449+ "recharts": "1.1.0",
450+ "record": "4.0.0",
451+ "record-extra": "5.0.1",
452+ "record-ptional-fields": "0.1.2",
453+ "record-studio": "1.0.4",
454+ "refs": "6.0.0",
455+ "remotedata": "5.0.1",
456+ "repr": "0.5.0",
457+ "resize-observer": "1.0.0",
458+ "resource": "2.0.1",
459+ "resourcet": "1.0.0",
460+ "result": "1.0.3",
461+ "return": "0.2.0",
462+ "ring-modules": "5.0.1",
463+ "rito": "0.3.4",
464+ "roman": "0.4.0",
465+ "rough-notation": "1.0.2",
466+ "routing": "11.0.0",
467+ "routing-duplex": "0.7.0",
468+ "run": "5.0.0",
469+ "safe-coerce": "2.0.0",
470+ "safely": "4.0.1",
471+ "school-of-music": "1.3.0",
472+ "selection-foldable": "0.2.0",
473+ "selective-functors": "1.0.1",
474+ "semirings": "7.0.0",
475+ "signal": "13.0.0",
476+ "simple-emitter": "3.0.1",
477+ "simple-i18n": "2.0.1",
478+ "simple-json": "9.0.0",
479+ "simple-json-generics": "0.2.1",
480+ "simple-ulid": "3.0.0",
481+ "sized-matrices": "1.0.0",
482+ "sized-vectors": "5.0.2",
483+ "slug": "3.1.0",
484+ "small-ffi": "4.0.1",
485+ "soundfonts": "4.1.0",
486+ "sparse-matrices": "2.0.1",
487+ "sparse-polynomials": "3.0.1",
488+ "spec": "8.1.1",
489+ "spec-discovery": "8.4.0",
490+ "spec-mocha": "5.1.1",
491+ "spec-node": "0.0.3",
492+ "spec-quickcheck": "5.0.2",
493+ "spec-reporter-xunit": "0.7.1",
494+ "splitmix": "2.1.0",
495+ "ssrs": "1.0.0",
496+ "st": "6.2.0",
497+ "statistics": "0.3.2",
498+ "strictlypositiveint": "1.0.1",
499+ "string-parsers": "8.0.0",
500+ "strings": "6.0.1",
501+ "strings-extra": "4.0.0",
502+ "stringutils": "0.0.12",
503+ "substitute": "0.2.3",
504+ "supply": "0.2.0",
505+ "svg-parser": "3.0.0",
506+ "systemd-journald": "0.3.0",
507+ "tagged": "4.0.2",
508+ "tailrec": "6.1.0",
509+ "tecton": "0.2.1",
510+ "tecton-halogen": "0.2.0",
511+ "test-unit": "17.0.0",
512+ "thermite": "6.3.1",
513+ "thermite-dom": "0.3.1",
514+ "these": "6.0.0",
515+ "threading": "0.0.3",
516+ "tldr": "0.0.0",
517+ "toestand": "0.9.0",
518+ "transformation-matrix": "1.0.1",
519+ "transformers": "6.1.0",
520+ "tree-rose": "4.0.2",
521+ "ts-bridge": "4.0.0",
522+ "tuples": "7.0.0",
523+ "two-or-more": "1.0.0",
524+ "type-equality": "4.0.1",
525+ "typedenv": "2.0.1",
526+ "typelevel": "6.0.0",
527+ "typelevel-lists": "2.1.0",
528+ "typelevel-peano": "1.0.1",
529+ "typelevel-prelude": "7.0.0",
530+ "typelevel-regex": "0.0.3",
531+ "typelevel-rows": "0.1.0",
532+ "typisch": "0.4.0",
533+ "uint": "7.0.0",
534+ "ulid": "3.0.1",
535+ "uncurried-transformers": "1.1.0",
536+ "undefined": "2.0.0",
537+ "undefined-is-not-a-problem": "1.1.0",
538+ "unfoldable": "6.0.0",
539+ "unicode": "6.0.0",
540+ "unique": "0.6.1",
541+ "unlift": "1.0.1",
542+ "unordered-collections": "3.1.0",
543+ "unsafe-coerce": "6.0.0",
544+ "unsafe-reference": "5.0.0",
545+ "untagged-to-tagged": "0.1.4",
546+ "untagged-union": "1.0.0",
547+ "uri": "9.0.0",
548+ "url-immutable": "1.0.0",
549+ "uuid": "9.0.0",
550+ "uuidv4": "1.0.0",
551+ "validation": "6.0.0",
552+ "variant": "8.0.0",
553+ "variant-encodings": "2.0.0",
554+ "vectorfield": "1.0.1",
555+ "vectors": "2.1.0",
556+ "versions": "7.0.0",
557+ "visx": "0.0.2",
558+ "web-clipboard": "6.0.0",
559+ "web-cssom": "2.0.0",
560+ "web-cssom-view": "0.1.0",
561+ "web-dom": "6.0.0",
562+ "web-dom-parser": "8.0.0",
563+ "web-dom-xpath": "3.0.0",
564+ "web-encoding": "3.0.0",
565+ "web-events": "4.0.0",
566+ "web-fetch": "4.0.1",
567+ "web-file": "4.0.0",
568+ "web-geometry": "0.1.0",
569+ "web-html": "4.1.0",
570+ "web-pointerevents": "2.0.0",
571+ "web-proletarian": "1.0.0",
572+ "web-promise": "3.2.0",
573+ "web-resize-observer": "2.1.0",
574+ "web-router": "1.0.0",
575+ "web-socket": "4.0.0",
576+ "web-storage": "5.0.0",
577+ "web-streams": "4.0.0",
578+ "web-touchevents": "4.0.0",
579+ "web-uievents": "5.0.0",
580+ "web-url": "2.0.0",
581+ "web-workers": "1.1.0",
582+ "web-xhr": "5.0.1",
583+ "webextension-polyfill": "0.1.0",
584+ "webgpu": "0.0.1",
585+ "which": "2.0.0",
586+ "xterm": "1.0.0",
587+ "yoga-fetch": "1.0.1",
588+ "yoga-json": "5.1.0",
589+ "yoga-om": "0.1.0",
590+ "yoga-postgres": "6.0.0",
591+ "yoga-subtlecrypto": "0.1.0",
592+ "yoga-tree": "1.0.0",
593+ "z3": "0.0.2",
594+ "zipperarray": "2.0.0"
595+ }
596+ },
597+ "extra_packages": {}
598+ },
599+ "packages": {
600+ "aff": {
601+ "type": "registry",
602+ "version": "8.0.0",
603+ "integrity": "sha256-5MmdI4+0RHBtSBy+YlU3/Cq4R5W2ih3OaRedJIrVHdk=",
604+ "dependencies": [
605+ "bifunctors",
606+ "control",
607+ "datetime",
608+ "effect",
609+ "either",
610+ "exceptions",
611+ "foldable-traversable",
612+ "functions",
613+ "maybe",
614+ "newtype",
615+ "parallel",
616+ "prelude",
617+ "refs",
618+ "tailrec",
619+ "transformers",
620+ "unsafe-coerce"
621+ ]
622+ },
623+ "arrays": {
624+ "type": "registry",
625+ "version": "7.3.0",
626+ "integrity": "sha256-tmcklBlc/muUtUfr9RapdCPwnlQeB3aSrC4dK85gQlc=",
627+ "dependencies": [
628+ "bifunctors",
629+ "control",
630+ "foldable-traversable",
631+ "functions",
632+ "maybe",
633+ "nonempty",
634+ "partial",
635+ "prelude",
636+ "safe-coerce",
637+ "st",
638+ "tailrec",
639+ "tuples",
640+ "unfoldable",
641+ "unsafe-coerce"
642+ ]
643+ },
644+ "bifunctors": {
645+ "type": "registry",
646+ "version": "6.0.0",
647+ "integrity": "sha256-/gZwC9YhNxZNQpnHa5BIYerCGM2jeX9ukZiEvYxm5Nw=",
648+ "dependencies": [
649+ "const",
650+ "either",
651+ "newtype",
652+ "prelude",
653+ "tuples"
654+ ]
655+ },
656+ "console": {
657+ "type": "registry",
658+ "version": "6.1.0",
659+ "integrity": "sha256-CxmAzjgyuGDmt9FZW51VhV6rBPwR6o0YeKUzA9rSzcM=",
660+ "dependencies": [
661+ "effect",
662+ "prelude"
663+ ]
664+ },
665+ "const": {
666+ "type": "registry",
667+ "version": "6.0.0",
668+ "integrity": "sha256-tNrxDW8D8H4jdHE2HiPzpLy08zkzJMmGHdRqt5BQuTc=",
669+ "dependencies": [
670+ "invariant",
671+ "newtype",
672+ "prelude"
673+ ]
674+ },
675+ "contravariant": {
676+ "type": "registry",
677+ "version": "6.0.0",
678+ "integrity": "sha256-TP+ooAp3vvmdjfQsQJSichF5B4BPDHp3wAJoWchip6c=",
679+ "dependencies": [
680+ "const",
681+ "either",
682+ "newtype",
683+ "prelude",
684+ "tuples"
685+ ]
686+ },
687+ "control": {
688+ "type": "registry",
689+ "version": "6.0.0",
690+ "integrity": "sha256-sH7Pg9E96JCPF9PIA6oQ8+BjTyO/BH1ZuE/bOcyj4Jk=",
691+ "dependencies": [
692+ "newtype",
693+ "prelude"
694+ ]
695+ },
696+ "datetime": {
697+ "type": "registry",
698+ "version": "6.1.0",
699+ "integrity": "sha256-g/5X5BBegQWLpI9IWD+sY6mcaYpzzlW5lz5NBzaMtyI=",
700+ "dependencies": [
701+ "bifunctors",
702+ "control",
703+ "either",
704+ "enums",
705+ "foldable-traversable",
706+ "functions",
707+ "gen",
708+ "integers",
709+ "lists",
710+ "maybe",
711+ "newtype",
712+ "numbers",
713+ "ordered-collections",
714+ "partial",
715+ "prelude",
716+ "tuples"
717+ ]
718+ },
719+ "distributive": {
720+ "type": "registry",
721+ "version": "6.0.0",
722+ "integrity": "sha256-HTDdmEnzigMl+02SJB88j+gAXDx9VKsbvR4MJGDPbOQ=",
723+ "dependencies": [
724+ "identity",
725+ "newtype",
726+ "prelude",
727+ "tuples",
728+ "type-equality"
729+ ]
730+ },
731+ "effect": {
732+ "type": "registry",
733+ "version": "4.0.0",
734+ "integrity": "sha256-eBtZu+HZcMa5HilvI6kaDyVX3ji8p0W9MGKy2K4T6+M=",
735+ "dependencies": [
736+ "prelude"
737+ ]
738+ },
739+ "either": {
740+ "type": "registry",
741+ "version": "6.1.0",
742+ "integrity": "sha256-6hgTPisnMWVwQivOu2PKYcH8uqjEOOqDyaDQVUchTpY=",
743+ "dependencies": [
744+ "control",
745+ "invariant",
746+ "maybe",
747+ "prelude"
748+ ]
749+ },
750+ "enums": {
751+ "type": "registry",
752+ "version": "6.0.1",
753+ "integrity": "sha256-HWaD73JFLorc4A6trKIRUeDMdzE+GpkJaEOM1nTNkC8=",
754+ "dependencies": [
755+ "control",
756+ "either",
757+ "gen",
758+ "maybe",
759+ "newtype",
760+ "nonempty",
761+ "partial",
762+ "prelude",
763+ "tuples",
764+ "unfoldable"
765+ ]
766+ },
767+ "exceptions": {
768+ "type": "registry",
769+ "version": "6.1.0",
770+ "integrity": "sha256-K0T89IHtF3vBY7eSAO7eDOqSb2J9kZGAcDN5+IKsF8E=",
771+ "dependencies": [
772+ "effect",
773+ "either",
774+ "maybe",
775+ "prelude"
776+ ]
777+ },
778+ "exists": {
779+ "type": "registry",
780+ "version": "6.0.0",
781+ "integrity": "sha256-A0JQHpTfo1dNOj9U5/Fd3xndlRSE0g2IQWOGor2yXn8=",
782+ "dependencies": [
783+ "unsafe-coerce"
784+ ]
785+ },
786+ "foldable-traversable": {
787+ "type": "registry",
788+ "version": "6.0.0",
789+ "integrity": "sha256-fLeqRYM4jUrZD5H4WqcwUgzU7XfYkzO4zhgtNc3jcWM=",
790+ "dependencies": [
791+ "bifunctors",
792+ "const",
793+ "control",
794+ "either",
795+ "functors",
796+ "identity",
797+ "maybe",
798+ "newtype",
799+ "orders",
800+ "prelude",
801+ "tuples"
802+ ]
803+ },
804+ "foreign": {
805+ "type": "registry",
806+ "version": "7.0.0",
807+ "integrity": "sha256-1ORiqoS3HW+qfwSZAppHPWy4/6AQysxZ2t29jcdUMNA=",
808+ "dependencies": [
809+ "either",
810+ "functions",
811+ "identity",
812+ "integers",
813+ "lists",
814+ "maybe",
815+ "prelude",
816+ "strings",
817+ "transformers"
818+ ]
819+ },
820+ "functions": {
821+ "type": "registry",
822+ "version": "6.0.0",
823+ "integrity": "sha256-adMyJNEnhGde2unHHAP79gPtlNjNqzgLB8arEOn9hLI=",
824+ "dependencies": [
825+ "prelude"
826+ ]
827+ },
828+ "functors": {
829+ "type": "registry",
830+ "version": "5.0.0",
831+ "integrity": "sha256-zfPWWYisbD84MqwpJSZFlvM6v86McM68ob8p9s27ywU=",
832+ "dependencies": [
833+ "bifunctors",
834+ "const",
835+ "contravariant",
836+ "control",
837+ "distributive",
838+ "either",
839+ "invariant",
840+ "maybe",
841+ "newtype",
842+ "prelude",
843+ "profunctor",
844+ "tuples",
845+ "unsafe-coerce"
846+ ]
847+ },
848+ "gen": {
849+ "type": "registry",
850+ "version": "4.0.0",
851+ "integrity": "sha256-f7yzAXWwr+xnaqEOcvyO3ezKdoes8+WXWdXIHDBCAPI=",
852+ "dependencies": [
853+ "either",
854+ "foldable-traversable",
855+ "identity",
856+ "maybe",
857+ "newtype",
858+ "nonempty",
859+ "prelude",
860+ "tailrec",
861+ "tuples",
862+ "unfoldable"
863+ ]
864+ },
865+ "identity": {
866+ "type": "registry",
867+ "version": "6.0.0",
868+ "integrity": "sha256-4wY0XZbAksjY6UAg99WkuKyJlQlWAfTi2ssadH0wVMY=",
869+ "dependencies": [
870+ "control",
871+ "invariant",
872+ "newtype",
873+ "prelude"
874+ ]
875+ },
876+ "integers": {
877+ "type": "registry",
878+ "version": "6.0.0",
879+ "integrity": "sha256-sf+sK26R1hzwl3NhXR7WAu9zCDjQnfoXwcyGoseX158=",
880+ "dependencies": [
881+ "maybe",
882+ "numbers",
883+ "prelude"
884+ ]
885+ },
886+ "invariant": {
887+ "type": "registry",
888+ "version": "6.0.0",
889+ "integrity": "sha256-RGWWyYrz0Hs1KjPDA+87Kia67ZFBhfJ5lMGOMCEFoLo=",
890+ "dependencies": [
891+ "control",
892+ "prelude"
893+ ]
894+ },
895+ "js-date": {
896+ "type": "registry",
897+ "version": "8.0.0",
898+ "integrity": "sha256-6TVF4DWg5JL+jRAsoMssYw8rgOVALMUHT1CuNZt8NRo=",
899+ "dependencies": [
900+ "datetime",
901+ "effect",
902+ "exceptions",
903+ "foreign",
904+ "integers",
905+ "now"
906+ ]
907+ },
908+ "js-promise": {
909+ "type": "registry",
910+ "version": "1.0.0",
911+ "integrity": "sha256-kXNo5g9RJgPdrTuKRe5oG2kBIwPp+j5VDPDplqZBJzQ=",
912+ "dependencies": [
913+ "effect",
914+ "exceptions",
915+ "foldable-traversable",
916+ "functions",
917+ "maybe",
918+ "prelude"
919+ ]
920+ },
921+ "js-promise-aff": {
922+ "type": "registry",
923+ "version": "1.0.0",
924+ "integrity": "sha256-s9kml9Ei74hKlMMg41yyZp4GkbmYUwaH+gBWWrdhwec=",
925+ "dependencies": [
926+ "aff",
927+ "foreign",
928+ "js-promise"
929+ ]
930+ },
931+ "lazy": {
932+ "type": "registry",
933+ "version": "6.0.0",
934+ "integrity": "sha256-lMsfFOnlqfe4KzRRiW8ot5ge6HtcU3Eyh2XkXcP5IgU=",
935+ "dependencies": [
936+ "control",
937+ "foldable-traversable",
938+ "invariant",
939+ "prelude"
940+ ]
941+ },
942+ "lists": {
943+ "type": "registry",
944+ "version": "7.0.0",
945+ "integrity": "sha256-EKF15qYqucuXP2lT/xPxhqy58f0FFT6KHdIB/yBOayI=",
946+ "dependencies": [
947+ "bifunctors",
948+ "control",
949+ "foldable-traversable",
950+ "lazy",
951+ "maybe",
952+ "newtype",
953+ "nonempty",
954+ "partial",
955+ "prelude",
956+ "tailrec",
957+ "tuples",
958+ "unfoldable"
959+ ]
960+ },
961+ "maybe": {
962+ "type": "registry",
963+ "version": "6.0.0",
964+ "integrity": "sha256-5cCIb0wPwbat2PRkQhUeZO0jcAmf8jCt2qE0wbC3v2Q=",
965+ "dependencies": [
966+ "control",
967+ "invariant",
968+ "newtype",
969+ "prelude"
970+ ]
971+ },
972+ "media-types": {
973+ "type": "registry",
974+ "version": "6.0.0",
975+ "integrity": "sha256-n/4FoGBasbVSYscGVRSyBunQ6CZbL3jsYL+Lp01mc9k=",
976+ "dependencies": [
977+ "newtype",
978+ "prelude"
979+ ]
980+ },
981+ "newtype": {
982+ "type": "registry",
983+ "version": "5.0.0",
984+ "integrity": "sha256-gdrQu8oGe9eZE6L3wOI8ql/igOg+zEGB5ITh2g+uttw=",
985+ "dependencies": [
986+ "prelude",
987+ "safe-coerce"
988+ ]
989+ },
990+ "nonempty": {
991+ "type": "registry",
992+ "version": "7.0.0",
993+ "integrity": "sha256-54ablJZUHGvvlTJzi3oXyPCuvY6zsrWJuH/dMJ/MFLs=",
994+ "dependencies": [
995+ "control",
996+ "foldable-traversable",
997+ "maybe",
998+ "prelude",
999+ "tuples",
1000+ "unfoldable"
1001+ ]
1002+ },
1003+ "now": {
1004+ "type": "registry",
1005+ "version": "6.0.0",
1006+ "integrity": "sha256-xZ7x37ZMREfs6GCDw/h+FaKHV/3sPWmtqBZRGTxybQY=",
1007+ "dependencies": [
1008+ "datetime",
1009+ "effect"
1010+ ]
1011+ },
1012+ "nullable": {
1013+ "type": "registry",
1014+ "version": "6.0.0",
1015+ "integrity": "sha256-yiGBVl3AD+Guy4kNWWeN+zl1gCiJK+oeIFtZtPCw4+o=",
1016+ "dependencies": [
1017+ "effect",
1018+ "functions",
1019+ "maybe"
1020+ ]
1021+ },
1022+ "numbers": {
1023+ "type": "registry",
1024+ "version": "9.0.1",
1025+ "integrity": "sha256-/9M6aeMDBdB4cwYDeJvLFprAHZ49EbtKQLIJsneXLIk=",
1026+ "dependencies": [
1027+ "functions",
1028+ "maybe"
1029+ ]
1030+ },
1031+ "ordered-collections": {
1032+ "type": "registry",
1033+ "version": "3.2.0",
1034+ "integrity": "sha256-o9jqsj5rpJmMdoe/zyufWHFjYYFTTsJpgcuCnqCO6PM=",
1035+ "dependencies": [
1036+ "arrays",
1037+ "foldable-traversable",
1038+ "gen",
1039+ "lists",
1040+ "maybe",
1041+ "partial",
1042+ "prelude",
1043+ "st",
1044+ "tailrec",
1045+ "tuples",
1046+ "unfoldable"
1047+ ]
1048+ },
1049+ "orders": {
1050+ "type": "registry",
1051+ "version": "6.0.0",
1052+ "integrity": "sha256-nBA0g3/ai0euH8q9pSbGqk53W2q6agm/dECZTHcoink=",
1053+ "dependencies": [
1054+ "newtype",
1055+ "prelude"
1056+ ]
1057+ },
1058+ "parallel": {
1059+ "type": "registry",
1060+ "version": "7.0.0",
1061+ "integrity": "sha256-gUC9i4Txnx9K9RcMLsjujbwZz6BB1bnE2MLvw4GIw5o=",
1062+ "dependencies": [
1063+ "control",
1064+ "effect",
1065+ "either",
1066+ "foldable-traversable",
1067+ "functors",
1068+ "maybe",
1069+ "newtype",
1070+ "prelude",
1071+ "profunctor",
1072+ "refs",
1073+ "transformers"
1074+ ]
1075+ },
1076+ "partial": {
1077+ "type": "registry",
1078+ "version": "4.0.0",
1079+ "integrity": "sha256-fwXerld6Xw1VkReh8yeQsdtLVrjfGiVuC5bA1Wyo/J4=",
1080+ "dependencies": []
1081+ },
1082+ "prelude": {
1083+ "type": "registry",
1084+ "version": "6.0.1",
1085+ "integrity": "sha256-o8p6SLYmVPqzXZhQFd2hGAWEwBoXl1swxLG/scpJ0V0=",
1086+ "dependencies": []
1087+ },
1088+ "profunctor": {
1089+ "type": "registry",
1090+ "version": "6.0.1",
1091+ "integrity": "sha256-E58hSYdJvF2Qjf9dnWLPlJKh2Z2fLfFLkQoYi16vsFk=",
1092+ "dependencies": [
1093+ "control",
1094+ "distributive",
1095+ "either",
1096+ "exists",
1097+ "invariant",
1098+ "newtype",
1099+ "prelude",
1100+ "tuples"
1101+ ]
1102+ },
1103+ "refs": {
1104+ "type": "registry",
1105+ "version": "6.0.0",
1106+ "integrity": "sha256-Vgwne7jIbD3ZMoLNNETLT8Litw6lIYo3MfYNdtYWj9s=",
1107+ "dependencies": [
1108+ "effect",
1109+ "prelude"
1110+ ]
1111+ },
1112+ "safe-coerce": {
1113+ "type": "registry",
1114+ "version": "2.0.0",
1115+ "integrity": "sha256-a1ibQkiUcbODbLE/WAq7Ttbbh9ex+x33VCQ7GngKudU=",
1116+ "dependencies": [
1117+ "unsafe-coerce"
1118+ ]
1119+ },
1120+ "st": {
1121+ "type": "registry",
1122+ "version": "6.2.0",
1123+ "integrity": "sha256-z9X0WsOUlPwNx9GlCC+YccCyz8MejC8Wb0C4+9fiBRY=",
1124+ "dependencies": [
1125+ "partial",
1126+ "prelude",
1127+ "tailrec",
1128+ "unsafe-coerce"
1129+ ]
1130+ },
1131+ "strings": {
1132+ "type": "registry",
1133+ "version": "6.0.1",
1134+ "integrity": "sha256-WssD3DbX4OPzxSdjvRMX0yvc9+pS7n5gyPv5I2Trb7k=",
1135+ "dependencies": [
1136+ "arrays",
1137+ "control",
1138+ "either",
1139+ "enums",
1140+ "foldable-traversable",
1141+ "gen",
1142+ "integers",
1143+ "maybe",
1144+ "newtype",
1145+ "nonempty",
1146+ "partial",
1147+ "prelude",
1148+ "tailrec",
1149+ "tuples",
1150+ "unfoldable",
1151+ "unsafe-coerce"
1152+ ]
1153+ },
1154+ "tailrec": {
1155+ "type": "registry",
1156+ "version": "6.1.0",
1157+ "integrity": "sha256-Xx19ECVDRrDWpz9D2GxQHHV89vd61dnXxQm0IcYQHGk=",
1158+ "dependencies": [
1159+ "bifunctors",
1160+ "effect",
1161+ "either",
1162+ "identity",
1163+ "maybe",
1164+ "partial",
1165+ "prelude",
1166+ "refs"
1167+ ]
1168+ },
1169+ "transformers": {
1170+ "type": "registry",
1171+ "version": "6.1.0",
1172+ "integrity": "sha256-3Bm+Z6tsC/paG888XkywDngJ2JMos+JfOhRlkVfb7gI=",
1173+ "dependencies": [
1174+ "control",
1175+ "distributive",
1176+ "effect",
1177+ "either",
1178+ "exceptions",
1179+ "foldable-traversable",
1180+ "identity",
1181+ "lazy",
1182+ "maybe",
1183+ "newtype",
1184+ "prelude",
1185+ "st",
1186+ "tailrec",
1187+ "tuples",
1188+ "unfoldable"
1189+ ]
1190+ },
1191+ "tuples": {
1192+ "type": "registry",
1193+ "version": "7.0.0",
1194+ "integrity": "sha256-1rXgTomes9105BjgXqIw0FL6Fz1lqqUTLWOumhWec1M=",
1195+ "dependencies": [
1196+ "control",
1197+ "invariant",
1198+ "prelude"
1199+ ]
1200+ },
1201+ "type-equality": {
1202+ "type": "registry",
1203+ "version": "4.0.1",
1204+ "integrity": "sha256-Hs9D6Y71zFi/b+qu5NSbuadUQXe5iv5iWx0226vOHUw=",
1205+ "dependencies": []
1206+ },
1207+ "unfoldable": {
1208+ "type": "registry",
1209+ "version": "6.0.0",
1210+ "integrity": "sha256-JtikvJdktRap7vr/K4ITlxUX1QexpnqBq0G/InLr6eg=",
1211+ "dependencies": [
1212+ "foldable-traversable",
1213+ "maybe",
1214+ "partial",
1215+ "prelude",
1216+ "tuples"
1217+ ]
1218+ },
1219+ "unsafe-coerce": {
1220+ "type": "registry",
1221+ "version": "6.0.0",
1222+ "integrity": "sha256-IqIYW4Vkevn8sI+6aUwRGvd87tVL36BBeOr0cGAE7t0=",
1223+ "dependencies": []
1224+ },
1225+ "web-dom": {
1226+ "type": "registry",
1227+ "version": "6.0.0",
1228+ "integrity": "sha256-1kSKWFDI4LupdmpjK01b1MMxDFW7jvatEgPgVmCmSBQ=",
1229+ "dependencies": [
1230+ "web-events"
1231+ ]
1232+ },
1233+ "web-events": {
1234+ "type": "registry",
1235+ "version": "4.0.0",
1236+ "integrity": "sha256-YDt8b6u1tzGtnWyNRodne57iO8FNSGPaTCVzBUyUn4k=",
1237+ "dependencies": [
1238+ "datetime",
1239+ "enums",
1240+ "foreign",
1241+ "nullable"
1242+ ]
1243+ },
1244+ "web-file": {
1245+ "type": "registry",
1246+ "version": "4.0.0",
1247+ "integrity": "sha256-1h5jPBkvjY71jLEdwVadXCx86/2inNoMBO//Rd3eCSU=",
1248+ "dependencies": [
1249+ "foreign",
1250+ "media-types",
1251+ "web-dom"
1252+ ]
1253+ },
1254+ "web-html": {
1255+ "type": "registry",
1256+ "version": "4.1.0",
1257+ "integrity": "sha256-ByqS/h1/yG+hjCOnOQp7L1QpIWzQENNKB1kaHtpEhlE=",
1258+ "dependencies": [
1259+ "js-date",
1260+ "web-dom",
1261+ "web-file",
1262+ "web-storage"
1263+ ]
1264+ },
1265+ "web-storage": {
1266+ "type": "registry",
1267+ "version": "5.0.0",
1268+ "integrity": "sha256-q+6lxcnfWxus0/nDeFVtF1V+tLehZvvXQ0cduYPLksY=",
1269+ "dependencies": [
1270+ "nullable",
1271+ "web-events"
1272+ ]
1273+ }
1274+ }
1275+}
spago.yamlnew file+22
@@ -0,0 +1,22 @@
1+package:
2+ name: vitest
3+ dependencies:
4+ - console: ">=6.1.0 <7.0.0"
5+ - effect: ">=4.0.0 <5.0.0"
6+ - js-promise-aff: ">=1.0.0 <2.0.0"
7+ - prelude: ">=6.0.1 <7.0.0"
8+ - web-dom: ">=6.0.0 <7.0.0"
9+ - web-html: ">=4.1.0 <5.0.0"
10+ publish:
11+ version: 1.0.0
12+ license: WTFPL
13+ location:
14+ githubOwner: rowtype-yoga
15+ githubRepo: purescript-vitest
16+ test:
17+ main: Test.Main
18+ dependencies: []
19+workspace:
20+ packageSet:
21+ registry: 61.3.1
22+ extraPackages: {}
src/ViTest.jsnew file+30
@@ -0,0 +1,30 @@
1+import {describe, test, vi, beforeAll, afterAll, beforeEach, afterEach} from "vitest"
2+
3+
4+export const testImpl = (name, t) => test(name, async () => {
5+ Object.defineProperty(window, 'matchMedia', {
6+ writable: true,
7+ value: vi.fn().mockImplementation((query) => ({
8+ matches: false,
9+ media: query,
10+ onchange: null,
11+ addListener: vi.fn(), // Deprecated
12+ removeListener: vi.fn(), // Deprecated
13+ addEventListener: vi.fn(),
14+ removeEventListener: vi.fn(),
15+ dispatchEvent: vi.fn(),
16+ })),
17+ })
18+ await t()
19+})
20+
21+
22+export const describeImpl = (name, t) => describe(name, t)
23+
24+export const beforeAllImpl = (t) => beforeAll(t)
25+
26+export const afterAllImpl = (t) => afterAll(t)
27+
28+export const beforeEachImpl = (t) => beforeEach(t)
29+
30+export const afterEachImpl = (t) => afterEach(t)
src/ViTest.pursnew file+44
@@ -0,0 +1,44 @@
1+module ViTest where
2+
3+import Prelude
4+
5+import Effect (Effect)
6+import Effect.Aff (Aff)
7+import Effect.Uncurried (EffectFn1, EffectFn2, runEffectFn1, runEffectFn2)
8+import Effect.Unsafe (unsafePerformEffect)
9+import Promise (Promise)
10+import Promise.Aff as Promise
11+
12+foreign import data ViTest :: Type
13+
14+foreign import testImpl :: EffectFn2 String (Effect (Promise (Unit))) ViTest
15+test :: String -> Aff Unit -> Effect ViTest
16+test desc = runEffectFn2 testImpl desc <<< Promise.fromAff
17+
18+foreign import describeImpl :: EffectFn2 String (Effect ViTest) ViTest
19+
20+describe :: String -> Effect ViTest -> Effect ViTest
21+describe = runEffectFn2 describeImpl
22+
23+viTest :: Effect ViTest -> ViTest
24+viTest = unsafePerformEffect
25+
26+foreign import beforeEachImpl :: EffectFn1 (Effect (Promise Unit)) Unit
27+
28+beforeEach :: Aff Unit -> Effect Unit
29+beforeEach = runEffectFn1 beforeEachImpl <<< Promise.fromAff
30+
31+foreign import afterEachImpl :: EffectFn1 (Effect (Promise Unit)) Unit
32+
33+afterEach :: Aff Unit -> Effect Unit
34+afterEach = runEffectFn1 afterEachImpl <<< Promise.fromAff
35+
36+foreign import beforeAllImpl :: EffectFn1 (Effect (Promise Unit)) Unit
37+
38+beforeAll :: Aff Unit -> Effect Unit
39+beforeAll = runEffectFn1 beforeAllImpl <<< Promise.fromAff
40+
41+foreign import afterAllImpl :: EffectFn1 (Effect (Promise Unit)) Unit
42+
43+afterAll :: Aff Unit -> Effect Unit
44+afterAll = runEffectFn1 afterAllImpl <<< Promise.fromAff
src/ViTest/Expect.jsnew file+4
@@ -0,0 +1,4 @@
1+import {expect} from "vitest";
2+
3+export const expectToBeImpl = x => y => () => expect(x).toBe(y)
4+
src/ViTest/Expect.pursnew file+14
@@ -0,0 +1,14 @@
1+module ViTest.Expect where
2+
3+import Prelude
4+
5+import Effect (Effect)
6+import Effect.Aff (Aff)
7+import Effect.Class (liftEffect)
8+
9+foreign import expectToBeImpl :: forall a. a -> a -> Effect Unit
10+
11+expectToBe :: forall a. a -> a -> Aff Unit
12+expectToBe a b = liftEffect $ expectToBeImpl a b
13+
14+infixl 1 expectToBe as ====
src/ViTest/Expect/DOM.pursnew file+38
@@ -0,0 +1,38 @@
1+module ViTest.Expect.DOM where
2+
3+import Prelude
4+
5+import Control.Monad.Error.Class (class MonadThrow)
6+import Data.Maybe (Maybe(Just, Nothing))
7+import Data.Nullable (toMaybe) as Nullable
8+import Effect.Aff (Aff)
9+import Effect.Class (class MonadEffect, liftEffect)
10+import Effect.Exception (Error, throw)
11+import Unsafe.Coerce (unsafeCoerce)
12+import Web.DOM.Element (getAttribute) as Element
13+import Web.DOM.Node (textContent)
14+import Web.HTML.HTMLElement (HTMLElement)
15+import Web.HTML.HTMLElement (toElement, toNode) as HTMLElement
16+
17+elemText :: forall m. Bind m => MonadEffect m => MonadThrow Error m => HTMLElement -> m String
18+elemText elem = do
19+ liftEffect $ textContent $ HTMLElement.toNode elem
20+
21+elemValue :: HTMLElement -> Aff String
22+elemValue elem = do
23+ case Nullable.toMaybe (unsafeCoerce elem).value of
24+ Just v -> pure v
25+ Nothing -> (throw $ "Element does not have a value") # liftEffect
26+
27+elemInnerHTML :: HTMLElement -> Aff String
28+elemInnerHTML elem = do
29+ case Nullable.toMaybe (unsafeCoerce elem).innerHTML of
30+ Just v -> pure v
31+ Nothing -> (throw $ "Element does not have innerHTML") # liftEffect
32+
33+elemAttribute :: HTMLElement -> String -> Aff String
34+elemAttribute x attr = do
35+ maybeAttrValue <- Element.getAttribute attr (HTMLElement.toElement x) # liftEffect
36+ case maybeAttrValue of
37+ Just v -> pure v
38+ Nothing -> (throw $ "HTMLElement does not have attribute: " <> attr) # liftEffect
test/Test/Main.pursnew file+12
@@ -0,0 +1,12 @@
1+module Test.Main where
2+
3+import Prelude
4+
5+import Effect (Effect)
6+import Effect.Class.Console (log)
7+
8+main :: Effect Unit
9+main = do
10+ log "🍕"
11+ log "You should add some tests."
12+