@nojaja/filecontainer
v1.0.6
Published
File container and management utility class for JavaScript applications
Maintainers
Readme
FileContainer
JavaScript/TypeScript向けのファイル管理ユーティリティライブラリです。
@nojaja/filecontainer は、ファイルの追加・削除・コピー・リネーム、エディタ連携、Gistデータ生成、Service Workerキャッシュ公開などの機能を提供します。
主要コンポーネント
FileContainer- 複数ファイルをまとめて管理するコンテナ
- ファイルツリーの取得、ファイル操作、イベント通知、Gist連携などを提供
FileData- 単一ファイルのメタデータとコンテンツを管理
- MIMEタイプ・言語の自動判定、JSONシリアライズ対応
EditorFileDataFileDataを拡張し、Monaco Editorモデル同期をサポート
PublishFileContainerFileContainerを拡張し、公開パス配下のファイルをService Workerキャッシュへ保存
インストール
npm install @nojaja/filecontainer使い方
import { FileContainer, FileData } from '@nojaja/filecontainer'
const container = new FileContainer()
const file = new FileData({ filename: 'example.txt', content: 'Hello FileContainer!' })
await container.putFile(file)
console.log(container.existFile('example.txt')) // true
const opened = container.openFile('example.txt')
if (opened) {
opened.setContent('Updated content')
await container.saveFile('example.txt')
}
console.log(container.getFileRaw('example.txt'))主なAPI
FileContainer
setId(id: string): voidgetId(): string | numbersetProjectName(projectName: string): voidgetProjectName(): string | nullgetDirectories(parentPath?: string | null): PathEntry[]getFiles(parentPath?: string | null, all?: boolean): PathEntry[]getOpenFiles(parentPath?: string | null): string[]existFile(filename: string): booleangetFile(filename: string, fileCls?: any, ...constructorParam: any[]): FileData | nullgetFileRaw(filename: string): FileDataRaw | nullopenFile(filename: string, fileCls?: any, ...constructorParam: any[]): FileData | nullcloseFile(filename: string): FileData | nullsaveFile(filename: string): Promise<boolean> | falseputFile(file: FileData): Promise<boolean>copyFile(src: string, dest: string, mode?: number): booleanrenameFile(filename: string, newName: string): booleanremoveFile(filename: string): booleanclear(): voidinit(): voidsetPublic(bool: boolean): voidgetPublic(): boolean | nullsetDescription(description: string): voidgetDescription(): string | nullsetContainer(container: ContainerData): voidgetContainer(): ContainerData | nullsetContainerJson(container: string): voidgetContainerJson(): stringgetGistData(): objectgetGistJsonData(): stringgetCreatedTime(): numbergetLastUpdatedTime(): numbersetCreatedTime(createdTime: number): voidsetLastUpdatedTime(lastUpdatedTime: number): void
FileData
constructor(file?: Partial<FileDataRaw> | FileData)setLanguage(language: string): voidgetLanguage(): stringsetFileType(fileType: string): voidgetFileType(): stringsetType(type: string): voidgetType(): stringgetSize(): numbersetContent(content: string): stringgetContent(): stringsetFilename(filename: string): voidgetFilename(): stringsetDescription(description: string): voidgetDescription(): stringgetFileData(): FileDataRawgetFileDataJson(): stringremove(): void
開発とビルド
スクリプト
npm run build- Webpackでバンドルを生成npm run test- Webpackビルド後にJestでカバレッジ付きテスト実行npm run test:ci- CI向けにカバレッジ収集付きテスト実行npm run lint-src/に対してESLint実行npm run type-check- TypeScript型チェックnpm run docs- TypeDocでMarkdown形式のAPIドキュメント生成npm run dev/npm start- Webpack--watchで開発ビルド
ビルド構成
webpack.config.jsでsrc/index.tsをエントリとし、dist/bundle.jsを出力- Babelは
@babel/preset-envと@babel/preset-typescriptを使用 - Jestは
babel-jestでsrc/**/*.tsをトランスパイル
ドキュメント
- TypeDoc設定は
typedoc.json - 出力先は
docs/typedoc-md
テスト
- 単体テスト:
tests/unit/**/*.spec.js - カバレッジテスト:
tests/coverage/**/*.spec.js - カバレッジ判定は
jest.coverage.config.jsで50%以上に設定
依存関係
@babel/core,@babel/preset-env,@babel/preset-typescriptbabel-jest,babel-loadercross-env,eslint,typescript,webpack,webpack-clijest,ts-jest,typedoc,typedoc-plugin-markdown
ライセンス
MIT
