chore: reorganize docs apps (#7228)

* reorganize docs apps

* add README

* fix directory

* add condition for old docs
This commit is contained in:
Shahed Nasser authored and GitHub committed 2024-05-03 17:36:38 +03:00
1 parent 224ebb2154
commit 4fe28f5a95
6187 files changed
+601447 -598226

No files matched your search

@@ -0,0 +1,144 @@
import { CodeTabs, CodeTab } from "docs-ui"
export const metadata = {
title: `${pageNumber} Plugin Options`,
}
# {metadata.title}
In this chapter, you’ll learn how to access a plugin’s options in different resources.
## Services
In a plugin, a service’s constructor accepts a second parameter: an object holding the plugin’s options.
For example:
```ts title="src/services/erp.ts" highlights={[["6", "", "The plugin's options are passed as a parameter."], ["9", "", "Set the plugin's options in a class property."]]}
import { TransactionBaseService } from "@medusajs/medusa"
class ErpService extends TransactionBaseService {
protected options_: Record<string, unknown>
constructor(container, options) {
super(container, options)
this.options_ = options
}
}
export default ErpService
```
This adds an `options_` property to the `ErpService` and sets its value using the second parameter of the constructor. You can now use the options in other methods.
---
## API Routes
To access a plugin’s options in an API route, it’s recommended to expose a getter method in the service for the `options_` property that the API route can use.
For example:
<CodeTabs group="resource-types">
<CodeTab label="Service" value="service">
```ts title="src/services/erp.ts" highlights={[["11"], ["12"], ["13"], ["14"], ["15"], ["16"]]}
import { TransactionBaseService } from "@medusajs/medusa"
class ErpService extends TransactionBaseService {
protected options_: Record<string, unknown>
// ...
get options(): Record<string, unknown> {
return this.options_
}
}
export default ErpService
```
</CodeTab>
<CodeTab label="API Route" value="api-route">
```ts title="src/subscribers/customer-created.ts"
import { MedusaRequest, MedusaResponse } from "@medusajs/medusa"
import ErpService from "../../services/erp"
export async function GET(
req: MedusaRequest,
res: MedusaResponse
): Promise<void> {
const erpService: ErpService = req.scope.resolve("erpService")
const pluginOptions = erpService.options
// use plugin options...
}
```
</CodeTab>
</CodeTabs>
---
## Subscribers
The object parameter that a subscriber handler function accepts has a `pluginOptions` property. When a subscriber is created in a plugin, this property holds the plugin’s options.
For example:
```ts title="src/subscribers/product-updated.ts" highlights={[["7", "", "The plugin's options are passed in the object parameter."]]}
import {
// other imports...
SubscriberArgs,
} from "@medusajs/medusa"
export default async function productUpdateHandler({
pluginOptions,
}: SubscriberArgs) {
console.log(`Plugin options: ${pluginOptions}`)
}
// ...
```
---
## Scheduled Job
The object parameter that a scheduled job function accepts has a `pluginOptions` property. When a scheduled job is created in a plugin, this property holds the plugin’s options.
For example:
```ts title="src/jobs/once-a-day.ts" highlights={[["6", "", "The plugin's options are passed in the object parameter."]]}
import {
// ...
ScheduledJobArgs,
} from "@medusajs/medusa"
export default function ({ pluginOptions }: ScheduledJobArgs) {
console.log(`Plugin options: ${pluginOptions}`)
}
// ...
```
---
## Loaders
In a plugin, a loader function accepts a second parameter: an object holding the plugin’s options.
For example:
```ts title="src/loaders/on-start.ts" highlights={[["5", "", "The plugin's options are passed as a second parameter to the loader."]]}
import { MedusaContainer } from "@medusajs/medusa"
export default function (
container: MedusaContainer,
options: Record<string, unknown>
) {
console.log(`Plugin options: ${options}`)
}
```