├── .browserify.js
├── .gitignore
├── README.md
├── bower.json
├── browserify.html
├── index.html
├── package-lock.json
├── package.json
├── src
├── .webpack.js
└── Main.purs
├── webpack.config.js
└── webpack.html
/.browserify.js:
--------------------------------------------------------------------------------
1 | require('./output/Main').main();
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /bower_components/
2 | /node_modules/
3 | /.pulp-cache/
4 | /output/
5 | .vscode/
6 | /.psci*
7 | browserify.js*
8 | bundle.js*
9 | app.js*
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # PureScript Source maps test
2 |
3 | Simple setups showing end to end source maps with webpack and browserify.
4 |
5 | TODO: Use `psc-bundle`, which finally supports source maps, but requires them
6 | to be glued together externally.
7 |
8 | TODO: Show the new `purs` executable instead, test.
9 |
10 | Works with `psc` as of [0.8.1](https://github.com/purescript/purescript/releases/tag/v0.8.1)/0.8.2
11 |
12 | ### Build everything
13 |
14 | The `package.json` for this project contains some run scripts to build with browserify and webpack preserving
15 | source maps.
16 |
17 | Usage:
18 | ```
19 | bower install && npm install
20 |
21 | npm run -s build-all
22 | http-server
23 | ```
24 |
25 | (You can use any http server to serve the project root directory: [`http-server`](https://www.npmjs.com/package/http-server)
26 | is one such that can be installed with npm (`npm install -g http-server`)).
27 |
28 | ### webpack
29 |
30 | Usage:
31 | ```
32 | bower install && npm install
33 | npm install -g webpack-dev-server
34 |
35 | pulp build -- --source-maps
36 | webpack-dev-server
37 | ```
38 |
39 | (or see build scripts/build-all above).
40 |
41 | ### webpack (purescript webpack plugin)
42 |
43 | Webpack via `purs-loader`/`purescript-webpack-plugin` sshould support source
44 | maps, probably whether `psc-bundle` is used or not, but the example I previously referred to for such support -
45 | [purescript-webpack-example](https://github.com/ethul/purescript-webpack-example) - does not currently support source maps.
46 |
47 | ### Browserify
48 |
49 | It's possible to do the same with browserify, but browserify does not in itself
50 | combine source maps from its own process with input source maps. One option is to
51 | use [sorcery](https://github.com/Rich-Harris/sorcery) to glue purescript and browserify
52 | source maps together.
53 |
54 | Usage:
55 | ```
56 | bower install && npm install
57 |
58 | pulp build -- --source-maps
59 | browserify --debug .browserify.js -o browserify.js
60 | sorcery -i browserify.js
61 |
62 | http-server
63 | ```
64 |
65 | ### Bundle
66 |
67 | `psc-bundle` now supports source maps. Note that `pulp` will only pass the source maps parameter to the initial compile command, so bundling must be done
68 | as a 2nd step, not a `pulp build --to` or variant thereof. The below may work:
69 |
70 | ```
71 | pulp build -- --source-maps
72 | psc-bundle 'output/*/*.js' -m Main --main Main -o bundle.js --source-maps
73 | sorcery -i bundle.js
74 | ```
75 |
76 | ### Direct CommonJS
77 |
78 | When using PureScript code directly as CommonJS modules, such as in Node or Electron,
79 | source maps can be used directly with no additional tooling.
80 |
--------------------------------------------------------------------------------
/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "purescript-sourcemap-test",
3 | "version": "1.0.0",
4 | "moduleType": [
5 | "node"
6 | ],
7 | "ignore": [
8 | "**/.*",
9 | "node_modules",
10 | "bower_components",
11 | "output"
12 | ],
13 | "dependencies": {
14 | "purescript-console": "^3.0.0"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/browserify.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Source map examples under different build processes. Note there is no output,
4 | need to open the dev console.
5 |
Also note, you need to show this in a web server instead of running locally,
6 | or source maps may not work.
7 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "purescript-sourcemap-test",
3 | "requires": true,
4 | "lockfileVersion": 1,
5 | "dependencies": {
6 | "ansi-styles": {
7 | "version": "3.2.0",
8 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
9 | "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
10 | "dev": true,
11 | "requires": {
12 | "color-convert": "1.9.0"
13 | }
14 | },
15 | "array-filter": {
16 | "version": "0.0.1",
17 | "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
18 | "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
19 | "dev": true
20 | },
21 | "array-map": {
22 | "version": "0.0.0",
23 | "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
24 | "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=",
25 | "dev": true
26 | },
27 | "array-reduce": {
28 | "version": "0.0.0",
29 | "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
30 | "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
31 | "dev": true
32 | },
33 | "balanced-match": {
34 | "version": "1.0.0",
35 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
36 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
37 | "dev": true
38 | },
39 | "brace-expansion": {
40 | "version": "1.1.8",
41 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
42 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
43 | "dev": true,
44 | "requires": {
45 | "balanced-match": "1.0.0",
46 | "concat-map": "0.0.1"
47 | }
48 | },
49 | "builtin-modules": {
50 | "version": "1.1.1",
51 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
52 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
53 | "dev": true
54 | },
55 | "chalk": {
56 | "version": "2.1.0",
57 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
58 | "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==",
59 | "dev": true,
60 | "requires": {
61 | "ansi-styles": "3.2.0",
62 | "escape-string-regexp": "1.0.5",
63 | "supports-color": "4.4.0"
64 | }
65 | },
66 | "color-convert": {
67 | "version": "1.9.0",
68 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz",
69 | "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=",
70 | "dev": true,
71 | "requires": {
72 | "color-name": "1.1.3"
73 | }
74 | },
75 | "color-name": {
76 | "version": "1.1.3",
77 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
78 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
79 | "dev": true
80 | },
81 | "concat-map": {
82 | "version": "0.0.1",
83 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
84 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
85 | "dev": true
86 | },
87 | "core-util-is": {
88 | "version": "1.0.2",
89 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
90 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
91 | "dev": true
92 | },
93 | "cross-spawn": {
94 | "version": "5.1.0",
95 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
96 | "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
97 | "dev": true,
98 | "requires": {
99 | "lru-cache": "4.1.1",
100 | "shebang-command": "1.2.0",
101 | "which": "1.3.0"
102 | }
103 | },
104 | "define-properties": {
105 | "version": "1.1.2",
106 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz",
107 | "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=",
108 | "dev": true,
109 | "requires": {
110 | "foreach": "2.0.5",
111 | "object-keys": "1.0.11"
112 | }
113 | },
114 | "duplexer": {
115 | "version": "0.1.1",
116 | "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
117 | "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
118 | "dev": true
119 | },
120 | "error-ex": {
121 | "version": "1.3.1",
122 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
123 | "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
124 | "dev": true,
125 | "requires": {
126 | "is-arrayish": "0.2.1"
127 | }
128 | },
129 | "es-abstract": {
130 | "version": "1.8.2",
131 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.8.2.tgz",
132 | "integrity": "sha512-dvhwFL3yjQxNNsOWx6exMlaDrRHCRGMQlnx5lsXDCZ/J7G/frgIIl94zhZSp/galVAYp7VzPi1OrAHta89/yGQ==",
133 | "dev": true,
134 | "requires": {
135 | "es-to-primitive": "1.1.1",
136 | "function-bind": "1.1.1",
137 | "has": "1.0.1",
138 | "is-callable": "1.1.3",
139 | "is-regex": "1.0.4"
140 | }
141 | },
142 | "es-to-primitive": {
143 | "version": "1.1.1",
144 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz",
145 | "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=",
146 | "dev": true,
147 | "requires": {
148 | "is-callable": "1.1.3",
149 | "is-date-object": "1.0.1",
150 | "is-symbol": "1.0.1"
151 | }
152 | },
153 | "escape-string-regexp": {
154 | "version": "1.0.5",
155 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
156 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
157 | "dev": true
158 | },
159 | "event-stream": {
160 | "version": "3.3.4",
161 | "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz",
162 | "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=",
163 | "dev": true,
164 | "requires": {
165 | "duplexer": "0.1.1",
166 | "from": "0.1.7",
167 | "map-stream": "0.1.0",
168 | "pause-stream": "0.0.11",
169 | "split": "0.3.3",
170 | "stream-combiner": "0.0.4",
171 | "through": "2.3.8"
172 | }
173 | },
174 | "foreach": {
175 | "version": "2.0.5",
176 | "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
177 | "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
178 | "dev": true
179 | },
180 | "from": {
181 | "version": "0.1.7",
182 | "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz",
183 | "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=",
184 | "dev": true
185 | },
186 | "function-bind": {
187 | "version": "1.1.1",
188 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
189 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
190 | "dev": true
191 | },
192 | "graceful-fs": {
193 | "version": "4.1.11",
194 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
195 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
196 | "dev": true
197 | },
198 | "has": {
199 | "version": "1.0.1",
200 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
201 | "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=",
202 | "dev": true,
203 | "requires": {
204 | "function-bind": "1.1.1"
205 | }
206 | },
207 | "has-flag": {
208 | "version": "2.0.0",
209 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
210 | "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
211 | "dev": true
212 | },
213 | "hosted-git-info": {
214 | "version": "2.5.0",
215 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz",
216 | "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==",
217 | "dev": true
218 | },
219 | "inherits": {
220 | "version": "2.0.3",
221 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
222 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
223 | "dev": true
224 | },
225 | "is-arrayish": {
226 | "version": "0.2.1",
227 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
228 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
229 | "dev": true
230 | },
231 | "is-builtin-module": {
232 | "version": "1.0.0",
233 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
234 | "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
235 | "dev": true,
236 | "requires": {
237 | "builtin-modules": "1.1.1"
238 | }
239 | },
240 | "is-callable": {
241 | "version": "1.1.3",
242 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz",
243 | "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=",
244 | "dev": true
245 | },
246 | "is-date-object": {
247 | "version": "1.0.1",
248 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
249 | "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
250 | "dev": true
251 | },
252 | "is-regex": {
253 | "version": "1.0.4",
254 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
255 | "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
256 | "dev": true,
257 | "requires": {
258 | "has": "1.0.1"
259 | }
260 | },
261 | "is-symbol": {
262 | "version": "1.0.1",
263 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz",
264 | "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=",
265 | "dev": true
266 | },
267 | "isarray": {
268 | "version": "0.0.1",
269 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
270 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
271 | "dev": true
272 | },
273 | "isexe": {
274 | "version": "2.0.0",
275 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
276 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
277 | "dev": true
278 | },
279 | "jsonify": {
280 | "version": "0.0.0",
281 | "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
282 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
283 | "dev": true
284 | },
285 | "load-json-file": {
286 | "version": "2.0.0",
287 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
288 | "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
289 | "dev": true,
290 | "requires": {
291 | "graceful-fs": "4.1.11",
292 | "parse-json": "2.2.0",
293 | "pify": "2.3.0",
294 | "strip-bom": "3.0.0"
295 | }
296 | },
297 | "lru-cache": {
298 | "version": "4.1.1",
299 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz",
300 | "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==",
301 | "dev": true,
302 | "requires": {
303 | "pseudomap": "1.0.2",
304 | "yallist": "2.1.2"
305 | }
306 | },
307 | "map-stream": {
308 | "version": "0.1.0",
309 | "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz",
310 | "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=",
311 | "dev": true
312 | },
313 | "memory-streams": {
314 | "version": "0.1.2",
315 | "resolved": "https://registry.npmjs.org/memory-streams/-/memory-streams-0.1.2.tgz",
316 | "integrity": "sha1-Jz/3d6tg/sWZsRY1UlUoLMosUMI=",
317 | "dev": true,
318 | "requires": {
319 | "readable-stream": "1.0.34"
320 | }
321 | },
322 | "minimatch": {
323 | "version": "3.0.4",
324 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
325 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
326 | "dev": true,
327 | "requires": {
328 | "brace-expansion": "1.1.8"
329 | }
330 | },
331 | "normalize-package-data": {
332 | "version": "2.4.0",
333 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
334 | "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
335 | "dev": true,
336 | "requires": {
337 | "hosted-git-info": "2.5.0",
338 | "is-builtin-module": "1.0.0",
339 | "semver": "5.4.1",
340 | "validate-npm-package-license": "3.0.1"
341 | }
342 | },
343 | "npm-run-all": {
344 | "version": "4.1.1",
345 | "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.1.tgz",
346 | "integrity": "sha512-qrmqqaJa+REbzUTIL/mHfTdgwz+gL1xUezY/ueyLa7GISZ4T3h0CH8D2r6AaZdCYN2unu7PzspP0ofpXla1ftg==",
347 | "dev": true,
348 | "requires": {
349 | "ansi-styles": "3.2.0",
350 | "chalk": "2.1.0",
351 | "cross-spawn": "5.1.0",
352 | "memory-streams": "0.1.2",
353 | "minimatch": "3.0.4",
354 | "ps-tree": "1.1.0",
355 | "read-pkg": "2.0.0",
356 | "shell-quote": "1.6.1",
357 | "string.prototype.padend": "3.0.0"
358 | }
359 | },
360 | "object-keys": {
361 | "version": "1.0.11",
362 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz",
363 | "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=",
364 | "dev": true
365 | },
366 | "parse-json": {
367 | "version": "2.2.0",
368 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
369 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
370 | "dev": true,
371 | "requires": {
372 | "error-ex": "1.3.1"
373 | }
374 | },
375 | "path-type": {
376 | "version": "2.0.0",
377 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
378 | "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
379 | "dev": true,
380 | "requires": {
381 | "pify": "2.3.0"
382 | }
383 | },
384 | "pause-stream": {
385 | "version": "0.0.11",
386 | "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz",
387 | "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=",
388 | "dev": true,
389 | "requires": {
390 | "through": "2.3.8"
391 | }
392 | },
393 | "pify": {
394 | "version": "2.3.0",
395 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
396 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
397 | "dev": true
398 | },
399 | "ps-tree": {
400 | "version": "1.1.0",
401 | "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz",
402 | "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=",
403 | "dev": true,
404 | "requires": {
405 | "event-stream": "3.3.4"
406 | }
407 | },
408 | "pseudomap": {
409 | "version": "1.0.2",
410 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
411 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
412 | "dev": true
413 | },
414 | "read-pkg": {
415 | "version": "2.0.0",
416 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
417 | "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
418 | "dev": true,
419 | "requires": {
420 | "load-json-file": "2.0.0",
421 | "normalize-package-data": "2.4.0",
422 | "path-type": "2.0.0"
423 | }
424 | },
425 | "readable-stream": {
426 | "version": "1.0.34",
427 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
428 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
429 | "dev": true,
430 | "requires": {
431 | "core-util-is": "1.0.2",
432 | "inherits": "2.0.3",
433 | "isarray": "0.0.1",
434 | "string_decoder": "0.10.31"
435 | }
436 | },
437 | "semver": {
438 | "version": "5.4.1",
439 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
440 | "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
441 | "dev": true
442 | },
443 | "shebang-command": {
444 | "version": "1.2.0",
445 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
446 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
447 | "dev": true,
448 | "requires": {
449 | "shebang-regex": "1.0.0"
450 | }
451 | },
452 | "shebang-regex": {
453 | "version": "1.0.0",
454 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
455 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
456 | "dev": true
457 | },
458 | "shell-quote": {
459 | "version": "1.6.1",
460 | "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
461 | "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
462 | "dev": true,
463 | "requires": {
464 | "array-filter": "0.0.1",
465 | "array-map": "0.0.0",
466 | "array-reduce": "0.0.0",
467 | "jsonify": "0.0.0"
468 | }
469 | },
470 | "source-map-loader": {
471 | "version": "0.1.5",
472 | "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.1.5.tgz",
473 | "integrity": "sha1-DsbKWKoOYUY6KGc91MSei6Z9xxg=",
474 | "dev": true,
475 | "requires": {
476 | "async": "0.9.2",
477 | "loader-utils": "0.2.12",
478 | "source-map": "0.1.43"
479 | },
480 | "dependencies": {
481 | "async": {
482 | "version": "0.9.2",
483 | "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
484 | "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=",
485 | "dev": true
486 | },
487 | "loader-utils": {
488 | "version": "0.2.12",
489 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.12.tgz",
490 | "integrity": "sha1-+qKlAVY6PCyd2leqjDnYvmKN56I=",
491 | "dev": true,
492 | "requires": {
493 | "big.js": "3.1.3",
494 | "json5": "0.4.0"
495 | },
496 | "dependencies": {
497 | "big.js": {
498 | "version": "3.1.3",
499 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz",
500 | "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=",
501 | "dev": true
502 | },
503 | "json5": {
504 | "version": "0.4.0",
505 | "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz",
506 | "integrity": "sha1-BUNS5MTIDIbAkjh31EneF2pzLI0=",
507 | "dev": true
508 | }
509 | }
510 | },
511 | "source-map": {
512 | "version": "0.1.43",
513 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
514 | "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
515 | "dev": true,
516 | "requires": {
517 | "amdefine": "1.0.0"
518 | },
519 | "dependencies": {
520 | "amdefine": {
521 | "version": "1.0.0",
522 | "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz",
523 | "integrity": "sha1-/RdHRwDLXMnCtwnwvp0jzjwZjDM=",
524 | "dev": true
525 | }
526 | }
527 | }
528 | }
529 | },
530 | "spdx-correct": {
531 | "version": "1.0.2",
532 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz",
533 | "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=",
534 | "dev": true,
535 | "requires": {
536 | "spdx-license-ids": "1.2.2"
537 | }
538 | },
539 | "spdx-expression-parse": {
540 | "version": "1.0.4",
541 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz",
542 | "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=",
543 | "dev": true
544 | },
545 | "spdx-license-ids": {
546 | "version": "1.2.2",
547 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz",
548 | "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=",
549 | "dev": true
550 | },
551 | "split": {
552 | "version": "0.3.3",
553 | "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz",
554 | "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=",
555 | "dev": true,
556 | "requires": {
557 | "through": "2.3.8"
558 | }
559 | },
560 | "stream-combiner": {
561 | "version": "0.0.4",
562 | "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz",
563 | "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=",
564 | "dev": true,
565 | "requires": {
566 | "duplexer": "0.1.1"
567 | }
568 | },
569 | "string_decoder": {
570 | "version": "0.10.31",
571 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
572 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
573 | "dev": true
574 | },
575 | "string.prototype.padend": {
576 | "version": "3.0.0",
577 | "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz",
578 | "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=",
579 | "dev": true,
580 | "requires": {
581 | "define-properties": "1.1.2",
582 | "es-abstract": "1.8.2",
583 | "function-bind": "1.1.1"
584 | }
585 | },
586 | "strip-bom": {
587 | "version": "3.0.0",
588 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
589 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
590 | "dev": true
591 | },
592 | "supports-color": {
593 | "version": "4.4.0",
594 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
595 | "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
596 | "dev": true,
597 | "requires": {
598 | "has-flag": "2.0.0"
599 | }
600 | },
601 | "through": {
602 | "version": "2.3.8",
603 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
604 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
605 | "dev": true
606 | },
607 | "validate-npm-package-license": {
608 | "version": "3.0.1",
609 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz",
610 | "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=",
611 | "dev": true,
612 | "requires": {
613 | "spdx-correct": "1.0.2",
614 | "spdx-expression-parse": "1.0.4"
615 | }
616 | },
617 | "which": {
618 | "version": "1.3.0",
619 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
620 | "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
621 | "dev": true,
622 | "requires": {
623 | "isexe": "2.0.0"
624 | }
625 | },
626 | "yallist": {
627 | "version": "2.1.2",
628 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
629 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
630 | "dev": true
631 | }
632 | }
633 | }
634 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "purescript-sourcemap-test",
3 | "private": true,
4 | "scripts": {
5 | "install": "bower install && npm run build-all",
6 | "build": "pulp build -- --source-maps",
7 | "build-all": "run-s build webpack browserify bundle",
8 | "webpack": "webpack",
9 | "browserify": "run-s browserify:*",
10 | "browserify:build": "browserify --debug .browserify.js -o browserify.js",
11 | "browserify:sorcery": "sorcery -i browserify.js",
12 | "bundle": "run-s bundle:*",
13 | "bundle:purs":
14 | "purs bundle output/*/*.js -m Main --main Main -o bundle.js --source-maps",
15 | "bundle:sorcery": "sorcery -i bundle.js"
16 | },
17 | "author": "Nicholas Wolverson",
18 | "license": "ISC",
19 | "devDependencies": {
20 | "bower": "^1.8.2",
21 | "browserify": "^14.5.0",
22 | "npm-run-all": "^4.1.1",
23 | "pulp": "^12.0.1",
24 | "purescript": "^0.11.6",
25 | "sorcery": "^0.10.0",
26 | "source-map-loader": "^0.1.5",
27 | "webpack": "^1.15.0"
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/.webpack.js:
--------------------------------------------------------------------------------
1 | require('Main').main();
2 |
--------------------------------------------------------------------------------
/src/Main.purs:
--------------------------------------------------------------------------------
1 | module Main where
2 |
3 | import Prelude
4 | import Control.Monad.Eff (Eff)
5 | import Control.Monad.Eff.Console (CONSOLE, log)
6 |
7 | -- Split onto multiple lines with lambdas to show setting a breakpoint on lambda
8 | say :: forall e. String -> String -> String -> Eff (console :: CONSOLE | e) Unit
9 | say a =
10 | \b ->
11 | \c -> do
12 | log
13 | (a <> b <> c)
14 |
15 | main :: forall e. Eff (console :: CONSOLE | e) Unit
16 | main = do
17 | say "Hello " "World " "!"
18 | say "Goodbye " "cruel " "world."
19 |
--------------------------------------------------------------------------------
/webpack.config.js:
--------------------------------------------------------------------------------
1 | var process = require('process');
2 | var path = require ('path');
3 | var srcs = ['src[]=bower_components/purescript-*/src/**/*.purs', 'src[]=src/**/*.purs'];
4 | var ffis = ['ffi[]=bower_components/purescript-*/src/**/*.js'];
5 |
6 |
7 | module.exports = {
8 | cache: true,
9 | context: path.resolve(process.cwd(), "src"),
10 | entry: "./.webpack.js",
11 | debug: true,
12 | devtool: "source-map",
13 | output: {
14 | path: process.cwd(),
15 | pathinfo: true,
16 | filename: "app.js"
17 | },
18 | module: {
19 | loaders: [
20 | {
21 | test: /\.js$/,
22 | loader: "source-map-loader"
23 | }
24 |
25 | ]
26 | },
27 | resolve: {
28 | modulesDirectories: [
29 | "node_modules",
30 | "output"
31 | ],
32 | extensions: [ "", ".js", ".purs" ]
33 | },
34 | resolveLoader: {
35 | root: path.resolve(__dirname, "node_modules")
36 | }
37 | };
38 |
--------------------------------------------------------------------------------
/webpack.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------