zelune 1.6.1 → 1.6.3

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.
@@ -24,51 +24,19 @@ if (typeof window !== 'undefined') {
24
24
  NODE_ENV: 'development',
25
25
  EXPO_PUBLIC_PLATFORM: 'web',
26
26
  };
27
- const envProxy = new Proxy(baseEnv, {
28
- get(target, prop) {
29
- if (typeof prop !== 'string') return Reflect.get(target, prop);
30
- if (prop in target && target[prop] !== undefined && target[prop] !== '') {
31
- return target[prop];
32
- }
33
- return 'zelune-preview';
34
- },
35
- });
36
-
37
- const createAssetStub = (): unknown => {
38
- const fn = () => proxy;
39
- const proxy: unknown = new Proxy(fn, {
40
- get(_t, prop) {
41
- if (prop === Symbol.toPrimitive) return (hint: string) => (hint === 'number' ? 0 : '');
42
- if (prop === 'valueOf') return () => 0;
43
- if (prop === 'toString') return () => '';
44
- if (prop === 'uri' || prop === 'default') return '';
45
- return proxy;
46
- },
47
- });
48
- return proxy;
49
- };
50
27
 
51
28
  const win = window as unknown as Record<string, unknown>;
52
29
  win.global = window;
53
30
  win.__DEV__ = true;
54
31
  if (!win.process || typeof win.process !== 'object') {
55
32
  win.process = {
56
- env: envProxy,
33
+ env: baseEnv,
57
34
  platform: 'browser',
58
35
  version: '',
59
36
  cwd: () => '/',
60
37
  };
61
38
  } else {
62
- (win.process as Record<string, unknown>).env = envProxy;
63
- }
64
- const reqProp = ['req', 'uire'].join('');
65
- if (typeof win[reqProp] !== 'function') {
66
- win[reqProp] = (modId: unknown) => {
67
- if (typeof modId === 'string' && /\.(png|jpe?g|gif|webp|svg|avif|bmp)$/i.test(modId)) {
68
- return { uri: modId, default: modId };
69
- }
70
- return createAssetStub();
71
- };
39
+ (win.process as Record<string, unknown>).env = baseEnv;
72
40
  }
73
41
  }
74
42
 
@@ -711,17 +679,49 @@ export const SvgUri: React.FC<{ uri?: string; width?: number; height?: number }>
711
679
  // ============================================================================
712
680
  // 8. React Native Reanimated & Gesture Handler Shims
713
681
  // ============================================================================
682
+ const CHAINABLE_ANIMATION_METHODS = [
683
+ 'duration',
684
+ 'delay',
685
+ 'springify',
686
+ 'damping',
687
+ 'mass',
688
+ 'stiffness',
689
+ 'overshootClamping',
690
+ 'restDisplacementThreshold',
691
+ 'restSpeedThreshold',
692
+ 'withInitialValues',
693
+ 'withCallback',
694
+ 'easing',
695
+ 'randomDelay',
696
+ 'enabled',
697
+ 'onBegin',
698
+ 'onStart',
699
+ 'onUpdate',
700
+ 'onChange',
701
+ 'onEnd',
702
+ 'onFinalize',
703
+ 'onTouchesDown',
704
+ 'onTouchesMove',
705
+ 'onTouchesUp',
706
+ 'activeOffsetX',
707
+ 'activeOffsetY',
708
+ 'failOffsetX',
709
+ 'failOffsetY',
710
+ 'minDistance',
711
+ 'minPointers',
712
+ 'maxPointers',
713
+ 'runOnJS',
714
+ ];
715
+
714
716
  function createChainableAnimationStub(): Record<string, unknown> {
715
- const proxy: Record<string, unknown> = new Proxy(
716
- {},
717
- {
718
- get(_target, prop) {
719
- if (prop === 'build') return () => ({});
720
- return () => proxy;
721
- },
722
- }
723
- );
724
- return proxy;
717
+ const stub: Record<string, unknown> = {
718
+ build: () => ({}),
719
+ };
720
+ const returnSelf = () => stub;
721
+ for (const method of CHAINABLE_ANIMATION_METHODS) {
722
+ stub[method] = returnSelf;
723
+ }
724
+ return stub;
725
725
  }
726
726
 
727
727
  export const FadeIn = createChainableAnimationStub();
@@ -1010,10 +1010,7 @@ export async function setStringAsync(): Promise<boolean> {
1010
1010
  export async function getStringAsync(): Promise<string> {
1011
1011
  return '';
1012
1012
  }
1013
- export async function openURL(url: string): Promise<boolean> {
1014
- if (typeof window !== 'undefined') {
1015
- window.open(url, '_blank', 'noopener,noreferrer');
1016
- }
1013
+ export async function openURL(_url: string): Promise<boolean> {
1017
1014
  return true;
1018
1015
  }
1019
1016
  export function createURL(pathStr = ''): string {
@@ -1166,72 +1163,150 @@ export function useMutation() {
1166
1163
  // ============================================================================
1167
1164
  // 11. Universal Chainable Proxy, Zod, React Hook Form & Context Fallbacks
1168
1165
  // ============================================================================
1166
+ const CHAINABLE_SCHEMA_METHODS = [
1167
+ 'string',
1168
+ 'number',
1169
+ 'boolean',
1170
+ 'object',
1171
+ 'array',
1172
+ 'enum',
1173
+ 'nativeEnum',
1174
+ 'union',
1175
+ 'discriminatedUnion',
1176
+ 'intersection',
1177
+ 'literal',
1178
+ 'record',
1179
+ 'set',
1180
+ 'tuple',
1181
+ 'lazy',
1182
+ 'function',
1183
+ 'promise',
1184
+ 'any',
1185
+ 'unknown',
1186
+ 'never',
1187
+ 'void',
1188
+ 'null',
1189
+ 'undefined',
1190
+ 'date',
1191
+ 'symbol',
1192
+ 'bigint',
1193
+ 'optional',
1194
+ 'nullable',
1195
+ 'nullish',
1196
+ 'default',
1197
+ 'describe',
1198
+ 'brand',
1199
+ 'readonly',
1200
+ 'pipe',
1201
+ 'preprocess',
1202
+ 'email',
1203
+ 'url',
1204
+ 'emoji',
1205
+ 'uuid',
1206
+ 'cuid',
1207
+ 'cuid2',
1208
+ 'ulid',
1209
+ 'regex',
1210
+ 'includes',
1211
+ 'startsWith',
1212
+ 'endsWith',
1213
+ 'datetime',
1214
+ 'ip',
1215
+ 'trim',
1216
+ 'toLowerCase',
1217
+ 'toUpperCase',
1218
+ 'min',
1219
+ 'max',
1220
+ 'int',
1221
+ 'positive',
1222
+ 'nonnegative',
1223
+ 'negative',
1224
+ 'nonpositive',
1225
+ 'multipleOf',
1226
+ 'finite',
1227
+ 'safe',
1228
+ 'nonempty',
1229
+ 'refine',
1230
+ 'superRefine',
1231
+ 'transform',
1232
+ 'extend',
1233
+ 'merge',
1234
+ 'pick',
1235
+ 'omit',
1236
+ 'partial',
1237
+ 'deepPartial',
1238
+ 'required',
1239
+ 'passthrough',
1240
+ 'strict',
1241
+ 'strip',
1242
+ 'catchall',
1243
+ 'or',
1244
+ 'and',
1245
+ ];
1246
+
1169
1247
  export function createSafeChainableProxy(): unknown {
1170
1248
  const fnTarget = function (..._args: unknown[]) {
1171
- return proxy;
1249
+ return fnTarget;
1250
+ } as unknown as Record<string | symbol, unknown>;
1251
+
1252
+ const returnSelf = () => fnTarget;
1253
+ for (const method of CHAINABLE_SCHEMA_METHODS) {
1254
+ fnTarget[method] = returnSelf;
1255
+ }
1256
+
1257
+ fnTarget[Symbol.toPrimitive] = (hint: string) => (hint === 'number' ? 0 : '');
1258
+ fnTarget.valueOf = () => 0;
1259
+ fnTarget.toString = () => '';
1260
+ fnTarget[Symbol.iterator] = function* () {
1261
+ yield fnTarget;
1262
+ yield fnTarget;
1172
1263
  };
1173
- const proxy: unknown = new Proxy(fnTarget, {
1174
- get(_target, prop) {
1175
- if (prop === Symbol.toPrimitive) {
1176
- return (hint: string) => (hint === 'number' ? 0 : '');
1177
- }
1178
- if (prop === 'valueOf') return () => 0;
1179
- if (prop === 'toString') return () => '';
1180
- if (prop === Symbol.iterator) {
1181
- return function* () {
1182
- yield proxy;
1183
- yield proxy;
1184
- };
1185
- }
1186
- if (prop === 'then') {
1187
- return (onFulfilled?: (v: unknown) => unknown, onRejected?: (e: unknown) => unknown) =>
1188
- Promise.resolve({ data: null, error: null }).then(onFulfilled, onRejected);
1189
- }
1190
- if (prop === 'catch') return () => Promise.resolve({ data: null, error: null });
1191
- if (prop === 'finally')
1192
- return (cb?: () => void) => Promise.resolve({ data: null, error: null }).finally(cb);
1193
- if (prop === 'safeParse' || prop === 'spa' || prop === 'safeParseAsync') {
1194
- return (val?: unknown) => ({ success: true, data: val ?? {}, error: null });
1195
- }
1196
- if (prop === 'parse' || prop === 'parseAsync') {
1197
- return (val?: unknown) => val ?? {};
1198
- }
1199
- if (
1200
- prop === 'isLoading' ||
1201
- prop === 'loading' ||
1202
- prop === 'isPending' ||
1203
- prop === 'isError' ||
1204
- prop === 'disabled' ||
1205
- prop === 'isSubmitting'
1206
- ) {
1207
- return false;
1208
- }
1209
- if (
1210
- prop === 'isReady' ||
1211
- prop === 'granted' ||
1212
- prop === 'isSuccess' ||
1213
- prop === 'isAuthenticated' ||
1214
- prop === 'isValid'
1215
- ) {
1216
- return true;
1217
- }
1218
- if (prop === 'error' || prop === 'errors') return null;
1219
- if (prop === 'status') return 'granted';
1220
- if (prop === 'data' || prop === 'items' || prop === 'results' || prop === 'list') {
1221
- return STABLE_EMPTY_ARRAY;
1222
- }
1223
- if (prop === 'length' || prop === 'size' || prop === 'count' || prop === 'value') return 0;
1224
- if (prop === 'ref') return { current: null };
1225
- if (prop === 'map' || prop === 'filter' || prop === 'slice' || prop === 'flatMap') {
1226
- return () => STABLE_EMPTY_ARRAY;
1227
- }
1228
- if (prop === 'forEach') return () => undefined;
1229
- if (prop === 'reduce') return (_fn: unknown, init: unknown) => init;
1230
- if (prop === 'shape' || prop === '_def') return {};
1231
- return proxy;
1232
- },
1264
+ fnTarget.then = (onFulfilled?: (v: unknown) => unknown, onRejected?: (e: unknown) => unknown) =>
1265
+ Promise.resolve({ data: null, error: null }).then(onFulfilled, onRejected);
1266
+ fnTarget.catch = () => Promise.resolve({ data: null, error: null });
1267
+ fnTarget.finally = (cb?: () => void) => Promise.resolve({ data: null, error: null }).finally(cb);
1268
+ fnTarget.safeParse = (val?: unknown) => ({ success: true, data: val ?? {}, error: null });
1269
+ fnTarget.spa = fnTarget.safeParse;
1270
+ fnTarget.safeParseAsync = async (val?: unknown) => ({
1271
+ success: true,
1272
+ data: val ?? {},
1273
+ error: null,
1233
1274
  });
1234
- return proxy;
1275
+ fnTarget.parse = (val?: unknown) => val ?? {};
1276
+ fnTarget.parseAsync = async (val?: unknown) => val ?? {};
1277
+ fnTarget.isLoading = false;
1278
+ fnTarget.loading = false;
1279
+ fnTarget.isPending = false;
1280
+ fnTarget.isError = false;
1281
+ fnTarget.disabled = false;
1282
+ fnTarget.isSubmitting = false;
1283
+ fnTarget.isReady = true;
1284
+ fnTarget.granted = true;
1285
+ fnTarget.isSuccess = true;
1286
+ fnTarget.isAuthenticated = true;
1287
+ fnTarget.isValid = true;
1288
+ fnTarget.error = null;
1289
+ fnTarget.errors = null;
1290
+ fnTarget.status = 'granted';
1291
+ fnTarget.data = STABLE_EMPTY_ARRAY;
1292
+ fnTarget.items = STABLE_EMPTY_ARRAY;
1293
+ fnTarget.results = STABLE_EMPTY_ARRAY;
1294
+ fnTarget.list = STABLE_EMPTY_ARRAY;
1295
+ fnTarget.size = 0;
1296
+ fnTarget.count = 0;
1297
+ fnTarget.value = 0;
1298
+ fnTarget.ref = { current: null };
1299
+ fnTarget.map = () => STABLE_EMPTY_ARRAY;
1300
+ fnTarget.filter = () => STABLE_EMPTY_ARRAY;
1301
+ fnTarget.slice = () => STABLE_EMPTY_ARRAY;
1302
+ fnTarget.flatMap = () => STABLE_EMPTY_ARRAY;
1303
+ fnTarget.forEach = () => undefined;
1304
+ fnTarget.reduce = (_fn: unknown, init: unknown) => init;
1305
+ fnTarget.shape = {};
1306
+ fnTarget._def = {};
1307
+ fnTarget.coerce = fnTarget;
1308
+
1309
+ return fnTarget;
1235
1310
  }
1236
1311
 
1237
1312
  export const SAFE_CHAINABLE_PROXY = createSafeChainableProxy();
@@ -1461,15 +1536,6 @@ const previewUserBase: Record<string, unknown> = {
1461
1536
  },
1462
1537
  };
1463
1538
 
1464
- const previewUserProxy = new Proxy(previewUserBase, {
1465
- get(target, prop) {
1466
- if (prop in target) return target[prop as keyof typeof target];
1467
- if (prop === Symbol.toPrimitive) return () => 'Alex Morgan';
1468
- if (typeof prop === 'string') return '';
1469
- return undefined;
1470
- },
1471
- });
1472
-
1473
1539
  const previewColorsBase: Record<string, string> = {
1474
1540
  primary: '#2563EB',
1475
1541
  primaryLight: '#DBEAFE',
@@ -1501,21 +1567,14 @@ const previewColorsBase: Record<string, string> = {
1501
1567
  notification: '#EF4444',
1502
1568
  };
1503
1569
 
1504
- const previewColorsProxy = new Proxy(previewColorsBase, {
1505
- get(target, prop) {
1506
- if (prop in target) return target[prop as keyof typeof target];
1507
- return '#64748B';
1508
- },
1509
- });
1510
-
1511
- const safeContextFallbackBase: Record<string, unknown> = {
1512
- user: previewUserProxy,
1513
- currentUser: previewUserProxy,
1514
- profile: previewUserProxy,
1570
+ const safeContextFallbackBase: Record<string | symbol, unknown> = {
1571
+ user: previewUserBase,
1572
+ currentUser: previewUserBase,
1573
+ profile: previewUserBase,
1515
1574
  session: {
1516
1575
  access_token: 'preview-access-token',
1517
1576
  refresh_token: 'preview-refresh-token',
1518
- user: previewUserProxy,
1577
+ user: previewUserBase,
1519
1578
  },
1520
1579
  isAuthenticated: true,
1521
1580
  isLoggedIn: true,
@@ -1531,7 +1590,7 @@ const safeContextFallbackBase: Record<string, unknown> = {
1531
1590
  colorScheme: 'light',
1532
1591
  isDark: false,
1533
1592
  dark: false,
1534
- colors: previewColorsProxy,
1593
+ colors: previewColorsBase,
1535
1594
  items: STABLE_EMPTY_ARRAY,
1536
1595
  cart: STABLE_EMPTY_ARRAY,
1537
1596
  favorites: STABLE_EMPTY_ARRAY,
@@ -1549,12 +1608,12 @@ const safeContextFallbackBase: Record<string, unknown> = {
1549
1608
  count: 0,
1550
1609
  total: 0,
1551
1610
  balance: 0,
1552
- signIn: async () => ({ data: { user: previewUserProxy }, error: null }),
1553
- signUp: async () => ({ data: { user: previewUserProxy }, error: null }),
1611
+ signIn: async () => ({ data: { user: previewUserBase }, error: null }),
1612
+ signUp: async () => ({ data: { user: previewUserBase }, error: null }),
1554
1613
  signOut: async () => ({ error: null }),
1555
- login: async () => ({ data: { user: previewUserProxy }, error: null }),
1614
+ login: async () => ({ data: { user: previewUserBase }, error: null }),
1556
1615
  logout: async () => undefined,
1557
- register: async () => ({ data: { user: previewUserProxy }, error: null }),
1616
+ register: async () => ({ data: { user: previewUserBase }, error: null }),
1558
1617
  refresh: async () => undefined,
1559
1618
  refetch: async () => undefined,
1560
1619
  updateProfile: async () => ({ error: null }),
@@ -1562,18 +1621,13 @@ const safeContextFallbackBase: Record<string, unknown> = {
1562
1621
  setTheme: () => undefined,
1563
1622
  };
1564
1623
 
1565
- export const SAFE_CONTEXT_FALLBACK: Record<string, unknown> = new Proxy(safeContextFallbackBase, {
1566
- get(target, prop) {
1567
- if (prop in target) return target[prop as keyof typeof target];
1568
- if (prop === Symbol.iterator) {
1569
- return function* () {
1570
- yield SAFE_CONTEXT_FALLBACK;
1571
- yield () => undefined;
1572
- };
1573
- }
1574
- return SAFE_CHAINABLE_PROXY;
1575
- },
1576
- });
1624
+ safeContextFallbackBase[Symbol.iterator] = function* () {
1625
+ yield safeContextFallbackBase;
1626
+ yield () => undefined;
1627
+ };
1628
+
1629
+ export const SAFE_CONTEXT_FALLBACK: Record<string, unknown> =
1630
+ safeContextFallbackBase as Record<string, unknown>;
1577
1631
 
1578
1632
  // Install unmounted user-context fallback on React.createContext & React.useContext
1579
1633
  // (runs after react-native-web has already initialized its internal VirtualizedListContext)
@@ -1624,22 +1678,56 @@ try {
1624
1678
  // Ignore if React namespace is frozen in test environment
1625
1679
  }
1626
1680
 
1681
+ const SUPABASE_QUERY_METHODS = [
1682
+ 'select',
1683
+ 'insert',
1684
+ 'update',
1685
+ 'upsert',
1686
+ 'delete',
1687
+ 'eq',
1688
+ 'neq',
1689
+ 'gt',
1690
+ 'gte',
1691
+ 'lt',
1692
+ 'lte',
1693
+ 'like',
1694
+ 'ilike',
1695
+ 'is',
1696
+ 'in',
1697
+ 'contains',
1698
+ 'containedBy',
1699
+ 'rangeGt',
1700
+ 'rangeGte',
1701
+ 'rangeLt',
1702
+ 'rangeLte',
1703
+ 'rangeAdjacent',
1704
+ 'overlaps',
1705
+ 'textSearch',
1706
+ 'match',
1707
+ 'not',
1708
+ 'or',
1709
+ 'filter',
1710
+ 'order',
1711
+ 'limit',
1712
+ 'range',
1713
+ 'abortSignal',
1714
+ 'csv',
1715
+ 'returns',
1716
+ ];
1717
+
1627
1718
  function createSupabaseQueryBuilder(): Record<string, unknown> {
1628
1719
  const resultPromise = Promise.resolve({ data: [], error: null, count: 0 });
1629
- const builder: Record<string, unknown> = new Proxy(
1630
- {},
1631
- {
1632
- get(_target, prop) {
1633
- if (prop === 'then') return resultPromise.then.bind(resultPromise);
1634
- if (prop === 'catch') return resultPromise.catch.bind(resultPromise);
1635
- if (prop === 'finally') return resultPromise.finally.bind(resultPromise);
1636
- if (prop === 'single' || prop === 'maybeSingle') {
1637
- return async () => ({ data: null, error: null });
1638
- }
1639
- return () => builder;
1640
- },
1641
- }
1642
- );
1720
+ const builder: Record<string, unknown> = {
1721
+ then: resultPromise.then.bind(resultPromise),
1722
+ catch: resultPromise.catch.bind(resultPromise),
1723
+ finally: resultPromise.finally.bind(resultPromise),
1724
+ single: async () => ({ data: null, error: null }),
1725
+ maybeSingle: async () => ({ data: null, error: null }),
1726
+ };
1727
+ const returnSelf = () => builder;
1728
+ for (const method of SUPABASE_QUERY_METHODS) {
1729
+ builder[method] = returnSelf;
1730
+ }
1643
1731
  return builder;
1644
1732
  }
1645
1733
 
@@ -1777,19 +1865,5 @@ const defaultExportProperties = {
1777
1865
 
1778
1866
  Object.assign(UniversalDefaultExportComponent, defaultExportProperties);
1779
1867
 
1780
- const defaultExportProxy = new Proxy(UniversalDefaultExportComponent, {
1781
- get(target, prop) {
1782
- if (prop in target) {
1783
- return (target as unknown as Record<string | symbol, unknown>)[prop];
1784
- }
1785
- if (prop in defaultExportProperties) {
1786
- return defaultExportProperties[prop as keyof typeof defaultExportProperties];
1787
- }
1788
- if (typeof prop === 'string' && /^[A-Z]/.test(prop)) {
1789
- return createVectorIconComponent(prop);
1790
- }
1791
- return SAFE_CHAINABLE_PROXY;
1792
- },
1793
- });
1794
-
1795
- export default defaultExportProxy;
1868
+ export default UniversalDefaultExportComponent as typeof UniversalDefaultExportComponent &
1869
+ typeof defaultExportProperties;