Skip to content

Commit 668c531

Browse files
Update to PureScript 0.15 (#74)
1 parent 383b803 commit 668c531

9 files changed

Lines changed: 890 additions & 164 deletions

File tree

package-lock.json

Lines changed: 770 additions & 52 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@
1515
"snapshot": "npm run bundle:performance && spago -x test/test.dhall run --main Performance.Snapshot.Write",
1616
"test": "spago -x test/test.dhall test",
1717
"test:performance": "npm run bundle:performance && spago -x test/test.dhall run --main Performance.Main",
18-
"bundle:examples": "spago -x examples/examples.dhall bundle-app --main Example.Main --to examples/app.js",
19-
"bundle:performance": "spago -x test/test.dhall bundle-app --main Performance.Test.App --to test/test.js --no-build"
18+
"bundle:examples": "spago -x examples/examples.dhall bundle-app --minify --main Example.Main --to examples/app.js",
19+
"bundle:performance": "spago -x test/test.dhall bundle-app --minify --main Performance.Test.App --to test/test.js --no-build"
2020
},
2121
"devDependencies": {
2222
"filter-console": "^0.1.1",
2323
"headless-devtools": "^2.0.1",
24-
"puppeteer": "^5.2.0",
24+
"puppeteer": "^13.7.0",
2525
"tracealyzer": "^0.10.3"
2626
}
2727
}

packages.dhall

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
let upstream =
2-
https://github.com/purescript/package-sets/releases/download/psc-0.14.0-20210313/packages.dhall sha256:ba6368b31902aad206851fec930e89465440ebf5a1fe0391f8be396e2d2f1d87
2+
https://github.com/purescript/package-sets/releases/download/psc-0.15.0-20220429/packages.dhall
3+
sha256:03c682bff56fc8f9d8c495ffcc6f524cbd3c89fe04778f965265c08757de8c9d
34

45
let additions =
56
{ halogen-storybook =
67
{ dependencies = [ "halogen", "routing", "foreign-object" ]
7-
, repo = "https://github.com/rnons/purescript-halogen-storybook.git"
8-
, version = "7327247aea379d4582dad9f93be9749556d26c99"
8+
, repo = "https://github.com/CarstenKoenig/purescript-halogen-storybook.git"
9+
, version = "purs015"
910
}
1011
}
1112

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
exports._memoValuesImpl = function (eq) {
1+
export function _memoValuesImpl (eq) {
22
return function (memos) {
3-
return { eq, memos };
4-
};
5-
};
3+
return { eq, memos }
4+
}
5+
}
Lines changed: 71 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,95 +1,95 @@
1-
const puppeteer = require("puppeteer");
2-
const filterConsole = require("filter-console");
3-
const tracealyzer = require("tracealyzer");
4-
const { getPerformanceModel } = require("headless-devtools");
1+
import P from 'puppeteer'
2+
import filterConsole from 'filter-console'
3+
import tracealyzer from 'tracealyzer'
4+
import { getPerformanceModel } from 'headless-devtools'
55

6-
exports.filterConsole = function () {
7-
filterConsole(["Failed to parse CPU profile."]);
8-
};
6+
export function filterConsoleImpl () {
7+
filterConsole(['Failed to parse CPU profile.'])
8+
}
99

10-
exports.launchImpl = function (args) {
10+
export function launchImpl (args) {
1111
return function () {
12-
return puppeteer.launch(args);
13-
};
14-
};
12+
return P.launch(args)
13+
}
14+
}
1515

16-
exports.newPageImpl = function (browser) {
17-
return browser.newPage();
18-
};
16+
export function newPageImpl (browser) {
17+
return browser.newPage()
18+
}
1919

20-
exports.debugImpl = function (page) {
21-
page.on("console", (msg) => console.log("PAGE LOG:", msg.text()));
22-
page.on("pageerror", (err) => console.log("ERROR LOG:", err.message));
23-
};
20+
export function debugImpl (page) {
21+
page.on('console', msg => console.log('PAGE LOG:', msg.text()))
22+
page.on('pageerror', err => console.log('ERROR LOG:', err.message))
23+
}
2424

25-
exports.clickImpl = function (elem) {
26-
return elem.click();
27-
};
25+
export function clickImpl (elem) {
26+
return elem.click()
27+
}
2828

29-
exports.waitForSelectorImpl = function (page, selector) {
30-
return page.waitForSelector(selector);
31-
};
29+
export function waitForSelectorImpl (page, selector) {
30+
return page.waitForSelector(selector)
31+
}
3232

33-
exports.focusImpl = function (page, selector) {
34-
return page.focus(selector);
35-
};
33+
export function focusImpl (page, selector) {
34+
return page.focus(selector)
35+
}
3636

37-
exports.typeWithKeybordImpl = function (page, string) {
38-
return page.keyboard.type(string);
39-
};
37+
export function typeWithKeybordImpl (page, string) {
38+
return page.keyboard.type(string)
39+
}
4040

41-
exports.gotoImpl = function (page, path) {
42-
return page.goto(path);
43-
};
41+
export function gotoImpl (page, path) {
42+
return page.goto(path)
43+
}
4444

45-
exports.closePageImpl = function (page) {
46-
return page.close();
47-
};
45+
export function closePageImpl (page) {
46+
return page.close()
47+
}
4848

49-
exports.closeBrowserImpl = function (browser) {
50-
return browser.close();
51-
};
49+
export function closeBrowserImpl (browser) {
50+
return browser.close()
51+
}
5252

53-
exports.enableHeapProfilerImpl = function (page) {
54-
return page._client.send("HeapProfiler.enable");
55-
};
53+
export function enableHeapProfilerImpl (page) {
54+
return page._client.send('HeapProfiler.enable')
55+
}
5656

57-
exports.collectGarbageImpl = function (page) {
58-
return page._client.send("HeapProfiler.collectGarbage");
59-
};
57+
export function collectGarbageImpl (page) {
58+
return page._client.send('HeapProfiler.collectGarbage')
59+
}
6060

61-
exports.startTraceImpl = function (page, path) {
62-
return page.tracing.start({ path });
63-
};
61+
export function startTraceImpl (page, path) {
62+
return page.tracing.start({ path })
63+
}
6464

65-
exports.stopTraceImpl = function (page) {
66-
return page.tracing.stop();
67-
};
65+
export function stopTraceImpl (page) {
66+
return page.tracing.stop()
67+
}
6868

6969
// Should be used on the trace produced by `page.tracing.stop()`
70-
exports.getPerformanceModelImpl = function (trace) {
70+
export function getPerformanceModelImpl (trace) {
7171
try {
72-
const traceJSON = JSON.parse(trace.toString());
73-
return getPerformanceModel(traceJSON);
72+
const traceJSON = JSON.parse(trace.toString())
73+
return getPerformanceModel(traceJSON)
7474
} catch (e) {
75-
return null;
75+
return null
7676
}
77-
};
77+
}
7878

7979
// Should be used on the model returned by `getPeformanceModel`
80-
exports.getAverageFPS = function (model) {
81-
const frames = model.frames();
82-
const durations = frames.map((x) => x.duration);
83-
const avg = durations.reduce((acc, item) => acc + item, 0) / durations.length;
84-
return Math.round(1000 / avg);
85-
};
86-
87-
exports.pageMetricsImpl = function (page) {
88-
return page.metrics();
89-
};
90-
91-
exports.tracealyzer = function (filename) {
80+
export function getAverageFPS (model) {
81+
const frames = model.frames()
82+
const durations = frames.map(x => x.duration)
83+
const avg = durations.reduce((acc, item) => acc + item, 0) / durations.length
84+
return Math.round(1000 / avg)
85+
}
86+
87+
export function pageMetricsImpl (page) {
88+
return page.metrics()
89+
}
90+
91+
export function tracealyzerImpl (filename) {
9292
return function () {
93-
return tracealyzer(filename);
94-
};
95-
};
93+
return tracealyzer(filename)
94+
}
95+
}

test/Performance/Setup/Puppeteer.purs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,10 @@ import Partial.Unsafe (unsafePartial)
5151
import Web.HTML (HTMLElement)
5252

5353
-- | Turn off noisy messages from the Puppeteer tests
54-
foreign import filterConsole :: Effect Unit
54+
foreign import filterConsoleImpl :: Effect Unit
55+
56+
filterConsole :: Effect Unit
57+
filterConsole = filterConsoleImpl
5558

5659
-- | An instance of a Puppeteer browser, which should be created at
5760
-- | the start of any Puppeteer session and closed at the end.
@@ -245,7 +248,10 @@ readScriptingTime fp = do
245248
Left err -> throw $ printJsonDecodeError err
246249
Right val -> pure $ Milliseconds $ round $ fromMaybe 0.0 val
247250

248-
foreign import tracealyzer :: FilePath -> Effect Json
251+
foreign import tracealyzerImpl :: FilePath -> Effect Json
252+
253+
tracealyzer :: FilePath -> Effect Json
254+
tracealyzer = tracealyzerImpl
249255

250256
toAffE1 :: forall a b. EffectFn1 a (Promise b) -> a -> Aff b
251257
toAffE1 fn = toAffE <<< runEffectFn1 fn
Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
exports.result = {
2-
"hookAverage": {
3-
"totalTime": "143ms",
4-
"scriptTime": "102ms",
5-
"peakHeap": "1894kb",
6-
"averageHeap": "746kb",
7-
"averageFPS": 18
1+
export const result = {
2+
hookAverage: {
3+
totalTime: '143ms',
4+
scriptTime: '102ms',
5+
peakHeap: '1894kb',
6+
averageHeap: '746kb',
7+
averageFPS: 18
88
},
9-
"componentAverage": {
10-
"totalTime": "101ms",
11-
"scriptTime": "52ms",
12-
"peakHeap": "993kb",
13-
"averageHeap": "429kb",
14-
"averageFPS": 36
9+
componentAverage: {
10+
totalTime: '101ms',
11+
scriptTime: '52ms',
12+
peakHeap: '993kb',
13+
averageHeap: '429kb',
14+
averageFPS: 36
1515
}
16-
}
16+
}
Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
exports.result = {
2-
"hookAverage": {
3-
"totalTime": "478ms",
4-
"scriptTime": "333ms",
5-
"peakHeap": "13948kb",
6-
"averageHeap": "6594kb",
7-
"averageFPS": 20
1+
export const result = {
2+
hookAverage: {
3+
totalTime: '478ms',
4+
scriptTime: '333ms',
5+
peakHeap: '13948kb',
6+
averageHeap: '6594kb',
7+
averageFPS: 20
88
},
9-
"componentAverage": {
10-
"totalTime": "358ms",
11-
"scriptTime": "200ms",
12-
"peakHeap": "7045kb",
13-
"averageHeap": "3490kb",
14-
"averageFPS": 26
9+
componentAverage: {
10+
totalTime: '358ms',
11+
scriptTime: '200ms',
12+
peakHeap: '7045kb',
13+
averageHeap: '3490kb',
14+
averageFPS: 26
1515
}
16-
}
16+
}

test/Performance/Test/App.purs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ import Performance.Test.Todo.Hook as Todo.Hook
2020
main :: Effect Unit
2121
main = launchAff_ do
2222
body <- HA.awaitBody
23-
runUI container unit body
23+
_ <- runUI container unit body
24+
pure unit
2425

2526
data TestState
2627
= NotStarted

0 commit comments

Comments
 (0)