Skip to content

Commit

Permalink
feat(factory-modules): run params as first argument
Browse files Browse the repository at this point in the history
  • Loading branch information
Heymdall committed Aug 28, 2023
1 parent ed40587 commit 005e26c
Show file tree
Hide file tree
Showing 6 changed files with 11 additions and 11 deletions.
1 change: 1 addition & 0 deletions .changeset/good-buses-hug.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

- Factory-модули теперь могут принимать `runParams` - отдельный параметр, который не будет передаваться на сервер, а
сразу будет попадать из клиента в клиент.
**Важно:** `runParams` теперь является первым аргументом для `run` функции.

- Mountable модули теперь могут использовать запись вида `export default mountableModule;` вместо отдельных экспортов
`mount` и `unmount` функций.
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export type UseModuleFactoryParams<
*/
runParams?: RunParams;
/**
* Функция, который позволяет дополнить/изменить параметры для фабрики
* Функция, который позволяет дополнить/изменить серверный стейт модуля перед вызовом фабрики
*/
getFactoryParams?: (params: ServerState) => ServerState;
}
Expand Down Expand Up @@ -65,7 +65,7 @@ export function useModuleFactory<

unmountFn = result.unmount;

const factoryParams = (getFactoryParams
const serverState = (getFactoryParams
? await getFactoryParams(result.moduleResources.moduleState as ServerState)
: result.moduleResources.moduleState) as ServerState;

Expand All @@ -79,12 +79,12 @@ export function useModuleFactory<
const unwrappedModule = unwrapDefaultExport(result.module);

if (typeof unwrappedModule === 'function') {
moduleResult = await unwrappedModule(factoryParams, runParams as RunParams);
moduleResult = await unwrappedModule(runParams as RunParams, serverState);
} else if (unwrappedModule.factory && typeof unwrappedModule.factory === 'function') {
moduleResult = await unwrappedModule.factory(factoryParams, runParams as RunParams);
moduleResult = await unwrappedModule.factory(runParams as RunParams, serverState);
} else {
throw new Error(
`Module ${factoryParams.hostAppId} does not present a factory function,
`Module ${serverState.hostAppId} does not present a factory function,
try usign another hook, e.g. 'useModuleLoader' or 'useModuleMounter'`
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ export type FactoryModuleFunction<
RunParams = void,
ServerState extends BaseModuleState = BaseModuleState,
> = {
(serverState: ServerState, runParams: RunParams): ReturnType;
(runParams: RunParams, serverState: ServerState): ReturnType;
};

export type FactoryModule<ReturnType = any, RunParams = void, ServerState extends BaseModuleState = BaseModuleState> =
Expand Down
4 changes: 2 additions & 2 deletions packages/arui-scripts/docs/modules.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ export const unmount: ModuleUnmountFunction = (targetNode) => {
```tsx
import type { FactoryModule } from '@alfalab/scripts-modules';

const factory: FactoryModule = function (serverState, runParams) {
const factory: FactoryModule = function (runParams, serverState) {
// serverState - это состояние, которое подготовлено на сервере модуля
// runParams - это параметры, которые были переданы при запуске модуля клиентом
// в фабрике можно на основе стейта вернуть готовый модуль
Expand All @@ -118,7 +118,7 @@ export default factory;
```ts
import type { FactoryModule } from '@alfalab/scripts-modules';

const factory: FactoryModule = function (serverState, runParams) {
const factory: FactoryModule = function (runParams, serverState) {
// в фабрике можно на основе стейта вернуть готовый модуль
return {
serverState,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import type {
BaseModuleState,
FactoryModule,
WindowWithModule,
} from '@alfalab/scripts-modules';


const factory: FactoryModule = (moduleState, runParams) => ({
const factory: FactoryModule = (runParams, moduleState) => ({
someData: 'Some data here',
saySomething: () => alert('something'),
runParams,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { FactoryModule } from '@alfalab/scripts-modules';

const factory: FactoryModule = (moduleState, runParams) => ({
const factory: FactoryModule = (runParams, moduleState) => ({
someData: 'Some data here',
reloadPage: () => location.reload(),
runParams,
Expand Down

0 comments on commit 005e26c

Please sign in to comment.