-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make spear to be changeable the api client via plugin parameter. #189
Conversation
@@ -23,11 +23,6 @@ export default async function inMemoryMagic( | |||
const logger = new SpearLog(settings.quiteMode); | |||
settings.targetPagesPathList = settings.targetPagesPathList || []; | |||
|
|||
const jsGenerator = new SpearlyJSGenerator( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@@ -28,6 +29,7 @@ export interface SpearState { | |||
out: { | |||
assetsFiles: AssetFile[] | |||
} | |||
jsGenerator: SpearlyJSGenerator | |||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
レビュー用コメント: SpearState
はプラグインの各関数の引数として渡されます。 プラグイン実装
Comments for Review: This SpearState
will be passed via plugin function. Implementation of plugin
getList(contentTypeId: string, params?: any): Promise<List>; | ||
getContent(contentTypeId: string, contentId: string, params?: any): Promise<Content>; | ||
getContentPreview(contentTypeId: string, contentId: string, previewToken: string): Promise<Content>; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
レビュー用コメント: 他にも フォーム関係などの関数もありますが、Spear ではフォームを利用しないので定義から外しています。
Comments for Review: sdk-js
has form realted function, however Spear doesn't use form API. So I don't defined these function.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changes
This PR make spear to support the Content Collection (#69). This feature collect content data from local files like mdx, unified eco system files(front-matter). [1][2]
In order to collect the content data from file, we need to replace the
sdk-js
client onspearly-cms-js-core
[3].This changes contains the two parts:
cms-js-core
to be able to inject thesdk-js
api client.cms-js-core
generator to plugin via plugin parameter.The (1) allow the changing customized client which returning local file. Hence this feature, user can replace the resource data without Spearly CMS.
Then user can pass the this customized client via plugin by (2) changes.
After releasing this feature, we can implement the following plugin.
[1] https://unifiedjs.com/
[2] https://mdxjs.com/
[3] #69 (comment)
変更点
この PR では Spear 上で Content Collection をサポートさせるようにします(#69)。この機能は mdx や unified エコシステムのファイルのように、ローカルファイルからコンテンツデータを収集します[1][2]。
ファイルからデータを収集するために、
spearly-cms-js-core
でsdk-js
のクライアントを置きかけ出来るようにします[3]。この変更は2つのパートに分かれています。
cms-js-core
をsdk-js
API クライアントの差し替えを可能にするcms-js-core
の Generator をプラグインのプラグイン引数で渡すようにする(1) はローカルファイルを返すカスタムされたクライアントを変更できるようにしています。この機能により、ユーザーは Spearly CMS 抜きでリソースデータを置換可能です。
そして、ユーザーはこのカスタムされたクライアントをプラグイン経由で渡すことができます。
この機能をリリース後、以下のような MDX からコンテンツを取得するプラグインを書くことができます。
[1] https://unifiedjs.com/
[2] https://mdxjs.com/
[3] #69 (comment)