@use-voltra/expo-plugin 1.4.0 → 2.0.0-rc.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/README.md +9 -29
- package/build/cjs/constants.js +3 -43
- package/build/cjs/constants.js.map +1 -1
- package/build/cjs/index.js +23 -69
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/types.js +4 -0
- package/build/cjs/types.js.map +1 -1
- package/build/cjs/utils/localePick.js +48 -0
- package/build/cjs/utils/localePick.js.map +1 -0
- package/build/cjs/utils/prerender.js +15 -9
- package/build/cjs/utils/prerender.js.map +1 -1
- package/build/cjs/utils/widgetLabel.js +19 -0
- package/build/cjs/utils/widgetLabel.js.map +1 -0
- package/build/cjs/validation.js +75 -166
- package/build/cjs/validation.js.map +1 -1
- package/build/esm/constants.js +2 -42
- package/build/esm/constants.js.map +1 -1
- package/build/esm/index.js +8 -69
- package/build/esm/index.js.map +1 -1
- package/build/esm/types.js +4 -0
- package/build/esm/types.js.map +1 -1
- package/build/esm/utils/localePick.js +44 -0
- package/build/esm/utils/localePick.js.map +1 -0
- package/build/esm/utils/prerender.js +15 -9
- package/build/esm/utils/prerender.js.map +1 -1
- package/build/esm/utils/widgetLabel.js +15 -0
- package/build/esm/utils/widgetLabel.js.map +1 -0
- package/build/esm/validation.js +71 -163
- package/build/esm/validation.js.map +1 -1
- package/build/types/constants.d.ts +2 -26
- package/build/types/constants.d.ts.map +1 -1
- package/build/types/index.d.ts +10 -12
- package/build/types/index.d.ts.map +1 -1
- package/build/types/types.d.ts +9 -260
- package/build/types/types.d.ts.map +1 -1
- package/build/types/utils/localePick.d.ts +7 -0
- package/build/types/utils/localePick.d.ts.map +1 -0
- package/build/types/utils/prerender.d.ts +6 -3
- package/build/types/utils/prerender.d.ts.map +1 -1
- package/build/types/utils/widgetLabel.d.ts +8 -0
- package/build/types/utils/widgetLabel.d.ts.map +1 -0
- package/build/types/validation.d.ts +6 -14
- package/build/types/validation.d.ts.map +1 -1
- package/package.json +11 -11
- package/build/cjs/android/files/assets.js +0 -259
- package/build/cjs/android/files/assets.js.map +0 -1
- package/build/cjs/android/files/fonts.js +0 -69
- package/build/cjs/android/files/fonts.js.map +0 -1
- package/build/cjs/android/files/index.js +0 -81
- package/build/cjs/android/files/index.js.map +0 -1
- package/build/cjs/android/files/initialStates.js +0 -83
- package/build/cjs/android/files/initialStates.js.map +0 -1
- package/build/cjs/android/files/kotlin.js +0 -142
- package/build/cjs/android/files/kotlin.js.map +0 -1
- package/build/cjs/android/files/xml.js +0 -247
- package/build/cjs/android/files/xml.js.map +0 -1
- package/build/cjs/android/index.js +0 -33
- package/build/cjs/android/index.js.map +0 -1
- package/build/cjs/android/manifest.js +0 -92
- package/build/cjs/android/manifest.js.map +0 -1
- package/build/cjs/ios/eas.js +0 -28
- package/build/cjs/ios/eas.js.map +0 -1
- package/build/cjs/ios/entitlements.js +0 -46
- package/build/cjs/ios/entitlements.js.map +0 -1
- package/build/cjs/ios/index.js +0 -39
- package/build/cjs/ios/index.js.map +0 -1
- package/build/cjs/ios/infoPlist.js +0 -51
- package/build/cjs/ios/infoPlist.js.map +0 -1
- package/build/cjs/ios/pushNotifications.js +0 -22
- package/build/cjs/ios/pushNotifications.js.map +0 -1
- package/build/cjs/ios-widget/eas.js +0 -66
- package/build/cjs/ios-widget/eas.js.map +0 -1
- package/build/cjs/ios-widget/files/assets.js +0 -199
- package/build/cjs/ios-widget/files/assets.js.map +0 -1
- package/build/cjs/ios-widget/files/entitlements.js +0 -77
- package/build/cjs/ios-widget/files/entitlements.js.map +0 -1
- package/build/cjs/ios-widget/files/index.js +0 -92
- package/build/cjs/ios-widget/files/index.js.map +0 -1
- package/build/cjs/ios-widget/files/infoPlist.js +0 -91
- package/build/cjs/ios-widget/files/infoPlist.js.map +0 -1
- package/build/cjs/ios-widget/files/swift.js +0 -256
- package/build/cjs/ios-widget/files/swift.js.map +0 -1
- package/build/cjs/ios-widget/fonts.js +0 -151
- package/build/cjs/ios-widget/fonts.js.map +0 -1
- package/build/cjs/ios-widget/index.js +0 -46
- package/build/cjs/ios-widget/index.js.map +0 -1
- package/build/cjs/ios-widget/podfile.js +0 -43
- package/build/cjs/ios-widget/podfile.js.map +0 -1
- package/build/cjs/ios-widget/widgetPlist.js +0 -99
- package/build/cjs/ios-widget/widgetPlist.js.map +0 -1
- package/build/cjs/ios-widget/xcode/buildPhases.js +0 -245
- package/build/cjs/ios-widget/xcode/buildPhases.js.map +0 -1
- package/build/cjs/ios-widget/xcode/configurationList.js +0 -91
- package/build/cjs/ios-widget/xcode/configurationList.js.map +0 -1
- package/build/cjs/ios-widget/xcode/groups.js +0 -65
- package/build/cjs/ios-widget/xcode/groups.js.map +0 -1
- package/build/cjs/ios-widget/xcode/index.js +0 -155
- package/build/cjs/ios-widget/xcode/index.js.map +0 -1
- package/build/cjs/ios-widget/xcode/mainAppSettings.js +0 -71
- package/build/cjs/ios-widget/xcode/mainAppSettings.js.map +0 -1
- package/build/cjs/ios-widget/xcode/productFile.js +0 -74
- package/build/cjs/ios-widget/xcode/productFile.js.map +0 -1
- package/build/cjs/ios-widget/xcode/target.js +0 -113
- package/build/cjs/ios-widget/xcode/target.js.map +0 -1
- package/build/cjs/utils/fileDiscovery.js +0 -107
- package/build/cjs/utils/fileDiscovery.js.map +0 -1
- package/build/cjs/utils/urlScheme.js +0 -40
- package/build/cjs/utils/urlScheme.js.map +0 -1
- package/build/esm/android/files/assets.js +0 -223
- package/build/esm/android/files/assets.js.map +0 -1
- package/build/esm/android/files/fonts.js +0 -33
- package/build/esm/android/files/fonts.js.map +0 -1
- package/build/esm/android/files/index.js +0 -77
- package/build/esm/android/files/index.js.map +0 -1
- package/build/esm/android/files/initialStates.js +0 -44
- package/build/esm/android/files/initialStates.js.map +0 -1
- package/build/esm/android/files/kotlin.js +0 -103
- package/build/esm/android/files/kotlin.js.map +0 -1
- package/build/esm/android/files/xml.js +0 -206
- package/build/esm/android/files/xml.js.map +0 -1
- package/build/esm/android/index.js +0 -29
- package/build/esm/android/index.js.map +0 -1
- package/build/esm/android/manifest.js +0 -88
- package/build/esm/android/manifest.js.map +0 -1
- package/build/esm/ios/eas.js +0 -24
- package/build/esm/ios/eas.js.map +0 -1
- package/build/esm/ios/entitlements.js +0 -42
- package/build/esm/ios/entitlements.js.map +0 -1
- package/build/esm/ios/index.js +0 -34
- package/build/esm/ios/index.js.map +0 -1
- package/build/esm/ios/infoPlist.js +0 -47
- package/build/esm/ios/infoPlist.js.map +0 -1
- package/build/esm/ios/pushNotifications.js +0 -18
- package/build/esm/ios/pushNotifications.js.map +0 -1
- package/build/esm/ios-widget/eas.js +0 -62
- package/build/esm/ios-widget/eas.js.map +0 -1
- package/build/esm/ios-widget/files/assets.js +0 -163
- package/build/esm/ios-widget/files/assets.js.map +0 -1
- package/build/esm/ios-widget/files/entitlements.js +0 -37
- package/build/esm/ios-widget/files/entitlements.js.map +0 -1
- package/build/esm/ios-widget/files/index.js +0 -55
- package/build/esm/ios-widget/files/index.js.map +0 -1
- package/build/esm/ios-widget/files/infoPlist.js +0 -55
- package/build/esm/ios-widget/files/infoPlist.js.map +0 -1
- package/build/esm/ios-widget/files/swift.js +0 -217
- package/build/esm/ios-widget/files/swift.js.map +0 -1
- package/build/esm/ios-widget/fonts.js +0 -111
- package/build/esm/ios-widget/fonts.js.map +0 -1
- package/build/esm/ios-widget/index.js +0 -42
- package/build/esm/ios-widget/index.js.map +0 -1
- package/build/esm/ios-widget/podfile.js +0 -39
- package/build/esm/ios-widget/podfile.js.map +0 -1
- package/build/esm/ios-widget/widgetPlist.js +0 -92
- package/build/esm/ios-widget/widgetPlist.js.map +0 -1
- package/build/esm/ios-widget/xcode/buildPhases.js +0 -208
- package/build/esm/ios-widget/xcode/buildPhases.js.map +0 -1
- package/build/esm/ios-widget/xcode/configurationList.js +0 -87
- package/build/esm/ios-widget/xcode/configurationList.js.map +0 -1
- package/build/esm/ios-widget/xcode/groups.js +0 -61
- package/build/esm/ios-widget/xcode/groups.js.map +0 -1
- package/build/esm/ios-widget/xcode/index.js +0 -118
- package/build/esm/ios-widget/xcode/index.js.map +0 -1
- package/build/esm/ios-widget/xcode/mainAppSettings.js +0 -68
- package/build/esm/ios-widget/xcode/mainAppSettings.js.map +0 -1
- package/build/esm/ios-widget/xcode/productFile.js +0 -70
- package/build/esm/ios-widget/xcode/productFile.js.map +0 -1
- package/build/esm/ios-widget/xcode/target.js +0 -108
- package/build/esm/ios-widget/xcode/target.js.map +0 -1
- package/build/esm/utils/fileDiscovery.js +0 -71
- package/build/esm/utils/fileDiscovery.js.map +0 -1
- package/build/esm/utils/urlScheme.js +0 -37
- package/build/esm/utils/urlScheme.js.map +0 -1
- package/build/types/android/files/assets.d.ts +0 -26
- package/build/types/android/files/assets.d.ts.map +0 -1
- package/build/types/android/files/fonts.d.ts +0 -19
- package/build/types/android/files/fonts.d.ts.map +0 -1
- package/build/types/android/files/index.d.ts +0 -21
- package/build/types/android/files/index.d.ts.map +0 -1
- package/build/types/android/files/initialStates.d.ts +0 -14
- package/build/types/android/files/initialStates.d.ts.map +0 -1
- package/build/types/android/files/kotlin.d.ts +0 -11
- package/build/types/android/files/kotlin.d.ts.map +0 -1
- package/build/types/android/files/xml.d.ts +0 -25
- package/build/types/android/files/xml.d.ts.map +0 -1
- package/build/types/android/index.d.ts +0 -12
- package/build/types/android/index.d.ts.map +0 -1
- package/build/types/android/manifest.d.ts +0 -16
- package/build/types/android/manifest.d.ts.map +0 -1
- package/build/types/ios/eas.d.ts +0 -12
- package/build/types/ios/eas.d.ts.map +0 -1
- package/build/types/ios/entitlements.d.ts +0 -14
- package/build/types/ios/entitlements.d.ts.map +0 -1
- package/build/types/ios/index.d.ts +0 -19
- package/build/types/ios/index.d.ts.map +0 -1
- package/build/types/ios/infoPlist.d.ts +0 -21
- package/build/types/ios/infoPlist.d.ts.map +0 -1
- package/build/types/ios/pushNotifications.d.ts +0 -10
- package/build/types/ios/pushNotifications.d.ts.map +0 -1
- package/build/types/ios-widget/eas.d.ts +0 -15
- package/build/types/ios-widget/eas.d.ts.map +0 -1
- package/build/types/ios-widget/files/assets.d.ts +0 -13
- package/build/types/ios-widget/files/assets.d.ts.map +0 -1
- package/build/types/ios-widget/files/entitlements.d.ts +0 -17
- package/build/types/ios-widget/files/entitlements.d.ts.map +0 -1
- package/build/types/ios-widget/files/index.d.ts +0 -24
- package/build/types/ios-widget/files/index.d.ts.map +0 -1
- package/build/types/ios-widget/files/infoPlist.d.ts +0 -10
- package/build/types/ios-widget/files/infoPlist.d.ts.map +0 -1
- package/build/types/ios-widget/files/swift.d.ts +0 -15
- package/build/types/ios-widget/files/swift.d.ts.map +0 -1
- package/build/types/ios-widget/fonts.d.ts +0 -22
- package/build/types/ios-widget/fonts.d.ts.map +0 -1
- package/build/types/ios-widget/index.d.ts +0 -31
- package/build/types/ios-widget/index.d.ts.map +0 -1
- package/build/types/ios-widget/podfile.d.ts +0 -9
- package/build/types/ios-widget/podfile.d.ts.map +0 -1
- package/build/types/ios-widget/widgetPlist.d.ts +0 -20
- package/build/types/ios-widget/widgetPlist.d.ts.map +0 -1
- package/build/types/ios-widget/xcode/buildPhases.d.ts +0 -25
- package/build/types/ios-widget/xcode/buildPhases.d.ts.map +0 -1
- package/build/types/ios-widget/xcode/configurationList.d.ts +0 -20
- package/build/types/ios-widget/xcode/configurationList.d.ts.map +0 -1
- package/build/types/ios-widget/xcode/groups.d.ts +0 -15
- package/build/types/ios-widget/xcode/groups.d.ts.map +0 -1
- package/build/types/ios-widget/xcode/index.d.ts +0 -20
- package/build/types/ios-widget/xcode/index.d.ts.map +0 -1
- package/build/types/ios-widget/xcode/mainAppSettings.d.ts +0 -15
- package/build/types/ios-widget/xcode/mainAppSettings.d.ts.map +0 -1
- package/build/types/ios-widget/xcode/productFile.d.ts +0 -14
- package/build/types/ios-widget/xcode/productFile.d.ts.map +0 -1
- package/build/types/ios-widget/xcode/target.d.ts +0 -42
- package/build/types/ios-widget/xcode/target.d.ts.map +0 -1
- package/build/types/utils/fileDiscovery.d.ts +0 -13
- package/build/types/utils/fileDiscovery.d.ts.map +0 -1
- package/build/types/utils/urlScheme.d.ts +0 -10
- package/build/types/utils/urlScheme.d.ts.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kotlin.js","sourceRoot":"","sources":["../../../../src/android/files/kotlin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,0DAoBC;AAvCD,oDAA2B;AAC3B,uCAAwB;AACxB,2CAA4B;AAU5B,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E;;GAEG;AACI,KAAK,UAAU,uBAAuB,CAAC,KAA+B;IAC3E,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;IAE3D,wEAAwE;IACxE,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAA;IAErG,qCAAqC;IACrC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC9C,CAAC;IAED,4CAA4C;IAC5C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,gBAAgB,MAAM,CAAC,EAAE,UAAU,CAAA;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,SAAS,KAAK,CAAC,CAAA;QACxD,MAAM,OAAO,GAAG,2BAA2B,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;QAEhE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IAC7C,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;;GAGG;AACH,SAAS,2BAA2B,CAAC,MAA2B,EAAE,WAAmB;IACnF,MAAM,SAAS,GAAG,gBAAgB,MAAM,CAAC,EAAE,UAAU,CAAA;IAErD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,MAAM,cAAc,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,KAAK,IAAI,CAAA;QAC3D,wEAAwE;QACxE,OAAO,IAAA,gBAAM,EAAA;gBACD,WAAW;;;;;;;;8CAQmB,MAAM,CAAC,WAAW;sBAC1C,MAAM,CAAC,EAAE;0BACL,MAAM,CAAC,YAAY,CAAC,GAAG,WAAW,MAAM,CAAC,YAAY,CAAC,eAAe,IAAI,EAAE;2BAC1E,cAAc;;cAE3B,SAAS;6CACsB,MAAM,CAAC,EAAE;;;;;;;;gCAQtB,MAAM,CAAC,EAAE;iCACR,MAAM,CAAC,YAAY,CAAC,GAAG;sCAClB,MAAM,CAAC,YAAY,CAAC,eAAe,IAAI,EAAE;qCAC1C,cAAc;;;;;;;;;;+EAU4B,MAAM,CAAC,EAAE;;;;;;;;;;;KAWnF,CAAA;IACH,CAAC;IAED,yCAAyC;IACzC,OAAO,IAAA,gBAAM,EAAA;cACD,WAAW;;;;;4CAKmB,MAAM,CAAC,WAAW;oBAC1C,MAAM,CAAC,EAAE;;YAEjB,SAAS;2CACsB,MAAM,CAAC,EAAE;;GAEjD,CAAA;AACH,CAAC"}
|
|
@@ -1,247 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.generateWidgetInfoFiles = generateWidgetInfoFiles;
|
|
40
|
-
exports.generateWidgetPlaceholderLayouts = generateWidgetPlaceholderLayouts;
|
|
41
|
-
exports.generateWidgetPreviewLayouts = generateWidgetPreviewLayouts;
|
|
42
|
-
const dedent_1 = __importDefault(require("dedent"));
|
|
43
|
-
const fs = __importStar(require("fs"));
|
|
44
|
-
const path = __importStar(require("path"));
|
|
45
|
-
const logger_1 = require("../../utils/logger");
|
|
46
|
-
// ============================================================================
|
|
47
|
-
// Main Functions
|
|
48
|
-
// ============================================================================
|
|
49
|
-
/**
|
|
50
|
-
* Generates widget info XML files for all widgets
|
|
51
|
-
*/
|
|
52
|
-
async function generateWidgetInfoFiles(props) {
|
|
53
|
-
const { platformProjectRoot, widgets } = props;
|
|
54
|
-
const xmlPath = path.join(platformProjectRoot, 'app', 'src', 'main', 'res', 'xml');
|
|
55
|
-
const valuesPath = path.join(platformProjectRoot, 'app', 'src', 'main', 'res', 'values');
|
|
56
|
-
// Ensure directories exist
|
|
57
|
-
if (!fs.existsSync(xmlPath)) {
|
|
58
|
-
fs.mkdirSync(xmlPath, { recursive: true });
|
|
59
|
-
}
|
|
60
|
-
if (!fs.existsSync(valuesPath)) {
|
|
61
|
-
fs.mkdirSync(valuesPath, { recursive: true });
|
|
62
|
-
}
|
|
63
|
-
// Generate string resources for all widgets
|
|
64
|
-
const stringsPath = path.join(valuesPath, 'voltra_widgets.xml');
|
|
65
|
-
const stringsContent = generateStringResourcesXml(widgets);
|
|
66
|
-
fs.writeFileSync(stringsPath, stringsContent, 'utf8');
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Generates placeholder layout XML
|
|
70
|
-
*/
|
|
71
|
-
async function generateWidgetPlaceholderLayouts(props) {
|
|
72
|
-
const layoutPath = path.join(props.platformProjectRoot, 'app', 'src', 'main', 'res', 'layout');
|
|
73
|
-
if (!fs.existsSync(layoutPath)) {
|
|
74
|
-
fs.mkdirSync(layoutPath, { recursive: true });
|
|
75
|
-
}
|
|
76
|
-
const placeholderLayoutPath = path.join(layoutPath, 'voltra_widget_placeholder.xml');
|
|
77
|
-
const placeholderLayoutContent = generatePlaceholderLayoutXml();
|
|
78
|
-
fs.writeFileSync(placeholderLayoutPath, placeholderLayoutContent, 'utf8');
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Generates preview layouts for widgets
|
|
82
|
-
*/
|
|
83
|
-
async function generateWidgetPreviewLayouts(props) {
|
|
84
|
-
const { platformProjectRoot, projectRoot, widgets, previewImageMap } = props;
|
|
85
|
-
const layoutPath = path.join(platformProjectRoot, 'app', 'src', 'main', 'res', 'layout');
|
|
86
|
-
const xmlPath = path.join(platformProjectRoot, 'app', 'src', 'main', 'res', 'xml');
|
|
87
|
-
if (!fs.existsSync(layoutPath)) {
|
|
88
|
-
fs.mkdirSync(layoutPath, { recursive: true });
|
|
89
|
-
}
|
|
90
|
-
// Generate preview layouts and get the map
|
|
91
|
-
const previewLayoutMap = await generatePreviewLayouts(widgets, projectRoot, layoutPath, previewImageMap);
|
|
92
|
-
// Write widget info XML for all widgets, including preview references where available
|
|
93
|
-
for (const widget of widgets) {
|
|
94
|
-
const widgetInfoPath = path.join(xmlPath, `voltra_widget_${widget.id}_info.xml`);
|
|
95
|
-
const previewImageResourceName = previewImageMap.get(widget.id);
|
|
96
|
-
const previewLayoutResourceName = previewLayoutMap.get(widget.id);
|
|
97
|
-
const widgetInfoContent = generateWidgetInfoXml(widget, previewImageResourceName, previewLayoutResourceName);
|
|
98
|
-
fs.writeFileSync(widgetInfoPath, widgetInfoContent, 'utf8');
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
// ============================================================================
|
|
102
|
-
// Widget Info XML
|
|
103
|
-
// ============================================================================
|
|
104
|
-
/**
|
|
105
|
-
* Generates widget provider info XML for a single widget
|
|
106
|
-
*/
|
|
107
|
-
function generateWidgetInfoXml(widget, previewImageResourceName, previewLayoutResourceName) {
|
|
108
|
-
const { targetCellWidth, targetCellHeight } = widget;
|
|
109
|
-
const resizeMode = widget.resizeMode || 'horizontal|vertical';
|
|
110
|
-
const widgetCategory = widget.widgetCategory || 'home_screen';
|
|
111
|
-
let minWidth = widget.minWidth;
|
|
112
|
-
if (minWidth === undefined && widget.minCellWidth !== undefined) {
|
|
113
|
-
minWidth = widget.minCellWidth * 70 - 30;
|
|
114
|
-
}
|
|
115
|
-
let minHeight = widget.minHeight;
|
|
116
|
-
if (minHeight === undefined && widget.minCellHeight !== undefined) {
|
|
117
|
-
minHeight = widget.minCellHeight * 70 - 30;
|
|
118
|
-
}
|
|
119
|
-
const minWidthAttr = minWidth !== undefined ? `\n android:minWidth="${minWidth}dp"` : '';
|
|
120
|
-
const minHeightAttr = minHeight !== undefined ? `\n android:minHeight="${minHeight}dp"` : '';
|
|
121
|
-
const previewImageAttr = previewImageResourceName
|
|
122
|
-
? `\n android:previewImage="@drawable/${previewImageResourceName}"`
|
|
123
|
-
: '';
|
|
124
|
-
const previewLayoutAttr = previewLayoutResourceName
|
|
125
|
-
? `\n android:previewLayout="@layout/${previewLayoutResourceName}"`
|
|
126
|
-
: '';
|
|
127
|
-
return (0, dedent_1.default) `
|
|
128
|
-
<?xml version="1.0" encoding="utf-8"?>
|
|
129
|
-
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"${minWidthAttr}${minHeightAttr}
|
|
130
|
-
android:targetCellWidth="${targetCellWidth}"
|
|
131
|
-
android:targetCellHeight="${targetCellHeight}"
|
|
132
|
-
android:updatePeriodMillis="0"
|
|
133
|
-
android:initialLayout="@layout/voltra_widget_placeholder"
|
|
134
|
-
android:resizeMode="${resizeMode}"
|
|
135
|
-
android:widgetCategory="${widgetCategory}"
|
|
136
|
-
android:description="@string/voltra_widget_${widget.id}_description"${previewImageAttr}${previewLayoutAttr}>
|
|
137
|
-
</appwidget-provider>
|
|
138
|
-
`;
|
|
139
|
-
}
|
|
140
|
-
// ============================================================================
|
|
141
|
-
// String Resources XML
|
|
142
|
-
// ============================================================================
|
|
143
|
-
/**
|
|
144
|
-
* Generates string resources for widget display names and descriptions
|
|
145
|
-
*/
|
|
146
|
-
function generateStringResourcesXml(widgets) {
|
|
147
|
-
const stringEntries = widgets
|
|
148
|
-
.map((widget) => `<string name="voltra_widget_${widget.id}_label">${widget.displayName}</string>\n <string name="voltra_widget_${widget.id}_description">${widget.description}</string>`)
|
|
149
|
-
.join('\n ');
|
|
150
|
-
return (0, dedent_1.default) `
|
|
151
|
-
<?xml version="1.0" encoding="utf-8"?>
|
|
152
|
-
<resources>
|
|
153
|
-
<!-- Voltra Widget Labels and Descriptions (Auto-generated) -->
|
|
154
|
-
${stringEntries}
|
|
155
|
-
</resources>
|
|
156
|
-
`;
|
|
157
|
-
}
|
|
158
|
-
// ============================================================================
|
|
159
|
-
// Placeholder Layout XML
|
|
160
|
-
// ============================================================================
|
|
161
|
-
/**
|
|
162
|
-
* Generates placeholder layout XML for widgets
|
|
163
|
-
* This will be replaced by Glance at runtime
|
|
164
|
-
*/
|
|
165
|
-
function generatePlaceholderLayoutXml() {
|
|
166
|
-
return (0, dedent_1.default) `
|
|
167
|
-
<?xml version="1.0" encoding="utf-8"?>
|
|
168
|
-
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
169
|
-
android:layout_width="match_parent"
|
|
170
|
-
android:layout_height="match_parent"
|
|
171
|
-
android:background="?android:attr/colorBackground">
|
|
172
|
-
<TextView
|
|
173
|
-
android:layout_width="wrap_content"
|
|
174
|
-
android:layout_height="wrap_content"
|
|
175
|
-
android:layout_gravity="center"
|
|
176
|
-
android:text="Loading..."
|
|
177
|
-
android:textColor="?android:attr/textColorPrimary" />
|
|
178
|
-
</FrameLayout>
|
|
179
|
-
`;
|
|
180
|
-
}
|
|
181
|
-
// ============================================================================
|
|
182
|
-
// Preview Layout
|
|
183
|
-
// ============================================================================
|
|
184
|
-
/**
|
|
185
|
-
* Generates an auto-layout XML for image-based preview.
|
|
186
|
-
* This is used when previewImage is provided but no custom previewLayout.
|
|
187
|
-
*/
|
|
188
|
-
function generateAutoImagePreviewLayout(widgetId, drawableResourceName) {
|
|
189
|
-
return (0, dedent_1.default) `
|
|
190
|
-
<?xml version="1.0" encoding="utf-8"?>
|
|
191
|
-
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
192
|
-
android:layout_width="match_parent"
|
|
193
|
-
android:layout_height="match_parent">
|
|
194
|
-
<ImageView
|
|
195
|
-
android:layout_width="match_parent"
|
|
196
|
-
android:layout_height="match_parent"
|
|
197
|
-
android:src="@drawable/${drawableResourceName}"
|
|
198
|
-
android:scaleType="centerCrop"
|
|
199
|
-
android:contentDescription="@string/voltra_widget_${widgetId}_description" />
|
|
200
|
-
</FrameLayout>
|
|
201
|
-
`;
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Generates preview layout XML files for all widgets.
|
|
205
|
-
* Returns a map of widgetId to layout resource name.
|
|
206
|
-
*
|
|
207
|
-
* Strategy:
|
|
208
|
-
* - If previewLayout is provided: copy user's custom XML
|
|
209
|
-
* - Else if previewImage is provided: generate auto-layout with ImageView
|
|
210
|
-
* - Otherwise: no preview layout generated
|
|
211
|
-
*/
|
|
212
|
-
async function generatePreviewLayouts(widgets, projectRoot, layoutPath, previewImageMap) {
|
|
213
|
-
const previewLayoutMap = new Map();
|
|
214
|
-
// Ensure layout directory exists
|
|
215
|
-
if (!fs.existsSync(layoutPath)) {
|
|
216
|
-
fs.mkdirSync(layoutPath, { recursive: true });
|
|
217
|
-
}
|
|
218
|
-
for (const widget of widgets) {
|
|
219
|
-
let layoutContent = null;
|
|
220
|
-
const layoutResourceName = `voltra_widget_${widget.id}_preview`;
|
|
221
|
-
const layoutFilePath = path.join(layoutPath, `${layoutResourceName}.xml`);
|
|
222
|
-
// Strategy 1: User provided custom preview layout
|
|
223
|
-
if (widget.previewLayout) {
|
|
224
|
-
const sourcePath = path.join(projectRoot, widget.previewLayout);
|
|
225
|
-
if (!fs.existsSync(sourcePath)) {
|
|
226
|
-
logger_1.logger.warn(`Preview layout not found for widget '${widget.id}' at ${widget.previewLayout}`);
|
|
227
|
-
continue;
|
|
228
|
-
}
|
|
229
|
-
// Copy user's custom XML
|
|
230
|
-
layoutContent = fs.readFileSync(sourcePath, 'utf8');
|
|
231
|
-
logger_1.logger.info(`Using custom preview layout for widget '${widget.id}'`);
|
|
232
|
-
}
|
|
233
|
-
// Strategy 2: Auto-generate layout from preview image
|
|
234
|
-
else if (widget.previewImage && previewImageMap.has(widget.id)) {
|
|
235
|
-
const drawableResourceName = previewImageMap.get(widget.id);
|
|
236
|
-
layoutContent = generateAutoImagePreviewLayout(widget.id, drawableResourceName);
|
|
237
|
-
logger_1.logger.info(`Generated auto preview layout for widget '${widget.id}' from preview image`);
|
|
238
|
-
}
|
|
239
|
-
// Write layout file if we have content
|
|
240
|
-
if (layoutContent) {
|
|
241
|
-
fs.writeFileSync(layoutFilePath, layoutContent, 'utf8');
|
|
242
|
-
previewLayoutMap.set(widget.id, layoutResourceName);
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
return previewLayoutMap;
|
|
246
|
-
}
|
|
247
|
-
//# sourceMappingURL=xml.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"xml.js","sourceRoot":"","sources":["../../../../src/android/files/xml.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.withAndroid = void 0;
|
|
4
|
-
const config_plugins_1 = require("@expo/config-plugins");
|
|
5
|
-
const validation_1 = require("../validation");
|
|
6
|
-
const files_1 = require("./files");
|
|
7
|
-
const manifest_1 = require("./manifest");
|
|
8
|
-
/**
|
|
9
|
-
* Main Android configuration plugin.
|
|
10
|
-
*
|
|
11
|
-
* This orchestrates all Android-related configuration in the correct order:
|
|
12
|
-
* 1. Validate widget configurations with file existence checks
|
|
13
|
-
* 2. Generate widget files (Kotlin receivers, XML metadata, resources)
|
|
14
|
-
* 3. Configure AndroidManifest (receiver entries)
|
|
15
|
-
*/
|
|
16
|
-
const withAndroid = (config, props) => {
|
|
17
|
-
const { enableNotifications, widgets, userImagesPath, fonts } = props;
|
|
18
|
-
if (!config.android?.package) {
|
|
19
|
-
throw new Error('Voltra config plugin requires expo.android.package to be set in app.json/app.config.* to configure Android widgets.');
|
|
20
|
-
}
|
|
21
|
-
// Get project root from modRequest if available, otherwise validation will skip file checks
|
|
22
|
-
const projectRoot = config.modRequest?.projectRoot;
|
|
23
|
-
// Validate Android widgets with file existence checks
|
|
24
|
-
widgets.forEach((widget) => (0, validation_1.validateAndroidWidgetConfig)(widget, projectRoot));
|
|
25
|
-
return (0, config_plugins_1.withPlugins)(config, [
|
|
26
|
-
// 1. Generate widget files (must run first so files exist)
|
|
27
|
-
[files_1.generateAndroidWidgetFiles, { widgets, userImagesPath, fonts }],
|
|
28
|
-
// 2. Configure AndroidManifest (must run after files are generated)
|
|
29
|
-
[manifest_1.configureAndroidManifest, { enableNotifications, widgets }],
|
|
30
|
-
]);
|
|
31
|
-
};
|
|
32
|
-
exports.withAndroid = withAndroid;
|
|
33
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/android/index.ts"],"names":[],"mappings":";;;AAAA,yDAAgE;AAGhE,8CAA2D;AAC3D,mCAAoD;AACpD,yCAAqD;AAErD;;;;;;;GAOG;AACI,MAAM,WAAW,GAAqC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;IAC7E,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IAErE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,qHAAqH,CACtH,CAAA;IACH,CAAC;IAED,4FAA4F;IAC5F,MAAM,WAAW,GAAI,MAAc,CAAC,UAAU,EAAE,WAAW,CAAA;IAE3D,sDAAsD;IACtD,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,wCAA2B,EAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAA;IAE7E,OAAO,IAAA,4BAAW,EAAC,MAAM,EAAE;QACzB,2DAA2D;QAC3D,CAAC,kCAA0B,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;QAEhE,oEAAoE;QACpE,CAAC,mCAAwB,EAAE,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC;KAC7D,CAAC,CAAA;AACJ,CAAC,CAAA;AAtBY,QAAA,WAAW,eAsBvB"}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.configureAndroidManifest = void 0;
|
|
4
|
-
const config_plugins_1 = require("@expo/config-plugins");
|
|
5
|
-
const config_plugins_2 = require("expo/config-plugins");
|
|
6
|
-
/**
|
|
7
|
-
* Plugin step that adds widget receiver entries to AndroidManifest.xml
|
|
8
|
-
*
|
|
9
|
-
* This adds a <receiver> entry for each widget with:
|
|
10
|
-
* - The generated receiver class name
|
|
11
|
-
* - APPWIDGET_UPDATE intent filter
|
|
12
|
-
* - Widget provider metadata reference
|
|
13
|
-
*/
|
|
14
|
-
const configureAndroidManifest = (config, props) => {
|
|
15
|
-
const { enableNotifications, widgets } = props;
|
|
16
|
-
return (0, config_plugins_1.withAndroidManifest)(config, (config) => {
|
|
17
|
-
const mainApplication = config_plugins_2.AndroidConfig.Manifest.getMainApplicationOrThrow(config.modResults);
|
|
18
|
-
const usesPermissions = (config.modResults.manifest['uses-permission'] || []);
|
|
19
|
-
const ensurePermission = (permissionName) => {
|
|
20
|
-
const exists = usesPermissions.some((permission) => permission.$?.['android:name'] === permissionName);
|
|
21
|
-
if (!exists) {
|
|
22
|
-
usesPermissions.push({
|
|
23
|
-
$: {
|
|
24
|
-
'android:name': permissionName,
|
|
25
|
-
},
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
if (enableNotifications) {
|
|
30
|
-
ensurePermission('android.permission.POST_NOTIFICATIONS');
|
|
31
|
-
ensurePermission('android.permission.POST_PROMOTED_NOTIFICATIONS');
|
|
32
|
-
}
|
|
33
|
-
config.modResults.manifest['uses-permission'] = usesPermissions;
|
|
34
|
-
const existingReceivers = (mainApplication.receiver || []);
|
|
35
|
-
const ongoingNotificationReceiverName = 'voltra.VoltraOngoingNotificationDismissedReceiver';
|
|
36
|
-
if (enableNotifications) {
|
|
37
|
-
const hasOngoingNotificationReceiver = existingReceivers.some((receiver) => receiver.$?.['android:name'] === ongoingNotificationReceiverName);
|
|
38
|
-
if (!hasOngoingNotificationReceiver) {
|
|
39
|
-
existingReceivers.push({
|
|
40
|
-
$: {
|
|
41
|
-
'android:name': ongoingNotificationReceiverName,
|
|
42
|
-
'android:exported': 'false',
|
|
43
|
-
},
|
|
44
|
-
});
|
|
45
|
-
mainApplication.receiver = existingReceivers;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
// Add a receiver for each widget
|
|
49
|
-
for (const widget of widgets) {
|
|
50
|
-
const receiverClassName = `.widget.VoltraWidget_${widget.id}Receiver`;
|
|
51
|
-
// Check if receiver already exists
|
|
52
|
-
const alreadyExists = existingReceivers.some((receiver) => receiver.$?.['android:name'] === receiverClassName);
|
|
53
|
-
if (!alreadyExists) {
|
|
54
|
-
// Create the receiver entry
|
|
55
|
-
const receiver = {
|
|
56
|
-
$: {
|
|
57
|
-
'android:name': receiverClassName,
|
|
58
|
-
'android:exported': 'true',
|
|
59
|
-
'android:label': `@string/voltra_widget_${widget.id}_label`,
|
|
60
|
-
},
|
|
61
|
-
'intent-filter': [
|
|
62
|
-
{
|
|
63
|
-
action: [
|
|
64
|
-
{
|
|
65
|
-
$: {
|
|
66
|
-
'android:name': 'android.appwidget.action.APPWIDGET_UPDATE',
|
|
67
|
-
},
|
|
68
|
-
},
|
|
69
|
-
],
|
|
70
|
-
},
|
|
71
|
-
],
|
|
72
|
-
'meta-data': [
|
|
73
|
-
{
|
|
74
|
-
$: {
|
|
75
|
-
'android:name': 'android.appwidget.provider',
|
|
76
|
-
'android:resource': `@xml/voltra_widget_${widget.id}_info`,
|
|
77
|
-
},
|
|
78
|
-
},
|
|
79
|
-
],
|
|
80
|
-
};
|
|
81
|
-
// Add the receiver to the application
|
|
82
|
-
if (!mainApplication.receiver) {
|
|
83
|
-
mainApplication.receiver = [];
|
|
84
|
-
}
|
|
85
|
-
mainApplication.receiver.push(receiver);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return config;
|
|
89
|
-
});
|
|
90
|
-
};
|
|
91
|
-
exports.configureAndroidManifest = configureAndroidManifest;
|
|
92
|
-
//# sourceMappingURL=manifest.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/android/manifest.ts"],"names":[],"mappings":"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"}
|
package/build/cjs/ios/eas.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.configureEas = void 0;
|
|
4
|
-
const entitlements_1 = require("../utils/entitlements");
|
|
5
|
-
/**
|
|
6
|
-
* Configures main app for EAS builds.
|
|
7
|
-
*
|
|
8
|
-
* This adds the app group entitlement to the main app's entitlements
|
|
9
|
-
* so that EAS can properly configure provisioning profiles.
|
|
10
|
-
*/
|
|
11
|
-
const configureEas = (config, props = {}) => {
|
|
12
|
-
if (!props.groupIdentifier) {
|
|
13
|
-
// No group identifier provided, skip EAS configuration
|
|
14
|
-
return config;
|
|
15
|
-
}
|
|
16
|
-
// Ensure ios.entitlements exists in config for EAS to detect
|
|
17
|
-
if (!config.ios) {
|
|
18
|
-
config.ios = {};
|
|
19
|
-
}
|
|
20
|
-
if (!config.ios.entitlements) {
|
|
21
|
-
config.ios.entitlements = {};
|
|
22
|
-
}
|
|
23
|
-
// Add app groups entitlement for EAS
|
|
24
|
-
(0, entitlements_1.addApplicationGroupsEntitlement)(config.ios.entitlements, props.groupIdentifier);
|
|
25
|
-
return config;
|
|
26
|
-
};
|
|
27
|
-
exports.configureEas = configureEas;
|
|
28
|
-
//# sourceMappingURL=eas.js.map
|
package/build/cjs/ios/eas.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"eas.js","sourceRoot":"","sources":["../../../src/ios/eas.ts"],"names":[],"mappings":";;;AAEA,wDAAuE;AAMvE;;;;;GAKG;AACI,MAAM,YAAY,GAAoC,CAAC,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,EAAE;IAClF,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QAC3B,uDAAuD;QACvD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,6DAA6D;IAC7D,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAChB,MAAM,CAAC,GAAG,GAAG,EAAE,CAAA;IACjB,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,YAAY,GAAG,EAAE,CAAA;IAC9B,CAAC;IAED,qCAAqC;IACrC,IAAA,8CAA+B,EAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,eAAe,CAAC,CAAA;IAE/E,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAlBY,QAAA,YAAY,gBAkBxB"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.configureEntitlements = void 0;
|
|
4
|
-
const entitlements_1 = require("../utils/entitlements");
|
|
5
|
-
/**
|
|
6
|
-
* Configures main app entitlements for app groups and keychain sharing.
|
|
7
|
-
*
|
|
8
|
-
* This adds:
|
|
9
|
-
* - com.apple.security.application-groups entitlement for data sharing
|
|
10
|
-
* - keychain-access-groups entitlement for shared credential access (if keychainGroup provided)
|
|
11
|
-
*/
|
|
12
|
-
const configureEntitlements = (config, props = {}) => {
|
|
13
|
-
if (!props.groupIdentifier && !props.keychainGroup) {
|
|
14
|
-
// Nothing to configure
|
|
15
|
-
return config;
|
|
16
|
-
}
|
|
17
|
-
if (!config.ios) {
|
|
18
|
-
config.ios = {};
|
|
19
|
-
}
|
|
20
|
-
if (!config.ios.entitlements) {
|
|
21
|
-
config.ios.entitlements = {};
|
|
22
|
-
}
|
|
23
|
-
if (props.groupIdentifier) {
|
|
24
|
-
(0, entitlements_1.addApplicationGroupsEntitlement)(config.ios.entitlements, props.groupIdentifier);
|
|
25
|
-
}
|
|
26
|
-
if (props.keychainGroup) {
|
|
27
|
-
addKeychainAccessGroupEntitlement(config.ios.entitlements, props.keychainGroup);
|
|
28
|
-
}
|
|
29
|
-
return config;
|
|
30
|
-
};
|
|
31
|
-
exports.configureEntitlements = configureEntitlements;
|
|
32
|
-
/**
|
|
33
|
-
* Adds keychain-access-groups entitlement to an entitlements object.
|
|
34
|
-
* Ensures the group list is deduped and preserves existing order.
|
|
35
|
-
*/
|
|
36
|
-
function addKeychainAccessGroupEntitlement(entitlements, keychainGroup) {
|
|
37
|
-
const existingGroups = (entitlements['keychain-access-groups'] ?? []).filter(Boolean);
|
|
38
|
-
const deduped = Array.from(new Set(existingGroups));
|
|
39
|
-
if (deduped.includes(keychainGroup)) {
|
|
40
|
-
entitlements['keychain-access-groups'] = deduped;
|
|
41
|
-
return entitlements;
|
|
42
|
-
}
|
|
43
|
-
entitlements['keychain-access-groups'] = [...deduped, keychainGroup];
|
|
44
|
-
return entitlements;
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=entitlements.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"entitlements.js","sourceRoot":"","sources":["../../../src/ios/entitlements.ts"],"names":[],"mappings":";;;AAEA,wDAAuE;AAOvE;;;;;;GAMG;AACI,MAAM,qBAAqB,GAA6C,CAAC,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,EAAE;IACpG,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QACnD,uBAAuB;QACvB,OAAO,MAAM,CAAA;IACf,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAChB,MAAM,CAAC,GAAG,GAAG,EAAE,CAAA;IACjB,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,YAAY,GAAG,EAAE,CAAA;IAC9B,CAAC;IAED,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;QAC1B,IAAA,8CAA+B,EAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,eAAe,CAAC,CAAA;IACjF,CAAC;IAED,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACxB,iCAAiC,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;IACjF,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAtBY,QAAA,qBAAqB,yBAsBjC;AAED;;;GAGG;AACH,SAAS,iCAAiC,CACxC,YAAiC,EACjC,aAAqB;IAErB,MAAM,cAAc,GAAG,CAAE,YAAY,CAAC,wBAAwB,CAAc,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACnG,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,CAAA;IAEnD,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACpC,YAAY,CAAC,wBAAwB,CAAC,GAAG,OAAO,CAAA;QAChD,OAAO,YAAY,CAAA;IACrB,CAAC;IAED,YAAY,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,aAAa,CAAC,CAAA;IACpE,OAAO,YAAY,CAAA;AACrB,CAAC"}
|
package/build/cjs/ios/index.js
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.withPushNotifications = void 0;
|
|
4
|
-
exports.withIOS = withIOS;
|
|
5
|
-
const eas_1 = require("./eas");
|
|
6
|
-
const entitlements_1 = require("./entitlements");
|
|
7
|
-
const infoPlist_1 = require("./infoPlist");
|
|
8
|
-
/**
|
|
9
|
-
* Main iOS app configuration.
|
|
10
|
-
*
|
|
11
|
-
* This configures the main app (not the widget extension) for:
|
|
12
|
-
* - Live Activities support (Info.plist)
|
|
13
|
-
* - App groups for widget communication (entitlements)
|
|
14
|
-
* - Keychain sharing for widget server credentials (entitlements)
|
|
15
|
-
* - EAS build configuration
|
|
16
|
-
*/
|
|
17
|
-
function withIOS(config, props) {
|
|
18
|
-
// Configure Info.plist
|
|
19
|
-
config = (0, infoPlist_1.configureInfoPlist)(config, {
|
|
20
|
-
groupIdentifier: props.groupIdentifier,
|
|
21
|
-
widgetIds: props.widgetIds,
|
|
22
|
-
widgets: props.widgets,
|
|
23
|
-
keychainGroup: props.keychainGroup,
|
|
24
|
-
});
|
|
25
|
-
// Configure entitlements
|
|
26
|
-
config = (0, entitlements_1.configureEntitlements)(config, {
|
|
27
|
-
groupIdentifier: props.groupIdentifier,
|
|
28
|
-
keychainGroup: props.keychainGroup,
|
|
29
|
-
});
|
|
30
|
-
// Configure EAS
|
|
31
|
-
config = (0, eas_1.configureEas)(config, {
|
|
32
|
-
groupIdentifier: props.groupIdentifier,
|
|
33
|
-
});
|
|
34
|
-
return config;
|
|
35
|
-
}
|
|
36
|
-
// Re-export for convenience
|
|
37
|
-
var pushNotifications_1 = require("./pushNotifications");
|
|
38
|
-
Object.defineProperty(exports, "withPushNotifications", { enumerable: true, get: function () { return pushNotifications_1.withPushNotifications; } });
|
|
39
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ios/index.ts"],"names":[],"mappings":";;;AAsBA,0BAqBC;AAzCD,+BAAoC;AACpC,iDAAsD;AACtD,2CAAgD;AAShD;;;;;;;;GAQG;AACH,SAAgB,OAAO,CAAC,MAAkB,EAAE,KAAqB;IAC/D,uBAAuB;IACvB,MAAM,GAAG,IAAA,8BAAkB,EAAC,MAAM,EAAE;QAClC,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,aAAa,EAAE,KAAK,CAAC,aAAa;KACnC,CAAC,CAAA;IAEF,yBAAyB;IACzB,MAAM,GAAG,IAAA,oCAAqB,EAAC,MAAM,EAAE;QACrC,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,aAAa,EAAE,KAAK,CAAC,aAAa;KACnC,CAAC,CAAA;IAEF,gBAAgB;IAChB,MAAM,GAAG,IAAA,kBAAY,EAAC,MAAM,EAAE;QAC5B,eAAe,EAAE,KAAK,CAAC,eAAe;KACvC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC;AAED,4BAA4B;AAC5B,yDAA2D;AAAlD,0HAAA,qBAAqB,OAAA"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.configureInfoPlist = void 0;
|
|
4
|
-
const config_plugins_1 = require("@expo/config-plugins");
|
|
5
|
-
/**
|
|
6
|
-
* Configures main app Info.plist for Live Activities and widgets.
|
|
7
|
-
*
|
|
8
|
-
* This adds:
|
|
9
|
-
* - NSSupportsLiveActivities: Enables Live Activities support
|
|
10
|
-
* - Voltra_AppGroupIdentifier: App group ID for widget communication (if provided)
|
|
11
|
-
* - Voltra_WidgetIds: Array of widget IDs for native module access (if provided)
|
|
12
|
-
* - Voltra_WidgetServerUrls: Map of widget IDs to server URLs (if any widgets have serverUpdate)
|
|
13
|
-
* - Voltra_WidgetServerIntervals: Map of widget IDs to update intervals (if any widgets have serverUpdate)
|
|
14
|
-
* - Voltra_KeychainGroup: Keychain access group for shared credentials (if provided)
|
|
15
|
-
*/
|
|
16
|
-
const configureInfoPlist = (config, props = {}) => {
|
|
17
|
-
return (0, config_plugins_1.withInfoPlist)(config, (mod) => {
|
|
18
|
-
mod.modResults.NSSupportsLiveActivities = true;
|
|
19
|
-
mod.modResults.NSSupportsLiveActivitiesFrequentUpdates = false;
|
|
20
|
-
// Only add group identifier if provided
|
|
21
|
-
if (props.groupIdentifier) {
|
|
22
|
-
mod.modResults.Voltra_AppGroupIdentifier = props.groupIdentifier;
|
|
23
|
-
}
|
|
24
|
-
// Store widget IDs in Info.plist for native module to access
|
|
25
|
-
if (props.widgetIds && props.widgetIds.length > 0) {
|
|
26
|
-
mod.modResults.Voltra_WidgetIds = props.widgetIds;
|
|
27
|
-
}
|
|
28
|
-
// Configure server update URLs and intervals for widgets
|
|
29
|
-
if (props.widgets && props.widgets.length > 0) {
|
|
30
|
-
const serverUrls = {};
|
|
31
|
-
const serverIntervals = {};
|
|
32
|
-
for (const widget of props.widgets) {
|
|
33
|
-
if (widget.serverUpdate) {
|
|
34
|
-
serverUrls[widget.id] = widget.serverUpdate.url;
|
|
35
|
-
serverIntervals[widget.id] = widget.serverUpdate.intervalMinutes ?? 15;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
if (Object.keys(serverUrls).length > 0) {
|
|
39
|
-
mod.modResults.Voltra_WidgetServerUrls = serverUrls;
|
|
40
|
-
mod.modResults.Voltra_WidgetServerIntervals = serverIntervals;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
// Store Keychain group identifier for shared credential access
|
|
44
|
-
if (props.keychainGroup) {
|
|
45
|
-
mod.modResults.Voltra_KeychainGroup = props.keychainGroup;
|
|
46
|
-
}
|
|
47
|
-
return mod;
|
|
48
|
-
});
|
|
49
|
-
};
|
|
50
|
-
exports.configureInfoPlist = configureInfoPlist;
|
|
51
|
-
//# sourceMappingURL=infoPlist.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"infoPlist.js","sourceRoot":"","sources":["../../../src/ios/infoPlist.ts"],"names":[],"mappings":";;;AAAA,yDAAkE;AAWlE;;;;;;;;;;GAUG;AACI,MAAM,kBAAkB,GAA0C,CAAC,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,EAAE;IAC9F,OAAO,IAAA,8BAAa,EAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;QACnC,GAAG,CAAC,UAAU,CAAC,wBAAwB,GAAG,IAAI,CAAA;QAC9C,GAAG,CAAC,UAAU,CAAC,uCAAuC,GAAG,KAAK,CAAA;QAE9D,wCAAwC;QACxC,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;YAC1B,GAAG,CAAC,UAAU,CAAC,yBAAyB,GAAG,KAAK,CAAC,eAAe,CAAA;QAClE,CAAC;QAED,6DAA6D;QAC7D,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,GAAG,CAAC,UAAU,CAAC,gBAAgB,GAAG,KAAK,CAAC,SAAS,CAAA;QACnD,CAAC;QAED,yDAAyD;QACzD,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,UAAU,GAA2B,EAAE,CAAA;YAC7C,MAAM,eAAe,GAA2B,EAAE,CAAA;YAElD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;oBACxB,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAA;oBAC/C,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,eAAe,IAAI,EAAE,CAAA;gBACxE,CAAC;YACH,CAAC;YAED,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvC,GAAG,CAAC,UAAU,CAAC,uBAAuB,GAAG,UAAU,CAAA;gBACnD,GAAG,CAAC,UAAU,CAAC,4BAA4B,GAAG,eAAe,CAAA;YAC/D,CAAC;QACH,CAAC;QAED,+DAA+D;QAC/D,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACxB,GAAG,CAAC,UAAU,CAAC,oBAAoB,GAAG,KAAK,CAAC,aAAa,CAAA;QAC3D,CAAC;QAED,OAAO,GAAG,CAAA;IACZ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAxCY,QAAA,kBAAkB,sBAwC9B"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.withPushNotifications = void 0;
|
|
4
|
-
const config_plugins_1 = require("@expo/config-plugins");
|
|
5
|
-
/**
|
|
6
|
-
* Plugin that enables push notification support for Live Activities.
|
|
7
|
-
*
|
|
8
|
-
* This:
|
|
9
|
-
* - Adds the aps-environment entitlement for push notifications
|
|
10
|
-
* - Adds Voltra_EnablePushNotifications flag to Info.plist
|
|
11
|
-
*/
|
|
12
|
-
const withPushNotifications = (config) => (0, config_plugins_1.withInfoPlist)((0, config_plugins_1.withEntitlementsPlist)(config, (mod) => {
|
|
13
|
-
// NOTE: For App Store builds, provisioning profiles typically inject 'production'.
|
|
14
|
-
// This sets a default for debug/dev builds.
|
|
15
|
-
mod.modResults['aps-environment'] = 'development';
|
|
16
|
-
return mod;
|
|
17
|
-
}), (mod) => {
|
|
18
|
-
mod.modResults['Voltra_EnablePushNotifications'] = true;
|
|
19
|
-
return mod;
|
|
20
|
-
});
|
|
21
|
-
exports.withPushNotifications = withPushNotifications;
|
|
22
|
-
//# sourceMappingURL=pushNotifications.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pushNotifications.js","sourceRoot":"","sources":["../../../src/ios/pushNotifications.ts"],"names":[],"mappings":";;;AAAA,yDAAyF;AAEzF;;;;;;GAMG;AACI,MAAM,qBAAqB,GAAiB,CAAC,MAAM,EAAE,EAAE,CAC5D,IAAA,8BAAa,EACX,IAAA,sCAAqB,EAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;IACpC,mFAAmF;IACnF,4CAA4C;IAC5C,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAAG,aAAa,CAAA;IACjD,OAAO,GAAG,CAAA;AACZ,CAAC,CAAC,EACF,CAAC,GAAG,EAAE,EAAE;IACN,GAAG,CAAC,UAAU,CAAC,gCAAgC,CAAC,GAAG,IAAI,CAAA;IACvD,OAAO,GAAG,CAAA;AACZ,CAAC,CACF,CAAA;AAZU,QAAA,qBAAqB,yBAY/B"}
|