Skip to content

Commit 91ee909

Browse files
Merge pull request #288 from swiftwasm/yt/bundle-it
Packaging Plugin
2 parents 2cd0a2c + f841174 commit 91ee909

Some content is hidden

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

50 files changed

+3302
-250
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,5 @@ node_modules
77
xcuserdata/
88
.swiftpm
99
.vscode
10+
Examples/*/Bundle
11+
Examples/*/package-lock.json

Examples/Basic/Package.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,5 @@ let package = Package(
1717
]
1818
)
1919
],
20-
swiftLanguageVersions: [.v5]
20+
swiftLanguageModes: [.v5]
2121
)

Examples/Basic/build.sh

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
#!/bin/bash
2-
swift build --swift-sdk "${SWIFT_SDK_ID:-wasm32-unknown-wasi}" -Xswiftc -Xclang-linker -Xswiftc -mexec-model=reactor -Xlinker --export=__main_argc_argv
2+
set -ex
3+
swift package --swift-sdk "${SWIFT_SDK_ID:-wasm32-unknown-wasi}" -c "${1:-debug}" js --use-cdn

Examples/Basic/index.html

+4-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@
66
</head>
77

88
<body>
9-
<script src="./index.js" type="module"></script>
9+
<script type="module">
10+
import { init } from "./.build/plugins/PackageToJS/outputs/Package/index.js";
11+
await init(fetch("./.build/plugins/PackageToJS/outputs/Package/main.wasm"));
12+
</script>
1013
</body>
1114

1215
</html>

Examples/Basic/index.js

-33
This file was deleted.

Examples/Embedded/_Runtime

-1
This file was deleted.

Examples/Embedded/build.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/bin/bash
22
package_dir="$(cd "$(dirname "$0")" && pwd)"
33
JAVASCRIPTKIT_EXPERIMENTAL_EMBEDDED_WASM=true \
4-
swift build --package-path "$package_dir" --product EmbeddedApp \
5-
-c release --triple wasm32-unknown-none-wasm
4+
swift package --package-path "$package_dir" \
5+
-c release --triple wasm32-unknown-none-wasm js

Examples/Embedded/index.html

+4-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@
66
</head>
77

88
<body>
9-
<script src="./index.js" type="module"></script>
9+
<script type="module">
10+
import { init } from "./.build/plugins/PackageToJS/outputs/Package/index.js";
11+
await init(fetch("./.build/plugins/PackageToJS/outputs/Package/main.wasm"));
12+
</script>
1013
</body>
1114

1215
</html>

Examples/Embedded/index.js

-33
This file was deleted.

Examples/Multithreading/Sources/JavaScript/index.js

-74
This file was deleted.

Examples/Multithreading/Sources/JavaScript/instantiate.js

-29
This file was deleted.

Examples/Multithreading/Sources/JavaScript/worker.js

-28
This file was deleted.

Examples/Multithreading/build.sh

+3-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
swift build --swift-sdk "${SWIFT_SDK_ID:-wasm32-unknown-wasip1-threads}" -Xswiftc -Xclang-linker -Xswiftc -mexec-model=reactor -Xlinker --export=__main_argc_argv -c release -Xswiftc -g
1+
swift package --swift-sdk "${SWIFT_SDK_ID:-wasm32-unknown-wasip1-threads}" -c release \
2+
plugin --allow-writing-to-package-directory \
3+
js --use-cdn --output ./Bundle

Examples/Multithreading/index.html

+18-15
Original file line numberDiff line numberDiff line change
@@ -27,25 +27,28 @@
2727
</head>
2828

2929
<body>
30-
<script type="module" src="Sources/JavaScript/index.js"></script>
30+
<script type="module">
31+
import { init } from "./Bundle/index.js"
32+
init(fetch(new URL("./Bundle/main.wasm", import.meta.url)));
33+
</script>
3134
<h1>Threading Example</h1>
3235
<p>
33-
<div>
34-
<label for="background">Background:</label>
35-
<input id="background" type="checkbox" checked>
36-
</div>
37-
<div>
38-
<label for="size">Size:</label>
39-
<input id="size" type="number" value="800">
40-
</div>
41-
<div>
42-
<label for="concurrency">Concurrency:</label>
43-
<input id="concurrency" type="number">
44-
<button id="render-button">Render</button>
45-
</div>
36+
<div>
37+
<label for="background">Background:</label>
38+
<input id="background" type="checkbox" checked>
39+
</div>
40+
<div>
41+
<label for="size">Size:</label>
42+
<input id="size" type="number" value="800">
43+
</div>
44+
<div>
45+
<label for="concurrency">Concurrency:</label>
46+
<input id="concurrency" type="number">
47+
<button id="render-button">Render</button>
48+
</div>
4649
</p>
4750
<p>
48-
<div id="loading-emoji" class="loading-emoji">🧵</div>
51+
<div id="loading-emoji" class="loading-emoji">🧵</div>
4952
</p>
5053
<p id="render-time"></p>
5154
<canvas id="canvas"></canvas>

Examples/OffscrenCanvas/build.sh

+3-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
swift build --swift-sdk "${SWIFT_SDK_ID:-wasm32-unknown-wasip1-threads}" -Xswiftc -Xclang-linker -Xswiftc -mexec-model=reactor -Xlinker --export=__main_argc_argv -c release -Xswiftc -g
1+
swift package --swift-sdk "${SWIFT_SDK_ID:-wasm32-unknown-wasip1-threads}" -c release \
2+
plugin --allow-writing-to-package-directory \
3+
js --use-cdn --output ./Bundle

Examples/OffscrenCanvas/index.html

+4-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,10 @@
6868
</head>
6969

7070
<body>
71-
<script type="module" src="Sources/JavaScript/index.js"></script>
71+
<script type="module">
72+
import { init } from "./Bundle/index.js"
73+
init(fetch(new URL("./Bundle/main.wasm", import.meta.url)));
74+
</script>
7275
<h1>OffscreenCanvas Example</h1>
7376
<p>
7477
<div>

Examples/OffscrenCanvas/serve.json

-1
This file was deleted.

Examples/OffscrenCanvas/serve.json

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"headers": [{
3+
"source": "**/*",
4+
"headers": [
5+
{
6+
"key": "Cross-Origin-Embedder-Policy",
7+
"value": "require-corp"
8+
}, {
9+
"key": "Cross-Origin-Opener-Policy",
10+
"value": "same-origin"
11+
}
12+
]
13+
}]
14+
}

Examples/Testing/.gitignore

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
.DS_Store
2+
/.build
3+
/Packages
4+
xcuserdata/
5+
DerivedData/
6+
.swiftpm/configuration/registries.json
7+
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
8+
.netrc

Examples/Testing/Package.swift

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// swift-tools-version: 6.0
2+
// The swift-tools-version declares the minimum version of Swift required to build this package.
3+
4+
import PackageDescription
5+
6+
let package = Package(
7+
name: "Counter",
8+
products: [
9+
// Products define the executables and libraries a package produces, making them visible to other packages.
10+
.library(
11+
name: "Counter",
12+
targets: ["Counter"]),
13+
],
14+
dependencies: [.package(name: "JavaScriptKit", path: "../../")],
15+
targets: [
16+
// Targets are the basic building blocks of a package, defining a module or a test suite.
17+
// Targets can depend on other targets in this package and products from dependencies.
18+
.target(
19+
name: "Counter",
20+
dependencies: [
21+
.product(name: "JavaScriptKit", package: "JavaScriptKit")
22+
]),
23+
.testTarget(
24+
name: "CounterTests",
25+
dependencies: ["Counter"]
26+
),
27+
]
28+
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
public struct Counter {
2+
public private(set) var count = 0
3+
4+
public mutating func increment() {
5+
count += 1
6+
}
7+
}

0 commit comments

Comments
 (0)