mirror of
https://github.com/driftywinds/driftywinds.github.io.git
synced 2025-12-19 11:03:32 +00:00
Workaround for broken dynamic imports on Safari 17.2
This commit is contained in:
@@ -13,117 +13,127 @@ export const sourceURL = urlSearchParams.get('source')?.replaceAll("+", "%2B");
|
||||
// https://stackoverflow.com/a/8943487
|
||||
export const urlRegex = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
|
||||
|
||||
export const sources = [
|
||||
"https://therealfoxster.github.io/altsource/apps.json",
|
||||
"https://qnblackcat.github.io/AltStore/apps.json",
|
||||
"https://quarksources.github.io/dist/quantumsource.min.json",
|
||||
"https://quarksources.github.io/dist/quantumsource%2B%2B.min.json",
|
||||
"https://alt.getutm.app",
|
||||
"https://flyinghead.github.io/flycast-builds/altstore.json",
|
||||
"https://provenance-emu.com/apps.json"
|
||||
];
|
||||
|
||||
export const entitlements = {
|
||||
"com.apple.security.application-groups": {
|
||||
name: "App Groups",
|
||||
description: "Allow app to share files with other apps and app extensions in the same App Group.",
|
||||
icon: "columns-gap"
|
||||
"name": "App Groups",
|
||||
"description": "Allow app to share files with other apps and app extensions in the same App Group.",
|
||||
"icon": "columns-gap"
|
||||
},
|
||||
"com.apple.developer.associated-domains": {
|
||||
name: "Associated Domains",
|
||||
description: "The associated domains for specific services, such as shared web credentials, universal links, and App Clips.",
|
||||
icon: "globe2"
|
||||
"name": "Associated Domains",
|
||||
"description": "The associated domains for specific services, such as shared web credentials, universal links, and App Clips.",
|
||||
"icon": "globe2"
|
||||
},
|
||||
"com.apple.developer.carplay-audio": {
|
||||
name: "CarPlay Audio",
|
||||
description: "Allows the app the provide audio content for CarPlay.",
|
||||
icon: "car-front-fill"
|
||||
"name": "CarPlay Audio",
|
||||
"description": "Allows the app the provide audio content for CarPlay.",
|
||||
"icon": "car-front-fill"
|
||||
},
|
||||
"get-task-allow": {
|
||||
name: "Debuggable",
|
||||
description: "Allow developers to attach a debugger to this app. This permission is required for JIT to work.",
|
||||
icon: "tools"
|
||||
"name": "Debuggable",
|
||||
"description": "Allow developers to attach a debugger to this app. This permission is required for JIT to work.",
|
||||
"icon": "tools"
|
||||
},
|
||||
"com.apple.developer.device-information.user-assigned-device-name": {
|
||||
name: "Device Name",
|
||||
description: "Grants access to the user-assigned device name instead of a generic device name.",
|
||||
icon: "phone-fill"
|
||||
"name": "Device Name",
|
||||
"description": "Grants access to the user-assigned device name instead of a generic device name.",
|
||||
"icon": "phone-fill"
|
||||
},
|
||||
"keychain-access-groups": {
|
||||
name: "Keychain",
|
||||
description: "Allows app to read and write secure data to the system's keychain.",
|
||||
icon: "key-fill"
|
||||
"name": "Keychain",
|
||||
"description": "Allows app to read and write secure data to the system's keychain.",
|
||||
"icon": "key-fill"
|
||||
},
|
||||
"com.apple.developer.networking.multicast": {
|
||||
name: "Multicast",
|
||||
description: "App can send or receive IP multicast traffic.",
|
||||
icon: "globe2"
|
||||
"name": "Multicast",
|
||||
"description": "App can send or receive IP multicast traffic.",
|
||||
"icon": "globe2"
|
||||
},
|
||||
"aps-environment": {
|
||||
name: "Push Notifications",
|
||||
description: "App can send push notifications.",
|
||||
icon: "app-indicator"
|
||||
"name": "Push Notifications",
|
||||
"description": "App can send push notifications.",
|
||||
"icon": "app-indicator"
|
||||
},
|
||||
"com.apple.developer.applesignin": {
|
||||
name: "Sign in with Apple",
|
||||
description: "Allows sign in with Apple.",
|
||||
icon: "apple"
|
||||
"name": "Sign in with Apple",
|
||||
"description": "Allows sign in with Apple.",
|
||||
"icon": "apple"
|
||||
},
|
||||
"com.apple.developer.siri": {
|
||||
name: "Siri",
|
||||
description: "Allows app to handle Siri requests.",
|
||||
icon: "mic-fill"
|
||||
"name": "Siri",
|
||||
"description": "Allows app to handle Siri requests.",
|
||||
"icon": "mic-fill"
|
||||
},
|
||||
"com.apple.developer.networking.wifi-info": {
|
||||
name: "Wi-Fi Information Access",
|
||||
description: "Allows app to access information about the connected Wi-Fi network.",
|
||||
icon: "wifi"
|
||||
"name": "Wi-Fi Information Access",
|
||||
"description": "Allows app to access information about the connected Wi-Fi network.",
|
||||
"icon": "wifi"
|
||||
}
|
||||
};
|
||||
|
||||
export const privacy = {
|
||||
"AppleMusic": {
|
||||
icon: "music-note-beamed"
|
||||
"icon": "music-note-beamed"
|
||||
},
|
||||
"BluetoothAlways": {
|
||||
name: "Bluetooth",
|
||||
icon: "bluetooth"
|
||||
"name": "Bluetooth",
|
||||
"icon": "bluetooth"
|
||||
},
|
||||
"BluetoothPeripheral": {
|
||||
name: "Bluetooth (Peripherals)",
|
||||
icon: "bluetooth"
|
||||
"name": "Bluetooth (Peripherals)",
|
||||
"icon": "bluetooth"
|
||||
},
|
||||
"Contacts": {
|
||||
icon: "person-circle"
|
||||
"icon": "person-circle"
|
||||
},
|
||||
"Camera": {
|
||||
icon: "camera-fill"
|
||||
"icon": "camera-fill"
|
||||
},
|
||||
"FaceID": {
|
||||
name: "Face ID",
|
||||
icon: "person-bounding-box"
|
||||
"name": "Face ID",
|
||||
"icon": "person-bounding-box"
|
||||
},
|
||||
"LocalNetwork": {
|
||||
icon: "globe2"
|
||||
"icon": "globe2"
|
||||
},
|
||||
"LocationWhenInUse": {
|
||||
name: "Location (When Using)",
|
||||
icon: "cursor-fill"
|
||||
"name": "Location (When Using)",
|
||||
"icon": "cursor-fill"
|
||||
},
|
||||
"Microphone": {
|
||||
icon: "mic-fill"
|
||||
"icon": "mic-fill"
|
||||
},
|
||||
"PhotoLibrary": {
|
||||
name: "Photos",
|
||||
icon: "images"
|
||||
"name": "Photos",
|
||||
"icon": "images"
|
||||
},
|
||||
"PhotoLibraryAdd": {
|
||||
name: "Photos (Add)",
|
||||
icon: "image"
|
||||
"name": "Photos (Add)",
|
||||
"icon": "image"
|
||||
},
|
||||
"UserTracking": {
|
||||
icon: "person-vcard-fill"
|
||||
},
|
||||
"icon": "person-vcard-fill"
|
||||
}
|
||||
};
|
||||
|
||||
export const legacyPermissions = {
|
||||
"background-audio": {
|
||||
icon: "volume-up-fill"
|
||||
"icon": "volume-up-fill"
|
||||
},
|
||||
"background-fetch": {
|
||||
icon: "arrow-repeat"
|
||||
"icon": "arrow-repeat"
|
||||
},
|
||||
"photos": {
|
||||
icon: "images"
|
||||
"icon": "images"
|
||||
}
|
||||
};
|
||||
4
index.js
4
index.js
@@ -8,7 +8,9 @@
|
||||
|
||||
import { urlSearchParams, sourceURL } from "./common/modules/constants.js";
|
||||
import { isValidHTTPURL, open } from "./common/modules/utilities.js";
|
||||
const { default: sources } = await import("./common/assets/sources.json", { assert: { type: "json" } });
|
||||
// import sources from "./common/assets/sources.json" assert { type: "json" }; // Doesn't work in Safari
|
||||
// const { default: sources } = await import("./common/assets/sources.json", {assert: { type: "json" } }); // Broken on Safari 17.2
|
||||
import { sources } from "./common/modules/constants.js";
|
||||
|
||||
(function main() {
|
||||
for (const url of sources)
|
||||
|
||||
@@ -10,12 +10,13 @@ import { urlSearchParams, sourceURL } from "../../common/modules/constants.js";
|
||||
import { formatString, insertSpaceInCamelString, insertSpaceInSnakeString, formatVersionDate, open } from "../../common/modules/utilities.js";
|
||||
import { main } from "../../common/modules/main.js";
|
||||
import { AppPermissionItem } from "../../common/components/AppPermissionItem.js";
|
||||
// import { privacy, entitlements, legacyPermissions } from "../../modules/constants.js";
|
||||
import { privacy, entitlements, legacyPermissions } from "../../common/modules/constants.js";
|
||||
|
||||
// Dynamic imports (https://stackoverflow.com/a/76845572/19227228)
|
||||
const { default: privacy } = await import("../../common/assets/privacy.json", { assert: { type: "json" } })
|
||||
const { default: entitlements } = await import("../../common/assets/entitlements.json", { assert: { type: "json" } })
|
||||
const { default: legacyPermissions } = await import("../../common/assets/legacy-permissions.json", { assert: { type: "json" } })
|
||||
// Broken on Safari 17.2
|
||||
// const { default: privacy } = await import("../../common/assets/privacy.json", { assert: { type: "json" } })
|
||||
// const { default: entitlements } = await import("../../common/assets/entitlements.json", { assert: { type: "json" } })
|
||||
// const { default: legacyPermissions } = await import("../../common/assets/legacy-permissions.json", { assert: { type: "json" } })
|
||||
|
||||
const fallbackURL = `../?source=${sourceURL}`;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user