1.1.3 • Published 12 months ago

@puppup/strapi-share v1.1.3

Weekly downloads
-
License
MIT
Repository
-
Last release
12 months ago

Содержание

О проекте

В проекте представлено решение, помогающее получить доступ к типам Strapi извне.

Проект построен на базе Strapi 5.

Перенос типов из Strapi

  1. Создать в корне проекта файл copyTypes.ts
// copyTypes.js

const copyStrapiTypes = require('@puppup/strapi-share').copyStrapiTypes;

copyStrapiTypes({
    // путь до папки проекта Strapi
    strapiPath: 'path/to/strapi',
    // путь, куда будут помещены сгенерированные типы
    destPath: './src/types/strapi',
});
  1. Добавить скрипт в package.json
// package.json

{
    ...
    "scripts": {
        "types": "node copyTypes.js"
    }
    ...
}
  1. Запустить скрипт в терминале
npm run types

Использование типов

Для правильного подтягивания типов необходимо установить пакет @strapi/strapi

import { APIResponse, APIResponseCollection, GetStrapiType } from '@puppup/strapi-share';
import { UID } from '@strapi/strapi'

// Использование типа, описывающего UID моделей
type StrapiModelUID = UID.ContentType | UID.Component;
const userSchemaUID: StrapiModelUID = 'plugin::users-permissions.user';

// Получение типа модели по его UID
type User = GetStrapiType<'plugin::users-permissions.user'>;

// Получение типа ответа Strapi на запрос по UID модели (одиночный)
type UserApi = APIResponse<'plugin::users-permissions.user'>;

// Получение типа ответа Strapi на запрос по UID модели (коллекция)
type UsersApi = APIResponseCollection<'plugin::users-permissions.user'>;

Интеграция с нашими продуктами

@puppup/api-factory

ApiStrapiTypes создает типы, которые можно использовать для типизации ApiFactory на базе стандартных ответов Strapi

import { Api, ApiFactory, ... } from '@puppup/api-factory';
import { ApiStrapiTypes } from '@pupppup/strapi-share';

...

// Использование утилиты для создания кастомных типов под Strapi
type ApiTypes = ApiStrapiTypes<'plugin::users-permissions.user'>;

// ApiFactory (singleton)
const apiFactory = new ApiFactory({
    baseUrl: 'base_url'
});
class UsersApi extends apiFactory.getApi<ApiTypes>('users') {}

// ApiFactory (no-singleton)
const { apis } = new ApiFactory({
    httpConfig: HTTP_CONFIG,
    apisConfig: {
        usersApi: {
            instance: Api<ApiTypes>,
            endpoint: 'users',
        },
    },
});
1.1.3

12 months ago

1.1.2

12 months ago

1.1.1

12 months ago

1.1.0

12 months ago

1.0.3

12 months ago

1.0.2

12 months ago

1.0.1

12 months ago

1.0.0

12 months ago