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 🙏

© 2025 – Pkg Stats / Ryan Hefner

sodas-legacy

v1.1.0

Published

SDK using SODAS API

Readme

🛠️ SODAS TS SDK

dist/index.node.js : for node dist/index.browser.js : for browser dist/index.legacy.js : for webpack version 4 [ especially for governace portal ]


📜 SODAS_SDK_CLASS Policy

  • 모든 SODAS_SDK_CLASS는 해당 클래스와 DTO 인터페이스를 가진다.
  • 모든 SODAS_SDK_CLASS 인스턴스는 CRUDL 기능을 제공하며, 인터페이스는 다음과 같다:
    • createDBRecord
    • getDBRecord
    • updateDBRecord
    • deleteDBRecord
    • listDBRecords
  • time 필드는 Backend API와의 통신 시 ISOFormat을 사용한다.
  • createDBRecord 메서드를 통해서만 ID와 IRI가 생성된다.
    • ID와 IRI가 이미 존재하는 경우, createDBRecord 호출이 불가능하며 updateDBRecord만 호출 가능하다.
  • deleteDBResource 호출 시 해당 객체는 기본생성인스턴스가 된다.
  • DCAT_MODEL의 경우 다음 필드들은 백엔드 create API 호출을 통해서만 생성된다:
    • ResourceType, ID, IRI, CreatedAt, DCAT_MODELID (e.g., DatasetID 등)

DCAT_RESOURCE - Thumbnail Policy

  • 모든 DCAT Resource CLASS는 Thumbnail 프로퍼티를 가진다.
  • Thumbnail 프로퍼티는 SODAS_SDK_FILE 클래스를 상속받은 ThumbnailFile 클래스의 인스턴스이다.
  • 이미 ThumbnailURL이 있는 경우 Thumbnail 필드를 설정하면 ThumbnailURL은 null로 설정된다.
  • Thumbnail은 DCAT_RESOURCE 인스턴스의 createDBRecord 메소드 호출 시 업로드된다. (단, Thumbnail의 업로드가 먼저 호출되므로 DCAT_RESOURCE.createDBRecord에서 에러가 발생할 경우 Thumbnail만 업로드될 가능성이 있다.)
  • 이미 DBRecord가 있으면서 Thumbnail을 설정한 경우에는 DCAT_RESOURCE 인스턴스의 updateDBRecord 메소드 호출 시 기존의 Thumbnail은 제거되고 새로운 Thumbnail을 연결한다.
  • Thumbnail은 DCAT_RESOURCE 인스턴스의 삭제 시 삭제된다.
  • SDK는 Thumbnail File의 생성요청의 책임을, SODAS_PROFILE 백엔드는 생성과 삭제의 책임을 가진다.

DCAT_RESOURCE - VersionInfo Policy

  • DCAT_RESOURCE 인스턴스는 createDBRecord/getDBRecord/updateDBRecord/listDBRecords를 통해 관련된 VersionInfo들을 불러온다.
  • createDBRecord/updateDBRecord/deleteDBRecord를 통해 새롭게 버전 정보가 변경돼도 인스턴스 간 VersionInfo는 동기화되지 않는다. 따라서 의식적으로 getDBRecord를 통한 동기화가 필요하다.

Distribution - UploadingData Policy

  • 모든 DCAT Distribution CLASS는 UploadingData 프로퍼티를 가진다.
  • UploadingData 프로퍼티는 SODAS_SDK_FILE 클래스를 상속받은 DataFile 클래스의 인스턴스이다.
  • 이미 DownloadURL 있는 경우 UploadingData 필드를 설정하면 DownloadURL은 null로 설정된다.
  • UploadingData는 Distribution 인스턴스의 createDBRecord 메소드 호출 시 업로드된다. (단, Data의 업로드가 먼저 호출되므로 Distribution.createDBRecord에서 에러가 발생할 경우 Data만 업로드될 가능성이 있다.)
  • 이미 DBRecord가 있으면서 UploadingData를 설정한 경우 updateDBRecord 메소드 호출 시 기존의 Object File은 제거되고 새로운 Object File을 DownloadURL과 연결한다.
  • UploadingData의 실제 Object File은 Distribution 인스턴스 삭제 시 삭제된다.
  • SDK는 Object File의 생성 요청의 책임을, SODAS_PROFILE 백엔드는 생성과 삭제의 책임을 가진다.

Dataset - Distribution Policy

  • Dataset의 메서드로 Dataset Instance와 연관된 Distributions를 만들 수 있다.
  • Dataset.createDBRecord를 통해 연관된 Distribution들의 createDBRecord가 호출되며, 최종적으로 Dataset과 Distribution 모두 ID와 IRI를 가지게 된다.
    • 이 시점에서 Distribution은 IsDistributionOf를 연관된 Dataset의 ID로 가지게 된다.
  • updateDBRecord 호출 시 하위 모든 Distribution의 updateDBRecord도 호출된다.
    • 새롭게 추가된 Distribution은 레코드를 새롭게 만들고, 연결이 끊어진 Distribution은 삭제된다.
  • deleteDBResource 호출 시 Dataset과 연관된 모든 Distribution은 DB에서 삭제되며 인스턴스들은 기본생성인스턴스가 된다.

DatasetSeries - Dataset Policy

  • DatasetSeries는 createDBRecord/getDBRecord/updateDBRecord/listDBRecords를 통해 관련된 seriesMembers(Dataset)들을 불러온다.
  • DatasetSeries는 seriesMemberIDs 필드로 Dataset의 순서와 관계를 관리한다.
  • deleteDBRecord 호출 시 DatasetSeries만 DB에서 삭제되며, 관련된 Dataset 인스턴스는 기본생성인스턴스로 초기화된다.

🧪 CRUDL Test Policy

Test Levels

  • Small 테스트: 클래스 자체의 메서드 테스트
  • Medium 테스트: SDK와 백엔드의 통합 테스트
  • Big 테스트: 사용자 시나리오 엔드투엔드 테스트 (현재는 없음)

🟢 1. CREATE

✅ 테스트 케이스:

  • ForeignKey 필드를 제외한 모든 필드 중 하나만 null 값으로 설정한 케이스를 테스트한다.

📝 테스트 정책:

  1. DTO를 기반으로 인스턴스를 세팅한다.
  2. createDBRecord 호출 후 ID와 IRI 생성 여부를 확인한다.
  3. API 결과와 인스턴스를 비교한다.
  4. ID와 IRI가 설정된 인스턴스에서 createDBRecord 호출 시 에러 발생을 확인한다.

🟢 2. GET

✅ 테스트 케이스:

  • ForeignKey 필드를 제외한 모든 필드 중 하나만 null 값으로 설정한 케이스를 테스트한다.

📝 테스트 정책:

  1. DTO를 기반으로 인스턴스를 세팅한다.
  2. createDBRecord로 인스턴스를 생성한다.
  3. getDBRecord로 생성된 인스턴스를 가져온다.
  4. 생성 및 조회된 인스턴스를 비교한다.

🟢 3. UPDATE

✅ 테스트 케이스:

  • ForeignKey 필드를 제외한 모든 필드 중 하나만 null 값으로 설정한 케이스를 테스트한다.

📝 테스트 정책:

  1. 모든 필드가 채워진 인스턴스를 세팅한다.
  2. ID와 IRI가 없는 인스턴스에서 updateDBRecord 호출 시 에러 발생을 확인한다.
  3. createDBRecord로 인스턴스를 생성한다.
  4. DTO를 기반으로 인스턴스를 재설정한다.
  5. updateDBRecord로 인스턴스를 업데이트한다.
  6. API 결과와 인스턴스를 비교한다.

🟢 4. DELETE

✅ 테스트 케이스:

  • 모든 필드가 채워진 케이스 하나로 테스트한다.

📝 테스트 정책:

  1. 모든 필드가 채워진 인스턴스를 세팅한다.
  2. createDBRecord로 인스턴스를 생성한다.
  3. 생성된 인스턴스를 복사한다.
  4. deleteDBRecord로 인스턴스를 삭제한다.
  5. 삭제된 인스턴스의 모든 필드가 null인지 확인한다.
  6. 복사된 인스턴스에서 deleteDBRecord 호출 시 에러 발생을 확인한다.

🟢 5. LIST

✅ 테스트 케이스:

  • 모든 필드가 채워진 인스턴스 12개를 만들고, 페이지 수 5개로 테스트한다.

📝 테스트 정책:

  1. 지정된 갯수만큼 인스턴스를 생성하고 저장한다.
  2. listDBRecords를 ASC 및 DESC 방식으로 호출하고 총 수량과 순서를 비교한다.

🧪 SODAS_SDK_FILE Test Policy

📝 테스트 정책:

  1. SODAS_SDK_FILE.upload() 호출 후 파일을 업로드한다.
  2. **getDownloadURL()**로 다운로드 URL을 확인하고, 원본 파일과 동일한지 확인한다.
  3. SODAS_SDK_FILE.remove() 호출 후 삭제 및 URL 유효성 확인.