Skip to content

Commit 1c72887

Browse files
authored
Merge pull request #2211 from finos/emsdk-update
Remove `umd` builds from all packages
2 parents 78268e2 + f687c20 commit 1c72887

File tree

84 files changed

+585
-1138
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+585
-1138
lines changed

.prettierrc.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
{
55
"files": ["*.html"],
66
"options": {
7-
"printWidth": 200
7+
"printWidth": 200,
8+
"tabWidth": 4
89
}
910
}
1011
]

cpp/perspective/CMakeLists.txt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ elseif(PSP_CPP_BUILD OR PSP_PYTHON_BUILD)
265265
else()
266266
set(OPT_FLAGS " \
267267
-O3 \
268-
-g0 \
268+
-g1 \
269269
")
270270
endif()
271271
endif()
@@ -514,14 +514,12 @@ if(PSP_WASM_BUILD)
514514
--source-map-base \"\" \
515515
--memory-init-file 0 \
516516
--no-entry \
517-
-s EXPORT_ES6=1 \
518517
-s NO_EXIT_RUNTIME=1 \
519518
-s NO_FILESYSTEM=1 \
520519
-s ALLOW_MEMORY_GROWTH=1 \
521520
-s MODULARIZE=1 \
522521
-s EXPORT_NAME=\"load_perspective\" \
523522
-s MAXIMUM_MEMORY=4gb \
524-
-s USE_ES6_IMPORT_META=0 \
525523
-s ERROR_ON_UNDEFINED_SYMBOLS=1 \
526524
")
527525

@@ -534,8 +532,16 @@ if(PSP_WASM_BUILD)
534532
add_executable(perspective_cjs src/cpp/emscripten.cpp)
535533
target_link_libraries(perspective_cjs psp)
536534
target_compile_definitions(perspective_cjs PRIVATE PSP_ENABLE_WASM=1)
537-
set_target_properties(perspective_cjs PROPERTIES RUNTIME_OUTPUT_DIRECTORY "./esm/")
535+
target_link_options(perspective_cjs PUBLIC -sENVIRONMENT="node" -sUSE_ES6_IMPORT_META=0 -sEXPORT_ES6=0)
536+
set_target_properties(perspective_cjs PROPERTIES RUNTIME_OUTPUT_DIRECTORY "./node/")
538537
set_target_properties(perspective_cjs PROPERTIES OUTPUT_NAME "perspective.cpp")
538+
539+
add_executable(perspective_esm src/cpp/emscripten.cpp)
540+
target_link_libraries(perspective_esm psp)
541+
target_compile_definitions(perspective_esm PRIVATE PSP_ENABLE_WASM=1)
542+
target_link_options(perspective_esm PUBLIC -sENVIRONMENT="web" -sUSE_ES6_IMPORT_META=1 -sEXPORT_ES6=1)
543+
set_target_properties(perspective_esm PROPERTIES RUNTIME_OUTPUT_DIRECTORY "./web/")
544+
set_target_properties(perspective_esm PROPERTIES OUTPUT_NAME "perspective.cpp")
539545
elseif(PSP_CPP_BUILD OR PSP_PYTHON_BUILD)
540546
if(NOT WIN32)
541547
set(CMAKE_SHARED_LIBRARY_SUFFIX .so)

cpp/perspective/build.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,16 @@ try {
2121
cwd,
2222
stdio,
2323
});
24-
execSync(`cpy esm/**/* ../esm`, { cwd, stdio });
24+
execSync(`cpy web/**/* ../web`, { cwd, stdio });
25+
execSync(`cpy node/**/* ../node`, { cwd, stdio });
2526

26-
const wasm = fs.readFileSync("dist/esm/perspective.cpp.wasm");
27+
const wasm = fs.readFileSync("dist/web/perspective.cpp.wasm");
2728
const compressed = fflate.compressSync(wasm);
28-
fs.writeFileSync("dist/esm/perspective.cpp.wasm", compressed);
29+
fs.writeFileSync("dist/web/perspective.cpp.wasm", compressed);
30+
31+
const wasm2 = fs.readFileSync("dist/node/perspective.cpp.wasm");
32+
const compressed2 = fflate.compressSync(wasm2);
33+
fs.writeFileSync("dist/node/perspective.cpp.wasm", compressed2);
2934
} catch (e) {
3035
console.error(e);
3136
process.exit(1);

cpp/perspective/src/include/perspective/base.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -431,8 +431,15 @@ struct PERSPECTIVE_EXPORT t_cmp_charptr {
431431
}
432432
};
433433

434+
template <class Arg1, class Arg2, class Result>
435+
struct binary_function {
436+
using first_argument_type = Arg1;
437+
using second_argument_type = Arg2;
438+
using result_type = Result;
439+
};
440+
434441
struct t_cchar_umap_cmp
435-
: public std::binary_function<const char*, const char*, bool> {
442+
: public binary_function<const char*, const char*, bool> {
436443
inline bool
437444
operator()(const char* x, const char* y) const {
438445
return strcmp(x, y) == 0;

docs/build.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -101,10 +101,9 @@ function template(is_dark) {
101101
<html>
102102
<head>
103103
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
104-
<script src="/node_modules/@finos/perspective/dist/umd/perspective.js"></script>
105-
<script src="/node_modules/@finos/perspective-viewer/dist/umd/perspective-viewer.js"></script>
106-
<script src="/node_modules/@finos/perspective-viewer-datagrid/dist/umd/perspective-viewer-datagrid.js"></script>
107-
<script src="/node_modules/@finos/perspective-viewer-d3fc/dist/umd/perspective-viewer-d3fc.js"></script>
104+
<script type="module" src="/node_modules/@finos/perspective-viewer/dist/cdn/perspective-viewer.js"></script>
105+
<script type="module" src="/node_modules/@finos/perspective-viewer-datagrid/dist/cdn/perspective-viewer-datagrid.js"></script>
106+
<script type="module" src="/node_modules/@finos/perspective-viewer-d3fc/dist/cdn/perspective-viewer-d3fc.js"></script>
108107
<link rel='stylesheet' href="/node_modules/@finos/perspective-viewer/dist/css/pro${
109108
is_dark ? "-dark" : ""
110109
}.css">
@@ -124,7 +123,8 @@ function template(is_dark) {
124123
<body>
125124
<perspective-viewer editable>
126125
</perspective-viewer>
127-
<script>
126+
<script type="module">
127+
import perspective from "/node_modules/@finos/perspective/dist/cdn/perspective.js";
128128
const WORKER = window.perspective.worker();
129129
async function on_load() {
130130
var el = document.getElementsByTagName('perspective-viewer')[0];

docs/docs/js.md

Lines changed: 1 addition & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -119,50 +119,12 @@ Perspective can be loaded directly from most CDNs, such as
119119
[jsdelivr.com](https://www.jsdelivr.com/package/npm/@finos/perspective-viewer),
120120
which is the easiest way to get started with Perspective in the browser, and
121121
perfect for spinning up quick instances of `perspective-viewer` without
122-
installing or bundling. There are two supported builds you may use, a UMD build
123-
and a `type="module"` ESM build.
122+
installing or bundling.
124123

125124
While CDNs are great for development builds and small apps, for production usage
126125
you should incorporate Perspective into your application with a bundler like
127126
`Webpack`, described above.
128127

129-
#### UMD
130-
131-
This build is equivalent to the _inline_ build described above, and contains all
132-
JavaScript, CSS, WebAssembly and WebWorker assets bundled in a single `.js`
133-
file. To use the UMD build from a `jsdelivr.com`, add these scripts to
134-
your `.html`'s `<head>` section:
135-
136-
```html
137-
<script src="https://cdn.jsdelivr.net/npm/@finos/perspective"></script>
138-
<script src="https://cdn.jsdelivr.net/npm/@finos/perspective-viewer"></script>
139-
<script src="https://cdn.jsdelivr.net/npm/@finos/perspective-viewer-datagrid"></script>
140-
<script src="https://cdn.jsdelivr.net/npm/@finos/perspective-viewer-d3fc"></script>
141-
142-
<link
143-
rel="stylesheet"
144-
crossorigin="anonymous"
145-
href="https://cdn.jsdelivr.net/npm/@finos/perspective-viewer/dist/css/pro.css"
146-
/>
147-
```
148-
149-
Once added to your page, you can access the engine's JavaScript API through the
150-
`perspective` symbol and the browser's Custom Elements API:
151-
152-
```html
153-
<script>
154-
const worker = window.perspective.worker();
155-
const table = await worker.table({ A: [1, 2, 3] });
156-
const view = await table.view({ sort: [["A", "desc"]] });
157-
158-
const viewer = document.createElement("perspective-viewer");
159-
viewer.load(table);
160-
document.body.appendChild(viewer);
161-
</script>
162-
```
163-
164-
#### ESM
165-
166128
This build separates out Perspective's JavaScript, WebAssembly and various
167129
assets into individual files, allowing the browser to load them lazily, in
168130
parallel or not at all if needed. To use this build, you must include the

examples/blocks/index.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,6 @@ const version = JSON.parse(fs.readFileSync("./package.json")).version;
99
// directly to the assets.
1010
const replacements = {
1111
"/node_modules/": `https://cdn.jsdelivr.net/npm/`,
12-
"perspective/dist/umd/perspective.js": `perspective@${version}`,
13-
"perspective-viewer/dist/umd/perspective-viewer.js": `perspective-viewer@${version}`,
14-
"perspective-viewer-datagrid/dist/umd/perspective-viewer-datagrid.js": `perspective-viewer-datagrid@${version}`,
15-
"perspective-viewer-d3fc/dist/umd/perspective-viewer-d3fc.js": `perspective-viewer-d3fc@${version}`,
16-
"perspective-workspace/dist/umd/perspective-workspace.js": `perspective-workspace@${version}`,
1712
"perspective/dist/cdn/perspective.js": `perspective@${version}/dist/cdn/perspective.js`,
1813
"perspective-viewer/dist/cdn/perspective-viewer.js": `perspective-viewer@${version}/dist/cdn/perspective-viewer.js`,
1914
"perspective-viewer-datagrid/dist/cdn/perspective-viewer-datagrid.js": `perspective-viewer-datagrid@${version}/dist/cdn/perspective-viewer-datagrid.js`,

examples/blocks/src/citibike/citibike.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import perspective from "/node_modules/@finos/perspective/dist/cdn/perspective.js";
2+
13
// Quick wrapper function for making a GET call.
24
function get(url) {
35
return new Promise((resolve) => {

examples/blocks/src/citibike/index.html

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,18 @@
11
<html>
22
<head>
3-
<meta
4-
name="viewport"
5-
content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no"
6-
/>
3+
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no" />
74

8-
<link
9-
rel="stylesheet"
10-
crossorigin="anonymous"
11-
href="/node_modules/@finos/perspective-workspace/dist/css/pro.css"
12-
/>
5+
<link rel="stylesheet" crossorigin="anonymous" href="/node_modules/@finos/perspective-viewer/dist/css/pro.css" />
6+
<link rel="stylesheet" crossorigin="anonymous" href="/node_modules/@finos/perspective-workspace/dist/css/pro.css" />
137
<link rel="stylesheet" href="index.css" />
148

15-
<script src="/node_modules/@finos/perspective-workspace/dist/umd/perspective-workspace.js"></script>
16-
<script src="/node_modules/@finos/perspective-viewer-datagrid/dist/umd/perspective-viewer-datagrid.js"></script>
17-
<script src="/node_modules/@finos/perspective-viewer-d3fc/dist/umd/perspective-viewer-d3fc.js"></script>
18-
<script src="/node_modules/@finos/perspective-viewer-openlayers/dist/umd/perspective-viewer-openlayers.js"></script>
19-
<script src="/node_modules/@finos/perspective/dist/umd/perspective.js"></script>
9+
<script type="module" src="/node_modules/@finos/perspective-viewer/dist/cdn/perspective-viewer.js"></script>
10+
<script type="module" src="/node_modules/@finos/perspective-workspace/dist/cdn/perspective-workspace.js"></script>
11+
<script type="module" src="/node_modules/@finos/perspective-viewer-datagrid/dist/cdn/perspective-viewer-datagrid.js"></script>
12+
<script type="module" src="/node_modules/@finos/perspective-viewer-d3fc/dist/cdn/perspective-viewer-d3fc.js"></script>
13+
<script type="module" src="/node_modules/@finos/perspective-viewer-openlayers/dist/cdn/perspective-viewer-openlayers.js"></script>
2014

21-
<script src="citibike.js"></script>
15+
<script type="module" src="citibike.js"></script>
2216

2317
<style>
2418
body {

examples/blocks/src/csv/csv.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
import perspective from "/node_modules/@finos/perspective/dist/cdn/perspective.js";
2+
13
window.addEventListener("DOMContentLoaded", function () {
2-
const worker = window.perspective.worker();
4+
const worker = perspective.worker();
35

46
// Get `dropArea` element from the DOM.
57
var dropArea = document.getElementById("drop-area");

0 commit comments

Comments
 (0)