@@ -68,6 +68,8 @@ import {
6868import { defaultSorter } from '../common/index.ts' ;
6969import { jsonParse , jsonStringWithMap } from '../common/json.ts' ;
7070import {
71+ AddListener ,
72+ CallListeners ,
7173 ExtraArgsGetter ,
7274 IdSetNode ,
7375 PathGetters ,
@@ -147,6 +149,67 @@ import {
147149 id ,
148150} from '../common/strings.ts' ;
149151
152+ export type ProtectedStore = Store & { _ : ProtectedMethods } ;
153+
154+ type ProtectedMethods = [
155+ createStore : ( ) => Store ,
156+ addListener : AddListener ,
157+ callListeners : CallListeners ,
158+ setInternalListeners : (
159+ preStartTransaction : ( ) => void ,
160+ preFinishTransaction : ( ) => void ,
161+ postFinishTransaction : ( ) => void ,
162+ cellChanged : (
163+ tableId : Id ,
164+ rowId : Id ,
165+ cellId : Id ,
166+ newCell : CellOrUndefined ,
167+ mutating : 0 | 1 ,
168+ ) => void ,
169+ valueChanged : (
170+ valueId : Id ,
171+ newValue : ValueOrUndefined ,
172+ mutating : 0 | 1 ,
173+ ) => void ,
174+ ) => void ,
175+ setMiddleware : (
176+ willSetContent : ( content : Content ) => Content | undefined ,
177+ willSetTables : ( tables : Tables ) => Tables | undefined ,
178+ willSetTable : ( tableId : Id , table : Table ) => Table | undefined ,
179+ willSetRow : ( tableId : Id , rowId : Id , row : Row ) => Row | undefined ,
180+ willSetCell : (
181+ tableId : Id ,
182+ rowId : Id ,
183+ cellId : Id ,
184+ cell : Cell ,
185+ ) => CellOrUndefined ,
186+ willSetValues : ( values : Values ) => Values | undefined ,
187+ willSetValue : ( valueId : Id , value : Value ) => ValueOrUndefined ,
188+ willDelTables : ( ) => boolean ,
189+ willDelTable : ( tableId : Id ) => boolean ,
190+ willDelRow : ( tableId : Id , rowId : Id ) => boolean ,
191+ willDelCell : ( tableId : Id , rowId : Id , cellId : Id ) => boolean ,
192+ willDelValues : ( ) => boolean ,
193+ willDelValue : ( valueId : Id ) => boolean ,
194+ willApplyChanges : ( changes : Changes ) => Changes | undefined ,
195+ didSetRow : ( tableId : Id , rowId : Id , oldRow : Row , newRow : Row ) => Row ,
196+ ) => void ,
197+ setOrDelCell : (
198+ tableId : Id ,
199+ rowId : Id ,
200+ cellId : Id ,
201+ cell : CellOrUndefined ,
202+ skipMiddleware ?: boolean ,
203+ ) => Store ,
204+ setOrDelValue : (
205+ valueId : Id ,
206+ value : ValueOrUndefined ,
207+ skipMiddleware ?: boolean ,
208+ ) => Store ,
209+ getEncodedContent : ( ) => Content ,
210+ getEncodedTransactionChanges : ( ) => Changes ,
211+ ] ;
212+
150213type TablesSchemaMap = IdMap2 < CellSchema > ;
151214type ValuesSchemaMap = IdMap < ValueSchema > ;
152215type RowMap = IdMap < Cell > ;
@@ -2152,16 +2215,17 @@ export const createStore: typeof createStoreDecl = (): Store => {
21522215
21532216 isMergeable : ( ) => false ,
21542217
2155- // only used internally by other modules
2156- createStore,
2157- addListener,
2158- callListeners,
2159- setInternalListeners,
2160- setMiddleware,
2161- setOrDelCell,
2162- setOrDelValue,
2163- getEncodedContent,
2164- getEncodedTransactionChanges,
2218+ _ : [
2219+ createStore ,
2220+ addListener ,
2221+ callListeners ,
2222+ setInternalListeners ,
2223+ setMiddleware ,
2224+ setOrDelCell ,
2225+ setOrDelValue ,
2226+ getEncodedContent ,
2227+ getEncodedTransactionChanges ,
2228+ ] as ProtectedMethods ,
21652229 } ;
21662230
21672231 // and now for some gentle meta-programming
0 commit comments