@swiftbrowser/cli 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +330 -64
- package/dist/assetSymbols.d.ts +25 -0
- package/dist/assetSymbols.js +218 -0
- package/dist/assetSymbols.js.map +1 -0
- package/dist/build.d.ts +17 -2
- package/dist/build.js +40 -13
- package/dist/build.js.map +1 -1
- package/dist/buildSettings.d.ts +15 -0
- package/dist/buildSettings.js +74 -0
- package/dist/buildSettings.js.map +1 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.js +60 -11
- package/dist/cli.js.map +1 -1
- package/dist/commands/build.js +6 -5
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/check.js +2 -2
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/dev.d.ts +5 -2
- package/dist/commands/dev.js +19 -13
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/init.d.ts +18 -0
- package/dist/commands/init.js +57 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/kit.d.ts +3 -0
- package/dist/commands/kit.js +21 -0
- package/dist/commands/kit.js.map +1 -0
- package/dist/commands/shared.d.ts +25 -4
- package/dist/commands/shared.js +104 -10
- package/dist/commands/shared.js.map +1 -1
- package/dist/compat.d.ts +44 -6
- package/dist/compat.js +64 -36
- package/dist/compat.js.map +1 -1
- package/dist/config.d.ts +48 -10
- package/dist/config.js +64 -8
- package/dist/config.js.map +1 -1
- package/dist/coreml.d.ts +194 -0
- package/dist/coreml.js +626 -0
- package/dist/coreml.js.map +1 -0
- package/dist/icu.d.ts +17 -4
- package/dist/icu.js +32 -18
- package/dist/icu.js.map +1 -1
- package/dist/kit.d.ts +133 -0
- package/dist/kit.js +403 -0
- package/dist/kit.js.map +1 -0
- package/dist/objc.d.ts +31 -0
- package/dist/objc.js +319 -0
- package/dist/objc.js.map +1 -0
- package/dist/packagePatches.d.ts +24 -0
- package/dist/packagePatches.js +107 -0
- package/dist/packagePatches.js.map +1 -0
- package/dist/packages.d.ts +59 -0
- package/dist/packages.js +149 -0
- package/dist/packages.js.map +1 -0
- package/dist/project.d.ts +45 -4
- package/dist/project.js +91 -18
- package/dist/project.js.map +1 -1
- package/dist/protobuf.d.ts +62 -0
- package/dist/protobuf.js +233 -0
- package/dist/protobuf.js.map +1 -0
- package/dist/stage.d.ts +155 -27
- package/dist/stage.js +483 -79
- package/dist/stage.js.map +1 -1
- package/dist/strings.d.ts +44 -0
- package/dist/strings.js +386 -0
- package/dist/strings.js.map +1 -0
- package/dist/template.d.ts +29 -0
- package/dist/template.js +438 -0
- package/dist/template.js.map +1 -0
- package/dist/threadStacks.d.ts +14 -0
- package/dist/threadStacks.js +78 -0
- package/dist/threadStacks.js.map +1 -0
- package/dist/toolchain.d.ts +7 -1
- package/dist/toolchain.js +8 -2
- package/dist/toolchain.js.map +1 -1
- package/dist/urlSchemes.d.ts +11 -0
- package/dist/urlSchemes.js +58 -0
- package/dist/urlSchemes.js.map +1 -0
- package/dist/vendor.d.ts +109 -0
- package/dist/vendor.js +440 -0
- package/dist/vendor.js.map +1 -0
- package/dist/wasm.d.ts +28 -0
- package/dist/wasm.js +84 -0
- package/dist/wasm.js.map +1 -0
- package/package.json +7 -6
package/dist/template.js
ADDED
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
// The new-project template behind `swiftbrowser init`: an iOS SwiftUI app as
|
|
2
|
+
// Xcode 16's App template lays it out (one target, a synchronized folder, an
|
|
3
|
+
// asset catalog), so the same project opens in Xcode and runs with
|
|
4
|
+
// `swiftbrowser dev`. Everything here is pure: `projectFiles` returns the
|
|
5
|
+
// files to write, and commands/init.ts writes them.
|
|
6
|
+
import { createHash } from 'node:crypto';
|
|
7
|
+
/** A Swift type name: a letter, then letters and digits. The app's struct is `<name>App`. */
|
|
8
|
+
export const APP_NAME = /^[A-Za-z][A-Za-z0-9]*$/;
|
|
9
|
+
/**
|
|
10
|
+
* The app name a directory suggests: `my-app` → `MyApp`, `hello world` →
|
|
11
|
+
* `HelloWorld`; a leading digit gets `My` in front. Undefined when nothing
|
|
12
|
+
* usable is left.
|
|
13
|
+
*/
|
|
14
|
+
export function appNameFrom(dir) {
|
|
15
|
+
const words = dir.split(/[^A-Za-z0-9]+/).filter(Boolean);
|
|
16
|
+
if (words.length === 0)
|
|
17
|
+
return undefined;
|
|
18
|
+
const name = words.map((word) => word[0].toUpperCase() + word.slice(1)).join('');
|
|
19
|
+
return /^[0-9]/.test(name) ? `My${name}` : name;
|
|
20
|
+
}
|
|
21
|
+
/** Every file of a new project, relative to its directory. */
|
|
22
|
+
export function projectFiles(options) {
|
|
23
|
+
const { name } = options;
|
|
24
|
+
if (!APP_NAME.test(name))
|
|
25
|
+
throw new Error(`not an app name: ${name}`);
|
|
26
|
+
const bundleId = options.bundleId ?? `com.example.${name}`;
|
|
27
|
+
const json = (value) => `${JSON.stringify(value, null, 2)}\n`;
|
|
28
|
+
return [
|
|
29
|
+
{ path: `${name}.xcodeproj/project.pbxproj`, contents: pbxproj(name, bundleId) },
|
|
30
|
+
{ path: `${name}.xcodeproj/project.xcworkspace/contents.xcworkspacedata`, contents: WORKSPACE },
|
|
31
|
+
{ path: `${name}/${name}App.swift`, contents: appSource(name) },
|
|
32
|
+
{ path: `${name}/ContentView.swift`, contents: CONTENT_VIEW },
|
|
33
|
+
{ path: `${name}/Assets.xcassets/Contents.json`, contents: json(CATALOG_INFO) },
|
|
34
|
+
{ path: `${name}/Assets.xcassets/AccentColor.colorset/Contents.json`, contents: json(ACCENT_COLOR) },
|
|
35
|
+
{ path: `${name}/Assets.xcassets/AppIcon.appiconset/Contents.json`, contents: json(APP_ICON) },
|
|
36
|
+
];
|
|
37
|
+
}
|
|
38
|
+
/** The lines a new project's `.gitignore` holds (merged into an existing one). */
|
|
39
|
+
export const GITIGNORE_LINES = [
|
|
40
|
+
'# SwiftBrowser: staging packages and `swiftbrowser build` output',
|
|
41
|
+
'.swiftbrowser/',
|
|
42
|
+
'dist/',
|
|
43
|
+
'# Xcode',
|
|
44
|
+
'xcuserdata/',
|
|
45
|
+
'DerivedData/',
|
|
46
|
+
'.DS_Store',
|
|
47
|
+
];
|
|
48
|
+
/** `existing` with the template's lines it lacks appended; `existing` itself when it has them all. */
|
|
49
|
+
export function mergeGitignore(existing) {
|
|
50
|
+
const have = new Set((existing ?? '').split('\n').map((line) => line.trim()));
|
|
51
|
+
const missing = GITIGNORE_LINES.filter((line) => line.startsWith('#') ? false : !have.has(line));
|
|
52
|
+
if (existing !== undefined && missing.length === 0)
|
|
53
|
+
return existing;
|
|
54
|
+
if (existing === undefined)
|
|
55
|
+
return `${GITIGNORE_LINES.join('\n')}\n`;
|
|
56
|
+
const separator = existing === '' || existing.endsWith('\n') ? '' : '\n';
|
|
57
|
+
return `${existing}${separator}\n${['# SwiftBrowser and Xcode', ...missing].join('\n')}\n`;
|
|
58
|
+
}
|
|
59
|
+
/** A short README for a new project (written only where there is none). */
|
|
60
|
+
export function readme(name) {
|
|
61
|
+
return `# ${name}
|
|
62
|
+
|
|
63
|
+
A SwiftUI app that runs on iOS and, with [SwiftBrowser](https://github.com/noya-app/SwiftBrowser), in the browser.
|
|
64
|
+
|
|
65
|
+
- Xcode: open \`${name}.xcodeproj\`.
|
|
66
|
+
- Browser: \`npx @swiftbrowser/cli dev .\` serves it with rebuild on save
|
|
67
|
+
(\`--host\` to open it on a phone on the same network).
|
|
68
|
+
- \`npx @swiftbrowser/cli check .\` compiles it against SwiftBrowser in seconds;
|
|
69
|
+
\`npx @swiftbrowser/cli build .\` writes a static site to \`dist/\`.
|
|
70
|
+
|
|
71
|
+
Add Swift files anywhere under \`${name}/\`: Xcode and SwiftBrowser both pick them up.
|
|
72
|
+
`;
|
|
73
|
+
}
|
|
74
|
+
function appSource(name) {
|
|
75
|
+
return `import SwiftUI
|
|
76
|
+
|
|
77
|
+
@main
|
|
78
|
+
struct ${name}App: App {
|
|
79
|
+
var body: some Scene {
|
|
80
|
+
WindowGroup {
|
|
81
|
+
ContentView()
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
`;
|
|
86
|
+
}
|
|
87
|
+
const CONTENT_VIEW = `import SwiftUI
|
|
88
|
+
|
|
89
|
+
struct ContentView: View {
|
|
90
|
+
@State private var taps = 0
|
|
91
|
+
|
|
92
|
+
var body: some View {
|
|
93
|
+
VStack(spacing: 16) {
|
|
94
|
+
Image(systemName: "globe")
|
|
95
|
+
.imageScale(.large)
|
|
96
|
+
.foregroundStyle(.tint)
|
|
97
|
+
Text("Hello, world!")
|
|
98
|
+
Button("Tapped \\(taps) times") {
|
|
99
|
+
taps += 1
|
|
100
|
+
}
|
|
101
|
+
.buttonStyle(.borderedProminent)
|
|
102
|
+
}
|
|
103
|
+
.padding()
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
#Preview {
|
|
108
|
+
ContentView()
|
|
109
|
+
}
|
|
110
|
+
`;
|
|
111
|
+
const WORKSPACE = `<?xml version="1.0" encoding="UTF-8"?>
|
|
112
|
+
<Workspace
|
|
113
|
+
version = "1.0">
|
|
114
|
+
<FileRef
|
|
115
|
+
location = "self:">
|
|
116
|
+
</FileRef>
|
|
117
|
+
</Workspace>
|
|
118
|
+
`;
|
|
119
|
+
const CATALOG_INFO = { info: { author: 'xcode', version: 1 } };
|
|
120
|
+
// Xcode's template leaves the accent color empty; a value (iOS's system blue)
|
|
121
|
+
// keeps both Xcode and SwiftBrowser from reporting an empty color set.
|
|
122
|
+
const ACCENT_COLOR = {
|
|
123
|
+
colors: [
|
|
124
|
+
{
|
|
125
|
+
color: { 'color-space': 'srgb', components: { alpha: '1.000', blue: '1.000', green: '0.478', red: '0.000' } },
|
|
126
|
+
idiom: 'universal',
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
info: { author: 'xcode', version: 1 },
|
|
130
|
+
};
|
|
131
|
+
const APP_ICON = {
|
|
132
|
+
images: [
|
|
133
|
+
{ idiom: 'universal', platform: 'ios', size: '1024x1024' },
|
|
134
|
+
{ appearances: [{ appearance: 'luminosity', value: 'dark' }], idiom: 'universal', platform: 'ios', size: '1024x1024' },
|
|
135
|
+
{ appearances: [{ appearance: 'luminosity', value: 'tinted' }], idiom: 'universal', platform: 'ios', size: '1024x1024' },
|
|
136
|
+
],
|
|
137
|
+
info: { author: 'xcode', version: 1 },
|
|
138
|
+
};
|
|
139
|
+
/** A pbxproj object id: 24 hex digits, stable for a name and role. */
|
|
140
|
+
function objectId(name, role) {
|
|
141
|
+
return createHash('sha1').update(`${name}/${role}`).digest('hex').slice(0, 24).toUpperCase();
|
|
142
|
+
}
|
|
143
|
+
/** Xcode 16's iOS App template (objectVersion 77, a synchronized root group), named `name`. */
|
|
144
|
+
export function pbxproj(name, bundleId) {
|
|
145
|
+
const id = (role) => objectId(name, role);
|
|
146
|
+
const app = id('product');
|
|
147
|
+
const folder = id('folder');
|
|
148
|
+
const frameworks = id('frameworks');
|
|
149
|
+
const mainGroup = id('main-group');
|
|
150
|
+
const products = id('products');
|
|
151
|
+
const target = id('target');
|
|
152
|
+
const targetConfigs = id('target-configs');
|
|
153
|
+
const sources = id('sources');
|
|
154
|
+
const resources = id('resources');
|
|
155
|
+
const project = id('project');
|
|
156
|
+
const projectConfigs = id('project-configs');
|
|
157
|
+
const projectDebug = id('project-debug');
|
|
158
|
+
const projectRelease = id('project-release');
|
|
159
|
+
const targetDebug = id('target-debug');
|
|
160
|
+
const targetRelease = id('target-release');
|
|
161
|
+
const quoted = (value) => (/^[A-Za-z0-9_./]+$/.test(value) ? value : JSON.stringify(value));
|
|
162
|
+
const projectSettings = (debug) => {
|
|
163
|
+
const settings = [
|
|
164
|
+
['ALWAYS_SEARCH_USER_PATHS', 'NO'],
|
|
165
|
+
['ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS', 'YES'],
|
|
166
|
+
['CLANG_ANALYZER_NONNULL', 'YES'],
|
|
167
|
+
['CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION', 'YES_AGGRESSIVE'],
|
|
168
|
+
['CLANG_CXX_LANGUAGE_STANDARD', '"gnu++20"'],
|
|
169
|
+
['CLANG_ENABLE_MODULES', 'YES'],
|
|
170
|
+
['CLANG_ENABLE_OBJC_ARC', 'YES'],
|
|
171
|
+
['CLANG_ENABLE_OBJC_WEAK', 'YES'],
|
|
172
|
+
['CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING', 'YES'],
|
|
173
|
+
['CLANG_WARN_BOOL_CONVERSION', 'YES'],
|
|
174
|
+
['CLANG_WARN_COMMA', 'YES'],
|
|
175
|
+
['CLANG_WARN_CONSTANT_CONVERSION', 'YES'],
|
|
176
|
+
['CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS', 'YES'],
|
|
177
|
+
['CLANG_WARN_DIRECT_OBJC_ISA_USAGE', 'YES_ERROR'],
|
|
178
|
+
['CLANG_WARN_DOCUMENTATION_COMMENTS', 'YES'],
|
|
179
|
+
['CLANG_WARN_EMPTY_BODY', 'YES'],
|
|
180
|
+
['CLANG_WARN_ENUM_CONVERSION', 'YES'],
|
|
181
|
+
['CLANG_WARN_INFINITE_RECURSION', 'YES'],
|
|
182
|
+
['CLANG_WARN_INT_CONVERSION', 'YES'],
|
|
183
|
+
['CLANG_WARN_NON_LITERAL_NULL_CONVERSION', 'YES'],
|
|
184
|
+
['CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF', 'YES'],
|
|
185
|
+
['CLANG_WARN_OBJC_LITERAL_CONVERSION', 'YES'],
|
|
186
|
+
['CLANG_WARN_OBJC_ROOT_CLASS', 'YES_ERROR'],
|
|
187
|
+
['CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER', 'YES'],
|
|
188
|
+
['CLANG_WARN_RANGE_LOOP_ANALYSIS', 'YES'],
|
|
189
|
+
['CLANG_WARN_STRICT_PROTOTYPES', 'YES'],
|
|
190
|
+
['CLANG_WARN_SUSPICIOUS_MOVE', 'YES'],
|
|
191
|
+
['CLANG_WARN_UNGUARDED_AVAILABILITY', 'YES_AGGRESSIVE'],
|
|
192
|
+
['CLANG_WARN_UNREACHABLE_CODE', 'YES'],
|
|
193
|
+
['CLANG_WARN__DUPLICATE_METHOD_CALL', 'YES'],
|
|
194
|
+
['COPY_PHASE_STRIP', 'NO'],
|
|
195
|
+
['DEBUG_INFORMATION_FORMAT', debug ? 'dwarf' : '"dwarf-with-dsym"'],
|
|
196
|
+
...(debug ? [] : [['ENABLE_NS_ASSERTIONS', 'NO']]),
|
|
197
|
+
['ENABLE_STRICT_OBJC_MSGSEND', 'YES'],
|
|
198
|
+
...(debug ? [['ENABLE_TESTABILITY', 'YES']] : []),
|
|
199
|
+
['ENABLE_USER_SCRIPT_SANDBOXING', 'YES'],
|
|
200
|
+
['GCC_C_LANGUAGE_STANDARD', 'gnu17'],
|
|
201
|
+
...(debug ? [['GCC_DYNAMIC_NO_PIC', 'NO']] : []),
|
|
202
|
+
['GCC_NO_COMMON_BLOCKS', 'YES'],
|
|
203
|
+
...(debug
|
|
204
|
+
? [
|
|
205
|
+
['GCC_OPTIMIZATION_LEVEL', '0'],
|
|
206
|
+
['GCC_PREPROCESSOR_DEFINITIONS', '(\n\t\t\t\t\t"DEBUG=1",\n\t\t\t\t\t"$(inherited)",\n\t\t\t\t)'],
|
|
207
|
+
]
|
|
208
|
+
: []),
|
|
209
|
+
['GCC_WARN_64_TO_32_BIT_CONVERSION', 'YES'],
|
|
210
|
+
['GCC_WARN_ABOUT_RETURN_TYPE', 'YES_ERROR'],
|
|
211
|
+
['GCC_WARN_UNDECLARED_SELECTOR', 'YES'],
|
|
212
|
+
['GCC_WARN_UNINITIALIZED_AUTOS', 'YES_AGGRESSIVE'],
|
|
213
|
+
['GCC_WARN_UNUSED_FUNCTION', 'YES'],
|
|
214
|
+
['GCC_WARN_UNUSED_VARIABLE', 'YES'],
|
|
215
|
+
['IPHONEOS_DEPLOYMENT_TARGET', '18.0'],
|
|
216
|
+
['LOCALIZATION_PREFERS_STRING_CATALOGS', 'YES'],
|
|
217
|
+
['MTL_ENABLE_DEBUG_INFO', debug ? 'INCLUDE_SOURCE' : 'NO'],
|
|
218
|
+
['MTL_FAST_MATH', 'YES'],
|
|
219
|
+
...(debug ? [['ONLY_ACTIVE_ARCH', 'YES']] : []),
|
|
220
|
+
['SDKROOT', 'iphoneos'],
|
|
221
|
+
...(debug
|
|
222
|
+
? [
|
|
223
|
+
['SWIFT_ACTIVE_COMPILATION_CONDITIONS', '"DEBUG $(inherited)"'],
|
|
224
|
+
['SWIFT_OPTIMIZATION_LEVEL', '"-Onone"'],
|
|
225
|
+
]
|
|
226
|
+
: [
|
|
227
|
+
['SWIFT_COMPILATION_MODE', 'wholemodule'],
|
|
228
|
+
['VALIDATE_PRODUCT', 'YES'],
|
|
229
|
+
]),
|
|
230
|
+
];
|
|
231
|
+
return settings.map(([key, value]) => `\t\t\t\t${key} = ${value};`).join('\n');
|
|
232
|
+
};
|
|
233
|
+
const targetSettings = [
|
|
234
|
+
['ASSETCATALOG_COMPILER_APPICON_NAME', 'AppIcon'],
|
|
235
|
+
['ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME', 'AccentColor'],
|
|
236
|
+
['CODE_SIGN_STYLE', 'Automatic'],
|
|
237
|
+
['CURRENT_PROJECT_VERSION', '1'],
|
|
238
|
+
['ENABLE_PREVIEWS', 'YES'],
|
|
239
|
+
['GENERATE_INFOPLIST_FILE', 'YES'],
|
|
240
|
+
['INFOPLIST_KEY_CFBundleDisplayName', quoted(name)],
|
|
241
|
+
['INFOPLIST_KEY_UIApplicationSceneManifest_Generation', 'YES'],
|
|
242
|
+
['INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents', 'YES'],
|
|
243
|
+
['INFOPLIST_KEY_UILaunchScreen_Generation', 'YES'],
|
|
244
|
+
['INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad', '"UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"'],
|
|
245
|
+
['INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone', '"UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"'],
|
|
246
|
+
['LD_RUNPATH_SEARCH_PATHS', '(\n\t\t\t\t\t"$(inherited)",\n\t\t\t\t\t"@executable_path/Frameworks",\n\t\t\t\t)'],
|
|
247
|
+
['MARKETING_VERSION', '1.0'],
|
|
248
|
+
['PRODUCT_BUNDLE_IDENTIFIER', quoted(bundleId)],
|
|
249
|
+
['PRODUCT_NAME', '"$(TARGET_NAME)"'],
|
|
250
|
+
['SWIFT_EMIT_LOC_STRINGS', 'YES'],
|
|
251
|
+
['SWIFT_VERSION', '5.0'],
|
|
252
|
+
['TARGETED_DEVICE_FAMILY', '"1,2"'],
|
|
253
|
+
]
|
|
254
|
+
.map(([key, value]) => `\t\t\t\t${key} = ${value};`)
|
|
255
|
+
.join('\n');
|
|
256
|
+
return `// !$*UTF8*$!
|
|
257
|
+
{
|
|
258
|
+
archiveVersion = 1;
|
|
259
|
+
classes = {
|
|
260
|
+
};
|
|
261
|
+
objectVersion = 77;
|
|
262
|
+
objects = {
|
|
263
|
+
|
|
264
|
+
/* Begin PBXFileReference section */
|
|
265
|
+
${app} /* ${name}.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ${name}.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
266
|
+
/* End PBXFileReference section */
|
|
267
|
+
|
|
268
|
+
/* Begin PBXFileSystemSynchronizedRootGroup section */
|
|
269
|
+
${folder} /* ${name} */ = {
|
|
270
|
+
isa = PBXFileSystemSynchronizedRootGroup;
|
|
271
|
+
path = ${name};
|
|
272
|
+
sourceTree = "<group>";
|
|
273
|
+
};
|
|
274
|
+
/* End PBXFileSystemSynchronizedRootGroup section */
|
|
275
|
+
|
|
276
|
+
/* Begin PBXFrameworksBuildPhase section */
|
|
277
|
+
${frameworks} /* Frameworks */ = {
|
|
278
|
+
isa = PBXFrameworksBuildPhase;
|
|
279
|
+
buildActionMask = 2147483647;
|
|
280
|
+
files = (
|
|
281
|
+
);
|
|
282
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
283
|
+
};
|
|
284
|
+
/* End PBXFrameworksBuildPhase section */
|
|
285
|
+
|
|
286
|
+
/* Begin PBXGroup section */
|
|
287
|
+
${mainGroup} = {
|
|
288
|
+
isa = PBXGroup;
|
|
289
|
+
children = (
|
|
290
|
+
${folder} /* ${name} */,
|
|
291
|
+
${products} /* Products */,
|
|
292
|
+
);
|
|
293
|
+
sourceTree = "<group>";
|
|
294
|
+
};
|
|
295
|
+
${products} /* Products */ = {
|
|
296
|
+
isa = PBXGroup;
|
|
297
|
+
children = (
|
|
298
|
+
${app} /* ${name}.app */,
|
|
299
|
+
);
|
|
300
|
+
name = Products;
|
|
301
|
+
sourceTree = "<group>";
|
|
302
|
+
};
|
|
303
|
+
/* End PBXGroup section */
|
|
304
|
+
|
|
305
|
+
/* Begin PBXNativeTarget section */
|
|
306
|
+
${target} /* ${name} */ = {
|
|
307
|
+
isa = PBXNativeTarget;
|
|
308
|
+
buildConfigurationList = ${targetConfigs} /* Build configuration list for PBXNativeTarget "${name}" */;
|
|
309
|
+
buildPhases = (
|
|
310
|
+
${sources} /* Sources */,
|
|
311
|
+
${frameworks} /* Frameworks */,
|
|
312
|
+
${resources} /* Resources */,
|
|
313
|
+
);
|
|
314
|
+
buildRules = (
|
|
315
|
+
);
|
|
316
|
+
dependencies = (
|
|
317
|
+
);
|
|
318
|
+
fileSystemSynchronizedGroups = (
|
|
319
|
+
${folder} /* ${name} */,
|
|
320
|
+
);
|
|
321
|
+
name = ${name};
|
|
322
|
+
packageProductDependencies = (
|
|
323
|
+
);
|
|
324
|
+
productName = ${name};
|
|
325
|
+
productReference = ${app} /* ${name}.app */;
|
|
326
|
+
productType = "com.apple.product-type.application";
|
|
327
|
+
};
|
|
328
|
+
/* End PBXNativeTarget section */
|
|
329
|
+
|
|
330
|
+
/* Begin PBXProject section */
|
|
331
|
+
${project} /* Project object */ = {
|
|
332
|
+
isa = PBXProject;
|
|
333
|
+
attributes = {
|
|
334
|
+
BuildIndependentTargetsInParallel = 1;
|
|
335
|
+
LastSwiftUpdateCheck = 1600;
|
|
336
|
+
LastUpgradeCheck = 1600;
|
|
337
|
+
TargetAttributes = {
|
|
338
|
+
${target} = {
|
|
339
|
+
CreatedOnToolsVersion = 16.0;
|
|
340
|
+
};
|
|
341
|
+
};
|
|
342
|
+
};
|
|
343
|
+
buildConfigurationList = ${projectConfigs} /* Build configuration list for PBXProject "${name}" */;
|
|
344
|
+
developmentRegion = en;
|
|
345
|
+
hasScannedForEncodings = 0;
|
|
346
|
+
knownRegions = (
|
|
347
|
+
en,
|
|
348
|
+
Base,
|
|
349
|
+
);
|
|
350
|
+
mainGroup = ${mainGroup};
|
|
351
|
+
minimizedProjectReferenceProxies = 1;
|
|
352
|
+
preferredProjectObjectVersion = 77;
|
|
353
|
+
productRefGroup = ${products} /* Products */;
|
|
354
|
+
projectDirPath = "";
|
|
355
|
+
projectRoot = "";
|
|
356
|
+
targets = (
|
|
357
|
+
${target} /* ${name} */,
|
|
358
|
+
);
|
|
359
|
+
};
|
|
360
|
+
/* End PBXProject section */
|
|
361
|
+
|
|
362
|
+
/* Begin PBXResourcesBuildPhase section */
|
|
363
|
+
${resources} /* Resources */ = {
|
|
364
|
+
isa = PBXResourcesBuildPhase;
|
|
365
|
+
buildActionMask = 2147483647;
|
|
366
|
+
files = (
|
|
367
|
+
);
|
|
368
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
369
|
+
};
|
|
370
|
+
/* End PBXResourcesBuildPhase section */
|
|
371
|
+
|
|
372
|
+
/* Begin PBXSourcesBuildPhase section */
|
|
373
|
+
${sources} /* Sources */ = {
|
|
374
|
+
isa = PBXSourcesBuildPhase;
|
|
375
|
+
buildActionMask = 2147483647;
|
|
376
|
+
files = (
|
|
377
|
+
);
|
|
378
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
379
|
+
};
|
|
380
|
+
/* End PBXSourcesBuildPhase section */
|
|
381
|
+
|
|
382
|
+
/* Begin XCBuildConfiguration section */
|
|
383
|
+
${projectDebug} /* Debug */ = {
|
|
384
|
+
isa = XCBuildConfiguration;
|
|
385
|
+
buildSettings = {
|
|
386
|
+
${projectSettings(true)}
|
|
387
|
+
};
|
|
388
|
+
name = Debug;
|
|
389
|
+
};
|
|
390
|
+
${projectRelease} /* Release */ = {
|
|
391
|
+
isa = XCBuildConfiguration;
|
|
392
|
+
buildSettings = {
|
|
393
|
+
${projectSettings(false)}
|
|
394
|
+
};
|
|
395
|
+
name = Release;
|
|
396
|
+
};
|
|
397
|
+
${targetDebug} /* Debug */ = {
|
|
398
|
+
isa = XCBuildConfiguration;
|
|
399
|
+
buildSettings = {
|
|
400
|
+
${targetSettings}
|
|
401
|
+
};
|
|
402
|
+
name = Debug;
|
|
403
|
+
};
|
|
404
|
+
${targetRelease} /* Release */ = {
|
|
405
|
+
isa = XCBuildConfiguration;
|
|
406
|
+
buildSettings = {
|
|
407
|
+
${targetSettings}
|
|
408
|
+
};
|
|
409
|
+
name = Release;
|
|
410
|
+
};
|
|
411
|
+
/* End XCBuildConfiguration section */
|
|
412
|
+
|
|
413
|
+
/* Begin XCConfigurationList section */
|
|
414
|
+
${projectConfigs} /* Build configuration list for PBXProject "${name}" */ = {
|
|
415
|
+
isa = XCConfigurationList;
|
|
416
|
+
buildConfigurations = (
|
|
417
|
+
${projectDebug} /* Debug */,
|
|
418
|
+
${projectRelease} /* Release */,
|
|
419
|
+
);
|
|
420
|
+
defaultConfigurationIsVisible = 0;
|
|
421
|
+
defaultConfigurationName = Release;
|
|
422
|
+
};
|
|
423
|
+
${targetConfigs} /* Build configuration list for PBXNativeTarget "${name}" */ = {
|
|
424
|
+
isa = XCConfigurationList;
|
|
425
|
+
buildConfigurations = (
|
|
426
|
+
${targetDebug} /* Debug */,
|
|
427
|
+
${targetRelease} /* Release */,
|
|
428
|
+
);
|
|
429
|
+
defaultConfigurationIsVisible = 0;
|
|
430
|
+
defaultConfigurationName = Release;
|
|
431
|
+
};
|
|
432
|
+
/* End XCConfigurationList section */
|
|
433
|
+
};
|
|
434
|
+
rootObject = ${project} /* Project object */;
|
|
435
|
+
}
|
|
436
|
+
`;
|
|
437
|
+
}
|
|
438
|
+
//# sourceMappingURL=template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** musl's largest default thread stack (DEFAULT_STACK_MAX), which PT_GNU_STACK can ask for. */
|
|
2
|
+
export declare const THREAD_STACK_SIZE: number;
|
|
3
|
+
/**
|
|
4
|
+
* `binary` with its PT_GNU_STACK size raised to `THREAD_STACK_SIZE`, or null
|
|
5
|
+
* when there is nothing to raise: not a little-endian 64-bit ELF, dynamically
|
|
6
|
+
* linked (glibc sizes thread stacks from `ulimit -s`, not this header), no
|
|
7
|
+
* PT_GNU_STACK, or one already as large.
|
|
8
|
+
*/
|
|
9
|
+
export declare function withThreadStacks(binary: Buffer): Buffer | null;
|
|
10
|
+
/**
|
|
11
|
+
* The wasm-opt to run: on Linux, a copy of `wasmOpt` in `cacheDir` whose
|
|
12
|
+
* threads have 8 MiB stacks (made once per binary), else `wasmOpt` itself.
|
|
13
|
+
*/
|
|
14
|
+
export declare function wasmOptWithThreadStacks(wasmOpt: string, cacheDir: string, platform?: NodeJS.Platform): string;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
// wasm-opt's worker threads, given stacks large enough for big modules.
|
|
2
|
+
//
|
|
3
|
+
// Binaryen's Linux release binaries are linked statically against musl, whose
|
|
4
|
+
// threads get 128 KiB stacks whatever `ulimit -s` says. Optimizing a large
|
|
5
|
+
// module (Ice Cubes': 142 MB before) overflows them, so `build` fell back to
|
|
6
|
+
// one thread, five minutes for Ice Cubes. musl takes the default thread stack
|
|
7
|
+
// size from the executable's PT_GNU_STACK program header (its p_memsz, up to
|
|
8
|
+
// 8 MiB), which these binaries leave at 0: a copy with that one field set to
|
|
9
|
+
// 8 MiB runs on every core (106 s for Ice Cubes on four) and writes the same
|
|
10
|
+
// module, byte for byte.
|
|
11
|
+
import { createHash } from 'node:crypto';
|
|
12
|
+
import { chmodSync, existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
|
|
13
|
+
import path from 'node:path';
|
|
14
|
+
/** musl's largest default thread stack (DEFAULT_STACK_MAX), which PT_GNU_STACK can ask for. */
|
|
15
|
+
export const THREAD_STACK_SIZE = 8 << 20;
|
|
16
|
+
const PT_INTERP = 3;
|
|
17
|
+
const PT_GNU_STACK = 0x6474e551;
|
|
18
|
+
/**
|
|
19
|
+
* `binary` with its PT_GNU_STACK size raised to `THREAD_STACK_SIZE`, or null
|
|
20
|
+
* when there is nothing to raise: not a little-endian 64-bit ELF, dynamically
|
|
21
|
+
* linked (glibc sizes thread stacks from `ulimit -s`, not this header), no
|
|
22
|
+
* PT_GNU_STACK, or one already as large.
|
|
23
|
+
*/
|
|
24
|
+
export function withThreadStacks(binary) {
|
|
25
|
+
if (binary.length < 64 || binary.readUInt32BE(0) !== 0x7f454c46)
|
|
26
|
+
return null;
|
|
27
|
+
// EI_CLASS 2 (64-bit), EI_DATA 1 (little-endian).
|
|
28
|
+
if (binary[4] !== 2 || binary[5] !== 1)
|
|
29
|
+
return null;
|
|
30
|
+
const phoff = Number(binary.readBigUInt64LE(0x20));
|
|
31
|
+
const phentsize = binary.readUInt16LE(0x36);
|
|
32
|
+
const phnum = binary.readUInt16LE(0x38);
|
|
33
|
+
if (phentsize < 56 || phoff + phentsize * phnum > binary.length)
|
|
34
|
+
return null;
|
|
35
|
+
let stack = -1;
|
|
36
|
+
for (let i = 0; i < phnum; i++) {
|
|
37
|
+
const entry = phoff + i * phentsize;
|
|
38
|
+
const type = binary.readUInt32LE(entry);
|
|
39
|
+
if (type === PT_INTERP)
|
|
40
|
+
return null;
|
|
41
|
+
if (type === PT_GNU_STACK)
|
|
42
|
+
stack = entry;
|
|
43
|
+
}
|
|
44
|
+
if (stack < 0 || Number(binary.readBigUInt64LE(stack + 40)) >= THREAD_STACK_SIZE)
|
|
45
|
+
return null;
|
|
46
|
+
const patched = Buffer.from(binary);
|
|
47
|
+
patched.writeBigUInt64LE(BigInt(THREAD_STACK_SIZE), stack + 40);
|
|
48
|
+
return patched;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* The wasm-opt to run: on Linux, a copy of `wasmOpt` in `cacheDir` whose
|
|
52
|
+
* threads have 8 MiB stacks (made once per binary), else `wasmOpt` itself.
|
|
53
|
+
*/
|
|
54
|
+
export function wasmOptWithThreadStacks(wasmOpt, cacheDir, platform = process.platform) {
|
|
55
|
+
if (platform !== 'linux')
|
|
56
|
+
return wasmOpt;
|
|
57
|
+
let binary;
|
|
58
|
+
try {
|
|
59
|
+
binary = readFileSync(wasmOpt);
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return wasmOpt;
|
|
63
|
+
}
|
|
64
|
+
const patched = withThreadStacks(binary);
|
|
65
|
+
if (!patched)
|
|
66
|
+
return wasmOpt;
|
|
67
|
+
const digest = createHash('sha256').update(binary).digest('hex').slice(0, 16);
|
|
68
|
+
const copy = path.join(cacheDir, 'wasm-opt-threads', `wasm-opt-${digest}`);
|
|
69
|
+
if (!existsSync(copy)) {
|
|
70
|
+
mkdirSync(path.dirname(copy), { recursive: true });
|
|
71
|
+
const temp = `${copy}.${process.pid}`;
|
|
72
|
+
writeFileSync(temp, patched);
|
|
73
|
+
chmodSync(temp, 0o755);
|
|
74
|
+
renameSync(temp, copy);
|
|
75
|
+
}
|
|
76
|
+
return copy;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=threadStacks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threadStacks.js","sourceRoot":"","sources":["../src/threadStacks.ts"],"names":[],"mappings":"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"}
|
package/dist/toolchain.d.ts
CHANGED
|
@@ -24,7 +24,13 @@ export declare function findToolchain(env?: NodeJS.ProcessEnv): {
|
|
|
24
24
|
toolchain: Toolchain | null;
|
|
25
25
|
fallback: Toolchain | null;
|
|
26
26
|
};
|
|
27
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* Environment for `swift` child processes: the toolchain first on PATH, and
|
|
29
|
+
* SWIFT_BUILD_SCRIPT_ENVIRONMENT, which swift-syntax's manifest reads to stop
|
|
30
|
+
* logging through OSLog. Where SwiftPM has no prebuilt swift-syntax it
|
|
31
|
+
* compiles it, and after the shim's OSLog module (a stand-in, not the
|
|
32
|
+
* system's) that logging would leave SwiftData's macros unlinkable.
|
|
33
|
+
*/
|
|
28
34
|
export declare function toolchainEnv(toolchain: Toolchain, env?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
|
|
29
35
|
/** Whether `swift sdk list` names the wasm SDK. */
|
|
30
36
|
export declare function hasWasmSdk(toolchain: Toolchain): boolean;
|
package/dist/toolchain.js
CHANGED
|
@@ -83,9 +83,15 @@ export function findToolchain(env = process.env) {
|
|
|
83
83
|
}
|
|
84
84
|
return { toolchain: null, fallback };
|
|
85
85
|
}
|
|
86
|
-
/**
|
|
86
|
+
/**
|
|
87
|
+
* Environment for `swift` child processes: the toolchain first on PATH, and
|
|
88
|
+
* SWIFT_BUILD_SCRIPT_ENVIRONMENT, which swift-syntax's manifest reads to stop
|
|
89
|
+
* logging through OSLog. Where SwiftPM has no prebuilt swift-syntax it
|
|
90
|
+
* compiles it, and after the shim's OSLog module (a stand-in, not the
|
|
91
|
+
* system's) that logging would leave SwiftData's macros unlinkable.
|
|
92
|
+
*/
|
|
87
93
|
export function toolchainEnv(toolchain, env = process.env) {
|
|
88
|
-
return { ...env, PATH: `${toolchain.bin}${path.delimiter}${env['PATH'] ?? ''}` };
|
|
94
|
+
return { SWIFT_BUILD_SCRIPT_ENVIRONMENT: '1', ...env, PATH: `${toolchain.bin}${path.delimiter}${env['PATH'] ?? ''}` };
|
|
89
95
|
}
|
|
90
96
|
/** Whether `swift sdk list` names the wasm SDK. */
|
|
91
97
|
export function hasWasmSdk(toolchain) {
|
package/dist/toolchain.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolchain.js","sourceRoot":"","sources":["../src/toolchain.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"toolchain.js","sourceRoot":"","sources":["../src/toolchain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** The URL schemes an Info.plist declares (XML plists only), in order, without duplicates. */
|
|
2
|
+
export declare function urlSchemesInPlist(text: string): string[];
|
|
3
|
+
/** The URL schemes of the Info.plist at `file` (none when it cannot be read). */
|
|
4
|
+
export declare function urlSchemesInPlistFile(file: string): string[];
|
|
5
|
+
/**
|
|
6
|
+
* The URL schemes of an Xcode target: its `INFOPLIST_FILE` (relative to the
|
|
7
|
+
* project's directory, `root`), when it has one.
|
|
8
|
+
*/
|
|
9
|
+
export declare function urlSchemesOfTarget(target: {
|
|
10
|
+
settings?: (configuration?: string) => Record<string, string>;
|
|
11
|
+
}, root: string): string[];
|