UNPKG

@wishcbg/bobcode

Version:

基於店家同步功能的需求,讓店家能夠在不同的店家之間同步各項功能設定,並且能夠檢視各項功能的異動情況。 規劃出一套店家設定即程式碼的機制,讓店家能夠以 config file (.sac) 來定義各項功能設定,並且能夠還原店家各項功能設定。 暫且稱這個機制為「Settings as Code」「店家設定即程式碼」。

54 lines (53 loc) 1.25 kB
import type { AnyZodObject } from 'zod'; /** 單一資源物件 */ export interface Resource { resourceType: string; logicId: string; description: string; setting: any; } /** 讀取的 config 檔結構 */ export interface ConfigFile { version: string; logicIdPrefix: string; resources: Resource[]; } /** 單一欄位差異 */ export interface Diff { key: string; desc: string; old: any; new: any; } /** 單一變更項目 */ export interface Change { resourceType: string; operation: 'create' | 'update' | 'delete'; logicId: string; description: string; diffs: Diff[]; payload: object | null; } /** 整個變更集 */ export interface ChangeSet { version: string; scopePrefix: string; changes: Change[]; } /** 單一變更執行結果 */ export interface ChangeResult extends Omit<Change, 'payload'> { status: 'success' | 'failed'; errorMessage?: string | null; errorCode?: string | null; payload?: Change['payload']; } /** 整個變更執行結果 */ export interface ChangeLog { version: string; scopePrefix: string; changes: ChangeResult[]; } export type ZodSchemaActions = { createSchema: AnyZodObject; updateSchema: AnyZodObject; };