Skip to content

maximum call stack error after upgrade 0.31.10 #1079

@ertucaglar

Description

@ertucaglar

What happened?

If I update to the latest version, I get a maximum call stack error, It works fine on version 0.31.5

spec definition:
fetchUserAlbums(userId: number): Promise<AlbumListItemModel[]>;

types:

export type AlbumTypesInline = 'Gallery' | 'Album' | 'CreateNewAlbum';
export type AlbumPrivacyTypesInline = 'Friends' | 'Private';
export type MediaOrderTypesInline =
  | 'Manuel'
  | 'ByCreationDate'
  | 'ByLastEditedDate';
export type MediaTypesInline = 'Image' | 'Video' | 'CreateNew' | 'Sound';

export type AlbumListItemModel = {
  albumId: number;
  name: string;
  mediaCount?: number | null;
  type: AlbumTypesInline;
  privacyType: AlbumPrivacyTypesInline;
  coverImage?: string | null;
  items?: UserGalleryListItem[] | null;
  isTaggedAlbum?: boolean;
  date?: number | null;
  createdAt?: number | null;
  updatedAt?: number | null;
  mediaOrderType?: MediaOrderTypesInline;
};

export type UserGalleryListItem = {
  galleryId: number;
  mediaId: number;
  mediaContainerId: number;
  uri: string;
  type: MediaTypesInline;
  createdAt: number;
  userId: number;
  tags?: GalleryItemTagModel[];
  albums?: SimpleAlbumListItemModel[];
  entity?: CollectionEntityListModel;
  caption?: string;
};

export type GalleryItemTagTypesInline = 'Entity' | 'User' | 'Group';
export type GalleryItemTagModel = {
  objectId: number;
  type: GalleryItemTagTypesInline;
  x: number;
  y: number;
  entity?: CollectionEntityListModel;
  user?: UserListItemModel;
  group?: GroupListItemModel;
};

export type CollectionTypeInline = 'Place' | 'Movie' | 'Book';
export type CollectionEntityListModel = {
  entityId: number;
  title: string;
  subTitle: string;
  collectionType: CollectionTypeInline;
  coverImage?: string;
  data?: CollectionEntityListModelData;
};

export type CollectionEntityListModelData = {
  externalGroupKey?: string;
  externalId?: string;
  latitude?: number;
  longitude?: number;
  city?: string;
  country?: string;
  countryCode?: string;
};

export interface UserListItemModel {
  key: string;
  userId: number;
  name: string;
  surname: string;
  profilePicture?: string | null;
  chatId?: string;
  userName?: string;
  commonCount?: number;
  collectionCount?: number;
  mutualFriendCount?: number;
  phoneNumberConfirmed?: boolean;
  lastInteractionTime?: number;
  friendStatus?: UserFriendStatusInline;
}

export type UserFriendStatusInline =
  | 'PendingSource'
  | 'PendingTarget'
  | 'AcceptedSource'
  | 'AcceptedTarget'
  | 'CancelledSource'
  | 'CancelledTarget'
  | 'BlockedSource'
  | 'BlockedTarget'
  | 'UnfriendTarget'
  | 'UnfriendSource';

export type GroupListItemModel = {
  key: string;
  groupMemberPreview?: string | null;
  memberCount?: number | null;
  createdAt: number;
  groupId: number;
  name: string;
  groupPicture?: string | null;
  description?: string | null;
  myMembershipState?: GroupMembershipTypeInline;
  myGroupRole?: GroupMemberRoleInline | null;
  privacy?: GroupPrivacyTypesInline;
  lastInteractionTime?: number;
};

export type GroupMembershipTypeInline =
  | 'Pending'
  | 'Accepted'
  | 'Banned'
  | 'None';

export type GroupMemberRoleInline =
  | 'Member'
  | 'Admin'
  | 'Creator'
  | 'KeyHolder';

export type GroupPrivacyTypesInline = 'Public' | 'Private';

export type SimpleAlbumListItemModel = {
  albumId: number;
  name: string;
};

Nitrogen CLI logs (with --logLevel="debug")

Parsing MediaService.nitro.ts...
    ⚙️   Generating specs for HybridObject "MediaService"...
          Failed to generate spec for MediaService! RangeError: Maximum call stack size exceeded
      No specs found in MediaService.nitro.ts!

Nitro Specs (.nitro.ts)

import type { HybridObject } from 'react-native-nitro-modules';
import type {
  AlbumItemOrderRequest,
  AlbumListItemModel,
  AlbumRequestModel,
  FetchLifeGalleryDetailsModel,
  UpdateGalleryItemModel,
  UserGalleryListItem,
} from '../types';
export interface MediaService
  extends HybridObject<{ ios: 'swift'; android: 'kotlin' }> {
  fetchMyAlbums(lastFetchTime?: number | null): Promise<void>;
  fetchMyGalleries(lastFetchTime?: number | null): Promise<void>;
  deleteGalleryItems(mediaIds: number[]): Promise<void>;
  updateGalleryItem(request: UpdateGalleryItemModel): Promise<void>;
  editAlbum(request: AlbumRequestModel): Promise<number>;
  createAlbum(request: AlbumRequestModel): Promise<number>;
  deleteAlbums(albumIds: number[]): Promise<void>;
  changeAlbumCoverImage(albumId: number, mediaId: number): Promise<void>;
  fetchGalleryDetails(
    request: FetchLifeGalleryDetailsModel
  ): Promise<UserGalleryListItem[]>;
  addGalleryToAlbum(albumId: number, mediaIds: number[]): Promise<void>;
  removeMediasFromAlbum(albumId: number, mediaIds: number[]): Promise<void>;
  createMediaUploadContainer(containerId: string): Promise<void>;
  completeUploadProgress(containerId: string): Promise<void>;
  fetchUserAlbumItems(
    userId: number,
    albumId: number,
    skip: number,
    take: number
  ): Promise<UserGalleryListItem[]>;
  fetchUserAlbums(userId: number): Promise<AlbumListItemModel[]>;
  fetchUserGalleryItems(
    userId: number,
    skip: number,
    take: number
  ): Promise<UserGalleryListItem[]>;
  fetchUsersTaggedAlbumById(userId: number): Promise<UserGalleryListItem[]>;
  updateAlbumItemsOrder(
    albumId: number,
    itemOrders: AlbumItemOrderRequest[]
  ): Promise<void>;
  updateTaggedAlbumPrivacy(showTaggedPhotoAlbum: boolean): Promise<void>;
}

Nitro Modules Version

0.31.10

Nitrogen Version

0.31.10

Operating system

MacOS

Additional information

Metadata

Metadata

Assignees

No one assigned

    Labels

    nitrogenIssue is related to the code-generator "Nitrogen"

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions