npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@lumir-company/admin-server-api

v1.2.11

Published

관리자 시스템을 위한 API SDK 패키지입니다.

Downloads

104

Readme

@lumir-company/admin-server-api

관리자 시스템을 위한 API SDK 패키지입니다.

설치

npm install @lumir-company/admin-server-api

사용법

인증

import { AuthAPI } from '@lumir-company/admin-server-api';

const authApi = new AuthAPI('http://your-api-url');

// 로그인
const token = await authApi.login({
    accountId: 'your-id',
    password: 'your-password',
});

공지사항 관리

import { NoticeAPI } from '@lumir-company/admin-server-api';

const noticeApi = new NoticeAPI('http://your-api-url');
noticeApi.setToken(token.accessToken);

// 공지사항 목록 조회
const { data } = await noticeApi.getNotices(1, 10);

// 공지사항 상세 조회
const notice = await noticeApi.getNoticeById('notice-id');

뉴스 관리

import { NewsAPI } from '@lumir-company/admin-server-api';

const newsApi = new NewsAPI('http://your-api-url');
newsApi.setToken(token.accessToken);

// 뉴스 목록 조회
const { data } = await newsApi.getNews(1, 10);

// 뉴스 상세 조회
const news = await newsApi.getNewsById('news-id');

보도자료 관리

import { PressReleaseAPI } from '@lumir-company/admin-server-api';

const pressReleaseApi = new PressReleaseAPI('http://your-api-url');
pressReleaseApi.setToken(token.accessToken);

// 보도자료 목록 조회
const { data } = await pressReleaseApi.getPressReleases(1, 10);

// 보도자료 상세 조회
const pressRelease =
    await pressReleaseApi.getPressReleaseById('press-release-id');

S3 파일 관리

import { S3API } from '@lumir-company/admin-server-api';

const s3Api = new S3API('http://your-api-url');
s3Api.setToken(token.accessToken);

// 파일 다운로드
const fileResponse = await s3Api.getFile('file-key', true);

페이지뷰 추적

import { PageViewAPI, PageName } from '@lumir-company/admin-server-api';

export enum PageName {
    MAIN = '메인 페이지',
    DISCLOSURE = '전자공고',
    SHAREHOLDER = '주주정보',
    NEWS = '루미르스토리',
    VIDEO = '영상',
    BROCHURE = '정보자료',
}

const pageViewApi = new PageViewAPI('http://your-api-url');
pageViewApi.setToken(token.accessToken);

// 페이지 진입 시 기록
await pageViewApi.createPageView({
    sessionId: 'user-session-id',
    pageName: PageName.MAIN,
    enterTime: new Date(),
    url: 'https://lumir.space/',
    title: '주식상장 이야기', // 페이지 Title
});

// 페이지 이탈 시 업데이트
await pageViewApi.updatePageView({
    sessionId: 'user-session-id',
    pageName: PageName.MAIN,
    exitTime: new Date(),
    stayDuration: 60000, // 밀리초 단위
    url: 'https://lumir.space/',
    title: '주식상장 이야기', // 페이지 Title
});

주주총회 관리

import { ShareholderMeetingAPI } from '@lumir-company/admin-server-api';

const shareholderMeetingApi = new ShareholderMeetingAPI('http://your-api-url');
shareholderMeetingApi.setToken(token.accessToken);

// 주주총회 목록 조회
const { data } = await shareholderMeetingApi.getMeetings(1, 10);

// 주주총회 상세 조회
const meeting = await shareholderMeetingApi.getMeetingById('meeting-id');

전자공고 관리

import { DisclosureAPI } from '@lumir-company/admin-server-api';

const disclosureApi = new DisclosureAPI('http://your-api-url');
disclosureApi.setToken(token.accessToken);

// 전자공고 목록 조회
const { data } = await disclosureApi.getDisclosures(1, 10);

// 전자공고 상세 조회
const disclosure = await disclosureApi.getDisclosureById('disclosure-id');

비디오 관리

import { VideoAPI } from '@lumir-company/admin-server-api';

const videoApi = new VideoAPI('http://your-api-url');
videoApi.setToken(token.accessToken);

// 비디오 목록 조회
const { data } = await videoApi.getVideos(1, 10);

// 비디오 상세 조회
const video = await videoApi.getVideoById('video-id');

브로슈어 관리

import { BrochureAPI } from '@lumir-company/admin-server-api';

const brochureApi = new BrochureAPI('http://your-api-url');
brochureApi.setToken(token.accessToken);

// 브로슈어 목록 조회
const { data } = await brochureApi.getBrochures(1, 10);

// 브로슈어 상세 조회
const brochure = await brochureApi.getBrochureById('brochure-id');

IR Material 관리

import { IRMaterialAPI } from '@lumir-company/admin-server-api';

const irMaterialApi = new IRMaterialAPI('http://your-api-url');
irMaterialApi.setToken(token.accessToken);

// IR 자료 목록 조회
const { items, total } = await irMaterialApi.getIRMaterials(1, 10);

// IR 자료 상세 조회
const irMaterial = await irMaterialApi.getIRMaterial('ir-material-id');

API 레퍼런스

AuthAPI

  • login({ accountId, password }): 로그인하여 토큰을 반환

NoticeAPI

  • setToken(token): API 요청에 사용할 토큰 설정
  • getNotices(page, limit): 공지사항 목록 조회
  • getNoticeById(id): 특정 공지사항 조회

NewsAPI

  • setToken(token): API 요청에 사용할 토큰 설정
  • getNews(page, limit): 뉴스 목록 조회
  • getNewsById(id): 특정 뉴스 조회

PressReleaseAPI

  • setToken(token): API 요청에 사용할 토큰 설정
  • getPressReleases(page, limit): 보도자료 목록 조회
  • getPressReleaseById(id): 특정 보도자료 조회

S3API

  • setToken(token): API 요청에 사용할 토큰 설정
  • getFile(key, download): 파일 다운로드/조회

PageViewAPI

  • createPageView(data): 페이지뷰 데이터 생성
  • updatePageView(data): 페이지뷰 데이터 업데이트 (종료 시간 및 체류 시간)

ShareholderMeetingAPI

  • setToken(token): API 요청에 사용할 토큰 설정
  • getMeetings(page, limit): 주주총회 목록 조회
  • getMeetingById(id): 특정 주주총회 조회

DisclosureAPI

  • setToken(token): API 요청에 사용할 토큰 설정
  • getDisclosures(page, limit): 전자공고 목록 조회
  • getDisclosureById(id): 특정 전자공고 조회

VideoAPI

  • setToken(token): API 요청에 사용할 토큰 설정
  • getVideos(page, limit): 비디오 목록 조회
  • getVideoById(id): 특정 비디오 조회

BrochureAPI

  • setToken(token): API 요청에 사용할 토큰 설정
  • getBrochures(page, limit): 브로슈어 목록 조회
  • getBrochureById(id): 특정 브로슈어 조회

IRMaterialAPI

  • setToken(token): API 요청에 사용할 토큰 설정
  • getIRMaterials(page, limit): IR 자료 목록 조회
  • getIRMaterial(id): 특정 IR 자료 조회

타입 레퍼런스

공통 타입

FileInfo

파일 정보를 나타내는 인터페이스

interface FileInfo {
    fileName: string; // 파일 이름
    filePath: string; // 파일 경로
}

Response

API 응답의 기본 형태

interface Response<T> {
    result: 'success' | 'fail'; // 응답 결과
    message: string; // 응답 메시지
    status: number; // HTTP 상태 코드
    data: T; // 응답 데이터
}

PaginationResponse

페이지네이션된 목록 응답

interface PaginationResponse<T> {
    items: T[]; // 아이템 목록
    total: number; // 전체 아이템 수
    page: number; // 현재 페이지
    limit: number; // 페이지당 아이템 수
    hasMore: boolean; // 다음 페이지 존재 여부
}

도메인별 타입

ShareholderMeeting

주주총회 정보

interface ShareholderMeeting {
    _id: string;
    title: string; // 제목
    content: string; // 내용
    date: string; // 개최일
    isPublic: boolean; // 공개 여부
    files: FileInfo[]; // 첨부파일
    order: number; // 정렬 순서
    createdAt: string; // 생성일
    updatedAt: string; // 수정일
}

Disclosure

전자공고 정보

interface Disclosure {
    _id: string;
    title: string; // 제목
    content: string; // 내용
    date: string; // 공고일
    isPublic: boolean; // 공개 여부
    files: FileInfo[]; // 첨부파일
    order: number; // 정렬 순서
    createdAt: string; // 생성일
    updatedAt: string; // 수정일
}

Category

비디오 카테고리 정보

interface Category {
    _id: string;
    name: string; // 카테고리명
    createdAt: string; // 생성일
    updatedAt: string; // 수정일
}

Video

비디오 정보

interface Video {
    _id: string;
    title: string; // 제목
    description?: string; // 설명
    link: string; // 비디오 링크
    files: FileInfo[]; // 첨부파일
    isPublic: boolean; // 공개 여부
    category: Category; // 카테고리
    order: number; // 정렬 순서
    createdAt: string; // 생성일
    updatedAt: string; // 수정일
}

Brochure

브로슈어 정보

interface Brochure {
    _id: string;
    title: string; // 제목
    description?: string; // 설명
    files: FileInfo[]; // 첨부파일
    isPublic: boolean; // 공개 여부
    order: number; // 정렬 순서
    createdAt: string; // 생성일
    updatedAt: string; // 수정일
}

PageName

페이지 식별자 열거형

enum PageName {
    MAIN = '메인 페이지',
    DISCLOSURE = '전자공고',
    SHAREHOLDER = '주주정보',
    NEWS = '루미르스토리',
    VIDEO = '영상',
    BROCHURE = '정보자료',
}

PageView

페이지뷰 추적 정보

interface PageView {
    _id: string;
    sessionId: string; // 세션 ID
    pageName: PageName; // 페이지 식별자
    enterTime: Date; // 진입 시간
    exitTime?: Date; // 이탈 시간
    stayDuration?: number; // 체류 시간(ms)
    url: string; // 페이지 URL
}

IRMaterial

IR 자료 정보

interface IRMaterial {
    _id: string;
    title: string; // 제목
    content?: string; // 내용
    files: FileInfo[]; // 첨부파일
    isPublic: boolean; // 공개 여부
    date: string; // 등록일
    order: number; // 정렬 순서
    createdAt: string; // 생성일
    updatedAt: string; // 수정일
}