From f765207a20e592c34d8d12fbe25e8ddbfabbb738 Mon Sep 17 00:00:00 2001 From: TheoryOfNekomata Date: Mon, 30 Nov 2020 10:26:48 +0800 Subject: [PATCH] Split packages Use monorepo structure for app, core, and plugin projects. --- .gitignore | 12 +++--- .babelrc => packages/app/.babelrc | 0 .sequelizerc => packages/app/.sequelizerc | 0 README.md => packages/app/README.md | 0 {config => packages/app/config}/config.js | 0 migrate.ts => packages/app/migrate.ts | 0 next-env.d.ts => packages/app/next-env.d.ts | 0 next.config.js => packages/app/next.config.js | 0 package.json => packages/app/package.json | 2 +- {public => packages/app/public}/favicon.ico | Bin {public => packages/app/public}/vercel.svg | 0 {src => packages/app/src}/assets/global.css | 0 .../app/src}/assets/mobiledoc.css | 0 {src => packages/app/src}/assets/theme.css | 0 .../app/src}/components/Editor/Editor.tsx | 0 .../app/src}/components/Icon/Icon.tsx | 0 .../app/src}/components/Navbar/Navbar.tsx | 0 .../PrimaryNavItem/PrimaryNavItem.tsx | 0 .../SecondaryNavItem/SecondaryNavItem.tsx | 0 .../app/src}/controllers/Folder.ts | 0 {src => packages/app/src}/controllers/Note.ts | 0 {src => packages/app/src}/models.ts | 0 {src => packages/app/src}/models/Folder.ts | 0 {src => packages/app/src}/models/Note.ts | 0 {src => packages/app/src}/models/Operation.ts | 0 {src => packages/app/src}/models/Tag.ts | 0 .../app/src}/models/Transaction.ts | 0 {src => packages/app/src}/pages/_app.tsx | 0 {src => packages/app/src}/pages/_document.tsx | 0 .../app/src}/pages/api/folders.ts | 0 .../app/src}/pages/api/folders/[id].ts | 0 {src => packages/app/src}/pages/api/notes.ts | 0 .../app/src}/pages/api/notes/[id].ts | 0 {src => packages/app/src}/pages/notes.tsx | 0 .../app/src}/pages/notes/[id].tsx | 0 {src => packages/app/src}/seeds.ts | 0 .../app/src}/services/LocalStorage.ts | 0 .../app/src}/services/Operation.ts | 0 {src => packages/app/src}/services/Storage.ts | 0 .../app/src}/services/entities/Folder.ts | 0 .../app/src}/services/entities/Note.ts | 0 .../app/src}/utilities/ColumnTypes.ts | 0 {src => packages/app/src}/utilities/Date.ts | 0 {src => packages/app/src}/utilities/Id.ts | 0 {src => packages/app/src}/utilities/ORM.ts | 0 .../app/src}/utilities/Response.ts | 0 .../app/src}/utilities/Serialization.ts | 0 tsconfig.json => packages/app/tsconfig.json | 0 yarn.lock => packages/app/yarn.lock | 0 .../app/zeichen.config.ts | 4 +- packages/core/plugin.ts | 5 +++ .../Storage.ts => packages/core/storage.ts | 2 +- .../plugin-local-storage}/Engine.ts | 0 .../plugin-local-storage}/Storage.ts | 10 ++--- packages/plugin-local-storage/index.ts | 13 +++++++ packages/plugin-local-storage/package.json | 12 ++++++ packages/plugin-local-storage/tsconfig.json | 35 ++++++++++++++++++ .../plugin-remote-storage}/Engine.ts | 2 +- .../plugin-remote-storage}/Storage.ts | 6 +-- .../plugin-remote-storage}/index.ts | 11 ++---- packages/plugin-remote-storage/package.json | 12 ++++++ packages/plugin-remote-storage/tsconfig.json | 35 ++++++++++++++++++ src/plugins/local-storage/index.ts | 18 --------- 63 files changed, 135 insertions(+), 44 deletions(-) rename .babelrc => packages/app/.babelrc (100%) rename .sequelizerc => packages/app/.sequelizerc (100%) rename README.md => packages/app/README.md (100%) rename {config => packages/app/config}/config.js (100%) rename migrate.ts => packages/app/migrate.ts (100%) rename next-env.d.ts => packages/app/next-env.d.ts (100%) rename next.config.js => packages/app/next.config.js (100%) rename package.json => packages/app/package.json (97%) rename {public => packages/app/public}/favicon.ico (100%) rename {public => packages/app/public}/vercel.svg (100%) rename {src => packages/app/src}/assets/global.css (100%) rename {src => packages/app/src}/assets/mobiledoc.css (100%) rename {src => packages/app/src}/assets/theme.css (100%) rename {src => packages/app/src}/components/Editor/Editor.tsx (100%) rename {src => packages/app/src}/components/Icon/Icon.tsx (100%) rename {src => packages/app/src}/components/Navbar/Navbar.tsx (100%) rename {src => packages/app/src}/components/PrimaryNavItem/PrimaryNavItem.tsx (100%) rename {src => packages/app/src}/components/SecondaryNavItem/SecondaryNavItem.tsx (100%) rename {src => packages/app/src}/controllers/Folder.ts (100%) rename {src => packages/app/src}/controllers/Note.ts (100%) rename {src => packages/app/src}/models.ts (100%) rename {src => packages/app/src}/models/Folder.ts (100%) rename {src => packages/app/src}/models/Note.ts (100%) rename {src => packages/app/src}/models/Operation.ts (100%) rename {src => packages/app/src}/models/Tag.ts (100%) rename {src => packages/app/src}/models/Transaction.ts (100%) rename {src => packages/app/src}/pages/_app.tsx (100%) rename {src => packages/app/src}/pages/_document.tsx (100%) rename {src => packages/app/src}/pages/api/folders.ts (100%) rename {src => packages/app/src}/pages/api/folders/[id].ts (100%) rename {src => packages/app/src}/pages/api/notes.ts (100%) rename {src => packages/app/src}/pages/api/notes/[id].ts (100%) rename {src => packages/app/src}/pages/notes.tsx (100%) rename {src => packages/app/src}/pages/notes/[id].tsx (100%) rename {src => packages/app/src}/seeds.ts (100%) rename {src => packages/app/src}/services/LocalStorage.ts (100%) rename {src => packages/app/src}/services/Operation.ts (100%) rename {src => packages/app/src}/services/Storage.ts (100%) rename {src => packages/app/src}/services/entities/Folder.ts (100%) rename {src => packages/app/src}/services/entities/Note.ts (100%) rename {src => packages/app/src}/utilities/ColumnTypes.ts (100%) rename {src => packages/app/src}/utilities/Date.ts (100%) rename {src => packages/app/src}/utilities/Id.ts (100%) rename {src => packages/app/src}/utilities/ORM.ts (100%) rename {src => packages/app/src}/utilities/Response.ts (100%) rename {src => packages/app/src}/utilities/Serialization.ts (100%) rename tsconfig.json => packages/app/tsconfig.json (100%) rename yarn.lock => packages/app/yarn.lock (100%) rename zeichen.config.ts => packages/app/zeichen.config.ts (51%) create mode 100644 packages/core/plugin.ts rename src/services/storages/Storage.ts => packages/core/storage.ts (91%) rename {src/plugins/local-storage => packages/plugin-local-storage}/Engine.ts (100%) rename {src/plugins/local-storage => packages/plugin-local-storage}/Storage.ts (83%) create mode 100644 packages/plugin-local-storage/index.ts create mode 100644 packages/plugin-local-storage/package.json create mode 100644 packages/plugin-local-storage/tsconfig.json rename {src/plugins/remote-storage => packages/plugin-remote-storage}/Engine.ts (96%) rename {src/plugins/remote-storage => packages/plugin-remote-storage}/Storage.ts (78%) rename {src/plugins/remote-storage => packages/plugin-remote-storage}/index.ts (58%) create mode 100644 packages/plugin-remote-storage/package.json create mode 100644 packages/plugin-remote-storage/tsconfig.json delete mode 100644 src/plugins/local-storage/index.ts diff --git a/.gitignore b/.gitignore index 8c4004c..a1df1c9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,19 +1,19 @@ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. # dependencies -/node_modules -/.pnp +node_modules/ +.pnp/ .pnp.js # testing -/coverage +coverage/ # next.js -/.next/ -/out/ +.next/ +out/ # production -/build +build/ # misc .DS_Store diff --git a/.babelrc b/packages/app/.babelrc similarity index 100% rename from .babelrc rename to packages/app/.babelrc diff --git a/.sequelizerc b/packages/app/.sequelizerc similarity index 100% rename from .sequelizerc rename to packages/app/.sequelizerc diff --git a/README.md b/packages/app/README.md similarity index 100% rename from README.md rename to packages/app/README.md diff --git a/config/config.js b/packages/app/config/config.js similarity index 100% rename from config/config.js rename to packages/app/config/config.js diff --git a/migrate.ts b/packages/app/migrate.ts similarity index 100% rename from migrate.ts rename to packages/app/migrate.ts diff --git a/next-env.d.ts b/packages/app/next-env.d.ts similarity index 100% rename from next-env.d.ts rename to packages/app/next-env.d.ts diff --git a/next.config.js b/packages/app/next.config.js similarity index 100% rename from next.config.js rename to packages/app/next.config.js diff --git a/package.json b/packages/app/package.json similarity index 97% rename from package.json rename to packages/app/package.json index d85479a..e29aac0 100644 --- a/package.json +++ b/packages/app/package.json @@ -1,5 +1,5 @@ { - "name": "note.modal.sh", + "name": "zeichen-app", "version": "0.1.0", "private": true, "scripts": { diff --git a/public/favicon.ico b/packages/app/public/favicon.ico similarity index 100% rename from public/favicon.ico rename to packages/app/public/favicon.ico diff --git a/public/vercel.svg b/packages/app/public/vercel.svg similarity index 100% rename from public/vercel.svg rename to packages/app/public/vercel.svg diff --git a/src/assets/global.css b/packages/app/src/assets/global.css similarity index 100% rename from src/assets/global.css rename to packages/app/src/assets/global.css diff --git a/src/assets/mobiledoc.css b/packages/app/src/assets/mobiledoc.css similarity index 100% rename from src/assets/mobiledoc.css rename to packages/app/src/assets/mobiledoc.css diff --git a/src/assets/theme.css b/packages/app/src/assets/theme.css similarity index 100% rename from src/assets/theme.css rename to packages/app/src/assets/theme.css diff --git a/src/components/Editor/Editor.tsx b/packages/app/src/components/Editor/Editor.tsx similarity index 100% rename from src/components/Editor/Editor.tsx rename to packages/app/src/components/Editor/Editor.tsx diff --git a/src/components/Icon/Icon.tsx b/packages/app/src/components/Icon/Icon.tsx similarity index 100% rename from src/components/Icon/Icon.tsx rename to packages/app/src/components/Icon/Icon.tsx diff --git a/src/components/Navbar/Navbar.tsx b/packages/app/src/components/Navbar/Navbar.tsx similarity index 100% rename from src/components/Navbar/Navbar.tsx rename to packages/app/src/components/Navbar/Navbar.tsx diff --git a/src/components/PrimaryNavItem/PrimaryNavItem.tsx b/packages/app/src/components/PrimaryNavItem/PrimaryNavItem.tsx similarity index 100% rename from src/components/PrimaryNavItem/PrimaryNavItem.tsx rename to packages/app/src/components/PrimaryNavItem/PrimaryNavItem.tsx diff --git a/src/components/SecondaryNavItem/SecondaryNavItem.tsx b/packages/app/src/components/SecondaryNavItem/SecondaryNavItem.tsx similarity index 100% rename from src/components/SecondaryNavItem/SecondaryNavItem.tsx rename to packages/app/src/components/SecondaryNavItem/SecondaryNavItem.tsx diff --git a/src/controllers/Folder.ts b/packages/app/src/controllers/Folder.ts similarity index 100% rename from src/controllers/Folder.ts rename to packages/app/src/controllers/Folder.ts diff --git a/src/controllers/Note.ts b/packages/app/src/controllers/Note.ts similarity index 100% rename from src/controllers/Note.ts rename to packages/app/src/controllers/Note.ts diff --git a/src/models.ts b/packages/app/src/models.ts similarity index 100% rename from src/models.ts rename to packages/app/src/models.ts diff --git a/src/models/Folder.ts b/packages/app/src/models/Folder.ts similarity index 100% rename from src/models/Folder.ts rename to packages/app/src/models/Folder.ts diff --git a/src/models/Note.ts b/packages/app/src/models/Note.ts similarity index 100% rename from src/models/Note.ts rename to packages/app/src/models/Note.ts diff --git a/src/models/Operation.ts b/packages/app/src/models/Operation.ts similarity index 100% rename from src/models/Operation.ts rename to packages/app/src/models/Operation.ts diff --git a/src/models/Tag.ts b/packages/app/src/models/Tag.ts similarity index 100% rename from src/models/Tag.ts rename to packages/app/src/models/Tag.ts diff --git a/src/models/Transaction.ts b/packages/app/src/models/Transaction.ts similarity index 100% rename from src/models/Transaction.ts rename to packages/app/src/models/Transaction.ts diff --git a/src/pages/_app.tsx b/packages/app/src/pages/_app.tsx similarity index 100% rename from src/pages/_app.tsx rename to packages/app/src/pages/_app.tsx diff --git a/src/pages/_document.tsx b/packages/app/src/pages/_document.tsx similarity index 100% rename from src/pages/_document.tsx rename to packages/app/src/pages/_document.tsx diff --git a/src/pages/api/folders.ts b/packages/app/src/pages/api/folders.ts similarity index 100% rename from src/pages/api/folders.ts rename to packages/app/src/pages/api/folders.ts diff --git a/src/pages/api/folders/[id].ts b/packages/app/src/pages/api/folders/[id].ts similarity index 100% rename from src/pages/api/folders/[id].ts rename to packages/app/src/pages/api/folders/[id].ts diff --git a/src/pages/api/notes.ts b/packages/app/src/pages/api/notes.ts similarity index 100% rename from src/pages/api/notes.ts rename to packages/app/src/pages/api/notes.ts diff --git a/src/pages/api/notes/[id].ts b/packages/app/src/pages/api/notes/[id].ts similarity index 100% rename from src/pages/api/notes/[id].ts rename to packages/app/src/pages/api/notes/[id].ts diff --git a/src/pages/notes.tsx b/packages/app/src/pages/notes.tsx similarity index 100% rename from src/pages/notes.tsx rename to packages/app/src/pages/notes.tsx diff --git a/src/pages/notes/[id].tsx b/packages/app/src/pages/notes/[id].tsx similarity index 100% rename from src/pages/notes/[id].tsx rename to packages/app/src/pages/notes/[id].tsx diff --git a/src/seeds.ts b/packages/app/src/seeds.ts similarity index 100% rename from src/seeds.ts rename to packages/app/src/seeds.ts diff --git a/src/services/LocalStorage.ts b/packages/app/src/services/LocalStorage.ts similarity index 100% rename from src/services/LocalStorage.ts rename to packages/app/src/services/LocalStorage.ts diff --git a/src/services/Operation.ts b/packages/app/src/services/Operation.ts similarity index 100% rename from src/services/Operation.ts rename to packages/app/src/services/Operation.ts diff --git a/src/services/Storage.ts b/packages/app/src/services/Storage.ts similarity index 100% rename from src/services/Storage.ts rename to packages/app/src/services/Storage.ts diff --git a/src/services/entities/Folder.ts b/packages/app/src/services/entities/Folder.ts similarity index 100% rename from src/services/entities/Folder.ts rename to packages/app/src/services/entities/Folder.ts diff --git a/src/services/entities/Note.ts b/packages/app/src/services/entities/Note.ts similarity index 100% rename from src/services/entities/Note.ts rename to packages/app/src/services/entities/Note.ts diff --git a/src/utilities/ColumnTypes.ts b/packages/app/src/utilities/ColumnTypes.ts similarity index 100% rename from src/utilities/ColumnTypes.ts rename to packages/app/src/utilities/ColumnTypes.ts diff --git a/src/utilities/Date.ts b/packages/app/src/utilities/Date.ts similarity index 100% rename from src/utilities/Date.ts rename to packages/app/src/utilities/Date.ts diff --git a/src/utilities/Id.ts b/packages/app/src/utilities/Id.ts similarity index 100% rename from src/utilities/Id.ts rename to packages/app/src/utilities/Id.ts diff --git a/src/utilities/ORM.ts b/packages/app/src/utilities/ORM.ts similarity index 100% rename from src/utilities/ORM.ts rename to packages/app/src/utilities/ORM.ts diff --git a/src/utilities/Response.ts b/packages/app/src/utilities/Response.ts similarity index 100% rename from src/utilities/Response.ts rename to packages/app/src/utilities/Response.ts diff --git a/src/utilities/Serialization.ts b/packages/app/src/utilities/Serialization.ts similarity index 100% rename from src/utilities/Serialization.ts rename to packages/app/src/utilities/Serialization.ts diff --git a/tsconfig.json b/packages/app/tsconfig.json similarity index 100% rename from tsconfig.json rename to packages/app/tsconfig.json diff --git a/yarn.lock b/packages/app/yarn.lock similarity index 100% rename from yarn.lock rename to packages/app/yarn.lock diff --git a/zeichen.config.ts b/packages/app/zeichen.config.ts similarity index 51% rename from zeichen.config.ts rename to packages/app/zeichen.config.ts index d3b94a2..8fbd779 100644 --- a/zeichen.config.ts +++ b/packages/app/zeichen.config.ts @@ -1,5 +1,5 @@ -import LocalStorage from './src/plugins/local-storage' -import RemoteStorage from './src/plugins/remote-storage' +import LocalStorage from '../plugin-local-storage' +import RemoteStorage from '../plugin-remote-storage' export default { plugins: [ diff --git a/packages/core/plugin.ts b/packages/core/plugin.ts new file mode 100644 index 0000000..0e7ef4a --- /dev/null +++ b/packages/core/plugin.ts @@ -0,0 +1,5 @@ +export type State = { + currentUserId: string, +} + +export type Plugin = (config: T) => (state: State) => void diff --git a/src/services/storages/Storage.ts b/packages/core/storage.ts similarity index 91% rename from src/services/storages/Storage.ts rename to packages/core/storage.ts index 94f2bd9..fbb7d40 100644 --- a/src/services/storages/Storage.ts +++ b/packages/core/storage.ts @@ -4,7 +4,7 @@ export default interface Storage { deleteItem(item: T): Promise } -export interface StorageMeta { +export interface Collection { items: T[], lastModifiedBy: string, lastModifiedAt: Date, diff --git a/src/plugins/local-storage/Engine.ts b/packages/plugin-local-storage/Engine.ts similarity index 100% rename from src/plugins/local-storage/Engine.ts rename to packages/plugin-local-storage/Engine.ts diff --git a/src/plugins/local-storage/Storage.ts b/packages/plugin-local-storage/Storage.ts similarity index 83% rename from src/plugins/local-storage/Storage.ts rename to packages/plugin-local-storage/Storage.ts index 1cae26e..ae254a5 100644 --- a/src/plugins/local-storage/Storage.ts +++ b/packages/plugin-local-storage/Storage.ts @@ -1,15 +1,15 @@ -import Storage, { StorageMeta, OutOfSyncError } from '../../services/storages/Storage' +import Storage, { Collection, OutOfSyncError } from '../core/storage' import Engine from './Engine' export default class LocalStorage implements Storage { - private readonly engine: Engine> + private readonly engine: Engine> constructor( private readonly ownerId: string, private readonly storageId: string, private readonly getItemId = item => item['id'], ) { - this.engine = new Engine>(window.localStorage) + this.engine = new Engine>(window.localStorage) } private getMeta() { @@ -31,7 +31,7 @@ export default class LocalStorage implements Storage { async saveItem(newItem: T) { const oldMeta = this.getMeta() const isExistingItem = oldMeta.items.some(this.existenceCheck(newItem)) - const newMeta: StorageMeta = { + const newMeta: Collection = { items: isExistingItem ? oldMeta.items.map(oldItem => this.existenceCheck(newItem)(oldItem) ? newItem : oldItem) : [...oldMeta.items, newItem], @@ -44,7 +44,7 @@ export default class LocalStorage implements Storage { async deleteItem(newItem: T) { const oldMeta = this.getMeta() const newItems = oldMeta.items.filter(oldItem => !this.existenceCheck(newItem)(oldItem)) - const newMeta: StorageMeta = { + const newMeta: Collection = { items: newItems, lastModifiedBy: this.ownerId, lastModifiedAt: new Date(), diff --git a/packages/plugin-local-storage/index.ts b/packages/plugin-local-storage/index.ts new file mode 100644 index 0000000..dabc2b5 --- /dev/null +++ b/packages/plugin-local-storage/index.ts @@ -0,0 +1,13 @@ +import { Plugin } from '../core/plugin' +import Storage from './Storage' + +type PluginConfig = {} + +const LocalStoragePlugin: Plugin = config => ({ + currentUserId, +}) => { + new Storage(currentUserId, 'notes') + new Storage(currentUserId, 'folders') +} + +export default LocalStoragePlugin diff --git a/packages/plugin-local-storage/package.json b/packages/plugin-local-storage/package.json new file mode 100644 index 0000000..3fdf087 --- /dev/null +++ b/packages/plugin-local-storage/package.json @@ -0,0 +1,12 @@ +{ + "name": "zeichen-plugin-local-storage", + "author": "TheoryOfNekomata ", + "version": "0.1.0", + "description": "Save and load notes using the browser's local storage.", + "keywords": [ + "zeichen", + "plugin", + "storage", + "local" + ] +} diff --git a/packages/plugin-local-storage/tsconfig.json b/packages/plugin-local-storage/tsconfig.json new file mode 100644 index 0000000..fd7783c --- /dev/null +++ b/packages/plugin-local-storage/tsconfig.json @@ -0,0 +1,35 @@ +{ + "compilerOptions": { + "target": "es6", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "preserve", + "declaration": true, + "declarationDir": "./dist", + "sourceMap": true, + "strict": false + }, + "exclude": [ + "node_modules", + "**/*.test.ts", + "**/*.test.tsx" + ], + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx" + ] +} diff --git a/src/plugins/remote-storage/Engine.ts b/packages/plugin-remote-storage/Engine.ts similarity index 96% rename from src/plugins/remote-storage/Engine.ts rename to packages/plugin-remote-storage/Engine.ts index 9b3800e..13124b6 100644 --- a/src/plugins/remote-storage/Engine.ts +++ b/packages/plugin-remote-storage/Engine.ts @@ -1,4 +1,4 @@ -import { Deserializer, Serializer } from '../../services/storages/Storage' +import { Deserializer, Serializer } from '../core/storage' const CREATED = 201 const NO_CONTENT = 204 diff --git a/src/plugins/remote-storage/Storage.ts b/packages/plugin-remote-storage/Storage.ts similarity index 78% rename from src/plugins/remote-storage/Storage.ts rename to packages/plugin-remote-storage/Storage.ts index d10b144..c02f0cf 100644 --- a/src/plugins/remote-storage/Storage.ts +++ b/packages/plugin-remote-storage/Storage.ts @@ -1,8 +1,8 @@ -import Storage, { StorageMeta } from '../../services/storages/Storage' +import Storage, { Collection } from '../core/storage' import Engine from './Engine' export default class RemoteStorage implements Storage { - private readonly engine: Engine> + private readonly engine: Engine> constructor( private ownerId: string, @@ -17,7 +17,7 @@ export default class RemoteStorage implements Storage { } async queryItems() { - const response = await this.engine.getCollection(this.collectionId) as StorageMeta; + const response = await this.engine.getCollection(this.collectionId) as Collection; return response.items; } diff --git a/src/plugins/remote-storage/index.ts b/packages/plugin-remote-storage/index.ts similarity index 58% rename from src/plugins/remote-storage/index.ts rename to packages/plugin-remote-storage/index.ts index 17726ef..d2d3dcf 100644 --- a/src/plugins/remote-storage/index.ts +++ b/packages/plugin-remote-storage/index.ts @@ -1,18 +1,15 @@ +import { Plugin } from '../core/plugin' import Storage from './Storage' type PluginConfig = { baseUrl: string, } -type State = { - currentUserId: string, -} - -type Plugin = (config: PluginConfig) => (state: State) => void - -const RemoteStoragePlugin: Plugin = config => ({ +const RemoteStoragePlugin: Plugin = config => ({ currentUserId, }) => { new Storage(currentUserId, config.baseUrl, 'notes') new Storage(currentUserId, config.baseUrl, 'folders') } + +export default RemoteStoragePlugin diff --git a/packages/plugin-remote-storage/package.json b/packages/plugin-remote-storage/package.json new file mode 100644 index 0000000..5236581 --- /dev/null +++ b/packages/plugin-remote-storage/package.json @@ -0,0 +1,12 @@ +{ + "name": "zeichen-plugin-remote-storage", + "author": "TheoryOfNekomata ", + "version": "0.1.0", + "description": "Save and load notes using an external API.", + "keywords": [ + "zeichen", + "plugin", + "storage", + "API" + ] +} diff --git a/packages/plugin-remote-storage/tsconfig.json b/packages/plugin-remote-storage/tsconfig.json new file mode 100644 index 0000000..fd7783c --- /dev/null +++ b/packages/plugin-remote-storage/tsconfig.json @@ -0,0 +1,35 @@ +{ + "compilerOptions": { + "target": "es6", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "preserve", + "declaration": true, + "declarationDir": "./dist", + "sourceMap": true, + "strict": false + }, + "exclude": [ + "node_modules", + "**/*.test.ts", + "**/*.test.tsx" + ], + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx" + ] +} diff --git a/src/plugins/local-storage/index.ts b/src/plugins/local-storage/index.ts deleted file mode 100644 index 5ff07a0..0000000 --- a/src/plugins/local-storage/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -import Storage from './Storage' - -type PluginConfig = { - -} - -type State = { - currentUserId: string, -} - -type Plugin = (config: PluginConfig) => (state: State) => void - -const LocalStoragePlugin: Plugin = config => ({ - currentUserId, -}) => { - new Storage(currentUserId, 'notes') - new Storage(currentUserId, 'folders') -}