Skip to content

Commit 5cbedec

Browse files
authored
GLSP-1565: Publish browser workflow-server bundle (#132)
Add new `@eclipse-glsp-examples/workflow-server-bundled-web` package that publishes the pre-built webworker bundle with inline source maps. - Create `examples/workflow-server-bundled-web/` package - Update webpack config to output webworker bundle to the new package - Use inline source maps for the webworker target - Add browser bundle to root `bundle` script - Remove redundant "Bundle browser example" CI step Part of: eclipse-glsp/glsp#1656
1 parent 1492d67 commit 5cbedec

7 files changed

Lines changed: 349 additions & 7 deletions

File tree

.github/workflows/ci.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,6 @@ jobs:
2222
node-version: 22.x
2323
- name: Build
2424
run: yarn install
25-
- name: Bundle browser example
26-
working-directory: examples/workflow-server
27-
run: yarn bundle:browser
2825
- name: Check for uncommitted changes in yarn.lock
2926
run: |
3027
if git diff --name-only | grep -q "^yarn.lock"; then
Lines changed: 277 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,277 @@
1+
Eclipse Public License - v 2.0
2+
3+
THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
4+
PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION
5+
OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
6+
7+
1. DEFINITIONS
8+
9+
"Contribution" means:
10+
11+
a) in the case of the initial Contributor, the initial content
12+
Distributed under this Agreement, and
13+
14+
b) in the case of each subsequent Contributor:
15+
i) changes to the Program, and
16+
ii) additions to the Program;
17+
where such changes and/or additions to the Program originate from
18+
and are Distributed by that particular Contributor. A Contribution
19+
"originates" from a Contributor if it was added to the Program by
20+
such Contributor itself or anyone acting on such Contributor's behalf.
21+
Contributions do not include changes or additions to the Program that
22+
are not Modified Works.
23+
24+
"Contributor" means any person or entity that Distributes the Program.
25+
26+
"Licensed Patents" mean patent claims licensable by a Contributor which
27+
are necessarily infringed by the use or sale of its Contribution alone
28+
or when combined with the Program.
29+
30+
"Program" means the Contributions Distributed in accordance with this
31+
Agreement.
32+
33+
"Recipient" means anyone who receives the Program under this Agreement
34+
or any Secondary License (as applicable), including Contributors.
35+
36+
"Derivative Works" shall mean any work, whether in Source Code or other
37+
form, that is based on (or derived from) the Program and for which the
38+
editorial revisions, annotations, elaborations, or other modifications
39+
represent, as a whole, an original work of authorship.
40+
41+
"Modified Works" shall mean any work in Source Code or other form that
42+
results from an addition to, deletion from, or modification of the
43+
contents of the Program, including, for purposes of clarity any new file
44+
in Source Code form that contains any contents of the Program. Modified
45+
Works shall not include works that contain only declarations,
46+
interfaces, types, classes, structures, or files of the Program solely
47+
in each case in order to link to, bind by name, or subclass the Program
48+
or Modified Works thereof.
49+
50+
"Distribute" means the acts of a) distributing or b) making available
51+
in any manner that enables the transfer of a copy.
52+
53+
"Source Code" means the form of a Program preferred for making
54+
modifications, including but not limited to software source code,
55+
documentation source, and configuration files.
56+
57+
"Secondary License" means either the GNU General Public License,
58+
Version 2.0, or any later versions of that license, including any
59+
exceptions or additional permissions as identified by the initial
60+
Contributor.
61+
62+
2. GRANT OF RIGHTS
63+
64+
a) Subject to the terms of this Agreement, each Contributor hereby
65+
grants Recipient a non-exclusive, worldwide, royalty-free copyright
66+
license to reproduce, prepare Derivative Works of, publicly display,
67+
publicly perform, Distribute and sublicense the Contribution of such
68+
Contributor, if any, and such Derivative Works.
69+
70+
b) Subject to the terms of this Agreement, each Contributor hereby
71+
grants Recipient a non-exclusive, worldwide, royalty-free patent
72+
license under Licensed Patents to make, use, sell, offer to sell,
73+
import and otherwise transfer the Contribution of such Contributor,
74+
if any, in Source Code or other form. This patent license shall
75+
apply to the combination of the Contribution and the Program if, at
76+
the time the Contribution is added by the Contributor, such addition
77+
of the Contribution causes such combination to be covered by the
78+
Licensed Patents. The patent license shall not apply to any other
79+
combinations which include the Contribution. No hardware per se is
80+
licensed hereunder.
81+
82+
c) Recipient understands that although each Contributor grants the
83+
licenses to its Contributions set forth herein, no assurances are
84+
provided by any Contributor that the Program does not infringe the
85+
patent or other intellectual property rights of any other entity.
86+
Each Contributor disclaims any liability to Recipient for claims
87+
brought by any other entity based on infringement of intellectual
88+
property rights or otherwise. As a condition to exercising the
89+
rights and licenses granted hereunder, each Recipient hereby
90+
assumes sole responsibility to secure any other intellectual
91+
property rights needed, if any. For example, if a third party
92+
patent license is required to allow Recipient to Distribute the
93+
Program, it is Recipient's responsibility to acquire that license
94+
before distributing the Program.
95+
96+
d) Each Contributor represents that to its knowledge it has
97+
sufficient copyright rights in its Contribution, if any, to grant
98+
the copyright license set forth in this Agreement.
99+
100+
e) Notwithstanding the terms of any Secondary License, no
101+
Contributor makes additional grants to any Recipient (other than
102+
those set forth in this Agreement) as a result of such Recipient's
103+
receipt of the Program under the terms of a Secondary License
104+
(if permitted under the terms of Section 3).
105+
106+
3. REQUIREMENTS
107+
108+
3.1 If a Contributor Distributes the Program in any form, then:
109+
110+
a) the Program must also be made available as Source Code, in
111+
accordance with section 3.2, and the Contributor must accompany
112+
the Program with a statement that the Source Code for the Program
113+
is available under this Agreement, and informs Recipients how to
114+
obtain it in a reasonable manner on or through a medium customarily
115+
used for software exchange; and
116+
117+
b) the Contributor may Distribute the Program under a license
118+
different than this Agreement, provided that such license:
119+
i) effectively disclaims on behalf of all other Contributors all
120+
warranties and conditions, express and implied, including
121+
warranties or conditions of title and non-infringement, and
122+
implied warranties or conditions of merchantability and fitness
123+
for a particular purpose;
124+
125+
ii) effectively excludes on behalf of all other Contributors all
126+
liability for damages, including direct, indirect, special,
127+
incidental and consequential damages, such as lost profits;
128+
129+
iii) does not attempt to limit or alter the recipients' rights
130+
in the Source Code under section 3.2; and
131+
132+
iv) requires any subsequent distribution of the Program by any
133+
party to be under a license that satisfies the requirements
134+
of this section 3.
135+
136+
3.2 When the Program is Distributed as Source Code:
137+
138+
a) it must be made available under this Agreement, or if the
139+
Program (i) is combined with other material in a separate file or
140+
files made available under a Secondary License, and (ii) the initial
141+
Contributor attached to the Source Code the notice described in
142+
Exhibit A of this Agreement, then the Program may be made available
143+
under the terms of such Secondary Licenses, and
144+
145+
b) a copy of this Agreement must be included with each copy of
146+
the Program.
147+
148+
3.3 Contributors may not remove or alter any copyright, patent,
149+
trademark, attribution notices, disclaimers of warranty, or limitations
150+
of liability ("notices") contained within the Program from any copy of
151+
the Program which they Distribute, provided that Contributors may add
152+
their own appropriate notices.
153+
154+
4. COMMERCIAL DISTRIBUTION
155+
156+
Commercial distributors of software may accept certain responsibilities
157+
with respect to end users, business partners and the like. While this
158+
license is intended to facilitate the commercial use of the Program,
159+
the Contributor who includes the Program in a commercial product
160+
offering should do so in a manner which does not create potential
161+
liability for other Contributors. Therefore, if a Contributor includes
162+
the Program in a commercial product offering, such Contributor
163+
("Commercial Contributor") hereby agrees to defend and indemnify every
164+
other Contributor ("Indemnified Contributor") against any losses,
165+
damages and costs (collectively "Losses") arising from claims, lawsuits
166+
and other legal actions brought by a third party against the Indemnified
167+
Contributor to the extent caused by the acts or omissions of such
168+
Commercial Contributor in connection with its distribution of the Program
169+
in a commercial product offering. The obligations in this section do not
170+
apply to any claims or Losses relating to any actual or alleged
171+
intellectual property infringement. In order to qualify, an Indemnified
172+
Contributor must: a) promptly notify the Commercial Contributor in
173+
writing of such claim, and b) allow the Commercial Contributor to control,
174+
and cooperate with the Commercial Contributor in, the defense and any
175+
related settlement negotiations. The Indemnified Contributor may
176+
participate in any such claim at its own expense.
177+
178+
For example, a Contributor might include the Program in a commercial
179+
product offering, Product X. That Contributor is then a Commercial
180+
Contributor. If that Commercial Contributor then makes performance
181+
claims, or offers warranties related to Product X, those performance
182+
claims and warranties are such Commercial Contributor's responsibility
183+
alone. Under this section, the Commercial Contributor would have to
184+
defend claims against the other Contributors related to those performance
185+
claims and warranties, and if a court requires any other Contributor to
186+
pay any damages as a result, the Commercial Contributor must pay
187+
those damages.
188+
189+
5. NO WARRANTY
190+
191+
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT
192+
PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS"
193+
BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
194+
IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF
195+
TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR
196+
PURPOSE. Each Recipient is solely responsible for determining the
197+
appropriateness of using and distributing the Program and assumes all
198+
risks associated with its exercise of rights under this Agreement,
199+
including but not limited to the risks and costs of program errors,
200+
compliance with applicable laws, damage to or loss of data, programs
201+
or equipment, and unavailability or interruption of operations.
202+
203+
6. DISCLAIMER OF LIABILITY
204+
205+
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT
206+
PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS
207+
SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
208+
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
209+
PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
210+
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
211+
ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
212+
EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE
213+
POSSIBILITY OF SUCH DAMAGES.
214+
215+
7. GENERAL
216+
217+
If any provision of this Agreement is invalid or unenforceable under
218+
applicable law, it shall not affect the validity or enforceability of
219+
the remainder of the terms of this Agreement, and without further
220+
action by the parties hereto, such provision shall be reformed to the
221+
minimum extent necessary to make such provision valid and enforceable.
222+
223+
If Recipient institutes patent litigation against any entity
224+
(including a cross-claim or counterclaim in a lawsuit) alleging that the
225+
Program itself (excluding combinations of the Program with other software
226+
or hardware) infringes such Recipient's patent(s), then such Recipient's
227+
rights granted under Section 2(b) shall terminate as of the date such
228+
litigation is filed.
229+
230+
All Recipient's rights under this Agreement shall terminate if it
231+
fails to comply with any of the material terms or conditions of this
232+
Agreement and does not cure such failure in a reasonable period of
233+
time after becoming aware of such noncompliance. If all Recipient's
234+
rights under this Agreement terminate, Recipient agrees to cease use
235+
and distribution of the Program as soon as reasonably practicable.
236+
However, Recipient's obligations under this Agreement and any licenses
237+
granted by Recipient relating to the Program shall continue and survive.
238+
239+
Everyone is permitted to copy and distribute copies of this Agreement,
240+
but in order to avoid inconsistency the Agreement is copyrighted and
241+
may only be modified in the following manner. The Agreement Steward
242+
reserves the right to publish new versions (including revisions) of
243+
this Agreement from time to time. No one other than the Agreement
244+
Steward has the right to modify this Agreement. The Eclipse Foundation
245+
is the initial Agreement Steward. The Eclipse Foundation may assign the
246+
responsibility to serve as the Agreement Steward to a suitable separate
247+
entity. Each new version of the Agreement will be given a distinguishing
248+
version number. The Program (including Contributions) may always be
249+
Distributed subject to the version of the Agreement under which it was
250+
received. In addition, after a new version of the Agreement is published,
251+
Contributor may elect to Distribute the Program (including its
252+
Contributions) under the new version.
253+
254+
Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
255+
receives no rights or licenses to the intellectual property of any
256+
Contributor under this Agreement, whether expressly, by implication,
257+
estoppel or otherwise. All rights in the Program not expressly granted
258+
under this Agreement are reserved. Nothing in this Agreement is intended
259+
to be enforceable by any entity that is not a Contributor or Recipient.
260+
No third-party beneficiary rights are created under this Agreement.
261+
262+
Exhibit A - Form of Secondary Licenses Notice
263+
264+
"This Source Code may also be made available under the following
265+
Secondary Licenses when the conditions for such availability set forth
266+
in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
267+
version(s), and exceptions or additional permissions here}."
268+
269+
Simply including a copy of this Agreement, including this Exhibit A
270+
is not sufficient to license the Source Code under Secondary Licenses.
271+
272+
If it is not possible or desirable to put the notice in a particular
273+
file, then You may include the notice in a location (such as a LICENSE
274+
file in a relevant directory) where a recipient would be likely to
275+
look for such a notice.
276+
277+
You may add additional accurate notices of copyright ownership.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Eclipse GLSP - Workflow Example Server (bundled, web)
2+
3+
Provides a bundled version of the Workflow example server for web (webworker). This example server is used as dev example in GLSP projects.
4+
Note that this package provides the bundled file. If you are looking for the unbundled source code with type definitions check out
5+
[`@eclipse-glsp-examples/workflow-server`](https://www.npmjs.com/package/@eclipse-glsp-examples/workflow-server).
6+
7+
## Workflow Diagram Example
8+
9+
The workflow diagram is a consistent example provided by all GLSP components.
10+
The example implements a simple flow chart diagram editor with different types of nodes and edges (see screenshot below).
11+
The example can be used to try out different GLSP features, as well as several available integrations with IDE platforms (Theia, VSCode, Eclipse, Standalone).
12+
As the example is fully open source, you can also use it as a blueprint for a custom implementation of a GLSP diagram editor.
13+
See [our project website](https://www.eclipse.org/glsp/documentation/#workflowoverview) for an overview of the workflow example and all components implementing it.
14+
15+
<https://user-images.githubusercontent.com/588090/154459938-849ca684-11b3-472c-8a59-98ea6cb0b4c1.mp4>
16+
17+
## More information
18+
19+
For more information, please visit the [Eclipse GLSP Umbrella repository](https://github.com/eclipse-glsp/glsp) and the [Eclipse GLSP Website](https://www.eclipse.org/glsp/).
20+
If you have questions, please raise them in the [discussions](https://github.com/eclipse-glsp/glsp/discussions) and have a look at our [communication and support options](https://www.eclipse.org/glsp/contact/).
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
{
2+
"name": "@eclipse-glsp-examples/workflow-server-bundled-web",
3+
"version": "2.7.0-next",
4+
"description": "GLSP web server for the workflow example (bundled)",
5+
"keywords": [
6+
"eclipse",
7+
"graphics",
8+
"diagram",
9+
"modeling",
10+
"visualization",
11+
"glsp",
12+
"diagram editor"
13+
],
14+
"homepage": "https://www.eclipse.org/glsp/",
15+
"bugs": "https://github.com/eclipse-glsp/glsp/issues",
16+
"repository": {
17+
"type": "git",
18+
"url": "https://github.com/eclipse-glsp/glsp-server-node.git"
19+
},
20+
"license": "(EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0)",
21+
"author": {
22+
"name": "Eclipse GLSP"
23+
},
24+
"contributors": [
25+
{
26+
"name": "STMicroelectronics",
27+
"url": "https://www.st.com/"
28+
},
29+
{
30+
"name": "Eclipse GLSP Project",
31+
"email": "glsp-dev@eclipse.org",
32+
"url": "https://projects.eclipse.org/projects/ecd.glsp"
33+
}
34+
],
35+
"main": "./wf-glsp-server-webworker.js",
36+
"files": [
37+
"wf-glsp-server-webworker.js"
38+
],
39+
"scripts": {
40+
"clean": "rimraf wf-glsp-server-webworker.js"
41+
},
42+
"publishConfig": {
43+
"access": "public"
44+
}
45+
}

examples/workflow-server-bundled/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
"wf-glsp-server-node.js.map"
4242
],
4343
"scripts": {
44-
"clean": "rimraf wf-glsp-server-node.js wf-glsp-server-node.js.map wf-glsp-server-webworker.js wf-glsp-server-webworker.js.map",
44+
"clean": "rimraf wf-glsp-server-node.js wf-glsp-server-node.js.map",
4545
"start": "node --enable-source-maps ./wf-glsp-server-node.js --port 5007",
4646
"start:websocket": "node --enable-source-maps ./wf-glsp-server-node.js -w --port 8081",
4747
"watch": "tsc -w"

examples/workflow-server/webpack.config.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,23 @@
1616
const webpack = require('webpack');
1717
const path = require('path');
1818
const buildRoot = path.resolve(__dirname, 'lib');
19-
const appRoot = path.resolve(__dirname, '..', 'workflow-server-bundled');
2019

2120
module.exports = env => {
2221
const target = env.target ?? 'node';
2322
const pathToIndex = target !== 'node' ? 'browser/app' : 'node/app';
2423
const filename = `wf-glsp-server-${target}.js`;
24+
const appRoot =
25+
target !== 'node'
26+
? path.resolve(__dirname, '..', 'workflow-server-bundled-web')
27+
: path.resolve(__dirname, '..', 'workflow-server-bundled');
2528
return {
2629
entry: [path.resolve(buildRoot, pathToIndex)],
2730
output: {
2831
filename,
2932
path: appRoot
3033
},
3134
mode: 'development',
32-
devtool: 'source-map',
35+
devtool: target !== 'node' ? 'inline-source-map' : 'source-map',
3336
resolve: {
3437
extensions: ['.js']
3538
},

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"scripts": {
1010
"all": "yarn install && yarn lint && yarn test",
1111
"build": "yarn compile && yarn bundle",
12-
"bundle": "yarn --cwd examples/workflow-server bundle",
12+
"bundle": "yarn --cwd examples/workflow-server bundle && yarn --cwd examples/workflow-server bundle:browser",
1313
"check:all": "yarn install && yarn lint && yarn test && yarn format:check && yarn headers:check",
1414
"clean": "lerna run clean && rimraf coverage .nyc_output",
1515
"compile": "tsc -b",

0 commit comments

Comments
 (0)