@vxrn/utils 1.27.1 → 2.0.0-beta.100.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.
Files changed (73) hide show
  1. package/dist/cjs/createMessageSocket.cjs +115 -121
  2. package/dist/cjs/createMessageSocket.native.cjs +166 -0
  3. package/dist/cjs/createMessageSocket.native.js +152 -166
  4. package/dist/cjs/createMessageSocket.native.js.map +1 -1
  5. package/dist/cjs/detectPackageManager.cjs +76 -72
  6. package/dist/cjs/detectPackageManager.native.cjs +106 -0
  7. package/dist/cjs/detectPackageManager.native.js +82 -77
  8. package/dist/cjs/detectPackageManager.native.js.map +1 -1
  9. package/dist/cjs/exec.cjs +43 -45
  10. package/dist/cjs/exec.native.cjs +65 -0
  11. package/dist/cjs/exec.native.js +48 -49
  12. package/dist/cjs/exec.native.js.map +1 -1
  13. package/dist/cjs/index.cjs +10 -11
  14. package/dist/cjs/index.native.cjs +26 -0
  15. package/dist/cjs/index.native.js +10 -10
  16. package/dist/cjs/index.native.js.map +1 -1
  17. package/dist/cjs/mustReplace.cjs +27 -35
  18. package/dist/cjs/mustReplace.native.cjs +60 -0
  19. package/dist/cjs/mustReplace.native.js +44 -60
  20. package/dist/cjs/mustReplace.native.js.map +1 -1
  21. package/dist/cjs/nativeAppManifest.cjs +110 -0
  22. package/dist/cjs/nativeAppManifest.native.cjs +135 -0
  23. package/dist/cjs/nativeAppManifest.native.js +137 -0
  24. package/dist/cjs/nativeAppManifest.native.js.map +1 -0
  25. package/dist/cjs/publicEnv.cjs +38 -0
  26. package/dist/cjs/publicEnv.native.cjs +57 -0
  27. package/dist/cjs/publicEnv.native.js +59 -0
  28. package/dist/cjs/publicEnv.native.js.map +1 -0
  29. package/dist/esm/createMessageSocket.mjs +103 -103
  30. package/dist/esm/createMessageSocket.mjs.map +1 -1
  31. package/dist/esm/createMessageSocket.native.js +139 -148
  32. package/dist/esm/createMessageSocket.native.js.map +1 -1
  33. package/dist/esm/detectPackageManager.mjs +65 -55
  34. package/dist/esm/detectPackageManager.mjs.map +1 -1
  35. package/dist/esm/detectPackageManager.native.js +71 -61
  36. package/dist/esm/detectPackageManager.native.js.map +1 -1
  37. package/dist/esm/exec.mjs +29 -27
  38. package/dist/esm/exec.mjs.map +1 -1
  39. package/dist/esm/exec.native.js +34 -32
  40. package/dist/esm/exec.native.js.map +1 -1
  41. package/dist/esm/index.js +13 -7
  42. package/dist/esm/index.mjs +13 -7
  43. package/dist/esm/index.native.js +13 -7
  44. package/dist/esm/mustReplace.mjs +15 -17
  45. package/dist/esm/mustReplace.mjs.map +1 -1
  46. package/dist/esm/mustReplace.native.js +32 -43
  47. package/dist/esm/mustReplace.native.js.map +1 -1
  48. package/dist/esm/nativeAppManifest.mjs +90 -0
  49. package/dist/esm/nativeAppManifest.mjs.map +1 -0
  50. package/dist/esm/nativeAppManifest.native.js +113 -0
  51. package/dist/esm/nativeAppManifest.native.js.map +1 -0
  52. package/dist/esm/publicEnv.mjs +14 -0
  53. package/dist/esm/publicEnv.mjs.map +1 -0
  54. package/dist/esm/publicEnv.native.js +31 -0
  55. package/dist/esm/publicEnv.native.js.map +1 -0
  56. package/package.json +17 -5
  57. package/src/index.ts +1 -0
  58. package/src/nativeAppManifest.test.ts +204 -0
  59. package/src/nativeAppManifest.ts +229 -0
  60. package/src/publicEnv.ts +19 -0
  61. package/types/createMessageSocket.d.ts +1 -1
  62. package/types/createMessageSocket.d.ts.map +1 -1
  63. package/types/detectPackageManager.d.ts.map +1 -1
  64. package/types/exec.d.ts.map +1 -1
  65. package/types/index.d.ts +1 -0
  66. package/types/index.d.ts.map +1 -1
  67. package/types/nativeAppManifest.d.ts +52 -0
  68. package/types/nativeAppManifest.d.ts.map +1 -0
  69. package/types/publicEnv.d.ts +9 -0
  70. package/types/publicEnv.d.ts.map +1 -0
  71. package/dist/esm/index.js.map +0 -1
  72. package/dist/esm/index.mjs.map +0 -1
  73. package/dist/esm/index.native.js.map +0 -1
@@ -0,0 +1,229 @@
1
+ // typed native.app manifest inside the existing one vite options.
2
+ // name is the native target and appregistry key. one canonical definition:
3
+ // one/native re-exports it for apps and vxrn prebuild consumes it, so a new
4
+ // field is added once, here.
5
+ export interface NativeAppManifest {
6
+ name: string
7
+ displayName?: string
8
+ scheme?: string | string[]
9
+ version?: string
10
+ icon?: {
11
+ source: string
12
+ backgroundColor: string
13
+ }
14
+ splash?: {
15
+ source: string
16
+ backgroundColor: string
17
+ width?: number
18
+ }
19
+ imagePicker?: {
20
+ // ios camera usage description shown at the system prompt. setting it
21
+ // also declares the android camera permission; both are required for
22
+ // One.ImagePicker.launchCamera.
23
+ camera?: string
24
+ }
25
+ // present when the app uses local notifications. prebuild stamps the
26
+ // android notification permissions and receiver plus the ios delegate gate.
27
+ // push opts into remote push: the fcm source set and the aps-environment
28
+ // entitlement. without it firebase stays out of the app entirely.
29
+ notifications?: {
30
+ push?: boolean
31
+ }
32
+ // One.UI.PictureInPicture: stamps the ios audio background mode (pip opens
33
+ // only for a playback session) and android's supportsPictureInPicture.
34
+ pictureInPicture?: boolean
35
+ ios?: {
36
+ bundleId: string
37
+ buildNumber?: string
38
+ tablet?: boolean
39
+ deploymentTarget?: string
40
+ screensGamma?: boolean
41
+ useFrameworks?: 'static' | 'dynamic'
42
+ ccache?: boolean
43
+ usesNonExemptEncryption?: boolean
44
+ // exposes the app's Documents in the Files app and document pickers.
45
+ fileSharing?: boolean
46
+ widgets?: {
47
+ appGroup: string
48
+ kind: string
49
+ displayName: string
50
+ description: string
51
+ pushNotifications?: boolean
52
+ }
53
+ }
54
+ android?: {
55
+ applicationId: string
56
+ versionCode?: number
57
+ minSdk?: number
58
+ adaptiveIcon?: {
59
+ foreground?: string
60
+ background?: string
61
+ }
62
+ // google maps api key for One.UI.Map. setting it compiles the maps sdk
63
+ // into the app and stamps the key meta-data; without it the maps source
64
+ // set stays out and mounting One.UI.Map throws.
65
+ googleMapsApiKey?: string
66
+ }
67
+ }
68
+
69
+ const TARGET_NAME = /^[A-Za-z][A-Za-z0-9_]*$/
70
+ const SCHEME = /^[a-z][a-z0-9+.-]*$/i
71
+ const VERSION = /^\d+\.\d+\.\d+/
72
+ const BUILD_NUMBER = /^[A-Za-z0-9.]+$/
73
+ const REVERSE_DNS = /^[A-Za-z][A-Za-z0-9-]*(\.[A-Za-z][A-Za-z0-9-]*)+$/
74
+ const DEPLOYMENT_TARGET = /^\d+\.\d+$/
75
+ const HEX_COLOR = /^#[\da-f]{6}$/i
76
+
77
+ function fail(message: string): never {
78
+ throw new Error(`[one] invalid native.app: ${message}`)
79
+ }
80
+
81
+ // platform scopes the platform-id requirement: an ios prebuild skips the
82
+ // android requirement and vice versa. without it both are required, because
83
+ // a manifest without platform ids prebuilds nothing.
84
+ export function validateNativeApp(
85
+ manifest: NativeAppManifest,
86
+ platform?: 'ios' | 'android' | string
87
+ ): NativeAppManifest {
88
+ if (!manifest || typeof manifest !== 'object') fail('manifest must be an object')
89
+ if (!manifest.name || typeof manifest.name !== 'string') fail('name is required')
90
+ if (!TARGET_NAME.test(manifest.name)) {
91
+ fail(
92
+ `name "${manifest.name}" must start with a letter and contain only letters, digits, and underscore`
93
+ )
94
+ }
95
+ const schemes =
96
+ manifest.scheme === undefined
97
+ ? []
98
+ : Array.isArray(manifest.scheme)
99
+ ? manifest.scheme
100
+ : [manifest.scheme]
101
+ for (const scheme of schemes) {
102
+ if (typeof scheme !== 'string' || !SCHEME.test(scheme)) {
103
+ fail(`scheme "${scheme}" must be a valid uri scheme`)
104
+ }
105
+ }
106
+ if (manifest.version !== undefined && !VERSION.test(manifest.version)) {
107
+ fail(`version "${manifest.version}" must start with major.minor.patch`)
108
+ }
109
+ if (
110
+ manifest.icon !== undefined &&
111
+ (!manifest.icon.source || !HEX_COLOR.test(manifest.icon.backgroundColor))
112
+ ) {
113
+ fail('icon requires source and a six-digit hex backgroundColor')
114
+ }
115
+ if (
116
+ manifest.splash !== undefined &&
117
+ (!manifest.splash.source ||
118
+ !HEX_COLOR.test(manifest.splash.backgroundColor) ||
119
+ (manifest.splash.width !== undefined &&
120
+ (!Number.isFinite(manifest.splash.width) ||
121
+ manifest.splash.width < 1 ||
122
+ manifest.splash.width > 288)))
123
+ ) {
124
+ fail(
125
+ 'splash requires source, a six-digit hex backgroundColor, and width from 1 to 288'
126
+ )
127
+ }
128
+ if (
129
+ manifest.imagePicker?.camera !== undefined &&
130
+ (typeof manifest.imagePicker.camera !== 'string' ||
131
+ manifest.imagePicker.camera.trim() === '')
132
+ ) {
133
+ fail('imagePicker.camera must be a non-empty string')
134
+ }
135
+ if (manifest.notifications !== undefined) {
136
+ if (
137
+ typeof manifest.notifications !== 'object' ||
138
+ (manifest.notifications.push !== undefined &&
139
+ typeof manifest.notifications.push !== 'boolean')
140
+ ) {
141
+ fail('notifications.push must be a boolean')
142
+ }
143
+ }
144
+ if (
145
+ manifest.pictureInPicture !== undefined &&
146
+ typeof manifest.pictureInPicture !== 'boolean'
147
+ ) {
148
+ fail('pictureInPicture must be a boolean')
149
+ }
150
+ if (!platform || platform === 'ios') {
151
+ if (!manifest.ios?.bundleId || !REVERSE_DNS.test(manifest.ios.bundleId)) {
152
+ fail(`ios.bundleId "${manifest.ios?.bundleId}" must be reverse-dns`)
153
+ }
154
+ if (
155
+ manifest.ios.deploymentTarget !== undefined &&
156
+ !DEPLOYMENT_TARGET.test(manifest.ios.deploymentTarget)
157
+ ) {
158
+ fail(
159
+ `ios.deploymentTarget "${manifest.ios.deploymentTarget}" must look like "17.0"`
160
+ )
161
+ }
162
+ if (
163
+ manifest.ios.buildNumber !== undefined &&
164
+ !BUILD_NUMBER.test(manifest.ios.buildNumber)
165
+ ) {
166
+ fail(
167
+ `ios.buildNumber "${manifest.ios.buildNumber}" must contain only letters, digits, and dots`
168
+ )
169
+ }
170
+ const widgets = manifest.ios.widgets
171
+ if (widgets) {
172
+ if (!manifest.ios.deploymentTarget || Number(manifest.ios.deploymentTarget) < 17) {
173
+ fail('ios.widgets requires ios.deploymentTarget of 17.0 or newer')
174
+ }
175
+ if (
176
+ !/^group\.[A-Za-z][A-Za-z0-9-]*(\.[A-Za-z][A-Za-z0-9-]*)+$/.test(widgets.appGroup)
177
+ ) {
178
+ fail('ios.widgets.appGroup must be a reverse-dns App Group beginning with group.')
179
+ }
180
+ if (!/^[A-Za-z][A-Za-z0-9._-]*$/.test(widgets.kind)) {
181
+ fail('ios.widgets.kind must be a non-empty WidgetKit kind')
182
+ }
183
+ if (!widgets.displayName?.trim() || !widgets.description?.trim()) {
184
+ fail('ios.widgets.displayName and description must be non-empty strings')
185
+ }
186
+ if (
187
+ widgets.pushNotifications !== undefined &&
188
+ typeof widgets.pushNotifications !== 'boolean'
189
+ ) {
190
+ fail('ios.widgets.pushNotifications must be a boolean')
191
+ }
192
+ }
193
+ }
194
+ if (!platform || platform === 'android') {
195
+ if (
196
+ !manifest.android?.applicationId ||
197
+ !REVERSE_DNS.test(manifest.android.applicationId)
198
+ ) {
199
+ fail(
200
+ `android.applicationId "${manifest.android?.applicationId}" must be reverse-dns`
201
+ )
202
+ }
203
+ if (
204
+ manifest.android.minSdk !== undefined &&
205
+ (!Number.isInteger(manifest.android.minSdk) ||
206
+ manifest.android.minSdk < 21 ||
207
+ manifest.android.minSdk > 36)
208
+ ) {
209
+ fail(`android.minSdk "${manifest.android.minSdk}" must be an integer from 21 to 36`)
210
+ }
211
+ if (
212
+ manifest.android.versionCode !== undefined &&
213
+ (!Number.isInteger(manifest.android.versionCode) ||
214
+ manifest.android.versionCode < 1)
215
+ ) {
216
+ fail(
217
+ `android.versionCode "${manifest.android.versionCode}" must be a positive integer`
218
+ )
219
+ }
220
+ if (
221
+ manifest.android.googleMapsApiKey !== undefined &&
222
+ (typeof manifest.android.googleMapsApiKey !== 'string' ||
223
+ manifest.android.googleMapsApiKey.trim() === '')
224
+ ) {
225
+ fail('android.googleMapsApiKey must be a non-empty string')
226
+ }
227
+ }
228
+ return manifest
229
+ }
@@ -0,0 +1,19 @@
1
+ export const ONE_PUBLIC_PREFIX = 'ONE_PUBLIC_'
2
+ export const EXPO_PUBLIC_PREFIX = 'EXPO_PUBLIC_'
3
+
4
+ /**
5
+ * Expose One public values under Expo's established same-suffix names for
6
+ * package compatibility. Explicit Expo values win; Expo input never creates a
7
+ * One-owned name.
8
+ */
9
+ export function withExpoPublicEnvAliases<T>(env: Record<string, T>): Record<string, T> {
10
+ const aliased = { ...env }
11
+
12
+ for (const [key, value] of Object.entries(env)) {
13
+ if (!key.startsWith(ONE_PUBLIC_PREFIX)) continue
14
+ const expoKey = `${EXPO_PUBLIC_PREFIX}${key.slice(ONE_PUBLIC_PREFIX.length)}`
15
+ if (!(expoKey in aliased)) aliased[expoKey] = value
16
+ }
17
+
18
+ return aliased
19
+ }
@@ -1,2 +1,2 @@
1
- export declare function createMessageSocket(): import("ws").Server<typeof import("ws").default, typeof import("http").IncomingMessage>;
1
+ export declare function createMessageSocket(): import("ws").Server<typeof import("ws").WebSocket, typeof import("http").IncomingMessage>;
2
2
  //# sourceMappingURL=createMessageSocket.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createMessageSocket.d.ts","sourceRoot":"","sources":["../src/createMessageSocket.ts"],"names":[],"mappings":"AAQA,wBAAgB,mBAAmB,4FA6HlC"}
1
+ {"version":3,"file":"createMessageSocket.d.ts","sourceRoot":"","sources":["../src/createMessageSocket.ts"],"names":[],"mappings":"AAQA,wBAAgB,mBAAmB,8FA6HlC"}
@@ -1 +1 @@
1
- {"version":3,"file":"detectPackageManager.d.ts","sourceRoot":"","sources":["../src/detectPackageManager.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAA;AA+ChE,eAAO,MAAM,oBAAoB,GAAU,UAAS;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO;;;;;EAwBxE,CAAA"}
1
+ {"version":3,"file":"detectPackageManager.d.ts","sourceRoot":"","sources":["../src/detectPackageManager.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAA;AA+ChE,eAAO,MAAM,oBAAoB,aAAmB;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;EAwBnE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,YAAY,EAAS,MAAM,oBAAoB,CAAA;AAGvE,eAAO,MAAM,IAAI,GAAI,KAAK,MAAM,EAAE,UAAU,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,WAEzE,CAAA;AAED,eAAO,MAAM,WAAW,GACtB,KAAK,MAAM,EACX,UAAU,YAAY,GAAG;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,kBA4BF,CAAA;AAED,eAAO,MAAM,gBAAgB,GAC3B,KAAK,MAAM,EACX,UAAU,YAAY,GAAG;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,kBAMF,CAAA"}
1
+ {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,YAAY,EAAS,MAAM,oBAAoB,CAAA;AAGvE,eAAO,MAAM,IAAI,QAAS,MAAM,YAAY,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,WAEzE,CAAA;AAED,eAAO,MAAM,WAAW,QACjB,MAAM,YACD,YAAY,GAAG;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,kBA4BF,CAAA;AAED,eAAO,MAAM,gBAAgB,QACtB,MAAM,YACD,YAAY,GAAG;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,kBAMF,CAAA"}
package/types/index.d.ts CHANGED
@@ -4,4 +4,5 @@ export * from './createMessageSocket';
4
4
  export * from './detectPackageManager';
5
5
  export * from './exec';
6
6
  export * from './mustReplace';
7
+ export * from './publicEnv';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA"}
@@ -0,0 +1,52 @@
1
+ export interface NativeAppManifest {
2
+ name: string;
3
+ displayName?: string;
4
+ scheme?: string | string[];
5
+ version?: string;
6
+ icon?: {
7
+ source: string;
8
+ backgroundColor: string;
9
+ };
10
+ splash?: {
11
+ source: string;
12
+ backgroundColor: string;
13
+ width?: number;
14
+ };
15
+ imagePicker?: {
16
+ camera?: string;
17
+ };
18
+ notifications?: {
19
+ push?: boolean;
20
+ };
21
+ pictureInPicture?: boolean;
22
+ ios?: {
23
+ bundleId: string;
24
+ buildNumber?: string;
25
+ tablet?: boolean;
26
+ deploymentTarget?: string;
27
+ screensGamma?: boolean;
28
+ useFrameworks?: 'static' | 'dynamic';
29
+ ccache?: boolean;
30
+ usesNonExemptEncryption?: boolean;
31
+ fileSharing?: boolean;
32
+ widgets?: {
33
+ appGroup: string;
34
+ kind: string;
35
+ displayName: string;
36
+ description: string;
37
+ pushNotifications?: boolean;
38
+ };
39
+ };
40
+ android?: {
41
+ applicationId: string;
42
+ versionCode?: number;
43
+ minSdk?: number;
44
+ adaptiveIcon?: {
45
+ foreground?: string;
46
+ background?: string;
47
+ };
48
+ googleMapsApiKey?: string;
49
+ };
50
+ }
51
+ export declare function validateNativeApp(manifest: NativeAppManifest, platform?: 'ios' | 'android' | string): NativeAppManifest;
52
+ //# sourceMappingURL=nativeAppManifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nativeAppManifest.d.ts","sourceRoot":"","sources":["../src/nativeAppManifest.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,MAAM,CAAA;QACd,eAAe,EAAE,MAAM,CAAA;KACxB,CAAA;IACD,MAAM,CAAC,EAAE;QACP,MAAM,EAAE,MAAM,CAAA;QACd,eAAe,EAAE,MAAM,CAAA;QACvB,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;IACD,WAAW,CAAC,EAAE;QAIZ,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;IAKD,aAAa,CAAC,EAAE;QACd,IAAI,CAAC,EAAE,OAAO,CAAA;KACf,CAAA;IAGD,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,GAAG,CAAC,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAA;QAChB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,MAAM,CAAC,EAAE,OAAO,CAAA;QAChB,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,YAAY,CAAC,EAAE,OAAO,CAAA;QACtB,aAAa,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;QACpC,MAAM,CAAC,EAAE,OAAO,CAAA;QAChB,uBAAuB,CAAC,EAAE,OAAO,CAAA;QAEjC,WAAW,CAAC,EAAE,OAAO,CAAA;QACrB,OAAO,CAAC,EAAE;YACR,QAAQ,EAAE,MAAM,CAAA;YAChB,IAAI,EAAE,MAAM,CAAA;YACZ,WAAW,EAAE,MAAM,CAAA;YACnB,WAAW,EAAE,MAAM,CAAA;YACnB,iBAAiB,CAAC,EAAE,OAAO,CAAA;SAC5B,CAAA;KACF,CAAA;IACD,OAAO,CAAC,EAAE;QACR,aAAa,EAAE,MAAM,CAAA;QACrB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,YAAY,CAAC,EAAE;YACb,UAAU,CAAC,EAAE,MAAM,CAAA;YACnB,UAAU,CAAC,EAAE,MAAM,CAAA;SACpB,CAAA;QAID,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAC1B,CAAA;CACF;AAiBD,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,iBAAiB,EAC3B,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,GACpC,iBAAiB,CA8InB"}
@@ -0,0 +1,9 @@
1
+ export declare const ONE_PUBLIC_PREFIX = "ONE_PUBLIC_";
2
+ export declare const EXPO_PUBLIC_PREFIX = "EXPO_PUBLIC_";
3
+ /**
4
+ * Expose One public values under Expo's established same-suffix names for
5
+ * package compatibility. Explicit Expo values win; Expo input never creates a
6
+ * One-owned name.
7
+ */
8
+ export declare function withExpoPublicEnvAliases<T>(env: Record<string, T>): Record<string, T>;
9
+ //# sourceMappingURL=publicEnv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publicEnv.d.ts","sourceRoot":"","sources":["../src/publicEnv.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,gBAAgB,CAAA;AAC9C,eAAO,MAAM,kBAAkB,iBAAiB,CAAA;AAEhD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAUrF"}
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc","ignoreList":[]}