@vxrn/utils 2.0.0-beta.148.1 → 2.0.0-beta.158.1
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/dist/cjs/nativeAppManifest.cjs +14 -0
- package/dist/cjs/nativeAppManifest.native.cjs +48 -16
- package/dist/cjs/nativeAppManifest.native.js +48 -16
- package/dist/cjs/nativeAppManifest.native.js.map +1 -1
- package/dist/esm/nativeAppManifest.mjs +14 -0
- package/dist/esm/nativeAppManifest.mjs.map +1 -1
- package/dist/esm/nativeAppManifest.native.js +48 -16
- package/dist/esm/nativeAppManifest.native.js.map +1 -1
- package/package.json +3 -3
- package/src/nativeAppManifest.test.ts +16 -0
- package/src/nativeAppManifest.ts +31 -0
- package/types/nativeAppManifest.d.ts +8 -0
- package/types/nativeAppManifest.d.ts.map +1 -1
|
@@ -108,6 +108,20 @@ function validateNativeApp(manifest, platform) {
|
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
|
+
if (manifest.ios?.appIntents !== void 0) {
|
|
112
|
+
const actions = manifest.ios.appIntents?.actions;
|
|
113
|
+
if (!Array.isArray(actions) || actions.length === 0) {
|
|
114
|
+
fail("ios.appIntents.actions must be a non-empty array");
|
|
115
|
+
}
|
|
116
|
+
const ids = /* @__PURE__ */ new Set();
|
|
117
|
+
for (const action of actions) {
|
|
118
|
+
if (!action || typeof action !== "object" || typeof action.id !== "string" || !action.id.trim() || typeof action.title !== "string" || !action.title.trim() || action.textParameterTitle !== void 0 && (typeof action.textParameterTitle !== "string" || !action.textParameterTitle.trim()) || typeof action.shortcutPhrase !== "string" || action.shortcutPhrase.split("{app}").length !== 2 || !action.shortcutPhrase.replace("{app}", "").trim()) {
|
|
119
|
+
fail("ios.appIntents actions need unique non-empty id/title, optional textParameterTitle, and a shortcutPhrase with one {app}");
|
|
120
|
+
}
|
|
121
|
+
if (ids.has(action.id)) fail(`ios.appIntents action "${action.id}" is duplicated`);
|
|
122
|
+
ids.add(action.id);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
111
125
|
if (manifest.splash !== void 0 && (!manifest.splash.source || !HEX_COLOR.test(manifest.splash.backgroundColor) || manifest.splash.width !== void 0 && (!Number.isFinite(manifest.splash.width) || manifest.splash.width < 1 || manifest.splash.width > 288))) {
|
|
112
126
|
fail("splash requires source, a six-digit hex backgroundColor, and width from 1 to 288");
|
|
113
127
|
}
|
|
@@ -48,7 +48,7 @@ function fail(message) {
|
|
|
48
48
|
throw new Error(`[one] invalid native.app: ${message}`);
|
|
49
49
|
}
|
|
50
50
|
function validateNativeApp(manifest, platform) {
|
|
51
|
-
var _manifest_ios, _manifest_ios1, _manifest_splash, _manifest_splash_dark, _manifest_splash1, _manifest_splash2, _manifest_imagePicker, _manifest_photoLibrary, _manifest_photoLibrary1, _manifest_location,
|
|
51
|
+
var _manifest_ios, _manifest_ios1, _manifest_ios2, _manifest_splash, _manifest_splash_dark, _manifest_splash1, _manifest_splash2, _manifest_imagePicker, _manifest_photoLibrary, _manifest_photoLibrary1, _manifest_location, _manifest_ios3, _manifest_speech, _manifest_ios4;
|
|
52
52
|
if (!manifest || typeof manifest !== "object") fail("manifest must be an object");
|
|
53
53
|
if (!manifest.name || typeof manifest.name !== "string") fail("name is required");
|
|
54
54
|
if (!TARGET_NAME.test(manifest.name)) {
|
|
@@ -181,6 +181,38 @@ function validateNativeApp(manifest, platform) {
|
|
|
181
181
|
}
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
|
+
if (((_manifest_ios2 = manifest.ios) === null || _manifest_ios2 === void 0 ? void 0 : _manifest_ios2.appIntents) !== void 0) {
|
|
185
|
+
var _manifest_ios_appIntents;
|
|
186
|
+
var actions = (_manifest_ios_appIntents = manifest.ios.appIntents) === null || _manifest_ios_appIntents === void 0 ? void 0 : _manifest_ios_appIntents.actions;
|
|
187
|
+
if (!Array.isArray(actions) || actions.length === 0) {
|
|
188
|
+
fail("ios.appIntents.actions must be a non-empty array");
|
|
189
|
+
}
|
|
190
|
+
var ids = /* @__PURE__ */ new Set();
|
|
191
|
+
var _iteratorNormalCompletion4 = true, _didIteratorError4 = false, _iteratorError4 = void 0;
|
|
192
|
+
try {
|
|
193
|
+
for (var _iterator4 = actions[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
|
|
194
|
+
var action = _step4.value;
|
|
195
|
+
if (!action || typeof action !== "object" || typeof action.id !== "string" || !action.id.trim() || typeof action.title !== "string" || !action.title.trim() || action.textParameterTitle !== void 0 && (typeof action.textParameterTitle !== "string" || !action.textParameterTitle.trim()) || typeof action.shortcutPhrase !== "string" || action.shortcutPhrase.split("{app}").length !== 2 || !action.shortcutPhrase.replace("{app}", "").trim()) {
|
|
196
|
+
fail("ios.appIntents actions need unique non-empty id/title, optional textParameterTitle, and a shortcutPhrase with one {app}");
|
|
197
|
+
}
|
|
198
|
+
if (ids.has(action.id)) fail(`ios.appIntents action "${action.id}" is duplicated`);
|
|
199
|
+
ids.add(action.id);
|
|
200
|
+
}
|
|
201
|
+
} catch (err) {
|
|
202
|
+
_didIteratorError4 = true;
|
|
203
|
+
_iteratorError4 = err;
|
|
204
|
+
} finally {
|
|
205
|
+
try {
|
|
206
|
+
if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
|
|
207
|
+
_iterator4.return();
|
|
208
|
+
}
|
|
209
|
+
} finally {
|
|
210
|
+
if (_didIteratorError4) {
|
|
211
|
+
throw _iteratorError4;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
184
216
|
if (manifest.splash !== void 0 && (!manifest.splash.source || !HEX_COLOR.test(manifest.splash.backgroundColor) || manifest.splash.width !== void 0 && (!Number.isFinite(manifest.splash.width) || manifest.splash.width < 1 || manifest.splash.width > 288))) {
|
|
185
217
|
fail("splash requires source, a six-digit hex backgroundColor, and width from 1 to 288");
|
|
186
218
|
}
|
|
@@ -239,7 +271,7 @@ function validateNativeApp(manifest, platform) {
|
|
|
239
271
|
fail("audio must configure microphone or background playback");
|
|
240
272
|
}
|
|
241
273
|
}
|
|
242
|
-
if (((
|
|
274
|
+
if (((_manifest_ios3 = manifest.ios) === null || _manifest_ios3 === void 0 ? void 0 : _manifest_ios3.faceIdUsageDescription) !== void 0 && (typeof manifest.ios.faceIdUsageDescription !== "string" || manifest.ios.faceIdUsageDescription.trim() === "")) {
|
|
243
275
|
fail("ios.faceIdUsageDescription must be a non-empty string");
|
|
244
276
|
}
|
|
245
277
|
if (manifest.speech !== void 0 && (typeof ((_manifest_speech = manifest.speech) === null || _manifest_speech === void 0 ? void 0 : _manifest_speech.recognition) !== "string" || manifest.speech.recognition.trim() === "" || typeof manifest.speech.microphone !== "string" || manifest.speech.microphone.trim() === "")) {
|
|
@@ -257,7 +289,7 @@ function validateNativeApp(manifest, platform) {
|
|
|
257
289
|
fail("notifications.apsEnvironment needs notifications.push");
|
|
258
290
|
}
|
|
259
291
|
}
|
|
260
|
-
var accent = (
|
|
292
|
+
var accent = (_manifest_ios4 = manifest.ios) === null || _manifest_ios4 === void 0 ? void 0 : _manifest_ios4.accentColor;
|
|
261
293
|
if (accent !== void 0 && (!HEX_COLOR.test(accent.light) || accent.dark !== void 0 && !HEX_COLOR.test(accent.dark))) {
|
|
262
294
|
fail("ios.accentColor light and dark must be six-digit hex colors");
|
|
263
295
|
}
|
|
@@ -273,10 +305,10 @@ function validateNativeApp(manifest, platform) {
|
|
|
273
305
|
}
|
|
274
306
|
}
|
|
275
307
|
if (!platform || platform === "ios") {
|
|
276
|
-
var
|
|
277
|
-
if (!((
|
|
278
|
-
var
|
|
279
|
-
fail(`ios.bundleId "${(
|
|
308
|
+
var _manifest_ios5;
|
|
309
|
+
if (!((_manifest_ios5 = manifest.ios) === null || _manifest_ios5 === void 0 ? void 0 : _manifest_ios5.bundleId) || !REVERSE_DNS.test(manifest.ios.bundleId)) {
|
|
310
|
+
var _manifest_ios6;
|
|
311
|
+
fail(`ios.bundleId "${(_manifest_ios6 = manifest.ios) === null || _manifest_ios6 === void 0 ? void 0 : _manifest_ios6.bundleId}" must be reverse-dns`);
|
|
280
312
|
}
|
|
281
313
|
if (manifest.ios.deploymentTarget !== void 0 && !DEPLOYMENT_TARGET.test(manifest.ios.deploymentTarget)) {
|
|
282
314
|
fail(`ios.deploymentTarget "${manifest.ios.deploymentTarget}" must look like "17.0"`);
|
|
@@ -327,10 +359,10 @@ function validateNativeApp(manifest, platform) {
|
|
|
327
359
|
if (manifest.android.shrinkResources && !manifest.android.minify) {
|
|
328
360
|
fail("android.shrinkResources needs android.minify");
|
|
329
361
|
}
|
|
330
|
-
var
|
|
362
|
+
var _iteratorNormalCompletion5 = true, _didIteratorError5 = false, _iteratorError5 = void 0;
|
|
331
363
|
try {
|
|
332
|
-
for (var
|
|
333
|
-
var link =
|
|
364
|
+
for (var _iterator5 = ((_manifest_android_appLinks = manifest.android.appLinks) !== null && _manifest_android_appLinks !== void 0 ? _manifest_android_appLinks : [])[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {
|
|
365
|
+
var link = _step5.value;
|
|
334
366
|
if (!link.host || !REVERSE_DNS.test(link.host)) {
|
|
335
367
|
fail(`android.appLinks host "${link.host}" must be a domain`);
|
|
336
368
|
}
|
|
@@ -339,16 +371,16 @@ function validateNativeApp(manifest, platform) {
|
|
|
339
371
|
}
|
|
340
372
|
}
|
|
341
373
|
} catch (err) {
|
|
342
|
-
|
|
343
|
-
|
|
374
|
+
_didIteratorError5 = true;
|
|
375
|
+
_iteratorError5 = err;
|
|
344
376
|
} finally {
|
|
345
377
|
try {
|
|
346
|
-
if (!
|
|
347
|
-
|
|
378
|
+
if (!_iteratorNormalCompletion5 && _iterator5.return != null) {
|
|
379
|
+
_iterator5.return();
|
|
348
380
|
}
|
|
349
381
|
} finally {
|
|
350
|
-
if (
|
|
351
|
-
throw
|
|
382
|
+
if (_didIteratorError5) {
|
|
383
|
+
throw _iteratorError5;
|
|
352
384
|
}
|
|
353
385
|
}
|
|
354
386
|
}
|
|
@@ -48,7 +48,7 @@ function fail(message) {
|
|
|
48
48
|
throw new Error(`[one] invalid native.app: ${message}`);
|
|
49
49
|
}
|
|
50
50
|
function validateNativeApp(manifest, platform) {
|
|
51
|
-
var _manifest_ios, _manifest_ios1, _manifest_splash, _manifest_splash_dark, _manifest_splash1, _manifest_splash2, _manifest_imagePicker, _manifest_photoLibrary, _manifest_photoLibrary1, _manifest_location,
|
|
51
|
+
var _manifest_ios, _manifest_ios1, _manifest_ios2, _manifest_splash, _manifest_splash_dark, _manifest_splash1, _manifest_splash2, _manifest_imagePicker, _manifest_photoLibrary, _manifest_photoLibrary1, _manifest_location, _manifest_ios3, _manifest_speech, _manifest_ios4;
|
|
52
52
|
if (!manifest || typeof manifest !== "object") fail("manifest must be an object");
|
|
53
53
|
if (!manifest.name || typeof manifest.name !== "string") fail("name is required");
|
|
54
54
|
if (!TARGET_NAME.test(manifest.name)) {
|
|
@@ -181,6 +181,38 @@ function validateNativeApp(manifest, platform) {
|
|
|
181
181
|
}
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
|
+
if (((_manifest_ios2 = manifest.ios) === null || _manifest_ios2 === void 0 ? void 0 : _manifest_ios2.appIntents) !== void 0) {
|
|
185
|
+
var _manifest_ios_appIntents;
|
|
186
|
+
var actions = (_manifest_ios_appIntents = manifest.ios.appIntents) === null || _manifest_ios_appIntents === void 0 ? void 0 : _manifest_ios_appIntents.actions;
|
|
187
|
+
if (!Array.isArray(actions) || actions.length === 0) {
|
|
188
|
+
fail("ios.appIntents.actions must be a non-empty array");
|
|
189
|
+
}
|
|
190
|
+
var ids = /* @__PURE__ */ new Set();
|
|
191
|
+
var _iteratorNormalCompletion4 = true, _didIteratorError4 = false, _iteratorError4 = void 0;
|
|
192
|
+
try {
|
|
193
|
+
for (var _iterator4 = actions[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
|
|
194
|
+
var action = _step4.value;
|
|
195
|
+
if (!action || typeof action !== "object" || typeof action.id !== "string" || !action.id.trim() || typeof action.title !== "string" || !action.title.trim() || action.textParameterTitle !== void 0 && (typeof action.textParameterTitle !== "string" || !action.textParameterTitle.trim()) || typeof action.shortcutPhrase !== "string" || action.shortcutPhrase.split("{app}").length !== 2 || !action.shortcutPhrase.replace("{app}", "").trim()) {
|
|
196
|
+
fail("ios.appIntents actions need unique non-empty id/title, optional textParameterTitle, and a shortcutPhrase with one {app}");
|
|
197
|
+
}
|
|
198
|
+
if (ids.has(action.id)) fail(`ios.appIntents action "${action.id}" is duplicated`);
|
|
199
|
+
ids.add(action.id);
|
|
200
|
+
}
|
|
201
|
+
} catch (err) {
|
|
202
|
+
_didIteratorError4 = true;
|
|
203
|
+
_iteratorError4 = err;
|
|
204
|
+
} finally {
|
|
205
|
+
try {
|
|
206
|
+
if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
|
|
207
|
+
_iterator4.return();
|
|
208
|
+
}
|
|
209
|
+
} finally {
|
|
210
|
+
if (_didIteratorError4) {
|
|
211
|
+
throw _iteratorError4;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
184
216
|
if (manifest.splash !== void 0 && (!manifest.splash.source || !HEX_COLOR.test(manifest.splash.backgroundColor) || manifest.splash.width !== void 0 && (!Number.isFinite(manifest.splash.width) || manifest.splash.width < 1 || manifest.splash.width > 288))) {
|
|
185
217
|
fail("splash requires source, a six-digit hex backgroundColor, and width from 1 to 288");
|
|
186
218
|
}
|
|
@@ -239,7 +271,7 @@ function validateNativeApp(manifest, platform) {
|
|
|
239
271
|
fail("audio must configure microphone or background playback");
|
|
240
272
|
}
|
|
241
273
|
}
|
|
242
|
-
if (((
|
|
274
|
+
if (((_manifest_ios3 = manifest.ios) === null || _manifest_ios3 === void 0 ? void 0 : _manifest_ios3.faceIdUsageDescription) !== void 0 && (typeof manifest.ios.faceIdUsageDescription !== "string" || manifest.ios.faceIdUsageDescription.trim() === "")) {
|
|
243
275
|
fail("ios.faceIdUsageDescription must be a non-empty string");
|
|
244
276
|
}
|
|
245
277
|
if (manifest.speech !== void 0 && (typeof ((_manifest_speech = manifest.speech) === null || _manifest_speech === void 0 ? void 0 : _manifest_speech.recognition) !== "string" || manifest.speech.recognition.trim() === "" || typeof manifest.speech.microphone !== "string" || manifest.speech.microphone.trim() === "")) {
|
|
@@ -257,7 +289,7 @@ function validateNativeApp(manifest, platform) {
|
|
|
257
289
|
fail("notifications.apsEnvironment needs notifications.push");
|
|
258
290
|
}
|
|
259
291
|
}
|
|
260
|
-
var accent = (
|
|
292
|
+
var accent = (_manifest_ios4 = manifest.ios) === null || _manifest_ios4 === void 0 ? void 0 : _manifest_ios4.accentColor;
|
|
261
293
|
if (accent !== void 0 && (!HEX_COLOR.test(accent.light) || accent.dark !== void 0 && !HEX_COLOR.test(accent.dark))) {
|
|
262
294
|
fail("ios.accentColor light and dark must be six-digit hex colors");
|
|
263
295
|
}
|
|
@@ -273,10 +305,10 @@ function validateNativeApp(manifest, platform) {
|
|
|
273
305
|
}
|
|
274
306
|
}
|
|
275
307
|
if (!platform || platform === "ios") {
|
|
276
|
-
var
|
|
277
|
-
if (!((
|
|
278
|
-
var
|
|
279
|
-
fail(`ios.bundleId "${(
|
|
308
|
+
var _manifest_ios5;
|
|
309
|
+
if (!((_manifest_ios5 = manifest.ios) === null || _manifest_ios5 === void 0 ? void 0 : _manifest_ios5.bundleId) || !REVERSE_DNS.test(manifest.ios.bundleId)) {
|
|
310
|
+
var _manifest_ios6;
|
|
311
|
+
fail(`ios.bundleId "${(_manifest_ios6 = manifest.ios) === null || _manifest_ios6 === void 0 ? void 0 : _manifest_ios6.bundleId}" must be reverse-dns`);
|
|
280
312
|
}
|
|
281
313
|
if (manifest.ios.deploymentTarget !== void 0 && !DEPLOYMENT_TARGET.test(manifest.ios.deploymentTarget)) {
|
|
282
314
|
fail(`ios.deploymentTarget "${manifest.ios.deploymentTarget}" must look like "17.0"`);
|
|
@@ -327,10 +359,10 @@ function validateNativeApp(manifest, platform) {
|
|
|
327
359
|
if (manifest.android.shrinkResources && !manifest.android.minify) {
|
|
328
360
|
fail("android.shrinkResources needs android.minify");
|
|
329
361
|
}
|
|
330
|
-
var
|
|
362
|
+
var _iteratorNormalCompletion5 = true, _didIteratorError5 = false, _iteratorError5 = void 0;
|
|
331
363
|
try {
|
|
332
|
-
for (var
|
|
333
|
-
var link =
|
|
364
|
+
for (var _iterator5 = ((_manifest_android_appLinks = manifest.android.appLinks) !== null && _manifest_android_appLinks !== void 0 ? _manifest_android_appLinks : [])[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {
|
|
365
|
+
var link = _step5.value;
|
|
334
366
|
if (!link.host || !REVERSE_DNS.test(link.host)) {
|
|
335
367
|
fail(`android.appLinks host "${link.host}" must be a domain`);
|
|
336
368
|
}
|
|
@@ -339,16 +371,16 @@ function validateNativeApp(manifest, platform) {
|
|
|
339
371
|
}
|
|
340
372
|
}
|
|
341
373
|
} catch (err) {
|
|
342
|
-
|
|
343
|
-
|
|
374
|
+
_didIteratorError5 = true;
|
|
375
|
+
_iteratorError5 = err;
|
|
344
376
|
} finally {
|
|
345
377
|
try {
|
|
346
|
-
if (!
|
|
347
|
-
|
|
378
|
+
if (!_iteratorNormalCompletion5 && _iterator5.return != null) {
|
|
379
|
+
_iterator5.return();
|
|
348
380
|
}
|
|
349
381
|
} finally {
|
|
350
|
-
if (
|
|
351
|
-
throw
|
|
382
|
+
if (_didIteratorError5) {
|
|
383
|
+
throw _iteratorError5;
|
|
352
384
|
}
|
|
353
385
|
}
|
|
354
386
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nativeAppManifest.native.js","names":[],"sources":["cjs/nativeAppManifest.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar nativeAppManifest_exports = {};\n__export(nativeAppManifest_exports, {\n expoClientFromNativeApp: () => expoClientFromNativeApp,\n validateNativeApp: () => validateNativeApp\n});\nmodule.exports = __toCommonJS(nativeAppManifest_exports);\nvar TARGET_NAME = /^[A-Za-z][A-Za-z0-9_]*$/;\nvar SCHEME = /^[a-z][a-z0-9+.-]*$/i;\nvar VERSION = /^\\d+\\.\\d+\\.\\d+/;\nvar BUILD_NUMBER = /^[A-Za-z0-9.]+$/;\nvar REVERSE_DNS = /^[A-Za-z][A-Za-z0-9-]*(\\.[A-Za-z][A-Za-z0-9-]*)+$/;\nvar DEPLOYMENT_TARGET = /^\\d+\\.\\d+$/;\nvar HEX_COLOR = /^#[\\da-f]{6}$/i;\nvar FONT_FILE = /\\.(ttf|otf)$/i;\nvar ORIENTATIONS = [\n \"portrait\",\n \"landscape\",\n \"default\"\n];\nvar USER_INTERFACE_STYLES = [\n \"light\",\n \"dark\",\n \"automatic\"\n];\nfunction fail(message) {\n throw new Error(`[one] invalid native.app: ${message}`);\n}\nfunction validateNativeApp(manifest, platform) {\n var _manifest_ios, _manifest_ios1, _manifest_splash, _manifest_splash_dark, _manifest_splash1, _manifest_splash2, _manifest_imagePicker, _manifest_photoLibrary, _manifest_photoLibrary1, _manifest_location, _manifest_ios2, _manifest_speech, _manifest_ios3;\n if (!manifest || typeof manifest !== \"object\") fail(\"manifest must be an object\");\n if (!manifest.name || typeof manifest.name !== \"string\") fail(\"name is required\");\n if (!TARGET_NAME.test(manifest.name)) {\n fail(`name \"${manifest.name}\" must start with a letter and contain only letters, digits, and underscore`);\n }\n var schemes = manifest.scheme === void 0 ? [] : Array.isArray(manifest.scheme) ? manifest.scheme : [\n manifest.scheme\n ];\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = schemes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var scheme = _step.value;\n if (typeof scheme !== \"string\" || !SCHEME.test(scheme)) {\n fail(`scheme \"${scheme}\" must be a valid uri scheme`);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n if (manifest.orientation !== void 0 && !ORIENTATIONS.includes(manifest.orientation)) {\n fail(`orientation \"${manifest.orientation}\" must be ${ORIENTATIONS.join(\", \")}`);\n }\n if (manifest.userInterfaceStyle !== void 0 && !USER_INTERFACE_STYLES.includes(manifest.userInterfaceStyle)) {\n fail(`userInterfaceStyle \"${manifest.userInterfaceStyle}\" must be ${USER_INTERFACE_STYLES.join(\", \")}`);\n }\n if (manifest.fonts !== void 0) {\n var names = /* @__PURE__ */ new Set();\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = manifest.fonts[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var font = _step1.value;\n var _font_split_pop;\n if (typeof font !== \"string\" || !FONT_FILE.test(font)) {\n fail(`fonts entry \"${font}\" must be a .ttf or .otf file path`);\n }\n var name = (_font_split_pop = font.split(\"/\").pop()) !== null && _font_split_pop !== void 0 ? _font_split_pop : font;\n if (names.has(name)) fail(`fonts lists ${name} twice`);\n names.add(name);\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally {\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n }\n if (manifest.version !== void 0 && !VERSION.test(manifest.version)) {\n fail(`version \"${manifest.version}\" must start with major.minor.patch`);\n }\n if (manifest.icon !== void 0 && (!manifest.icon.source || !HEX_COLOR.test(manifest.icon.backgroundColor))) {\n fail(\"icon requires source and a six-digit hex backgroundColor\");\n }\n if (((_manifest_ios = manifest.ios) === null || _manifest_ios === void 0 ? void 0 : _manifest_ios.alternateIcons) !== void 0) {\n if (!manifest.icon) fail(\"ios.alternateIcons requires a primary icon\");\n var entries = Object.entries(manifest.ios.alternateIcons);\n if (entries.length === 0) fail(\"ios.alternateIcons requires at least one icon\");\n var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;\n try {\n for (var _iterator2 = entries[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var [name1, icon] = _step2.value;\n if (name1 === \"AppIcon\" || !TARGET_NAME.test(name1)) {\n fail(`ios.alternateIcons name \"${name1}\" must be an identifier other than AppIcon`);\n }\n if (!(icon === null || icon === void 0 ? void 0 : icon.source) || !HEX_COLOR.test(icon.backgroundColor)) {\n fail(`ios.alternateIcons.${name1} requires source and a six-digit hex backgroundColor`);\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n if (((_manifest_ios1 = manifest.ios) === null || _manifest_ios1 === void 0 ? void 0 : _manifest_ios1.backgroundTasks) !== void 0) {\n var _tasks_refresh, _tasks_processing;\n var tasks = manifest.ios.backgroundTasks;\n if (!tasks || tasks.refresh !== void 0 && !Array.isArray(tasks.refresh) || tasks.processing !== void 0 && !Array.isArray(tasks.processing)) {\n fail(\"ios.backgroundTasks refresh and processing must be arrays of identifiers\");\n }\n var identifiers = [\n ...(_tasks_refresh = tasks.refresh) !== null && _tasks_refresh !== void 0 ? _tasks_refresh : [],\n ...(_tasks_processing = tasks.processing) !== null && _tasks_processing !== void 0 ? _tasks_processing : []\n ];\n if (!identifiers.length || new Set(identifiers).size !== identifiers.length) {\n fail(\"ios.backgroundTasks needs distinct refresh or processing identifiers\");\n }\n var _iteratorNormalCompletion3 = true, _didIteratorError3 = false, _iteratorError3 = void 0;\n try {\n for (var _iterator3 = identifiers[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var identifier = _step3.value;\n if (typeof identifier !== \"string\" || !REVERSE_DNS.test(identifier)) {\n fail(`ios.backgroundTasks identifier \"${identifier}\" must use reverse DNS notation`);\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n if (manifest.splash !== void 0 && (!manifest.splash.source || !HEX_COLOR.test(manifest.splash.backgroundColor) || manifest.splash.width !== void 0 && (!Number.isFinite(manifest.splash.width) || manifest.splash.width < 1 || manifest.splash.width > 288))) {\n fail(\"splash requires source, a six-digit hex backgroundColor, and width from 1 to 288\");\n }\n if (((_manifest_splash = manifest.splash) === null || _manifest_splash === void 0 ? void 0 : _manifest_splash.dark) !== void 0 && !HEX_COLOR.test(manifest.splash.dark.backgroundColor)) {\n fail(\"splash.dark requires a six-digit hex backgroundColor\");\n }\n if (((_manifest_splash1 = manifest.splash) === null || _manifest_splash1 === void 0 ? void 0 : (_manifest_splash_dark = _manifest_splash1.dark) === null || _manifest_splash_dark === void 0 ? void 0 : _manifest_splash_dark.backgroundImage) !== void 0 && manifest.splash.backgroundImage === void 0) {\n fail(\"splash.dark.backgroundImage needs splash.backgroundImage for the light launch\");\n }\n if (((_manifest_splash2 = manifest.splash) === null || _manifest_splash2 === void 0 ? void 0 : _manifest_splash2.resizeMode) !== void 0 && manifest.splash.resizeMode !== \"contain\" && manifest.splash.resizeMode !== \"cover\") {\n fail(`splash.resizeMode \"${manifest.splash.resizeMode}\" must be contain or cover`);\n }\n if (((_manifest_imagePicker = manifest.imagePicker) === null || _manifest_imagePicker === void 0 ? void 0 : _manifest_imagePicker.camera) !== void 0 && (typeof manifest.imagePicker.camera !== \"string\" || manifest.imagePicker.camera.trim() === \"\")) {\n fail(\"imagePicker.camera must be a non-empty string\");\n }\n if (manifest.photoLibrary !== void 0 && (!manifest.photoLibrary || manifest.photoLibrary.addOnly === void 0 && manifest.photoLibrary.readWrite === void 0)) {\n fail(\"photoLibrary must configure addOnly or readWrite\");\n }\n if (((_manifest_photoLibrary = manifest.photoLibrary) === null || _manifest_photoLibrary === void 0 ? void 0 : _manifest_photoLibrary.addOnly) !== void 0 && (typeof manifest.photoLibrary.addOnly !== \"string\" || manifest.photoLibrary.addOnly.trim() === \"\")) {\n fail(\"photoLibrary.addOnly must be a non-empty string\");\n }\n if (((_manifest_photoLibrary1 = manifest.photoLibrary) === null || _manifest_photoLibrary1 === void 0 ? void 0 : _manifest_photoLibrary1.readWrite) !== void 0 && (typeof manifest.photoLibrary.readWrite !== \"string\" || manifest.photoLibrary.readWrite.trim() === \"\")) {\n fail(\"photoLibrary.readWrite must be a non-empty string\");\n }\n if (manifest.contacts !== void 0 && (!manifest.contacts || typeof manifest.contacts.usage !== \"string\" || manifest.contacts.usage.trim() === \"\")) {\n fail(\"contacts.usage must be a non-empty string\");\n }\n if (manifest.calendar !== void 0) {\n if (!manifest.calendar || manifest.calendar.usage === void 0 && manifest.calendar.remindersUsage === void 0) {\n fail(\"calendar.usage or calendar.remindersUsage must be a non-empty string\");\n }\n if (manifest.calendar.usage !== void 0 && (typeof manifest.calendar.usage !== \"string\" || manifest.calendar.usage.trim() === \"\")) {\n fail(\"calendar.usage must be a non-empty string\");\n }\n if (manifest.calendar.remindersUsage !== void 0 && (typeof manifest.calendar.remindersUsage !== \"string\" || manifest.calendar.remindersUsage.trim() === \"\")) {\n fail(\"calendar.remindersUsage must be a non-empty string\");\n }\n }\n if (manifest.location !== void 0 && (!manifest.location || typeof manifest.location.whenInUse !== \"string\" || manifest.location.whenInUse.trim() === \"\")) {\n fail(\"location.whenInUse must be a non-empty string\");\n }\n if (((_manifest_location = manifest.location) === null || _manifest_location === void 0 ? void 0 : _manifest_location.background) !== void 0 && typeof manifest.location.background !== \"boolean\") {\n fail(\"location.background must be a boolean\");\n }\n if (manifest.audio !== void 0) {\n if (!manifest.audio || typeof manifest.audio !== \"object\") {\n fail(\"audio must configure microphone or background playback\");\n }\n if (manifest.audio.microphone !== void 0 && (typeof manifest.audio.microphone !== \"string\" || manifest.audio.microphone.trim() === \"\")) {\n fail(\"audio.microphone must be a non-empty string\");\n }\n if (manifest.audio.background !== void 0 && typeof manifest.audio.background !== \"boolean\") {\n fail(\"audio.background must be a boolean\");\n }\n if (manifest.audio.microphone === void 0 && manifest.audio.background !== true) {\n fail(\"audio must configure microphone or background playback\");\n }\n }\n if (((_manifest_ios2 = manifest.ios) === null || _manifest_ios2 === void 0 ? void 0 : _manifest_ios2.faceIdUsageDescription) !== void 0 && (typeof manifest.ios.faceIdUsageDescription !== \"string\" || manifest.ios.faceIdUsageDescription.trim() === \"\")) {\n fail(\"ios.faceIdUsageDescription must be a non-empty string\");\n }\n if (manifest.speech !== void 0 && (typeof ((_manifest_speech = manifest.speech) === null || _manifest_speech === void 0 ? void 0 : _manifest_speech.recognition) !== \"string\" || manifest.speech.recognition.trim() === \"\" || typeof manifest.speech.microphone !== \"string\" || manifest.speech.microphone.trim() === \"\")) {\n fail(\"speech.recognition and speech.microphone must be non-empty strings\");\n }\n if (manifest.notifications !== void 0) {\n if (typeof manifest.notifications !== \"object\" || manifest.notifications.push !== void 0 && typeof manifest.notifications.push !== \"boolean\") {\n fail(\"notifications.push must be a boolean\");\n }\n var aps = manifest.notifications.apsEnvironment;\n if (aps !== void 0 && aps !== \"development\" && aps !== \"production\") {\n fail(`notifications.apsEnvironment \"${aps}\" must be development or production`);\n }\n if (aps !== void 0 && !manifest.notifications.push) {\n fail(\"notifications.apsEnvironment needs notifications.push\");\n }\n }\n var accent = (_manifest_ios3 = manifest.ios) === null || _manifest_ios3 === void 0 ? void 0 : _manifest_ios3.accentColor;\n if (accent !== void 0 && (!HEX_COLOR.test(accent.light) || accent.dark !== void 0 && !HEX_COLOR.test(accent.dark))) {\n fail(\"ios.accentColor light and dark must be six-digit hex colors\");\n }\n if (manifest.pictureInPicture !== void 0 && typeof manifest.pictureInPicture !== \"boolean\") {\n fail(\"pictureInPicture must be a boolean\");\n }\n if (manifest.updates !== void 0) {\n if (typeof manifest.updates.runtimeVersion !== \"string\" || manifest.updates.runtimeVersion.trim() === \"\") {\n fail(\"updates.runtimeVersion must be a non-empty string\");\n }\n if (manifest.updates.url !== void 0 && (typeof manifest.updates.url !== \"string\" || manifest.updates.url.trim() === \"\")) {\n fail(\"updates.url must be a non-empty string\");\n }\n }\n if (!platform || platform === \"ios\") {\n var _manifest_ios4;\n if (!((_manifest_ios4 = manifest.ios) === null || _manifest_ios4 === void 0 ? void 0 : _manifest_ios4.bundleId) || !REVERSE_DNS.test(manifest.ios.bundleId)) {\n var _manifest_ios5;\n fail(`ios.bundleId \"${(_manifest_ios5 = manifest.ios) === null || _manifest_ios5 === void 0 ? void 0 : _manifest_ios5.bundleId}\" must be reverse-dns`);\n }\n if (manifest.ios.deploymentTarget !== void 0 && !DEPLOYMENT_TARGET.test(manifest.ios.deploymentTarget)) {\n fail(`ios.deploymentTarget \"${manifest.ios.deploymentTarget}\" must look like \"17.0\"`);\n }\n if (manifest.ios.buildNumber !== void 0 && !BUILD_NUMBER.test(manifest.ios.buildNumber)) {\n fail(`ios.buildNumber \"${manifest.ios.buildNumber}\" must contain only letters, digits, and dots`);\n }\n var widgets = manifest.ios.widgets;\n if (widgets) {\n var _widgets_displayName, _widgets_description;\n if (!manifest.ios.deploymentTarget || Number(manifest.ios.deploymentTarget) < 17) {\n fail(\"ios.widgets requires ios.deploymentTarget of 17.0 or newer\");\n }\n if (!/^group\\.[A-Za-z][A-Za-z0-9-]*(\\.[A-Za-z][A-Za-z0-9-]*)+$/.test(widgets.appGroup)) {\n fail(\"ios.widgets.appGroup must be a reverse-dns App Group beginning with group.\");\n }\n if (!/^[A-Za-z][A-Za-z0-9._-]*$/.test(widgets.kind)) {\n fail(\"ios.widgets.kind must be a non-empty WidgetKit kind\");\n }\n if (!((_widgets_displayName = widgets.displayName) === null || _widgets_displayName === void 0 ? void 0 : _widgets_displayName.trim()) || !((_widgets_description = widgets.description) === null || _widgets_description === void 0 ? void 0 : _widgets_description.trim())) {\n fail(\"ios.widgets.displayName and description must be non-empty strings\");\n }\n if (widgets.pushNotifications !== void 0 && typeof widgets.pushNotifications !== \"boolean\") {\n fail(\"ios.widgets.pushNotifications must be a boolean\");\n }\n }\n }\n if (!platform || platform === \"android\") {\n var _manifest_android_appLinks;\n var _manifest_android;\n if (!((_manifest_android = manifest.android) === null || _manifest_android === void 0 ? void 0 : _manifest_android.applicationId) || !REVERSE_DNS.test(manifest.android.applicationId)) {\n var _manifest_android1;\n fail(`android.applicationId \"${(_manifest_android1 = manifest.android) === null || _manifest_android1 === void 0 ? void 0 : _manifest_android1.applicationId}\" must be reverse-dns`);\n }\n if (manifest.android.minSdk !== void 0 && (!Number.isInteger(manifest.android.minSdk) || manifest.android.minSdk < 21 || manifest.android.minSdk > 36)) {\n fail(`android.minSdk \"${manifest.android.minSdk}\" must be an integer from 21 to 36`);\n }\n if (manifest.android.versionCode !== void 0 && (!Number.isInteger(manifest.android.versionCode) || manifest.android.versionCode < 1)) {\n fail(`android.versionCode \"${manifest.android.versionCode}\" must be a positive integer`);\n }\n for (var _i = 0, _iter = [\n \"targetSdk\",\n \"compileSdk\"\n ]; _i < _iter.length; _i++) {\n var key = _iter[_i];\n var value = manifest.android[key];\n if (value !== void 0 && (!Number.isInteger(value) || value < 21)) {\n fail(`android.${key} \"${value}\" must be an api level integer`);\n }\n }\n if (manifest.android.shrinkResources && !manifest.android.minify) {\n fail(\"android.shrinkResources needs android.minify\");\n }\n var _iteratorNormalCompletion4 = true, _didIteratorError4 = false, _iteratorError4 = void 0;\n try {\n for (var _iterator4 = ((_manifest_android_appLinks = manifest.android.appLinks) !== null && _manifest_android_appLinks !== void 0 ? _manifest_android_appLinks : [])[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var link = _step4.value;\n if (!link.host || !REVERSE_DNS.test(link.host)) {\n fail(`android.appLinks host \"${link.host}\" must be a domain`);\n }\n if (link.pathPrefix !== void 0 && !link.pathPrefix.startsWith(\"/\")) {\n fail(`android.appLinks pathPrefix \"${link.pathPrefix}\" must start with /`);\n }\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n var adaptiveIcon = manifest.android.adaptiveIcon;\n if (adaptiveIcon !== void 0 && (!adaptiveIcon.foreground || adaptiveIcon.backgroundColor !== void 0 && !HEX_COLOR.test(adaptiveIcon.backgroundColor))) {\n fail(\"android.adaptiveIcon requires foreground, and backgroundColor must be six-digit hex\");\n }\n if (manifest.android.googleMapsApiKey !== void 0 && (typeof manifest.android.googleMapsApiKey !== \"string\" || manifest.android.googleMapsApiKey.trim() === \"\")) {\n fail(\"android.googleMapsApiKey must be a non-empty string\");\n }\n }\n return manifest;\n}\nfunction expoClientFromNativeApp(app) {\n var _app_displayName, _app_userInterfaceStyle;\n var _app_icon, _app_fonts;\n return {\n name: (_app_displayName = app.displayName) !== null && _app_displayName !== void 0 ? _app_displayName : app.name,\n slug: app.name,\n scheme: app.scheme,\n version: app.version,\n orientation: app.orientation,\n // an expo config without the key means light, while prebuild writes no\n // UIUserInterfaceStyle for an unset style and the app follows the system,\n // so the manifest states the style the built app has.\n userInterfaceStyle: (_app_userInterfaceStyle = app.userInterfaceStyle) !== null && _app_userInterfaceStyle !== void 0 ? _app_userInterfaceStyle : \"automatic\",\n icon: (_app_icon = app.icon) === null || _app_icon === void 0 ? void 0 : _app_icon.source,\n splash: app.splash && {\n image: app.splash.source,\n backgroundImage: app.splash.backgroundImage,\n backgroundColor: app.splash.backgroundColor,\n imageWidth: app.splash.width,\n resizeMode: app.splash.resizeMode,\n dark: app.splash.dark && {\n image: app.splash.dark.source,\n backgroundImage: app.splash.dark.backgroundImage,\n backgroundColor: app.splash.dark.backgroundColor\n }\n },\n plugins: ((_app_fonts = app.fonts) === null || _app_fonts === void 0 ? void 0 : _app_fonts.length) ? [\n [\n \"expo-font\",\n {\n fonts: app.fonts\n }\n ]\n ] : void 0,\n ios: app.ios && {\n bundleIdentifier: app.ios.bundleId,\n buildNumber: app.ios.buildNumber,\n supportsTablet: app.ios.tablet,\n associatedDomains: app.ios.associatedDomains,\n usesAppleSignIn: app.ios.usesAppleSignIn,\n googleServicesFile: app.ios.googleServicesFile,\n infoPlist: app.ios.infoPlist,\n entitlements: app.ios.entitlements\n },\n android: app.android && {\n package: app.android.applicationId,\n versionCode: app.android.versionCode,\n permissions: app.android.permissions,\n blockedPermissions: app.android.blockedPermissions,\n googleServicesFile: app.android.googleServicesFile,\n adaptiveIcon: app.android.adaptiveIcon && {\n foregroundImage: app.android.adaptiveIcon.foreground,\n backgroundImage: app.android.adaptiveIcon.background,\n backgroundColor: app.android.adaptiveIcon.backgroundColor,\n monochromeImage: app.android.adaptiveIcon.monochrome\n }\n }\n };\n}\n//# sourceMappingURL=nativeAppManifest.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nativeAppManifest.native.js","names":[],"sources":["cjs/nativeAppManifest.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar nativeAppManifest_exports = {};\n__export(nativeAppManifest_exports, {\n expoClientFromNativeApp: () => expoClientFromNativeApp,\n validateNativeApp: () => validateNativeApp\n});\nmodule.exports = __toCommonJS(nativeAppManifest_exports);\nvar TARGET_NAME = /^[A-Za-z][A-Za-z0-9_]*$/;\nvar SCHEME = /^[a-z][a-z0-9+.-]*$/i;\nvar VERSION = /^\\d+\\.\\d+\\.\\d+/;\nvar BUILD_NUMBER = /^[A-Za-z0-9.]+$/;\nvar REVERSE_DNS = /^[A-Za-z][A-Za-z0-9-]*(\\.[A-Za-z][A-Za-z0-9-]*)+$/;\nvar DEPLOYMENT_TARGET = /^\\d+\\.\\d+$/;\nvar HEX_COLOR = /^#[\\da-f]{6}$/i;\nvar FONT_FILE = /\\.(ttf|otf)$/i;\nvar ORIENTATIONS = [\n \"portrait\",\n \"landscape\",\n \"default\"\n];\nvar USER_INTERFACE_STYLES = [\n \"light\",\n \"dark\",\n \"automatic\"\n];\nfunction fail(message) {\n throw new Error(`[one] invalid native.app: ${message}`);\n}\nfunction validateNativeApp(manifest, platform) {\n var _manifest_ios, _manifest_ios1, _manifest_ios2, _manifest_splash, _manifest_splash_dark, _manifest_splash1, _manifest_splash2, _manifest_imagePicker, _manifest_photoLibrary, _manifest_photoLibrary1, _manifest_location, _manifest_ios3, _manifest_speech, _manifest_ios4;\n if (!manifest || typeof manifest !== \"object\") fail(\"manifest must be an object\");\n if (!manifest.name || typeof manifest.name !== \"string\") fail(\"name is required\");\n if (!TARGET_NAME.test(manifest.name)) {\n fail(`name \"${manifest.name}\" must start with a letter and contain only letters, digits, and underscore`);\n }\n var schemes = manifest.scheme === void 0 ? [] : Array.isArray(manifest.scheme) ? manifest.scheme : [\n manifest.scheme\n ];\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = schemes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var scheme = _step.value;\n if (typeof scheme !== \"string\" || !SCHEME.test(scheme)) {\n fail(`scheme \"${scheme}\" must be a valid uri scheme`);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n if (manifest.orientation !== void 0 && !ORIENTATIONS.includes(manifest.orientation)) {\n fail(`orientation \"${manifest.orientation}\" must be ${ORIENTATIONS.join(\", \")}`);\n }\n if (manifest.userInterfaceStyle !== void 0 && !USER_INTERFACE_STYLES.includes(manifest.userInterfaceStyle)) {\n fail(`userInterfaceStyle \"${manifest.userInterfaceStyle}\" must be ${USER_INTERFACE_STYLES.join(\", \")}`);\n }\n if (manifest.fonts !== void 0) {\n var names = /* @__PURE__ */ new Set();\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = manifest.fonts[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var font = _step1.value;\n var _font_split_pop;\n if (typeof font !== \"string\" || !FONT_FILE.test(font)) {\n fail(`fonts entry \"${font}\" must be a .ttf or .otf file path`);\n }\n var name = (_font_split_pop = font.split(\"/\").pop()) !== null && _font_split_pop !== void 0 ? _font_split_pop : font;\n if (names.has(name)) fail(`fonts lists ${name} twice`);\n names.add(name);\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally {\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n }\n if (manifest.version !== void 0 && !VERSION.test(manifest.version)) {\n fail(`version \"${manifest.version}\" must start with major.minor.patch`);\n }\n if (manifest.icon !== void 0 && (!manifest.icon.source || !HEX_COLOR.test(manifest.icon.backgroundColor))) {\n fail(\"icon requires source and a six-digit hex backgroundColor\");\n }\n if (((_manifest_ios = manifest.ios) === null || _manifest_ios === void 0 ? void 0 : _manifest_ios.alternateIcons) !== void 0) {\n if (!manifest.icon) fail(\"ios.alternateIcons requires a primary icon\");\n var entries = Object.entries(manifest.ios.alternateIcons);\n if (entries.length === 0) fail(\"ios.alternateIcons requires at least one icon\");\n var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;\n try {\n for (var _iterator2 = entries[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var [name1, icon] = _step2.value;\n if (name1 === \"AppIcon\" || !TARGET_NAME.test(name1)) {\n fail(`ios.alternateIcons name \"${name1}\" must be an identifier other than AppIcon`);\n }\n if (!(icon === null || icon === void 0 ? void 0 : icon.source) || !HEX_COLOR.test(icon.backgroundColor)) {\n fail(`ios.alternateIcons.${name1} requires source and a six-digit hex backgroundColor`);\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n if (((_manifest_ios1 = manifest.ios) === null || _manifest_ios1 === void 0 ? void 0 : _manifest_ios1.backgroundTasks) !== void 0) {\n var _tasks_refresh, _tasks_processing;\n var tasks = manifest.ios.backgroundTasks;\n if (!tasks || tasks.refresh !== void 0 && !Array.isArray(tasks.refresh) || tasks.processing !== void 0 && !Array.isArray(tasks.processing)) {\n fail(\"ios.backgroundTasks refresh and processing must be arrays of identifiers\");\n }\n var identifiers = [\n ...(_tasks_refresh = tasks.refresh) !== null && _tasks_refresh !== void 0 ? _tasks_refresh : [],\n ...(_tasks_processing = tasks.processing) !== null && _tasks_processing !== void 0 ? _tasks_processing : []\n ];\n if (!identifiers.length || new Set(identifiers).size !== identifiers.length) {\n fail(\"ios.backgroundTasks needs distinct refresh or processing identifiers\");\n }\n var _iteratorNormalCompletion3 = true, _didIteratorError3 = false, _iteratorError3 = void 0;\n try {\n for (var _iterator3 = identifiers[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var identifier = _step3.value;\n if (typeof identifier !== \"string\" || !REVERSE_DNS.test(identifier)) {\n fail(`ios.backgroundTasks identifier \"${identifier}\" must use reverse DNS notation`);\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n if (((_manifest_ios2 = manifest.ios) === null || _manifest_ios2 === void 0 ? void 0 : _manifest_ios2.appIntents) !== void 0) {\n var _manifest_ios_appIntents;\n var actions = (_manifest_ios_appIntents = manifest.ios.appIntents) === null || _manifest_ios_appIntents === void 0 ? void 0 : _manifest_ios_appIntents.actions;\n if (!Array.isArray(actions) || actions.length === 0) {\n fail(\"ios.appIntents.actions must be a non-empty array\");\n }\n var ids = /* @__PURE__ */ new Set();\n var _iteratorNormalCompletion4 = true, _didIteratorError4 = false, _iteratorError4 = void 0;\n try {\n for (var _iterator4 = actions[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var action = _step4.value;\n if (!action || typeof action !== \"object\" || typeof action.id !== \"string\" || !action.id.trim() || typeof action.title !== \"string\" || !action.title.trim() || action.textParameterTitle !== void 0 && (typeof action.textParameterTitle !== \"string\" || !action.textParameterTitle.trim()) || typeof action.shortcutPhrase !== \"string\" || action.shortcutPhrase.split(\"{app}\").length !== 2 || !action.shortcutPhrase.replace(\"{app}\", \"\").trim()) {\n fail(\"ios.appIntents actions need unique non-empty id/title, optional textParameterTitle, and a shortcutPhrase with one {app}\");\n }\n if (ids.has(action.id)) fail(`ios.appIntents action \"${action.id}\" is duplicated`);\n ids.add(action.id);\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n }\n if (manifest.splash !== void 0 && (!manifest.splash.source || !HEX_COLOR.test(manifest.splash.backgroundColor) || manifest.splash.width !== void 0 && (!Number.isFinite(manifest.splash.width) || manifest.splash.width < 1 || manifest.splash.width > 288))) {\n fail(\"splash requires source, a six-digit hex backgroundColor, and width from 1 to 288\");\n }\n if (((_manifest_splash = manifest.splash) === null || _manifest_splash === void 0 ? void 0 : _manifest_splash.dark) !== void 0 && !HEX_COLOR.test(manifest.splash.dark.backgroundColor)) {\n fail(\"splash.dark requires a six-digit hex backgroundColor\");\n }\n if (((_manifest_splash1 = manifest.splash) === null || _manifest_splash1 === void 0 ? void 0 : (_manifest_splash_dark = _manifest_splash1.dark) === null || _manifest_splash_dark === void 0 ? void 0 : _manifest_splash_dark.backgroundImage) !== void 0 && manifest.splash.backgroundImage === void 0) {\n fail(\"splash.dark.backgroundImage needs splash.backgroundImage for the light launch\");\n }\n if (((_manifest_splash2 = manifest.splash) === null || _manifest_splash2 === void 0 ? void 0 : _manifest_splash2.resizeMode) !== void 0 && manifest.splash.resizeMode !== \"contain\" && manifest.splash.resizeMode !== \"cover\") {\n fail(`splash.resizeMode \"${manifest.splash.resizeMode}\" must be contain or cover`);\n }\n if (((_manifest_imagePicker = manifest.imagePicker) === null || _manifest_imagePicker === void 0 ? void 0 : _manifest_imagePicker.camera) !== void 0 && (typeof manifest.imagePicker.camera !== \"string\" || manifest.imagePicker.camera.trim() === \"\")) {\n fail(\"imagePicker.camera must be a non-empty string\");\n }\n if (manifest.photoLibrary !== void 0 && (!manifest.photoLibrary || manifest.photoLibrary.addOnly === void 0 && manifest.photoLibrary.readWrite === void 0)) {\n fail(\"photoLibrary must configure addOnly or readWrite\");\n }\n if (((_manifest_photoLibrary = manifest.photoLibrary) === null || _manifest_photoLibrary === void 0 ? void 0 : _manifest_photoLibrary.addOnly) !== void 0 && (typeof manifest.photoLibrary.addOnly !== \"string\" || manifest.photoLibrary.addOnly.trim() === \"\")) {\n fail(\"photoLibrary.addOnly must be a non-empty string\");\n }\n if (((_manifest_photoLibrary1 = manifest.photoLibrary) === null || _manifest_photoLibrary1 === void 0 ? void 0 : _manifest_photoLibrary1.readWrite) !== void 0 && (typeof manifest.photoLibrary.readWrite !== \"string\" || manifest.photoLibrary.readWrite.trim() === \"\")) {\n fail(\"photoLibrary.readWrite must be a non-empty string\");\n }\n if (manifest.contacts !== void 0 && (!manifest.contacts || typeof manifest.contacts.usage !== \"string\" || manifest.contacts.usage.trim() === \"\")) {\n fail(\"contacts.usage must be a non-empty string\");\n }\n if (manifest.calendar !== void 0) {\n if (!manifest.calendar || manifest.calendar.usage === void 0 && manifest.calendar.remindersUsage === void 0) {\n fail(\"calendar.usage or calendar.remindersUsage must be a non-empty string\");\n }\n if (manifest.calendar.usage !== void 0 && (typeof manifest.calendar.usage !== \"string\" || manifest.calendar.usage.trim() === \"\")) {\n fail(\"calendar.usage must be a non-empty string\");\n }\n if (manifest.calendar.remindersUsage !== void 0 && (typeof manifest.calendar.remindersUsage !== \"string\" || manifest.calendar.remindersUsage.trim() === \"\")) {\n fail(\"calendar.remindersUsage must be a non-empty string\");\n }\n }\n if (manifest.location !== void 0 && (!manifest.location || typeof manifest.location.whenInUse !== \"string\" || manifest.location.whenInUse.trim() === \"\")) {\n fail(\"location.whenInUse must be a non-empty string\");\n }\n if (((_manifest_location = manifest.location) === null || _manifest_location === void 0 ? void 0 : _manifest_location.background) !== void 0 && typeof manifest.location.background !== \"boolean\") {\n fail(\"location.background must be a boolean\");\n }\n if (manifest.audio !== void 0) {\n if (!manifest.audio || typeof manifest.audio !== \"object\") {\n fail(\"audio must configure microphone or background playback\");\n }\n if (manifest.audio.microphone !== void 0 && (typeof manifest.audio.microphone !== \"string\" || manifest.audio.microphone.trim() === \"\")) {\n fail(\"audio.microphone must be a non-empty string\");\n }\n if (manifest.audio.background !== void 0 && typeof manifest.audio.background !== \"boolean\") {\n fail(\"audio.background must be a boolean\");\n }\n if (manifest.audio.microphone === void 0 && manifest.audio.background !== true) {\n fail(\"audio must configure microphone or background playback\");\n }\n }\n if (((_manifest_ios3 = manifest.ios) === null || _manifest_ios3 === void 0 ? void 0 : _manifest_ios3.faceIdUsageDescription) !== void 0 && (typeof manifest.ios.faceIdUsageDescription !== \"string\" || manifest.ios.faceIdUsageDescription.trim() === \"\")) {\n fail(\"ios.faceIdUsageDescription must be a non-empty string\");\n }\n if (manifest.speech !== void 0 && (typeof ((_manifest_speech = manifest.speech) === null || _manifest_speech === void 0 ? void 0 : _manifest_speech.recognition) !== \"string\" || manifest.speech.recognition.trim() === \"\" || typeof manifest.speech.microphone !== \"string\" || manifest.speech.microphone.trim() === \"\")) {\n fail(\"speech.recognition and speech.microphone must be non-empty strings\");\n }\n if (manifest.notifications !== void 0) {\n if (typeof manifest.notifications !== \"object\" || manifest.notifications.push !== void 0 && typeof manifest.notifications.push !== \"boolean\") {\n fail(\"notifications.push must be a boolean\");\n }\n var aps = manifest.notifications.apsEnvironment;\n if (aps !== void 0 && aps !== \"development\" && aps !== \"production\") {\n fail(`notifications.apsEnvironment \"${aps}\" must be development or production`);\n }\n if (aps !== void 0 && !manifest.notifications.push) {\n fail(\"notifications.apsEnvironment needs notifications.push\");\n }\n }\n var accent = (_manifest_ios4 = manifest.ios) === null || _manifest_ios4 === void 0 ? void 0 : _manifest_ios4.accentColor;\n if (accent !== void 0 && (!HEX_COLOR.test(accent.light) || accent.dark !== void 0 && !HEX_COLOR.test(accent.dark))) {\n fail(\"ios.accentColor light and dark must be six-digit hex colors\");\n }\n if (manifest.pictureInPicture !== void 0 && typeof manifest.pictureInPicture !== \"boolean\") {\n fail(\"pictureInPicture must be a boolean\");\n }\n if (manifest.updates !== void 0) {\n if (typeof manifest.updates.runtimeVersion !== \"string\" || manifest.updates.runtimeVersion.trim() === \"\") {\n fail(\"updates.runtimeVersion must be a non-empty string\");\n }\n if (manifest.updates.url !== void 0 && (typeof manifest.updates.url !== \"string\" || manifest.updates.url.trim() === \"\")) {\n fail(\"updates.url must be a non-empty string\");\n }\n }\n if (!platform || platform === \"ios\") {\n var _manifest_ios5;\n if (!((_manifest_ios5 = manifest.ios) === null || _manifest_ios5 === void 0 ? void 0 : _manifest_ios5.bundleId) || !REVERSE_DNS.test(manifest.ios.bundleId)) {\n var _manifest_ios6;\n fail(`ios.bundleId \"${(_manifest_ios6 = manifest.ios) === null || _manifest_ios6 === void 0 ? void 0 : _manifest_ios6.bundleId}\" must be reverse-dns`);\n }\n if (manifest.ios.deploymentTarget !== void 0 && !DEPLOYMENT_TARGET.test(manifest.ios.deploymentTarget)) {\n fail(`ios.deploymentTarget \"${manifest.ios.deploymentTarget}\" must look like \"17.0\"`);\n }\n if (manifest.ios.buildNumber !== void 0 && !BUILD_NUMBER.test(manifest.ios.buildNumber)) {\n fail(`ios.buildNumber \"${manifest.ios.buildNumber}\" must contain only letters, digits, and dots`);\n }\n var widgets = manifest.ios.widgets;\n if (widgets) {\n var _widgets_displayName, _widgets_description;\n if (!manifest.ios.deploymentTarget || Number(manifest.ios.deploymentTarget) < 17) {\n fail(\"ios.widgets requires ios.deploymentTarget of 17.0 or newer\");\n }\n if (!/^group\\.[A-Za-z][A-Za-z0-9-]*(\\.[A-Za-z][A-Za-z0-9-]*)+$/.test(widgets.appGroup)) {\n fail(\"ios.widgets.appGroup must be a reverse-dns App Group beginning with group.\");\n }\n if (!/^[A-Za-z][A-Za-z0-9._-]*$/.test(widgets.kind)) {\n fail(\"ios.widgets.kind must be a non-empty WidgetKit kind\");\n }\n if (!((_widgets_displayName = widgets.displayName) === null || _widgets_displayName === void 0 ? void 0 : _widgets_displayName.trim()) || !((_widgets_description = widgets.description) === null || _widgets_description === void 0 ? void 0 : _widgets_description.trim())) {\n fail(\"ios.widgets.displayName and description must be non-empty strings\");\n }\n if (widgets.pushNotifications !== void 0 && typeof widgets.pushNotifications !== \"boolean\") {\n fail(\"ios.widgets.pushNotifications must be a boolean\");\n }\n }\n }\n if (!platform || platform === \"android\") {\n var _manifest_android_appLinks;\n var _manifest_android;\n if (!((_manifest_android = manifest.android) === null || _manifest_android === void 0 ? void 0 : _manifest_android.applicationId) || !REVERSE_DNS.test(manifest.android.applicationId)) {\n var _manifest_android1;\n fail(`android.applicationId \"${(_manifest_android1 = manifest.android) === null || _manifest_android1 === void 0 ? void 0 : _manifest_android1.applicationId}\" must be reverse-dns`);\n }\n if (manifest.android.minSdk !== void 0 && (!Number.isInteger(manifest.android.minSdk) || manifest.android.minSdk < 21 || manifest.android.minSdk > 36)) {\n fail(`android.minSdk \"${manifest.android.minSdk}\" must be an integer from 21 to 36`);\n }\n if (manifest.android.versionCode !== void 0 && (!Number.isInteger(manifest.android.versionCode) || manifest.android.versionCode < 1)) {\n fail(`android.versionCode \"${manifest.android.versionCode}\" must be a positive integer`);\n }\n for (var _i = 0, _iter = [\n \"targetSdk\",\n \"compileSdk\"\n ]; _i < _iter.length; _i++) {\n var key = _iter[_i];\n var value = manifest.android[key];\n if (value !== void 0 && (!Number.isInteger(value) || value < 21)) {\n fail(`android.${key} \"${value}\" must be an api level integer`);\n }\n }\n if (manifest.android.shrinkResources && !manifest.android.minify) {\n fail(\"android.shrinkResources needs android.minify\");\n }\n var _iteratorNormalCompletion5 = true, _didIteratorError5 = false, _iteratorError5 = void 0;\n try {\n for (var _iterator5 = ((_manifest_android_appLinks = manifest.android.appLinks) !== null && _manifest_android_appLinks !== void 0 ? _manifest_android_appLinks : [])[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var link = _step5.value;\n if (!link.host || !REVERSE_DNS.test(link.host)) {\n fail(`android.appLinks host \"${link.host}\" must be a domain`);\n }\n if (link.pathPrefix !== void 0 && !link.pathPrefix.startsWith(\"/\")) {\n fail(`android.appLinks pathPrefix \"${link.pathPrefix}\" must start with /`);\n }\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return != null) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n var adaptiveIcon = manifest.android.adaptiveIcon;\n if (adaptiveIcon !== void 0 && (!adaptiveIcon.foreground || adaptiveIcon.backgroundColor !== void 0 && !HEX_COLOR.test(adaptiveIcon.backgroundColor))) {\n fail(\"android.adaptiveIcon requires foreground, and backgroundColor must be six-digit hex\");\n }\n if (manifest.android.googleMapsApiKey !== void 0 && (typeof manifest.android.googleMapsApiKey !== \"string\" || manifest.android.googleMapsApiKey.trim() === \"\")) {\n fail(\"android.googleMapsApiKey must be a non-empty string\");\n }\n }\n return manifest;\n}\nfunction expoClientFromNativeApp(app) {\n var _app_displayName, _app_userInterfaceStyle;\n var _app_icon, _app_fonts;\n return {\n name: (_app_displayName = app.displayName) !== null && _app_displayName !== void 0 ? _app_displayName : app.name,\n slug: app.name,\n scheme: app.scheme,\n version: app.version,\n orientation: app.orientation,\n // an expo config without the key means light, while prebuild writes no\n // UIUserInterfaceStyle for an unset style and the app follows the system,\n // so the manifest states the style the built app has.\n userInterfaceStyle: (_app_userInterfaceStyle = app.userInterfaceStyle) !== null && _app_userInterfaceStyle !== void 0 ? _app_userInterfaceStyle : \"automatic\",\n icon: (_app_icon = app.icon) === null || _app_icon === void 0 ? void 0 : _app_icon.source,\n splash: app.splash && {\n image: app.splash.source,\n backgroundImage: app.splash.backgroundImage,\n backgroundColor: app.splash.backgroundColor,\n imageWidth: app.splash.width,\n resizeMode: app.splash.resizeMode,\n dark: app.splash.dark && {\n image: app.splash.dark.source,\n backgroundImage: app.splash.dark.backgroundImage,\n backgroundColor: app.splash.dark.backgroundColor\n }\n },\n plugins: ((_app_fonts = app.fonts) === null || _app_fonts === void 0 ? void 0 : _app_fonts.length) ? [\n [\n \"expo-font\",\n {\n fonts: app.fonts\n }\n ]\n ] : void 0,\n ios: app.ios && {\n bundleIdentifier: app.ios.bundleId,\n buildNumber: app.ios.buildNumber,\n supportsTablet: app.ios.tablet,\n associatedDomains: app.ios.associatedDomains,\n usesAppleSignIn: app.ios.usesAppleSignIn,\n googleServicesFile: app.ios.googleServicesFile,\n infoPlist: app.ios.infoPlist,\n entitlements: app.ios.entitlements\n },\n android: app.android && {\n package: app.android.applicationId,\n versionCode: app.android.versionCode,\n permissions: app.android.permissions,\n blockedPermissions: app.android.blockedPermissions,\n googleServicesFile: app.android.googleServicesFile,\n adaptiveIcon: app.android.adaptiveIcon && {\n foregroundImage: app.android.adaptiveIcon.foreground,\n backgroundImage: app.android.adaptiveIcon.background,\n backgroundColor: app.android.adaptiveIcon.backgroundColor,\n monochromeImage: app.android.adaptiveIcon.monochrome\n }\n }\n };\n}\n//# sourceMappingURL=nativeAppManifest.js.map\n"],"mappings":"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"}
|
|
@@ -82,6 +82,20 @@ function validateNativeApp(manifest, platform) {
|
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
|
+
if (manifest.ios?.appIntents !== void 0) {
|
|
86
|
+
const actions = manifest.ios.appIntents?.actions;
|
|
87
|
+
if (!Array.isArray(actions) || actions.length === 0) {
|
|
88
|
+
fail("ios.appIntents.actions must be a non-empty array");
|
|
89
|
+
}
|
|
90
|
+
const ids = /* @__PURE__ */ new Set();
|
|
91
|
+
for (const action of actions) {
|
|
92
|
+
if (!action || typeof action !== "object" || typeof action.id !== "string" || !action.id.trim() || typeof action.title !== "string" || !action.title.trim() || action.textParameterTitle !== void 0 && (typeof action.textParameterTitle !== "string" || !action.textParameterTitle.trim()) || typeof action.shortcutPhrase !== "string" || action.shortcutPhrase.split("{app}").length !== 2 || !action.shortcutPhrase.replace("{app}", "").trim()) {
|
|
93
|
+
fail("ios.appIntents actions need unique non-empty id/title, optional textParameterTitle, and a shortcutPhrase with one {app}");
|
|
94
|
+
}
|
|
95
|
+
if (ids.has(action.id)) fail(`ios.appIntents action "${action.id}" is duplicated`);
|
|
96
|
+
ids.add(action.id);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
85
99
|
if (manifest.splash !== void 0 && (!manifest.splash.source || !HEX_COLOR.test(manifest.splash.backgroundColor) || manifest.splash.width !== void 0 && (!Number.isFinite(manifest.splash.width) || manifest.splash.width < 1 || manifest.splash.width > 288))) {
|
|
86
100
|
fail("splash requires source, a six-digit hex backgroundColor, and width from 1 to 288");
|
|
87
101
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nativeAppManifest.js","names":[],"sources":["esm/nativeAppManifest.js"],"sourcesContent":["const TARGET_NAME = /^[A-Za-z][A-Za-z0-9_]*$/;\nconst SCHEME = /^[a-z][a-z0-9+.-]*$/i;\nconst VERSION = /^\\d+\\.\\d+\\.\\d+/;\nconst BUILD_NUMBER = /^[A-Za-z0-9.]+$/;\nconst REVERSE_DNS = /^[A-Za-z][A-Za-z0-9-]*(\\.[A-Za-z][A-Za-z0-9-]*)+$/;\nconst DEPLOYMENT_TARGET = /^\\d+\\.\\d+$/;\nconst HEX_COLOR = /^#[\\da-f]{6}$/i;\nconst FONT_FILE = /\\.(ttf|otf)$/i;\nconst ORIENTATIONS = [\"portrait\", \"landscape\", \"default\"];\nconst USER_INTERFACE_STYLES = [\"light\", \"dark\", \"automatic\"];\nfunction fail(message) {\n throw new Error(`[one] invalid native.app: ${message}`);\n}\nfunction validateNativeApp(manifest, platform) {\n if (!manifest || typeof manifest !== \"object\") fail(\"manifest must be an object\");\n if (!manifest.name || typeof manifest.name !== \"string\") fail(\"name is required\");\n if (!TARGET_NAME.test(manifest.name)) {\n fail(\n `name \"${manifest.name}\" must start with a letter and contain only letters, digits, and underscore`\n );\n }\n const schemes = manifest.scheme === void 0 ? [] : Array.isArray(manifest.scheme) ? manifest.scheme : [manifest.scheme];\n for (const scheme of schemes) {\n if (typeof scheme !== \"string\" || !SCHEME.test(scheme)) {\n fail(`scheme \"${scheme}\" must be a valid uri scheme`);\n }\n }\n if (manifest.orientation !== void 0 && !ORIENTATIONS.includes(manifest.orientation)) {\n fail(`orientation \"${manifest.orientation}\" must be ${ORIENTATIONS.join(\", \")}`);\n }\n if (manifest.userInterfaceStyle !== void 0 && !USER_INTERFACE_STYLES.includes(manifest.userInterfaceStyle)) {\n fail(\n `userInterfaceStyle \"${manifest.userInterfaceStyle}\" must be ${USER_INTERFACE_STYLES.join(\", \")}`\n );\n }\n if (manifest.fonts !== void 0) {\n const names = /* @__PURE__ */ new Set();\n for (const font of manifest.fonts) {\n if (typeof font !== \"string\" || !FONT_FILE.test(font)) {\n fail(`fonts entry \"${font}\" must be a .ttf or .otf file path`);\n }\n const name = font.split(\"/\").pop() ?? font;\n if (names.has(name)) fail(`fonts lists ${name} twice`);\n names.add(name);\n }\n }\n if (manifest.version !== void 0 && !VERSION.test(manifest.version)) {\n fail(`version \"${manifest.version}\" must start with major.minor.patch`);\n }\n if (manifest.icon !== void 0 && (!manifest.icon.source || !HEX_COLOR.test(manifest.icon.backgroundColor))) {\n fail(\"icon requires source and a six-digit hex backgroundColor\");\n }\n if (manifest.ios?.alternateIcons !== void 0) {\n if (!manifest.icon) fail(\"ios.alternateIcons requires a primary icon\");\n const entries = Object.entries(manifest.ios.alternateIcons);\n if (entries.length === 0) fail(\"ios.alternateIcons requires at least one icon\");\n for (const [name, icon] of entries) {\n if (name === \"AppIcon\" || !TARGET_NAME.test(name)) {\n fail(`ios.alternateIcons name \"${name}\" must be an identifier other than AppIcon`);\n }\n if (!icon?.source || !HEX_COLOR.test(icon.backgroundColor)) {\n fail(`ios.alternateIcons.${name} requires source and a six-digit hex backgroundColor`);\n }\n }\n }\n if (manifest.ios?.backgroundTasks !== void 0) {\n const tasks = manifest.ios.backgroundTasks;\n if (!tasks || tasks.refresh !== void 0 && !Array.isArray(tasks.refresh) || tasks.processing !== void 0 && !Array.isArray(tasks.processing)) {\n fail(\"ios.backgroundTasks refresh and processing must be arrays of identifiers\");\n }\n const identifiers = [...tasks.refresh ?? [], ...tasks.processing ?? []];\n if (!identifiers.length || new Set(identifiers).size !== identifiers.length) {\n fail(\"ios.backgroundTasks needs distinct refresh or processing identifiers\");\n }\n for (const identifier of identifiers) {\n if (typeof identifier !== \"string\" || !REVERSE_DNS.test(identifier)) {\n fail(`ios.backgroundTasks identifier \"${identifier}\" must use reverse DNS notation`);\n }\n }\n }\n if (manifest.splash !== void 0 && (!manifest.splash.source || !HEX_COLOR.test(manifest.splash.backgroundColor) || manifest.splash.width !== void 0 && (!Number.isFinite(manifest.splash.width) || manifest.splash.width < 1 || manifest.splash.width > 288))) {\n fail(\n \"splash requires source, a six-digit hex backgroundColor, and width from 1 to 288\"\n );\n }\n if (manifest.splash?.dark !== void 0 && !HEX_COLOR.test(manifest.splash.dark.backgroundColor)) {\n fail(\"splash.dark requires a six-digit hex backgroundColor\");\n }\n if (manifest.splash?.dark?.backgroundImage !== void 0 && manifest.splash.backgroundImage === void 0) {\n fail(\"splash.dark.backgroundImage needs splash.backgroundImage for the light launch\");\n }\n if (manifest.splash?.resizeMode !== void 0 && manifest.splash.resizeMode !== \"contain\" && manifest.splash.resizeMode !== \"cover\") {\n fail(`splash.resizeMode \"${manifest.splash.resizeMode}\" must be contain or cover`);\n }\n if (manifest.imagePicker?.camera !== void 0 && (typeof manifest.imagePicker.camera !== \"string\" || manifest.imagePicker.camera.trim() === \"\")) {\n fail(\"imagePicker.camera must be a non-empty string\");\n }\n if (manifest.photoLibrary !== void 0 && (!manifest.photoLibrary || manifest.photoLibrary.addOnly === void 0 && manifest.photoLibrary.readWrite === void 0)) {\n fail(\"photoLibrary must configure addOnly or readWrite\");\n }\n if (manifest.photoLibrary?.addOnly !== void 0 && (typeof manifest.photoLibrary.addOnly !== \"string\" || manifest.photoLibrary.addOnly.trim() === \"\")) {\n fail(\"photoLibrary.addOnly must be a non-empty string\");\n }\n if (manifest.photoLibrary?.readWrite !== void 0 && (typeof manifest.photoLibrary.readWrite !== \"string\" || manifest.photoLibrary.readWrite.trim() === \"\")) {\n fail(\"photoLibrary.readWrite must be a non-empty string\");\n }\n if (manifest.contacts !== void 0 && (!manifest.contacts || typeof manifest.contacts.usage !== \"string\" || manifest.contacts.usage.trim() === \"\")) {\n fail(\"contacts.usage must be a non-empty string\");\n }\n if (manifest.calendar !== void 0) {\n if (!manifest.calendar || manifest.calendar.usage === void 0 && manifest.calendar.remindersUsage === void 0) {\n fail(\"calendar.usage or calendar.remindersUsage must be a non-empty string\");\n }\n if (manifest.calendar.usage !== void 0 && (typeof manifest.calendar.usage !== \"string\" || manifest.calendar.usage.trim() === \"\")) {\n fail(\"calendar.usage must be a non-empty string\");\n }\n if (manifest.calendar.remindersUsage !== void 0 && (typeof manifest.calendar.remindersUsage !== \"string\" || manifest.calendar.remindersUsage.trim() === \"\")) {\n fail(\"calendar.remindersUsage must be a non-empty string\");\n }\n }\n if (manifest.location !== void 0 && (!manifest.location || typeof manifest.location.whenInUse !== \"string\" || manifest.location.whenInUse.trim() === \"\")) {\n fail(\"location.whenInUse must be a non-empty string\");\n }\n if (manifest.location?.background !== void 0 && typeof manifest.location.background !== \"boolean\") {\n fail(\"location.background must be a boolean\");\n }\n if (manifest.audio !== void 0) {\n if (!manifest.audio || typeof manifest.audio !== \"object\") {\n fail(\"audio must configure microphone or background playback\");\n }\n if (manifest.audio.microphone !== void 0 && (typeof manifest.audio.microphone !== \"string\" || manifest.audio.microphone.trim() === \"\")) {\n fail(\"audio.microphone must be a non-empty string\");\n }\n if (manifest.audio.background !== void 0 && typeof manifest.audio.background !== \"boolean\") {\n fail(\"audio.background must be a boolean\");\n }\n if (manifest.audio.microphone === void 0 && manifest.audio.background !== true) {\n fail(\"audio must configure microphone or background playback\");\n }\n }\n if (manifest.ios?.faceIdUsageDescription !== void 0 && (typeof manifest.ios.faceIdUsageDescription !== \"string\" || manifest.ios.faceIdUsageDescription.trim() === \"\")) {\n fail(\"ios.faceIdUsageDescription must be a non-empty string\");\n }\n if (manifest.speech !== void 0 && (typeof manifest.speech?.recognition !== \"string\" || manifest.speech.recognition.trim() === \"\" || typeof manifest.speech.microphone !== \"string\" || manifest.speech.microphone.trim() === \"\")) {\n fail(\"speech.recognition and speech.microphone must be non-empty strings\");\n }\n if (manifest.notifications !== void 0) {\n if (typeof manifest.notifications !== \"object\" || manifest.notifications.push !== void 0 && typeof manifest.notifications.push !== \"boolean\") {\n fail(\"notifications.push must be a boolean\");\n }\n const aps = manifest.notifications.apsEnvironment;\n if (aps !== void 0 && aps !== \"development\" && aps !== \"production\") {\n fail(`notifications.apsEnvironment \"${aps}\" must be development or production`);\n }\n if (aps !== void 0 && !manifest.notifications.push) {\n fail(\"notifications.apsEnvironment needs notifications.push\");\n }\n }\n const accent = manifest.ios?.accentColor;\n if (accent !== void 0 && (!HEX_COLOR.test(accent.light) || accent.dark !== void 0 && !HEX_COLOR.test(accent.dark))) {\n fail(\"ios.accentColor light and dark must be six-digit hex colors\");\n }\n if (manifest.pictureInPicture !== void 0 && typeof manifest.pictureInPicture !== \"boolean\") {\n fail(\"pictureInPicture must be a boolean\");\n }\n if (manifest.updates !== void 0) {\n if (typeof manifest.updates.runtimeVersion !== \"string\" || manifest.updates.runtimeVersion.trim() === \"\") {\n fail(\"updates.runtimeVersion must be a non-empty string\");\n }\n if (manifest.updates.url !== void 0 && (typeof manifest.updates.url !== \"string\" || manifest.updates.url.trim() === \"\")) {\n fail(\"updates.url must be a non-empty string\");\n }\n }\n if (!platform || platform === \"ios\") {\n if (!manifest.ios?.bundleId || !REVERSE_DNS.test(manifest.ios.bundleId)) {\n fail(`ios.bundleId \"${manifest.ios?.bundleId}\" must be reverse-dns`);\n }\n if (manifest.ios.deploymentTarget !== void 0 && !DEPLOYMENT_TARGET.test(manifest.ios.deploymentTarget)) {\n fail(\n `ios.deploymentTarget \"${manifest.ios.deploymentTarget}\" must look like \"17.0\"`\n );\n }\n if (manifest.ios.buildNumber !== void 0 && !BUILD_NUMBER.test(manifest.ios.buildNumber)) {\n fail(\n `ios.buildNumber \"${manifest.ios.buildNumber}\" must contain only letters, digits, and dots`\n );\n }\n const widgets = manifest.ios.widgets;\n if (widgets) {\n if (!manifest.ios.deploymentTarget || Number(manifest.ios.deploymentTarget) < 17) {\n fail(\"ios.widgets requires ios.deploymentTarget of 17.0 or newer\");\n }\n if (!/^group\\.[A-Za-z][A-Za-z0-9-]*(\\.[A-Za-z][A-Za-z0-9-]*)+$/.test(widgets.appGroup)) {\n fail(\"ios.widgets.appGroup must be a reverse-dns App Group beginning with group.\");\n }\n if (!/^[A-Za-z][A-Za-z0-9._-]*$/.test(widgets.kind)) {\n fail(\"ios.widgets.kind must be a non-empty WidgetKit kind\");\n }\n if (!widgets.displayName?.trim() || !widgets.description?.trim()) {\n fail(\"ios.widgets.displayName and description must be non-empty strings\");\n }\n if (widgets.pushNotifications !== void 0 && typeof widgets.pushNotifications !== \"boolean\") {\n fail(\"ios.widgets.pushNotifications must be a boolean\");\n }\n }\n }\n if (!platform || platform === \"android\") {\n if (!manifest.android?.applicationId || !REVERSE_DNS.test(manifest.android.applicationId)) {\n fail(\n `android.applicationId \"${manifest.android?.applicationId}\" must be reverse-dns`\n );\n }\n if (manifest.android.minSdk !== void 0 && (!Number.isInteger(manifest.android.minSdk) || manifest.android.minSdk < 21 || manifest.android.minSdk > 36)) {\n fail(`android.minSdk \"${manifest.android.minSdk}\" must be an integer from 21 to 36`);\n }\n if (manifest.android.versionCode !== void 0 && (!Number.isInteger(manifest.android.versionCode) || manifest.android.versionCode < 1)) {\n fail(\n `android.versionCode \"${manifest.android.versionCode}\" must be a positive integer`\n );\n }\n for (const key of [\"targetSdk\", \"compileSdk\"]) {\n const value = manifest.android[key];\n if (value !== void 0 && (!Number.isInteger(value) || value < 21)) {\n fail(`android.${key} \"${value}\" must be an api level integer`);\n }\n }\n if (manifest.android.shrinkResources && !manifest.android.minify) {\n fail(\"android.shrinkResources needs android.minify\");\n }\n for (const link of manifest.android.appLinks ?? []) {\n if (!link.host || !REVERSE_DNS.test(link.host)) {\n fail(`android.appLinks host \"${link.host}\" must be a domain`);\n }\n if (link.pathPrefix !== void 0 && !link.pathPrefix.startsWith(\"/\")) {\n fail(`android.appLinks pathPrefix \"${link.pathPrefix}\" must start with /`);\n }\n }\n const adaptiveIcon = manifest.android.adaptiveIcon;\n if (adaptiveIcon !== void 0 && (!adaptiveIcon.foreground || adaptiveIcon.backgroundColor !== void 0 && !HEX_COLOR.test(adaptiveIcon.backgroundColor))) {\n fail(\n \"android.adaptiveIcon requires foreground, and backgroundColor must be six-digit hex\"\n );\n }\n if (manifest.android.googleMapsApiKey !== void 0 && (typeof manifest.android.googleMapsApiKey !== \"string\" || manifest.android.googleMapsApiKey.trim() === \"\")) {\n fail(\"android.googleMapsApiKey must be a non-empty string\");\n }\n }\n return manifest;\n}\nfunction expoClientFromNativeApp(app) {\n return {\n name: app.displayName ?? app.name,\n slug: app.name,\n scheme: app.scheme,\n version: app.version,\n orientation: app.orientation,\n // an expo config without the key means light, while prebuild writes no\n // UIUserInterfaceStyle for an unset style and the app follows the system,\n // so the manifest states the style the built app has.\n userInterfaceStyle: app.userInterfaceStyle ?? \"automatic\",\n icon: app.icon?.source,\n splash: app.splash && {\n image: app.splash.source,\n backgroundImage: app.splash.backgroundImage,\n backgroundColor: app.splash.backgroundColor,\n imageWidth: app.splash.width,\n resizeMode: app.splash.resizeMode,\n dark: app.splash.dark && {\n image: app.splash.dark.source,\n backgroundImage: app.splash.dark.backgroundImage,\n backgroundColor: app.splash.dark.backgroundColor\n }\n },\n plugins: app.fonts?.length ? [[\"expo-font\", { fonts: app.fonts }]] : void 0,\n ios: app.ios && {\n bundleIdentifier: app.ios.bundleId,\n buildNumber: app.ios.buildNumber,\n supportsTablet: app.ios.tablet,\n associatedDomains: app.ios.associatedDomains,\n usesAppleSignIn: app.ios.usesAppleSignIn,\n googleServicesFile: app.ios.googleServicesFile,\n infoPlist: app.ios.infoPlist,\n entitlements: app.ios.entitlements\n },\n android: app.android && {\n package: app.android.applicationId,\n versionCode: app.android.versionCode,\n permissions: app.android.permissions,\n blockedPermissions: app.android.blockedPermissions,\n googleServicesFile: app.android.googleServicesFile,\n adaptiveIcon: app.android.adaptiveIcon && {\n foregroundImage: app.android.adaptiveIcon.foreground,\n backgroundImage: app.android.adaptiveIcon.background,\n backgroundColor: app.android.adaptiveIcon.backgroundColor,\n monochromeImage: app.android.adaptiveIcon.monochrome\n }\n }\n };\n}\nexport {\n expoClientFromNativeApp,\n validateNativeApp\n};\n//# sourceMappingURL=nativeAppManifest.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nativeAppManifest.js","names":[],"sources":["esm/nativeAppManifest.js"],"sourcesContent":["const TARGET_NAME = /^[A-Za-z][A-Za-z0-9_]*$/;\nconst SCHEME = /^[a-z][a-z0-9+.-]*$/i;\nconst VERSION = /^\\d+\\.\\d+\\.\\d+/;\nconst BUILD_NUMBER = /^[A-Za-z0-9.]+$/;\nconst REVERSE_DNS = /^[A-Za-z][A-Za-z0-9-]*(\\.[A-Za-z][A-Za-z0-9-]*)+$/;\nconst DEPLOYMENT_TARGET = /^\\d+\\.\\d+$/;\nconst HEX_COLOR = /^#[\\da-f]{6}$/i;\nconst FONT_FILE = /\\.(ttf|otf)$/i;\nconst ORIENTATIONS = [\"portrait\", \"landscape\", \"default\"];\nconst USER_INTERFACE_STYLES = [\"light\", \"dark\", \"automatic\"];\nfunction fail(message) {\n throw new Error(`[one] invalid native.app: ${message}`);\n}\nfunction validateNativeApp(manifest, platform) {\n if (!manifest || typeof manifest !== \"object\") fail(\"manifest must be an object\");\n if (!manifest.name || typeof manifest.name !== \"string\") fail(\"name is required\");\n if (!TARGET_NAME.test(manifest.name)) {\n fail(\n `name \"${manifest.name}\" must start with a letter and contain only letters, digits, and underscore`\n );\n }\n const schemes = manifest.scheme === void 0 ? [] : Array.isArray(manifest.scheme) ? manifest.scheme : [manifest.scheme];\n for (const scheme of schemes) {\n if (typeof scheme !== \"string\" || !SCHEME.test(scheme)) {\n fail(`scheme \"${scheme}\" must be a valid uri scheme`);\n }\n }\n if (manifest.orientation !== void 0 && !ORIENTATIONS.includes(manifest.orientation)) {\n fail(`orientation \"${manifest.orientation}\" must be ${ORIENTATIONS.join(\", \")}`);\n }\n if (manifest.userInterfaceStyle !== void 0 && !USER_INTERFACE_STYLES.includes(manifest.userInterfaceStyle)) {\n fail(\n `userInterfaceStyle \"${manifest.userInterfaceStyle}\" must be ${USER_INTERFACE_STYLES.join(\", \")}`\n );\n }\n if (manifest.fonts !== void 0) {\n const names = /* @__PURE__ */ new Set();\n for (const font of manifest.fonts) {\n if (typeof font !== \"string\" || !FONT_FILE.test(font)) {\n fail(`fonts entry \"${font}\" must be a .ttf or .otf file path`);\n }\n const name = font.split(\"/\").pop() ?? font;\n if (names.has(name)) fail(`fonts lists ${name} twice`);\n names.add(name);\n }\n }\n if (manifest.version !== void 0 && !VERSION.test(manifest.version)) {\n fail(`version \"${manifest.version}\" must start with major.minor.patch`);\n }\n if (manifest.icon !== void 0 && (!manifest.icon.source || !HEX_COLOR.test(manifest.icon.backgroundColor))) {\n fail(\"icon requires source and a six-digit hex backgroundColor\");\n }\n if (manifest.ios?.alternateIcons !== void 0) {\n if (!manifest.icon) fail(\"ios.alternateIcons requires a primary icon\");\n const entries = Object.entries(manifest.ios.alternateIcons);\n if (entries.length === 0) fail(\"ios.alternateIcons requires at least one icon\");\n for (const [name, icon] of entries) {\n if (name === \"AppIcon\" || !TARGET_NAME.test(name)) {\n fail(`ios.alternateIcons name \"${name}\" must be an identifier other than AppIcon`);\n }\n if (!icon?.source || !HEX_COLOR.test(icon.backgroundColor)) {\n fail(`ios.alternateIcons.${name} requires source and a six-digit hex backgroundColor`);\n }\n }\n }\n if (manifest.ios?.backgroundTasks !== void 0) {\n const tasks = manifest.ios.backgroundTasks;\n if (!tasks || tasks.refresh !== void 0 && !Array.isArray(tasks.refresh) || tasks.processing !== void 0 && !Array.isArray(tasks.processing)) {\n fail(\"ios.backgroundTasks refresh and processing must be arrays of identifiers\");\n }\n const identifiers = [...tasks.refresh ?? [], ...tasks.processing ?? []];\n if (!identifiers.length || new Set(identifiers).size !== identifiers.length) {\n fail(\"ios.backgroundTasks needs distinct refresh or processing identifiers\");\n }\n for (const identifier of identifiers) {\n if (typeof identifier !== \"string\" || !REVERSE_DNS.test(identifier)) {\n fail(`ios.backgroundTasks identifier \"${identifier}\" must use reverse DNS notation`);\n }\n }\n }\n if (manifest.ios?.appIntents !== void 0) {\n const actions = manifest.ios.appIntents?.actions;\n if (!Array.isArray(actions) || actions.length === 0) {\n fail(\"ios.appIntents.actions must be a non-empty array\");\n }\n const ids = /* @__PURE__ */ new Set();\n for (const action of actions) {\n if (!action || typeof action !== \"object\" || typeof action.id !== \"string\" || !action.id.trim() || typeof action.title !== \"string\" || !action.title.trim() || action.textParameterTitle !== void 0 && (typeof action.textParameterTitle !== \"string\" || !action.textParameterTitle.trim()) || typeof action.shortcutPhrase !== \"string\" || action.shortcutPhrase.split(\"{app}\").length !== 2 || !action.shortcutPhrase.replace(\"{app}\", \"\").trim()) {\n fail(\"ios.appIntents actions need unique non-empty id/title, optional textParameterTitle, and a shortcutPhrase with one {app}\");\n }\n if (ids.has(action.id)) fail(`ios.appIntents action \"${action.id}\" is duplicated`);\n ids.add(action.id);\n }\n }\n if (manifest.splash !== void 0 && (!manifest.splash.source || !HEX_COLOR.test(manifest.splash.backgroundColor) || manifest.splash.width !== void 0 && (!Number.isFinite(manifest.splash.width) || manifest.splash.width < 1 || manifest.splash.width > 288))) {\n fail(\n \"splash requires source, a six-digit hex backgroundColor, and width from 1 to 288\"\n );\n }\n if (manifest.splash?.dark !== void 0 && !HEX_COLOR.test(manifest.splash.dark.backgroundColor)) {\n fail(\"splash.dark requires a six-digit hex backgroundColor\");\n }\n if (manifest.splash?.dark?.backgroundImage !== void 0 && manifest.splash.backgroundImage === void 0) {\n fail(\"splash.dark.backgroundImage needs splash.backgroundImage for the light launch\");\n }\n if (manifest.splash?.resizeMode !== void 0 && manifest.splash.resizeMode !== \"contain\" && manifest.splash.resizeMode !== \"cover\") {\n fail(`splash.resizeMode \"${manifest.splash.resizeMode}\" must be contain or cover`);\n }\n if (manifest.imagePicker?.camera !== void 0 && (typeof manifest.imagePicker.camera !== \"string\" || manifest.imagePicker.camera.trim() === \"\")) {\n fail(\"imagePicker.camera must be a non-empty string\");\n }\n if (manifest.photoLibrary !== void 0 && (!manifest.photoLibrary || manifest.photoLibrary.addOnly === void 0 && manifest.photoLibrary.readWrite === void 0)) {\n fail(\"photoLibrary must configure addOnly or readWrite\");\n }\n if (manifest.photoLibrary?.addOnly !== void 0 && (typeof manifest.photoLibrary.addOnly !== \"string\" || manifest.photoLibrary.addOnly.trim() === \"\")) {\n fail(\"photoLibrary.addOnly must be a non-empty string\");\n }\n if (manifest.photoLibrary?.readWrite !== void 0 && (typeof manifest.photoLibrary.readWrite !== \"string\" || manifest.photoLibrary.readWrite.trim() === \"\")) {\n fail(\"photoLibrary.readWrite must be a non-empty string\");\n }\n if (manifest.contacts !== void 0 && (!manifest.contacts || typeof manifest.contacts.usage !== \"string\" || manifest.contacts.usage.trim() === \"\")) {\n fail(\"contacts.usage must be a non-empty string\");\n }\n if (manifest.calendar !== void 0) {\n if (!manifest.calendar || manifest.calendar.usage === void 0 && manifest.calendar.remindersUsage === void 0) {\n fail(\"calendar.usage or calendar.remindersUsage must be a non-empty string\");\n }\n if (manifest.calendar.usage !== void 0 && (typeof manifest.calendar.usage !== \"string\" || manifest.calendar.usage.trim() === \"\")) {\n fail(\"calendar.usage must be a non-empty string\");\n }\n if (manifest.calendar.remindersUsage !== void 0 && (typeof manifest.calendar.remindersUsage !== \"string\" || manifest.calendar.remindersUsage.trim() === \"\")) {\n fail(\"calendar.remindersUsage must be a non-empty string\");\n }\n }\n if (manifest.location !== void 0 && (!manifest.location || typeof manifest.location.whenInUse !== \"string\" || manifest.location.whenInUse.trim() === \"\")) {\n fail(\"location.whenInUse must be a non-empty string\");\n }\n if (manifest.location?.background !== void 0 && typeof manifest.location.background !== \"boolean\") {\n fail(\"location.background must be a boolean\");\n }\n if (manifest.audio !== void 0) {\n if (!manifest.audio || typeof manifest.audio !== \"object\") {\n fail(\"audio must configure microphone or background playback\");\n }\n if (manifest.audio.microphone !== void 0 && (typeof manifest.audio.microphone !== \"string\" || manifest.audio.microphone.trim() === \"\")) {\n fail(\"audio.microphone must be a non-empty string\");\n }\n if (manifest.audio.background !== void 0 && typeof manifest.audio.background !== \"boolean\") {\n fail(\"audio.background must be a boolean\");\n }\n if (manifest.audio.microphone === void 0 && manifest.audio.background !== true) {\n fail(\"audio must configure microphone or background playback\");\n }\n }\n if (manifest.ios?.faceIdUsageDescription !== void 0 && (typeof manifest.ios.faceIdUsageDescription !== \"string\" || manifest.ios.faceIdUsageDescription.trim() === \"\")) {\n fail(\"ios.faceIdUsageDescription must be a non-empty string\");\n }\n if (manifest.speech !== void 0 && (typeof manifest.speech?.recognition !== \"string\" || manifest.speech.recognition.trim() === \"\" || typeof manifest.speech.microphone !== \"string\" || manifest.speech.microphone.trim() === \"\")) {\n fail(\"speech.recognition and speech.microphone must be non-empty strings\");\n }\n if (manifest.notifications !== void 0) {\n if (typeof manifest.notifications !== \"object\" || manifest.notifications.push !== void 0 && typeof manifest.notifications.push !== \"boolean\") {\n fail(\"notifications.push must be a boolean\");\n }\n const aps = manifest.notifications.apsEnvironment;\n if (aps !== void 0 && aps !== \"development\" && aps !== \"production\") {\n fail(`notifications.apsEnvironment \"${aps}\" must be development or production`);\n }\n if (aps !== void 0 && !manifest.notifications.push) {\n fail(\"notifications.apsEnvironment needs notifications.push\");\n }\n }\n const accent = manifest.ios?.accentColor;\n if (accent !== void 0 && (!HEX_COLOR.test(accent.light) || accent.dark !== void 0 && !HEX_COLOR.test(accent.dark))) {\n fail(\"ios.accentColor light and dark must be six-digit hex colors\");\n }\n if (manifest.pictureInPicture !== void 0 && typeof manifest.pictureInPicture !== \"boolean\") {\n fail(\"pictureInPicture must be a boolean\");\n }\n if (manifest.updates !== void 0) {\n if (typeof manifest.updates.runtimeVersion !== \"string\" || manifest.updates.runtimeVersion.trim() === \"\") {\n fail(\"updates.runtimeVersion must be a non-empty string\");\n }\n if (manifest.updates.url !== void 0 && (typeof manifest.updates.url !== \"string\" || manifest.updates.url.trim() === \"\")) {\n fail(\"updates.url must be a non-empty string\");\n }\n }\n if (!platform || platform === \"ios\") {\n if (!manifest.ios?.bundleId || !REVERSE_DNS.test(manifest.ios.bundleId)) {\n fail(`ios.bundleId \"${manifest.ios?.bundleId}\" must be reverse-dns`);\n }\n if (manifest.ios.deploymentTarget !== void 0 && !DEPLOYMENT_TARGET.test(manifest.ios.deploymentTarget)) {\n fail(\n `ios.deploymentTarget \"${manifest.ios.deploymentTarget}\" must look like \"17.0\"`\n );\n }\n if (manifest.ios.buildNumber !== void 0 && !BUILD_NUMBER.test(manifest.ios.buildNumber)) {\n fail(\n `ios.buildNumber \"${manifest.ios.buildNumber}\" must contain only letters, digits, and dots`\n );\n }\n const widgets = manifest.ios.widgets;\n if (widgets) {\n if (!manifest.ios.deploymentTarget || Number(manifest.ios.deploymentTarget) < 17) {\n fail(\"ios.widgets requires ios.deploymentTarget of 17.0 or newer\");\n }\n if (!/^group\\.[A-Za-z][A-Za-z0-9-]*(\\.[A-Za-z][A-Za-z0-9-]*)+$/.test(widgets.appGroup)) {\n fail(\"ios.widgets.appGroup must be a reverse-dns App Group beginning with group.\");\n }\n if (!/^[A-Za-z][A-Za-z0-9._-]*$/.test(widgets.kind)) {\n fail(\"ios.widgets.kind must be a non-empty WidgetKit kind\");\n }\n if (!widgets.displayName?.trim() || !widgets.description?.trim()) {\n fail(\"ios.widgets.displayName and description must be non-empty strings\");\n }\n if (widgets.pushNotifications !== void 0 && typeof widgets.pushNotifications !== \"boolean\") {\n fail(\"ios.widgets.pushNotifications must be a boolean\");\n }\n }\n }\n if (!platform || platform === \"android\") {\n if (!manifest.android?.applicationId || !REVERSE_DNS.test(manifest.android.applicationId)) {\n fail(\n `android.applicationId \"${manifest.android?.applicationId}\" must be reverse-dns`\n );\n }\n if (manifest.android.minSdk !== void 0 && (!Number.isInteger(manifest.android.minSdk) || manifest.android.minSdk < 21 || manifest.android.minSdk > 36)) {\n fail(`android.minSdk \"${manifest.android.minSdk}\" must be an integer from 21 to 36`);\n }\n if (manifest.android.versionCode !== void 0 && (!Number.isInteger(manifest.android.versionCode) || manifest.android.versionCode < 1)) {\n fail(\n `android.versionCode \"${manifest.android.versionCode}\" must be a positive integer`\n );\n }\n for (const key of [\"targetSdk\", \"compileSdk\"]) {\n const value = manifest.android[key];\n if (value !== void 0 && (!Number.isInteger(value) || value < 21)) {\n fail(`android.${key} \"${value}\" must be an api level integer`);\n }\n }\n if (manifest.android.shrinkResources && !manifest.android.minify) {\n fail(\"android.shrinkResources needs android.minify\");\n }\n for (const link of manifest.android.appLinks ?? []) {\n if (!link.host || !REVERSE_DNS.test(link.host)) {\n fail(`android.appLinks host \"${link.host}\" must be a domain`);\n }\n if (link.pathPrefix !== void 0 && !link.pathPrefix.startsWith(\"/\")) {\n fail(`android.appLinks pathPrefix \"${link.pathPrefix}\" must start with /`);\n }\n }\n const adaptiveIcon = manifest.android.adaptiveIcon;\n if (adaptiveIcon !== void 0 && (!adaptiveIcon.foreground || adaptiveIcon.backgroundColor !== void 0 && !HEX_COLOR.test(adaptiveIcon.backgroundColor))) {\n fail(\n \"android.adaptiveIcon requires foreground, and backgroundColor must be six-digit hex\"\n );\n }\n if (manifest.android.googleMapsApiKey !== void 0 && (typeof manifest.android.googleMapsApiKey !== \"string\" || manifest.android.googleMapsApiKey.trim() === \"\")) {\n fail(\"android.googleMapsApiKey must be a non-empty string\");\n }\n }\n return manifest;\n}\nfunction expoClientFromNativeApp(app) {\n return {\n name: app.displayName ?? app.name,\n slug: app.name,\n scheme: app.scheme,\n version: app.version,\n orientation: app.orientation,\n // an expo config without the key means light, while prebuild writes no\n // UIUserInterfaceStyle for an unset style and the app follows the system,\n // so the manifest states the style the built app has.\n userInterfaceStyle: app.userInterfaceStyle ?? \"automatic\",\n icon: app.icon?.source,\n splash: app.splash && {\n image: app.splash.source,\n backgroundImage: app.splash.backgroundImage,\n backgroundColor: app.splash.backgroundColor,\n imageWidth: app.splash.width,\n resizeMode: app.splash.resizeMode,\n dark: app.splash.dark && {\n image: app.splash.dark.source,\n backgroundImage: app.splash.dark.backgroundImage,\n backgroundColor: app.splash.dark.backgroundColor\n }\n },\n plugins: app.fonts?.length ? [[\"expo-font\", { fonts: app.fonts }]] : void 0,\n ios: app.ios && {\n bundleIdentifier: app.ios.bundleId,\n buildNumber: app.ios.buildNumber,\n supportsTablet: app.ios.tablet,\n associatedDomains: app.ios.associatedDomains,\n usesAppleSignIn: app.ios.usesAppleSignIn,\n googleServicesFile: app.ios.googleServicesFile,\n infoPlist: app.ios.infoPlist,\n entitlements: app.ios.entitlements\n },\n android: app.android && {\n package: app.android.applicationId,\n versionCode: app.android.versionCode,\n permissions: app.android.permissions,\n blockedPermissions: app.android.blockedPermissions,\n googleServicesFile: app.android.googleServicesFile,\n adaptiveIcon: app.android.adaptiveIcon && {\n foregroundImage: app.android.adaptiveIcon.foreground,\n backgroundImage: app.android.adaptiveIcon.background,\n backgroundColor: app.android.adaptiveIcon.backgroundColor,\n monochromeImage: app.android.adaptiveIcon.monochrome\n }\n }\n };\n}\nexport {\n expoClientFromNativeApp,\n validateNativeApp\n};\n//# sourceMappingURL=nativeAppManifest.js.map\n"],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@ function fail(message) {
|
|
|
20
20
|
throw new Error(`[one] invalid native.app: ${message}`);
|
|
21
21
|
}
|
|
22
22
|
function validateNativeApp(manifest, platform) {
|
|
23
|
-
var _manifest_ios, _manifest_ios1, _manifest_splash, _manifest_splash_dark, _manifest_splash1, _manifest_splash2, _manifest_imagePicker, _manifest_photoLibrary, _manifest_photoLibrary1, _manifest_location,
|
|
23
|
+
var _manifest_ios, _manifest_ios1, _manifest_ios2, _manifest_splash, _manifest_splash_dark, _manifest_splash1, _manifest_splash2, _manifest_imagePicker, _manifest_photoLibrary, _manifest_photoLibrary1, _manifest_location, _manifest_ios3, _manifest_speech, _manifest_ios4;
|
|
24
24
|
if (!manifest || typeof manifest !== "object") fail("manifest must be an object");
|
|
25
25
|
if (!manifest.name || typeof manifest.name !== "string") fail("name is required");
|
|
26
26
|
if (!TARGET_NAME.test(manifest.name)) {
|
|
@@ -153,6 +153,38 @@ function validateNativeApp(manifest, platform) {
|
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
|
+
if (((_manifest_ios2 = manifest.ios) === null || _manifest_ios2 === void 0 ? void 0 : _manifest_ios2.appIntents) !== void 0) {
|
|
157
|
+
var _manifest_ios_appIntents;
|
|
158
|
+
var actions = (_manifest_ios_appIntents = manifest.ios.appIntents) === null || _manifest_ios_appIntents === void 0 ? void 0 : _manifest_ios_appIntents.actions;
|
|
159
|
+
if (!Array.isArray(actions) || actions.length === 0) {
|
|
160
|
+
fail("ios.appIntents.actions must be a non-empty array");
|
|
161
|
+
}
|
|
162
|
+
var ids = /* @__PURE__ */ new Set();
|
|
163
|
+
var _iteratorNormalCompletion4 = true, _didIteratorError4 = false, _iteratorError4 = void 0;
|
|
164
|
+
try {
|
|
165
|
+
for (var _iterator4 = actions[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
|
|
166
|
+
var action = _step4.value;
|
|
167
|
+
if (!action || typeof action !== "object" || typeof action.id !== "string" || !action.id.trim() || typeof action.title !== "string" || !action.title.trim() || action.textParameterTitle !== void 0 && (typeof action.textParameterTitle !== "string" || !action.textParameterTitle.trim()) || typeof action.shortcutPhrase !== "string" || action.shortcutPhrase.split("{app}").length !== 2 || !action.shortcutPhrase.replace("{app}", "").trim()) {
|
|
168
|
+
fail("ios.appIntents actions need unique non-empty id/title, optional textParameterTitle, and a shortcutPhrase with one {app}");
|
|
169
|
+
}
|
|
170
|
+
if (ids.has(action.id)) fail(`ios.appIntents action "${action.id}" is duplicated`);
|
|
171
|
+
ids.add(action.id);
|
|
172
|
+
}
|
|
173
|
+
} catch (err) {
|
|
174
|
+
_didIteratorError4 = true;
|
|
175
|
+
_iteratorError4 = err;
|
|
176
|
+
} finally {
|
|
177
|
+
try {
|
|
178
|
+
if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
|
|
179
|
+
_iterator4.return();
|
|
180
|
+
}
|
|
181
|
+
} finally {
|
|
182
|
+
if (_didIteratorError4) {
|
|
183
|
+
throw _iteratorError4;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
156
188
|
if (manifest.splash !== void 0 && (!manifest.splash.source || !HEX_COLOR.test(manifest.splash.backgroundColor) || manifest.splash.width !== void 0 && (!Number.isFinite(manifest.splash.width) || manifest.splash.width < 1 || manifest.splash.width > 288))) {
|
|
157
189
|
fail("splash requires source, a six-digit hex backgroundColor, and width from 1 to 288");
|
|
158
190
|
}
|
|
@@ -211,7 +243,7 @@ function validateNativeApp(manifest, platform) {
|
|
|
211
243
|
fail("audio must configure microphone or background playback");
|
|
212
244
|
}
|
|
213
245
|
}
|
|
214
|
-
if (((
|
|
246
|
+
if (((_manifest_ios3 = manifest.ios) === null || _manifest_ios3 === void 0 ? void 0 : _manifest_ios3.faceIdUsageDescription) !== void 0 && (typeof manifest.ios.faceIdUsageDescription !== "string" || manifest.ios.faceIdUsageDescription.trim() === "")) {
|
|
215
247
|
fail("ios.faceIdUsageDescription must be a non-empty string");
|
|
216
248
|
}
|
|
217
249
|
if (manifest.speech !== void 0 && (typeof ((_manifest_speech = manifest.speech) === null || _manifest_speech === void 0 ? void 0 : _manifest_speech.recognition) !== "string" || manifest.speech.recognition.trim() === "" || typeof manifest.speech.microphone !== "string" || manifest.speech.microphone.trim() === "")) {
|
|
@@ -229,7 +261,7 @@ function validateNativeApp(manifest, platform) {
|
|
|
229
261
|
fail("notifications.apsEnvironment needs notifications.push");
|
|
230
262
|
}
|
|
231
263
|
}
|
|
232
|
-
var accent = (
|
|
264
|
+
var accent = (_manifest_ios4 = manifest.ios) === null || _manifest_ios4 === void 0 ? void 0 : _manifest_ios4.accentColor;
|
|
233
265
|
if (accent !== void 0 && (!HEX_COLOR.test(accent.light) || accent.dark !== void 0 && !HEX_COLOR.test(accent.dark))) {
|
|
234
266
|
fail("ios.accentColor light and dark must be six-digit hex colors");
|
|
235
267
|
}
|
|
@@ -245,10 +277,10 @@ function validateNativeApp(manifest, platform) {
|
|
|
245
277
|
}
|
|
246
278
|
}
|
|
247
279
|
if (!platform || platform === "ios") {
|
|
248
|
-
var
|
|
249
|
-
if (!((
|
|
250
|
-
var
|
|
251
|
-
fail(`ios.bundleId "${(
|
|
280
|
+
var _manifest_ios5;
|
|
281
|
+
if (!((_manifest_ios5 = manifest.ios) === null || _manifest_ios5 === void 0 ? void 0 : _manifest_ios5.bundleId) || !REVERSE_DNS.test(manifest.ios.bundleId)) {
|
|
282
|
+
var _manifest_ios6;
|
|
283
|
+
fail(`ios.bundleId "${(_manifest_ios6 = manifest.ios) === null || _manifest_ios6 === void 0 ? void 0 : _manifest_ios6.bundleId}" must be reverse-dns`);
|
|
252
284
|
}
|
|
253
285
|
if (manifest.ios.deploymentTarget !== void 0 && !DEPLOYMENT_TARGET.test(manifest.ios.deploymentTarget)) {
|
|
254
286
|
fail(`ios.deploymentTarget "${manifest.ios.deploymentTarget}" must look like "17.0"`);
|
|
@@ -299,10 +331,10 @@ function validateNativeApp(manifest, platform) {
|
|
|
299
331
|
if (manifest.android.shrinkResources && !manifest.android.minify) {
|
|
300
332
|
fail("android.shrinkResources needs android.minify");
|
|
301
333
|
}
|
|
302
|
-
var
|
|
334
|
+
var _iteratorNormalCompletion5 = true, _didIteratorError5 = false, _iteratorError5 = void 0;
|
|
303
335
|
try {
|
|
304
|
-
for (var
|
|
305
|
-
var link =
|
|
336
|
+
for (var _iterator5 = ((_manifest_android_appLinks = manifest.android.appLinks) !== null && _manifest_android_appLinks !== void 0 ? _manifest_android_appLinks : [])[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {
|
|
337
|
+
var link = _step5.value;
|
|
306
338
|
if (!link.host || !REVERSE_DNS.test(link.host)) {
|
|
307
339
|
fail(`android.appLinks host "${link.host}" must be a domain`);
|
|
308
340
|
}
|
|
@@ -311,16 +343,16 @@ function validateNativeApp(manifest, platform) {
|
|
|
311
343
|
}
|
|
312
344
|
}
|
|
313
345
|
} catch (err) {
|
|
314
|
-
|
|
315
|
-
|
|
346
|
+
_didIteratorError5 = true;
|
|
347
|
+
_iteratorError5 = err;
|
|
316
348
|
} finally {
|
|
317
349
|
try {
|
|
318
|
-
if (!
|
|
319
|
-
|
|
350
|
+
if (!_iteratorNormalCompletion5 && _iterator5.return != null) {
|
|
351
|
+
_iterator5.return();
|
|
320
352
|
}
|
|
321
353
|
} finally {
|
|
322
|
-
if (
|
|
323
|
-
throw
|
|
354
|
+
if (_didIteratorError5) {
|
|
355
|
+
throw _iteratorError5;
|
|
324
356
|
}
|
|
325
357
|
}
|
|
326
358
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nativeAppManifest.native.js","names":[],"sources":["esm/nativeAppManifest.native.js"],"sourcesContent":["var TARGET_NAME = /^[A-Za-z][A-Za-z0-9_]*$/;\nvar SCHEME = /^[a-z][a-z0-9+.-]*$/i;\nvar VERSION = /^\\d+\\.\\d+\\.\\d+/;\nvar BUILD_NUMBER = /^[A-Za-z0-9.]+$/;\nvar REVERSE_DNS = /^[A-Za-z][A-Za-z0-9-]*(\\.[A-Za-z][A-Za-z0-9-]*)+$/;\nvar DEPLOYMENT_TARGET = /^\\d+\\.\\d+$/;\nvar HEX_COLOR = /^#[\\da-f]{6}$/i;\nvar FONT_FILE = /\\.(ttf|otf)$/i;\nvar ORIENTATIONS = [\n \"portrait\",\n \"landscape\",\n \"default\"\n];\nvar USER_INTERFACE_STYLES = [\n \"light\",\n \"dark\",\n \"automatic\"\n];\nfunction fail(message) {\n throw new Error(`[one] invalid native.app: ${message}`);\n}\nfunction validateNativeApp(manifest, platform) {\n var _manifest_ios, _manifest_ios1, _manifest_splash, _manifest_splash_dark, _manifest_splash1, _manifest_splash2, _manifest_imagePicker, _manifest_photoLibrary, _manifest_photoLibrary1, _manifest_location, _manifest_ios2, _manifest_speech, _manifest_ios3;\n if (!manifest || typeof manifest !== \"object\") fail(\"manifest must be an object\");\n if (!manifest.name || typeof manifest.name !== \"string\") fail(\"name is required\");\n if (!TARGET_NAME.test(manifest.name)) {\n fail(`name \"${manifest.name}\" must start with a letter and contain only letters, digits, and underscore`);\n }\n var schemes = manifest.scheme === void 0 ? [] : Array.isArray(manifest.scheme) ? manifest.scheme : [\n manifest.scheme\n ];\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = schemes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var scheme = _step.value;\n if (typeof scheme !== \"string\" || !SCHEME.test(scheme)) {\n fail(`scheme \"${scheme}\" must be a valid uri scheme`);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n if (manifest.orientation !== void 0 && !ORIENTATIONS.includes(manifest.orientation)) {\n fail(`orientation \"${manifest.orientation}\" must be ${ORIENTATIONS.join(\", \")}`);\n }\n if (manifest.userInterfaceStyle !== void 0 && !USER_INTERFACE_STYLES.includes(manifest.userInterfaceStyle)) {\n fail(`userInterfaceStyle \"${manifest.userInterfaceStyle}\" must be ${USER_INTERFACE_STYLES.join(\", \")}`);\n }\n if (manifest.fonts !== void 0) {\n var names = /* @__PURE__ */ new Set();\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = manifest.fonts[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var font = _step1.value;\n var _font_split_pop;\n if (typeof font !== \"string\" || !FONT_FILE.test(font)) {\n fail(`fonts entry \"${font}\" must be a .ttf or .otf file path`);\n }\n var name = (_font_split_pop = font.split(\"/\").pop()) !== null && _font_split_pop !== void 0 ? _font_split_pop : font;\n if (names.has(name)) fail(`fonts lists ${name} twice`);\n names.add(name);\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally {\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n }\n if (manifest.version !== void 0 && !VERSION.test(manifest.version)) {\n fail(`version \"${manifest.version}\" must start with major.minor.patch`);\n }\n if (manifest.icon !== void 0 && (!manifest.icon.source || !HEX_COLOR.test(manifest.icon.backgroundColor))) {\n fail(\"icon requires source and a six-digit hex backgroundColor\");\n }\n if (((_manifest_ios = manifest.ios) === null || _manifest_ios === void 0 ? void 0 : _manifest_ios.alternateIcons) !== void 0) {\n if (!manifest.icon) fail(\"ios.alternateIcons requires a primary icon\");\n var entries = Object.entries(manifest.ios.alternateIcons);\n if (entries.length === 0) fail(\"ios.alternateIcons requires at least one icon\");\n var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;\n try {\n for (var _iterator2 = entries[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var [name1, icon] = _step2.value;\n if (name1 === \"AppIcon\" || !TARGET_NAME.test(name1)) {\n fail(`ios.alternateIcons name \"${name1}\" must be an identifier other than AppIcon`);\n }\n if (!(icon === null || icon === void 0 ? void 0 : icon.source) || !HEX_COLOR.test(icon.backgroundColor)) {\n fail(`ios.alternateIcons.${name1} requires source and a six-digit hex backgroundColor`);\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n if (((_manifest_ios1 = manifest.ios) === null || _manifest_ios1 === void 0 ? void 0 : _manifest_ios1.backgroundTasks) !== void 0) {\n var _tasks_refresh, _tasks_processing;\n var tasks = manifest.ios.backgroundTasks;\n if (!tasks || tasks.refresh !== void 0 && !Array.isArray(tasks.refresh) || tasks.processing !== void 0 && !Array.isArray(tasks.processing)) {\n fail(\"ios.backgroundTasks refresh and processing must be arrays of identifiers\");\n }\n var identifiers = [\n ...(_tasks_refresh = tasks.refresh) !== null && _tasks_refresh !== void 0 ? _tasks_refresh : [],\n ...(_tasks_processing = tasks.processing) !== null && _tasks_processing !== void 0 ? _tasks_processing : []\n ];\n if (!identifiers.length || new Set(identifiers).size !== identifiers.length) {\n fail(\"ios.backgroundTasks needs distinct refresh or processing identifiers\");\n }\n var _iteratorNormalCompletion3 = true, _didIteratorError3 = false, _iteratorError3 = void 0;\n try {\n for (var _iterator3 = identifiers[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var identifier = _step3.value;\n if (typeof identifier !== \"string\" || !REVERSE_DNS.test(identifier)) {\n fail(`ios.backgroundTasks identifier \"${identifier}\" must use reverse DNS notation`);\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n if (manifest.splash !== void 0 && (!manifest.splash.source || !HEX_COLOR.test(manifest.splash.backgroundColor) || manifest.splash.width !== void 0 && (!Number.isFinite(manifest.splash.width) || manifest.splash.width < 1 || manifest.splash.width > 288))) {\n fail(\"splash requires source, a six-digit hex backgroundColor, and width from 1 to 288\");\n }\n if (((_manifest_splash = manifest.splash) === null || _manifest_splash === void 0 ? void 0 : _manifest_splash.dark) !== void 0 && !HEX_COLOR.test(manifest.splash.dark.backgroundColor)) {\n fail(\"splash.dark requires a six-digit hex backgroundColor\");\n }\n if (((_manifest_splash1 = manifest.splash) === null || _manifest_splash1 === void 0 ? void 0 : (_manifest_splash_dark = _manifest_splash1.dark) === null || _manifest_splash_dark === void 0 ? void 0 : _manifest_splash_dark.backgroundImage) !== void 0 && manifest.splash.backgroundImage === void 0) {\n fail(\"splash.dark.backgroundImage needs splash.backgroundImage for the light launch\");\n }\n if (((_manifest_splash2 = manifest.splash) === null || _manifest_splash2 === void 0 ? void 0 : _manifest_splash2.resizeMode) !== void 0 && manifest.splash.resizeMode !== \"contain\" && manifest.splash.resizeMode !== \"cover\") {\n fail(`splash.resizeMode \"${manifest.splash.resizeMode}\" must be contain or cover`);\n }\n if (((_manifest_imagePicker = manifest.imagePicker) === null || _manifest_imagePicker === void 0 ? void 0 : _manifest_imagePicker.camera) !== void 0 && (typeof manifest.imagePicker.camera !== \"string\" || manifest.imagePicker.camera.trim() === \"\")) {\n fail(\"imagePicker.camera must be a non-empty string\");\n }\n if (manifest.photoLibrary !== void 0 && (!manifest.photoLibrary || manifest.photoLibrary.addOnly === void 0 && manifest.photoLibrary.readWrite === void 0)) {\n fail(\"photoLibrary must configure addOnly or readWrite\");\n }\n if (((_manifest_photoLibrary = manifest.photoLibrary) === null || _manifest_photoLibrary === void 0 ? void 0 : _manifest_photoLibrary.addOnly) !== void 0 && (typeof manifest.photoLibrary.addOnly !== \"string\" || manifest.photoLibrary.addOnly.trim() === \"\")) {\n fail(\"photoLibrary.addOnly must be a non-empty string\");\n }\n if (((_manifest_photoLibrary1 = manifest.photoLibrary) === null || _manifest_photoLibrary1 === void 0 ? void 0 : _manifest_photoLibrary1.readWrite) !== void 0 && (typeof manifest.photoLibrary.readWrite !== \"string\" || manifest.photoLibrary.readWrite.trim() === \"\")) {\n fail(\"photoLibrary.readWrite must be a non-empty string\");\n }\n if (manifest.contacts !== void 0 && (!manifest.contacts || typeof manifest.contacts.usage !== \"string\" || manifest.contacts.usage.trim() === \"\")) {\n fail(\"contacts.usage must be a non-empty string\");\n }\n if (manifest.calendar !== void 0) {\n if (!manifest.calendar || manifest.calendar.usage === void 0 && manifest.calendar.remindersUsage === void 0) {\n fail(\"calendar.usage or calendar.remindersUsage must be a non-empty string\");\n }\n if (manifest.calendar.usage !== void 0 && (typeof manifest.calendar.usage !== \"string\" || manifest.calendar.usage.trim() === \"\")) {\n fail(\"calendar.usage must be a non-empty string\");\n }\n if (manifest.calendar.remindersUsage !== void 0 && (typeof manifest.calendar.remindersUsage !== \"string\" || manifest.calendar.remindersUsage.trim() === \"\")) {\n fail(\"calendar.remindersUsage must be a non-empty string\");\n }\n }\n if (manifest.location !== void 0 && (!manifest.location || typeof manifest.location.whenInUse !== \"string\" || manifest.location.whenInUse.trim() === \"\")) {\n fail(\"location.whenInUse must be a non-empty string\");\n }\n if (((_manifest_location = manifest.location) === null || _manifest_location === void 0 ? void 0 : _manifest_location.background) !== void 0 && typeof manifest.location.background !== \"boolean\") {\n fail(\"location.background must be a boolean\");\n }\n if (manifest.audio !== void 0) {\n if (!manifest.audio || typeof manifest.audio !== \"object\") {\n fail(\"audio must configure microphone or background playback\");\n }\n if (manifest.audio.microphone !== void 0 && (typeof manifest.audio.microphone !== \"string\" || manifest.audio.microphone.trim() === \"\")) {\n fail(\"audio.microphone must be a non-empty string\");\n }\n if (manifest.audio.background !== void 0 && typeof manifest.audio.background !== \"boolean\") {\n fail(\"audio.background must be a boolean\");\n }\n if (manifest.audio.microphone === void 0 && manifest.audio.background !== true) {\n fail(\"audio must configure microphone or background playback\");\n }\n }\n if (((_manifest_ios2 = manifest.ios) === null || _manifest_ios2 === void 0 ? void 0 : _manifest_ios2.faceIdUsageDescription) !== void 0 && (typeof manifest.ios.faceIdUsageDescription !== \"string\" || manifest.ios.faceIdUsageDescription.trim() === \"\")) {\n fail(\"ios.faceIdUsageDescription must be a non-empty string\");\n }\n if (manifest.speech !== void 0 && (typeof ((_manifest_speech = manifest.speech) === null || _manifest_speech === void 0 ? void 0 : _manifest_speech.recognition) !== \"string\" || manifest.speech.recognition.trim() === \"\" || typeof manifest.speech.microphone !== \"string\" || manifest.speech.microphone.trim() === \"\")) {\n fail(\"speech.recognition and speech.microphone must be non-empty strings\");\n }\n if (manifest.notifications !== void 0) {\n if (typeof manifest.notifications !== \"object\" || manifest.notifications.push !== void 0 && typeof manifest.notifications.push !== \"boolean\") {\n fail(\"notifications.push must be a boolean\");\n }\n var aps = manifest.notifications.apsEnvironment;\n if (aps !== void 0 && aps !== \"development\" && aps !== \"production\") {\n fail(`notifications.apsEnvironment \"${aps}\" must be development or production`);\n }\n if (aps !== void 0 && !manifest.notifications.push) {\n fail(\"notifications.apsEnvironment needs notifications.push\");\n }\n }\n var accent = (_manifest_ios3 = manifest.ios) === null || _manifest_ios3 === void 0 ? void 0 : _manifest_ios3.accentColor;\n if (accent !== void 0 && (!HEX_COLOR.test(accent.light) || accent.dark !== void 0 && !HEX_COLOR.test(accent.dark))) {\n fail(\"ios.accentColor light and dark must be six-digit hex colors\");\n }\n if (manifest.pictureInPicture !== void 0 && typeof manifest.pictureInPicture !== \"boolean\") {\n fail(\"pictureInPicture must be a boolean\");\n }\n if (manifest.updates !== void 0) {\n if (typeof manifest.updates.runtimeVersion !== \"string\" || manifest.updates.runtimeVersion.trim() === \"\") {\n fail(\"updates.runtimeVersion must be a non-empty string\");\n }\n if (manifest.updates.url !== void 0 && (typeof manifest.updates.url !== \"string\" || manifest.updates.url.trim() === \"\")) {\n fail(\"updates.url must be a non-empty string\");\n }\n }\n if (!platform || platform === \"ios\") {\n var _manifest_ios4;\n if (!((_manifest_ios4 = manifest.ios) === null || _manifest_ios4 === void 0 ? void 0 : _manifest_ios4.bundleId) || !REVERSE_DNS.test(manifest.ios.bundleId)) {\n var _manifest_ios5;\n fail(`ios.bundleId \"${(_manifest_ios5 = manifest.ios) === null || _manifest_ios5 === void 0 ? void 0 : _manifest_ios5.bundleId}\" must be reverse-dns`);\n }\n if (manifest.ios.deploymentTarget !== void 0 && !DEPLOYMENT_TARGET.test(manifest.ios.deploymentTarget)) {\n fail(`ios.deploymentTarget \"${manifest.ios.deploymentTarget}\" must look like \"17.0\"`);\n }\n if (manifest.ios.buildNumber !== void 0 && !BUILD_NUMBER.test(manifest.ios.buildNumber)) {\n fail(`ios.buildNumber \"${manifest.ios.buildNumber}\" must contain only letters, digits, and dots`);\n }\n var widgets = manifest.ios.widgets;\n if (widgets) {\n var _widgets_displayName, _widgets_description;\n if (!manifest.ios.deploymentTarget || Number(manifest.ios.deploymentTarget) < 17) {\n fail(\"ios.widgets requires ios.deploymentTarget of 17.0 or newer\");\n }\n if (!/^group\\.[A-Za-z][A-Za-z0-9-]*(\\.[A-Za-z][A-Za-z0-9-]*)+$/.test(widgets.appGroup)) {\n fail(\"ios.widgets.appGroup must be a reverse-dns App Group beginning with group.\");\n }\n if (!/^[A-Za-z][A-Za-z0-9._-]*$/.test(widgets.kind)) {\n fail(\"ios.widgets.kind must be a non-empty WidgetKit kind\");\n }\n if (!((_widgets_displayName = widgets.displayName) === null || _widgets_displayName === void 0 ? void 0 : _widgets_displayName.trim()) || !((_widgets_description = widgets.description) === null || _widgets_description === void 0 ? void 0 : _widgets_description.trim())) {\n fail(\"ios.widgets.displayName and description must be non-empty strings\");\n }\n if (widgets.pushNotifications !== void 0 && typeof widgets.pushNotifications !== \"boolean\") {\n fail(\"ios.widgets.pushNotifications must be a boolean\");\n }\n }\n }\n if (!platform || platform === \"android\") {\n var _manifest_android_appLinks;\n var _manifest_android;\n if (!((_manifest_android = manifest.android) === null || _manifest_android === void 0 ? void 0 : _manifest_android.applicationId) || !REVERSE_DNS.test(manifest.android.applicationId)) {\n var _manifest_android1;\n fail(`android.applicationId \"${(_manifest_android1 = manifest.android) === null || _manifest_android1 === void 0 ? void 0 : _manifest_android1.applicationId}\" must be reverse-dns`);\n }\n if (manifest.android.minSdk !== void 0 && (!Number.isInteger(manifest.android.minSdk) || manifest.android.minSdk < 21 || manifest.android.minSdk > 36)) {\n fail(`android.minSdk \"${manifest.android.minSdk}\" must be an integer from 21 to 36`);\n }\n if (manifest.android.versionCode !== void 0 && (!Number.isInteger(manifest.android.versionCode) || manifest.android.versionCode < 1)) {\n fail(`android.versionCode \"${manifest.android.versionCode}\" must be a positive integer`);\n }\n for (var _i = 0, _iter = [\n \"targetSdk\",\n \"compileSdk\"\n ]; _i < _iter.length; _i++) {\n var key = _iter[_i];\n var value = manifest.android[key];\n if (value !== void 0 && (!Number.isInteger(value) || value < 21)) {\n fail(`android.${key} \"${value}\" must be an api level integer`);\n }\n }\n if (manifest.android.shrinkResources && !manifest.android.minify) {\n fail(\"android.shrinkResources needs android.minify\");\n }\n var _iteratorNormalCompletion4 = true, _didIteratorError4 = false, _iteratorError4 = void 0;\n try {\n for (var _iterator4 = ((_manifest_android_appLinks = manifest.android.appLinks) !== null && _manifest_android_appLinks !== void 0 ? _manifest_android_appLinks : [])[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var link = _step4.value;\n if (!link.host || !REVERSE_DNS.test(link.host)) {\n fail(`android.appLinks host \"${link.host}\" must be a domain`);\n }\n if (link.pathPrefix !== void 0 && !link.pathPrefix.startsWith(\"/\")) {\n fail(`android.appLinks pathPrefix \"${link.pathPrefix}\" must start with /`);\n }\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n var adaptiveIcon = manifest.android.adaptiveIcon;\n if (adaptiveIcon !== void 0 && (!adaptiveIcon.foreground || adaptiveIcon.backgroundColor !== void 0 && !HEX_COLOR.test(adaptiveIcon.backgroundColor))) {\n fail(\"android.adaptiveIcon requires foreground, and backgroundColor must be six-digit hex\");\n }\n if (manifest.android.googleMapsApiKey !== void 0 && (typeof manifest.android.googleMapsApiKey !== \"string\" || manifest.android.googleMapsApiKey.trim() === \"\")) {\n fail(\"android.googleMapsApiKey must be a non-empty string\");\n }\n }\n return manifest;\n}\nfunction expoClientFromNativeApp(app) {\n var _app_displayName, _app_userInterfaceStyle;\n var _app_icon, _app_fonts;\n return {\n name: (_app_displayName = app.displayName) !== null && _app_displayName !== void 0 ? _app_displayName : app.name,\n slug: app.name,\n scheme: app.scheme,\n version: app.version,\n orientation: app.orientation,\n // an expo config without the key means light, while prebuild writes no\n // UIUserInterfaceStyle for an unset style and the app follows the system,\n // so the manifest states the style the built app has.\n userInterfaceStyle: (_app_userInterfaceStyle = app.userInterfaceStyle) !== null && _app_userInterfaceStyle !== void 0 ? _app_userInterfaceStyle : \"automatic\",\n icon: (_app_icon = app.icon) === null || _app_icon === void 0 ? void 0 : _app_icon.source,\n splash: app.splash && {\n image: app.splash.source,\n backgroundImage: app.splash.backgroundImage,\n backgroundColor: app.splash.backgroundColor,\n imageWidth: app.splash.width,\n resizeMode: app.splash.resizeMode,\n dark: app.splash.dark && {\n image: app.splash.dark.source,\n backgroundImage: app.splash.dark.backgroundImage,\n backgroundColor: app.splash.dark.backgroundColor\n }\n },\n plugins: ((_app_fonts = app.fonts) === null || _app_fonts === void 0 ? void 0 : _app_fonts.length) ? [\n [\n \"expo-font\",\n {\n fonts: app.fonts\n }\n ]\n ] : void 0,\n ios: app.ios && {\n bundleIdentifier: app.ios.bundleId,\n buildNumber: app.ios.buildNumber,\n supportsTablet: app.ios.tablet,\n associatedDomains: app.ios.associatedDomains,\n usesAppleSignIn: app.ios.usesAppleSignIn,\n googleServicesFile: app.ios.googleServicesFile,\n infoPlist: app.ios.infoPlist,\n entitlements: app.ios.entitlements\n },\n android: app.android && {\n package: app.android.applicationId,\n versionCode: app.android.versionCode,\n permissions: app.android.permissions,\n blockedPermissions: app.android.blockedPermissions,\n googleServicesFile: app.android.googleServicesFile,\n adaptiveIcon: app.android.adaptiveIcon && {\n foregroundImage: app.android.adaptiveIcon.foreground,\n backgroundImage: app.android.adaptiveIcon.background,\n backgroundColor: app.android.adaptiveIcon.backgroundColor,\n monochromeImage: app.android.adaptiveIcon.monochrome\n }\n }\n };\n}\nexport {\n expoClientFromNativeApp,\n validateNativeApp\n};\n//# sourceMappingURL=nativeAppManifest.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nativeAppManifest.native.js","names":[],"sources":["esm/nativeAppManifest.native.js"],"sourcesContent":["var TARGET_NAME = /^[A-Za-z][A-Za-z0-9_]*$/;\nvar SCHEME = /^[a-z][a-z0-9+.-]*$/i;\nvar VERSION = /^\\d+\\.\\d+\\.\\d+/;\nvar BUILD_NUMBER = /^[A-Za-z0-9.]+$/;\nvar REVERSE_DNS = /^[A-Za-z][A-Za-z0-9-]*(\\.[A-Za-z][A-Za-z0-9-]*)+$/;\nvar DEPLOYMENT_TARGET = /^\\d+\\.\\d+$/;\nvar HEX_COLOR = /^#[\\da-f]{6}$/i;\nvar FONT_FILE = /\\.(ttf|otf)$/i;\nvar ORIENTATIONS = [\n \"portrait\",\n \"landscape\",\n \"default\"\n];\nvar USER_INTERFACE_STYLES = [\n \"light\",\n \"dark\",\n \"automatic\"\n];\nfunction fail(message) {\n throw new Error(`[one] invalid native.app: ${message}`);\n}\nfunction validateNativeApp(manifest, platform) {\n var _manifest_ios, _manifest_ios1, _manifest_ios2, _manifest_splash, _manifest_splash_dark, _manifest_splash1, _manifest_splash2, _manifest_imagePicker, _manifest_photoLibrary, _manifest_photoLibrary1, _manifest_location, _manifest_ios3, _manifest_speech, _manifest_ios4;\n if (!manifest || typeof manifest !== \"object\") fail(\"manifest must be an object\");\n if (!manifest.name || typeof manifest.name !== \"string\") fail(\"name is required\");\n if (!TARGET_NAME.test(manifest.name)) {\n fail(`name \"${manifest.name}\" must start with a letter and contain only letters, digits, and underscore`);\n }\n var schemes = manifest.scheme === void 0 ? [] : Array.isArray(manifest.scheme) ? manifest.scheme : [\n manifest.scheme\n ];\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = schemes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var scheme = _step.value;\n if (typeof scheme !== \"string\" || !SCHEME.test(scheme)) {\n fail(`scheme \"${scheme}\" must be a valid uri scheme`);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n if (manifest.orientation !== void 0 && !ORIENTATIONS.includes(manifest.orientation)) {\n fail(`orientation \"${manifest.orientation}\" must be ${ORIENTATIONS.join(\", \")}`);\n }\n if (manifest.userInterfaceStyle !== void 0 && !USER_INTERFACE_STYLES.includes(manifest.userInterfaceStyle)) {\n fail(`userInterfaceStyle \"${manifest.userInterfaceStyle}\" must be ${USER_INTERFACE_STYLES.join(\", \")}`);\n }\n if (manifest.fonts !== void 0) {\n var names = /* @__PURE__ */ new Set();\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = manifest.fonts[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var font = _step1.value;\n var _font_split_pop;\n if (typeof font !== \"string\" || !FONT_FILE.test(font)) {\n fail(`fonts entry \"${font}\" must be a .ttf or .otf file path`);\n }\n var name = (_font_split_pop = font.split(\"/\").pop()) !== null && _font_split_pop !== void 0 ? _font_split_pop : font;\n if (names.has(name)) fail(`fonts lists ${name} twice`);\n names.add(name);\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally {\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n }\n if (manifest.version !== void 0 && !VERSION.test(manifest.version)) {\n fail(`version \"${manifest.version}\" must start with major.minor.patch`);\n }\n if (manifest.icon !== void 0 && (!manifest.icon.source || !HEX_COLOR.test(manifest.icon.backgroundColor))) {\n fail(\"icon requires source and a six-digit hex backgroundColor\");\n }\n if (((_manifest_ios = manifest.ios) === null || _manifest_ios === void 0 ? void 0 : _manifest_ios.alternateIcons) !== void 0) {\n if (!manifest.icon) fail(\"ios.alternateIcons requires a primary icon\");\n var entries = Object.entries(manifest.ios.alternateIcons);\n if (entries.length === 0) fail(\"ios.alternateIcons requires at least one icon\");\n var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;\n try {\n for (var _iterator2 = entries[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var [name1, icon] = _step2.value;\n if (name1 === \"AppIcon\" || !TARGET_NAME.test(name1)) {\n fail(`ios.alternateIcons name \"${name1}\" must be an identifier other than AppIcon`);\n }\n if (!(icon === null || icon === void 0 ? void 0 : icon.source) || !HEX_COLOR.test(icon.backgroundColor)) {\n fail(`ios.alternateIcons.${name1} requires source and a six-digit hex backgroundColor`);\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n if (((_manifest_ios1 = manifest.ios) === null || _manifest_ios1 === void 0 ? void 0 : _manifest_ios1.backgroundTasks) !== void 0) {\n var _tasks_refresh, _tasks_processing;\n var tasks = manifest.ios.backgroundTasks;\n if (!tasks || tasks.refresh !== void 0 && !Array.isArray(tasks.refresh) || tasks.processing !== void 0 && !Array.isArray(tasks.processing)) {\n fail(\"ios.backgroundTasks refresh and processing must be arrays of identifiers\");\n }\n var identifiers = [\n ...(_tasks_refresh = tasks.refresh) !== null && _tasks_refresh !== void 0 ? _tasks_refresh : [],\n ...(_tasks_processing = tasks.processing) !== null && _tasks_processing !== void 0 ? _tasks_processing : []\n ];\n if (!identifiers.length || new Set(identifiers).size !== identifiers.length) {\n fail(\"ios.backgroundTasks needs distinct refresh or processing identifiers\");\n }\n var _iteratorNormalCompletion3 = true, _didIteratorError3 = false, _iteratorError3 = void 0;\n try {\n for (var _iterator3 = identifiers[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var identifier = _step3.value;\n if (typeof identifier !== \"string\" || !REVERSE_DNS.test(identifier)) {\n fail(`ios.backgroundTasks identifier \"${identifier}\" must use reverse DNS notation`);\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n if (((_manifest_ios2 = manifest.ios) === null || _manifest_ios2 === void 0 ? void 0 : _manifest_ios2.appIntents) !== void 0) {\n var _manifest_ios_appIntents;\n var actions = (_manifest_ios_appIntents = manifest.ios.appIntents) === null || _manifest_ios_appIntents === void 0 ? void 0 : _manifest_ios_appIntents.actions;\n if (!Array.isArray(actions) || actions.length === 0) {\n fail(\"ios.appIntents.actions must be a non-empty array\");\n }\n var ids = /* @__PURE__ */ new Set();\n var _iteratorNormalCompletion4 = true, _didIteratorError4 = false, _iteratorError4 = void 0;\n try {\n for (var _iterator4 = actions[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var action = _step4.value;\n if (!action || typeof action !== \"object\" || typeof action.id !== \"string\" || !action.id.trim() || typeof action.title !== \"string\" || !action.title.trim() || action.textParameterTitle !== void 0 && (typeof action.textParameterTitle !== \"string\" || !action.textParameterTitle.trim()) || typeof action.shortcutPhrase !== \"string\" || action.shortcutPhrase.split(\"{app}\").length !== 2 || !action.shortcutPhrase.replace(\"{app}\", \"\").trim()) {\n fail(\"ios.appIntents actions need unique non-empty id/title, optional textParameterTitle, and a shortcutPhrase with one {app}\");\n }\n if (ids.has(action.id)) fail(`ios.appIntents action \"${action.id}\" is duplicated`);\n ids.add(action.id);\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n }\n if (manifest.splash !== void 0 && (!manifest.splash.source || !HEX_COLOR.test(manifest.splash.backgroundColor) || manifest.splash.width !== void 0 && (!Number.isFinite(manifest.splash.width) || manifest.splash.width < 1 || manifest.splash.width > 288))) {\n fail(\"splash requires source, a six-digit hex backgroundColor, and width from 1 to 288\");\n }\n if (((_manifest_splash = manifest.splash) === null || _manifest_splash === void 0 ? void 0 : _manifest_splash.dark) !== void 0 && !HEX_COLOR.test(manifest.splash.dark.backgroundColor)) {\n fail(\"splash.dark requires a six-digit hex backgroundColor\");\n }\n if (((_manifest_splash1 = manifest.splash) === null || _manifest_splash1 === void 0 ? void 0 : (_manifest_splash_dark = _manifest_splash1.dark) === null || _manifest_splash_dark === void 0 ? void 0 : _manifest_splash_dark.backgroundImage) !== void 0 && manifest.splash.backgroundImage === void 0) {\n fail(\"splash.dark.backgroundImage needs splash.backgroundImage for the light launch\");\n }\n if (((_manifest_splash2 = manifest.splash) === null || _manifest_splash2 === void 0 ? void 0 : _manifest_splash2.resizeMode) !== void 0 && manifest.splash.resizeMode !== \"contain\" && manifest.splash.resizeMode !== \"cover\") {\n fail(`splash.resizeMode \"${manifest.splash.resizeMode}\" must be contain or cover`);\n }\n if (((_manifest_imagePicker = manifest.imagePicker) === null || _manifest_imagePicker === void 0 ? void 0 : _manifest_imagePicker.camera) !== void 0 && (typeof manifest.imagePicker.camera !== \"string\" || manifest.imagePicker.camera.trim() === \"\")) {\n fail(\"imagePicker.camera must be a non-empty string\");\n }\n if (manifest.photoLibrary !== void 0 && (!manifest.photoLibrary || manifest.photoLibrary.addOnly === void 0 && manifest.photoLibrary.readWrite === void 0)) {\n fail(\"photoLibrary must configure addOnly or readWrite\");\n }\n if (((_manifest_photoLibrary = manifest.photoLibrary) === null || _manifest_photoLibrary === void 0 ? void 0 : _manifest_photoLibrary.addOnly) !== void 0 && (typeof manifest.photoLibrary.addOnly !== \"string\" || manifest.photoLibrary.addOnly.trim() === \"\")) {\n fail(\"photoLibrary.addOnly must be a non-empty string\");\n }\n if (((_manifest_photoLibrary1 = manifest.photoLibrary) === null || _manifest_photoLibrary1 === void 0 ? void 0 : _manifest_photoLibrary1.readWrite) !== void 0 && (typeof manifest.photoLibrary.readWrite !== \"string\" || manifest.photoLibrary.readWrite.trim() === \"\")) {\n fail(\"photoLibrary.readWrite must be a non-empty string\");\n }\n if (manifest.contacts !== void 0 && (!manifest.contacts || typeof manifest.contacts.usage !== \"string\" || manifest.contacts.usage.trim() === \"\")) {\n fail(\"contacts.usage must be a non-empty string\");\n }\n if (manifest.calendar !== void 0) {\n if (!manifest.calendar || manifest.calendar.usage === void 0 && manifest.calendar.remindersUsage === void 0) {\n fail(\"calendar.usage or calendar.remindersUsage must be a non-empty string\");\n }\n if (manifest.calendar.usage !== void 0 && (typeof manifest.calendar.usage !== \"string\" || manifest.calendar.usage.trim() === \"\")) {\n fail(\"calendar.usage must be a non-empty string\");\n }\n if (manifest.calendar.remindersUsage !== void 0 && (typeof manifest.calendar.remindersUsage !== \"string\" || manifest.calendar.remindersUsage.trim() === \"\")) {\n fail(\"calendar.remindersUsage must be a non-empty string\");\n }\n }\n if (manifest.location !== void 0 && (!manifest.location || typeof manifest.location.whenInUse !== \"string\" || manifest.location.whenInUse.trim() === \"\")) {\n fail(\"location.whenInUse must be a non-empty string\");\n }\n if (((_manifest_location = manifest.location) === null || _manifest_location === void 0 ? void 0 : _manifest_location.background) !== void 0 && typeof manifest.location.background !== \"boolean\") {\n fail(\"location.background must be a boolean\");\n }\n if (manifest.audio !== void 0) {\n if (!manifest.audio || typeof manifest.audio !== \"object\") {\n fail(\"audio must configure microphone or background playback\");\n }\n if (manifest.audio.microphone !== void 0 && (typeof manifest.audio.microphone !== \"string\" || manifest.audio.microphone.trim() === \"\")) {\n fail(\"audio.microphone must be a non-empty string\");\n }\n if (manifest.audio.background !== void 0 && typeof manifest.audio.background !== \"boolean\") {\n fail(\"audio.background must be a boolean\");\n }\n if (manifest.audio.microphone === void 0 && manifest.audio.background !== true) {\n fail(\"audio must configure microphone or background playback\");\n }\n }\n if (((_manifest_ios3 = manifest.ios) === null || _manifest_ios3 === void 0 ? void 0 : _manifest_ios3.faceIdUsageDescription) !== void 0 && (typeof manifest.ios.faceIdUsageDescription !== \"string\" || manifest.ios.faceIdUsageDescription.trim() === \"\")) {\n fail(\"ios.faceIdUsageDescription must be a non-empty string\");\n }\n if (manifest.speech !== void 0 && (typeof ((_manifest_speech = manifest.speech) === null || _manifest_speech === void 0 ? void 0 : _manifest_speech.recognition) !== \"string\" || manifest.speech.recognition.trim() === \"\" || typeof manifest.speech.microphone !== \"string\" || manifest.speech.microphone.trim() === \"\")) {\n fail(\"speech.recognition and speech.microphone must be non-empty strings\");\n }\n if (manifest.notifications !== void 0) {\n if (typeof manifest.notifications !== \"object\" || manifest.notifications.push !== void 0 && typeof manifest.notifications.push !== \"boolean\") {\n fail(\"notifications.push must be a boolean\");\n }\n var aps = manifest.notifications.apsEnvironment;\n if (aps !== void 0 && aps !== \"development\" && aps !== \"production\") {\n fail(`notifications.apsEnvironment \"${aps}\" must be development or production`);\n }\n if (aps !== void 0 && !manifest.notifications.push) {\n fail(\"notifications.apsEnvironment needs notifications.push\");\n }\n }\n var accent = (_manifest_ios4 = manifest.ios) === null || _manifest_ios4 === void 0 ? void 0 : _manifest_ios4.accentColor;\n if (accent !== void 0 && (!HEX_COLOR.test(accent.light) || accent.dark !== void 0 && !HEX_COLOR.test(accent.dark))) {\n fail(\"ios.accentColor light and dark must be six-digit hex colors\");\n }\n if (manifest.pictureInPicture !== void 0 && typeof manifest.pictureInPicture !== \"boolean\") {\n fail(\"pictureInPicture must be a boolean\");\n }\n if (manifest.updates !== void 0) {\n if (typeof manifest.updates.runtimeVersion !== \"string\" || manifest.updates.runtimeVersion.trim() === \"\") {\n fail(\"updates.runtimeVersion must be a non-empty string\");\n }\n if (manifest.updates.url !== void 0 && (typeof manifest.updates.url !== \"string\" || manifest.updates.url.trim() === \"\")) {\n fail(\"updates.url must be a non-empty string\");\n }\n }\n if (!platform || platform === \"ios\") {\n var _manifest_ios5;\n if (!((_manifest_ios5 = manifest.ios) === null || _manifest_ios5 === void 0 ? void 0 : _manifest_ios5.bundleId) || !REVERSE_DNS.test(manifest.ios.bundleId)) {\n var _manifest_ios6;\n fail(`ios.bundleId \"${(_manifest_ios6 = manifest.ios) === null || _manifest_ios6 === void 0 ? void 0 : _manifest_ios6.bundleId}\" must be reverse-dns`);\n }\n if (manifest.ios.deploymentTarget !== void 0 && !DEPLOYMENT_TARGET.test(manifest.ios.deploymentTarget)) {\n fail(`ios.deploymentTarget \"${manifest.ios.deploymentTarget}\" must look like \"17.0\"`);\n }\n if (manifest.ios.buildNumber !== void 0 && !BUILD_NUMBER.test(manifest.ios.buildNumber)) {\n fail(`ios.buildNumber \"${manifest.ios.buildNumber}\" must contain only letters, digits, and dots`);\n }\n var widgets = manifest.ios.widgets;\n if (widgets) {\n var _widgets_displayName, _widgets_description;\n if (!manifest.ios.deploymentTarget || Number(manifest.ios.deploymentTarget) < 17) {\n fail(\"ios.widgets requires ios.deploymentTarget of 17.0 or newer\");\n }\n if (!/^group\\.[A-Za-z][A-Za-z0-9-]*(\\.[A-Za-z][A-Za-z0-9-]*)+$/.test(widgets.appGroup)) {\n fail(\"ios.widgets.appGroup must be a reverse-dns App Group beginning with group.\");\n }\n if (!/^[A-Za-z][A-Za-z0-9._-]*$/.test(widgets.kind)) {\n fail(\"ios.widgets.kind must be a non-empty WidgetKit kind\");\n }\n if (!((_widgets_displayName = widgets.displayName) === null || _widgets_displayName === void 0 ? void 0 : _widgets_displayName.trim()) || !((_widgets_description = widgets.description) === null || _widgets_description === void 0 ? void 0 : _widgets_description.trim())) {\n fail(\"ios.widgets.displayName and description must be non-empty strings\");\n }\n if (widgets.pushNotifications !== void 0 && typeof widgets.pushNotifications !== \"boolean\") {\n fail(\"ios.widgets.pushNotifications must be a boolean\");\n }\n }\n }\n if (!platform || platform === \"android\") {\n var _manifest_android_appLinks;\n var _manifest_android;\n if (!((_manifest_android = manifest.android) === null || _manifest_android === void 0 ? void 0 : _manifest_android.applicationId) || !REVERSE_DNS.test(manifest.android.applicationId)) {\n var _manifest_android1;\n fail(`android.applicationId \"${(_manifest_android1 = manifest.android) === null || _manifest_android1 === void 0 ? void 0 : _manifest_android1.applicationId}\" must be reverse-dns`);\n }\n if (manifest.android.minSdk !== void 0 && (!Number.isInteger(manifest.android.minSdk) || manifest.android.minSdk < 21 || manifest.android.minSdk > 36)) {\n fail(`android.minSdk \"${manifest.android.minSdk}\" must be an integer from 21 to 36`);\n }\n if (manifest.android.versionCode !== void 0 && (!Number.isInteger(manifest.android.versionCode) || manifest.android.versionCode < 1)) {\n fail(`android.versionCode \"${manifest.android.versionCode}\" must be a positive integer`);\n }\n for (var _i = 0, _iter = [\n \"targetSdk\",\n \"compileSdk\"\n ]; _i < _iter.length; _i++) {\n var key = _iter[_i];\n var value = manifest.android[key];\n if (value !== void 0 && (!Number.isInteger(value) || value < 21)) {\n fail(`android.${key} \"${value}\" must be an api level integer`);\n }\n }\n if (manifest.android.shrinkResources && !manifest.android.minify) {\n fail(\"android.shrinkResources needs android.minify\");\n }\n var _iteratorNormalCompletion5 = true, _didIteratorError5 = false, _iteratorError5 = void 0;\n try {\n for (var _iterator5 = ((_manifest_android_appLinks = manifest.android.appLinks) !== null && _manifest_android_appLinks !== void 0 ? _manifest_android_appLinks : [])[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var link = _step5.value;\n if (!link.host || !REVERSE_DNS.test(link.host)) {\n fail(`android.appLinks host \"${link.host}\" must be a domain`);\n }\n if (link.pathPrefix !== void 0 && !link.pathPrefix.startsWith(\"/\")) {\n fail(`android.appLinks pathPrefix \"${link.pathPrefix}\" must start with /`);\n }\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return != null) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n var adaptiveIcon = manifest.android.adaptiveIcon;\n if (adaptiveIcon !== void 0 && (!adaptiveIcon.foreground || adaptiveIcon.backgroundColor !== void 0 && !HEX_COLOR.test(adaptiveIcon.backgroundColor))) {\n fail(\"android.adaptiveIcon requires foreground, and backgroundColor must be six-digit hex\");\n }\n if (manifest.android.googleMapsApiKey !== void 0 && (typeof manifest.android.googleMapsApiKey !== \"string\" || manifest.android.googleMapsApiKey.trim() === \"\")) {\n fail(\"android.googleMapsApiKey must be a non-empty string\");\n }\n }\n return manifest;\n}\nfunction expoClientFromNativeApp(app) {\n var _app_displayName, _app_userInterfaceStyle;\n var _app_icon, _app_fonts;\n return {\n name: (_app_displayName = app.displayName) !== null && _app_displayName !== void 0 ? _app_displayName : app.name,\n slug: app.name,\n scheme: app.scheme,\n version: app.version,\n orientation: app.orientation,\n // an expo config without the key means light, while prebuild writes no\n // UIUserInterfaceStyle for an unset style and the app follows the system,\n // so the manifest states the style the built app has.\n userInterfaceStyle: (_app_userInterfaceStyle = app.userInterfaceStyle) !== null && _app_userInterfaceStyle !== void 0 ? _app_userInterfaceStyle : \"automatic\",\n icon: (_app_icon = app.icon) === null || _app_icon === void 0 ? void 0 : _app_icon.source,\n splash: app.splash && {\n image: app.splash.source,\n backgroundImage: app.splash.backgroundImage,\n backgroundColor: app.splash.backgroundColor,\n imageWidth: app.splash.width,\n resizeMode: app.splash.resizeMode,\n dark: app.splash.dark && {\n image: app.splash.dark.source,\n backgroundImage: app.splash.dark.backgroundImage,\n backgroundColor: app.splash.dark.backgroundColor\n }\n },\n plugins: ((_app_fonts = app.fonts) === null || _app_fonts === void 0 ? void 0 : _app_fonts.length) ? [\n [\n \"expo-font\",\n {\n fonts: app.fonts\n }\n ]\n ] : void 0,\n ios: app.ios && {\n bundleIdentifier: app.ios.bundleId,\n buildNumber: app.ios.buildNumber,\n supportsTablet: app.ios.tablet,\n associatedDomains: app.ios.associatedDomains,\n usesAppleSignIn: app.ios.usesAppleSignIn,\n googleServicesFile: app.ios.googleServicesFile,\n infoPlist: app.ios.infoPlist,\n entitlements: app.ios.entitlements\n },\n android: app.android && {\n package: app.android.applicationId,\n versionCode: app.android.versionCode,\n permissions: app.android.permissions,\n blockedPermissions: app.android.blockedPermissions,\n googleServicesFile: app.android.googleServicesFile,\n adaptiveIcon: app.android.adaptiveIcon && {\n foregroundImage: app.android.adaptiveIcon.foreground,\n backgroundImage: app.android.adaptiveIcon.background,\n backgroundColor: app.android.adaptiveIcon.backgroundColor,\n monochromeImage: app.android.adaptiveIcon.monochrome\n }\n }\n };\n}\nexport {\n expoClientFromNativeApp,\n validateNativeApp\n};\n//# sourceMappingURL=nativeAppManifest.js.map\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vxrn/utils",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.158.1",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "./types/index.d.ts",
|
|
@@ -41,8 +41,8 @@
|
|
|
41
41
|
"typecheck": "tsc --noEmit"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@vxrn/debug": "2.0.0-beta.
|
|
45
|
-
"@vxrn/resolve": "2.0.0-beta.
|
|
44
|
+
"@vxrn/debug": "2.0.0-beta.158.1",
|
|
45
|
+
"@vxrn/resolve": "2.0.0-beta.158.1",
|
|
46
46
|
"ws": "^8.21.0"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
@@ -183,6 +183,22 @@ describe('native.app manifest', () => {
|
|
|
183
183
|
).toThrow(/appGroup/)
|
|
184
184
|
})
|
|
185
185
|
|
|
186
|
+
test('validates static App Intent identifiers and shortcut phrases', () => {
|
|
187
|
+
const first = {
|
|
188
|
+
id: 'dev.one.myapp.echo',
|
|
189
|
+
title: 'Echo text',
|
|
190
|
+
textParameterTitle: 'Text',
|
|
191
|
+
shortcutPhrase: 'Echo text in {app}',
|
|
192
|
+
}
|
|
193
|
+
const withActions = (actions: Array<typeof first>) =>
|
|
194
|
+
({ ...app, ios: { ...app.ios, appIntents: { actions } } })
|
|
195
|
+
expect(() => validateNativeApp(withActions([first]))).not.toThrow()
|
|
196
|
+
expect(() => validateNativeApp(withActions([first, { ...first }]))).toThrow(/duplicated/)
|
|
197
|
+
expect(() => validateNativeApp(withActions([{ ...first, shortcutPhrase: 'Echo text' }]))).toThrow(/shortcu\w*Phrase/)
|
|
198
|
+
expect(() => validateNativeApp(withActions([{ ...first, shortcutPhrase: '{app} in {app}' }]))).toThrow(/shortcu\w*Phrase/)
|
|
199
|
+
expect(() => validateNativeApp(withActions([{ ...first, textParameterTitle: ' ' }]))).toThrow(/textParameterTitle/)
|
|
200
|
+
})
|
|
201
|
+
|
|
186
202
|
test('rejects missing platform ids and out-of-range platform values', () => {
|
|
187
203
|
expect(() => validateNativeApp({ name: 'MyApp' } as any)).toThrow(/bundleId/)
|
|
188
204
|
expect(() =>
|
package/src/nativeAppManifest.ts
CHANGED
|
@@ -155,6 +155,16 @@ export interface NativeAppManifest {
|
|
|
155
155
|
refresh?: string[]
|
|
156
156
|
processing?: string[]
|
|
157
157
|
}
|
|
158
|
+
// statically compiled App Intents for One.iOS.AppIntents. handlers live
|
|
159
|
+
// in the native setupFile so Shortcuts can start the app in the background.
|
|
160
|
+
appIntents?: {
|
|
161
|
+
actions: Array<{
|
|
162
|
+
id: string
|
|
163
|
+
title: string
|
|
164
|
+
textParameterTitle?: string
|
|
165
|
+
shortcutPhrase: string
|
|
166
|
+
}>
|
|
167
|
+
}
|
|
158
168
|
}
|
|
159
169
|
android?: {
|
|
160
170
|
applicationId: string
|
|
@@ -298,6 +308,27 @@ export function validateNativeApp(
|
|
|
298
308
|
}
|
|
299
309
|
}
|
|
300
310
|
}
|
|
311
|
+
if (manifest.ios?.appIntents !== undefined) {
|
|
312
|
+
const actions = manifest.ios.appIntents?.actions
|
|
313
|
+
if (!Array.isArray(actions) || actions.length === 0) {
|
|
314
|
+
fail('ios.appIntents.actions must be a non-empty array')
|
|
315
|
+
}
|
|
316
|
+
const ids = new Set<string>()
|
|
317
|
+
for (const action of actions) {
|
|
318
|
+
if (!action || typeof action !== 'object' ||
|
|
319
|
+
typeof action.id !== 'string' || !action.id.trim() ||
|
|
320
|
+
typeof action.title !== 'string' || !action.title.trim() ||
|
|
321
|
+
(action.textParameterTitle !== undefined &&
|
|
322
|
+
(typeof action.textParameterTitle !== 'string' || !action.textParameterTitle.trim())) ||
|
|
323
|
+
typeof action.shortcutPhrase !== 'string' ||
|
|
324
|
+
action.shortcutPhrase.split('{app}').length !== 2 ||
|
|
325
|
+
!action.shortcutPhrase.replace('{app}', '').trim()) {
|
|
326
|
+
fail('ios.appIntents actions need unique non-empty id/title, optional textParameterTitle, and a shortcutPhrase with one {app}')
|
|
327
|
+
}
|
|
328
|
+
if (ids.has(action.id)) fail(`ios.appIntents action "${action.id}" is duplicated`)
|
|
329
|
+
ids.add(action.id)
|
|
330
|
+
}
|
|
331
|
+
}
|
|
301
332
|
if (
|
|
302
333
|
manifest.splash !== undefined &&
|
|
303
334
|
(!manifest.splash.source ||
|
|
@@ -95,6 +95,14 @@ export interface NativeAppManifest {
|
|
|
95
95
|
refresh?: string[];
|
|
96
96
|
processing?: string[];
|
|
97
97
|
};
|
|
98
|
+
appIntents?: {
|
|
99
|
+
actions: Array<{
|
|
100
|
+
id: string;
|
|
101
|
+
title: string;
|
|
102
|
+
textParameterTitle?: string;
|
|
103
|
+
shortcutPhrase: string;
|
|
104
|
+
}>;
|
|
105
|
+
};
|
|
98
106
|
};
|
|
99
107
|
android?: {
|
|
100
108
|
applicationId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nativeAppManifest.d.ts","sourceRoot":"","sources":["../src/nativeAppManifest.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"nativeAppManifest.d.ts","sourceRoot":"","sources":["../src/nativeAppManifest.ts"],"names":[],"mappings":"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"}
|