@palantir/pack.state.core 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/DocumentServiceModule.ts","../../src/types/StateModule.ts","../../src/types/DocumentRefImpl.ts","../../src/types/DocumentService.ts","../../src/types/RecordCollectionRefImpl.ts","../../src/types/RecordRefImpl.ts","../../src/service/YjsSchemaMapper.ts","../../src/service/BaseYjsDocumentService.ts","../../src/service/InMemoryDocumentService.ts"],"names":["getMetadata","Y2"],"mappings":"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","file":"index.js","sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const DOCUMENT_SERVICE_MODULE_KEY = {\n key: Symbol(\"DocumentService\"),\n initModule: initDocumentService\n};\nexport function getDocumentService(app) {\n return app.getModule(DOCUMENT_SERVICE_MODULE_KEY);\n}\nexport function createDocumentServiceConfig(init, config) {\n return [DOCUMENT_SERVICE_MODULE_KEY, {\n ...config,\n init\n }];\n}\nfunction initDocumentService(app, config) {\n if (config == null) {\n throw new Error(\"DocumentServiceConfig is required to initialize DocumentService\");\n }\n return config.init(app, config);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assertIsAppInternal } from \"@palantir/pack.core\";\nimport { DOCUMENT_SERVICE_MODULE_KEY } from \"../DocumentServiceModule.js\";\n// Ensure state module is accessible on PackApp instances.\nexport const STATE_MODULE_ACCESSOR = \"state\";\nexport const STATE_MODULE_KEY = {\n appMemberName: STATE_MODULE_ACCESSOR,\n key: Symbol.for(\"pack.state\"),\n initModule: app => {\n const documentService = app.getModule(DOCUMENT_SERVICE_MODULE_KEY);\n return new StateModuleImpl(documentService);\n }\n};\nexport class StateModuleImpl {\n constructor(documentService) {\n this.documentService = documentService;\n }\n createDocRef(id, schema) {\n return this.documentService.createDocRef(id, schema);\n }\n createRecordRef(docRef, id, model) {\n return this.documentService.getCreateRecordRef(docRef, id, model);\n }\n async createDocument(metadata, schema) {\n return this.documentService.createDocument(metadata, schema);\n }\n async searchDocuments(documentTypeName, schema, options) {\n return this.documentService.searchDocuments(documentTypeName, schema, options);\n }\n async getDocumentSnapshot(docRef) {\n return this.documentService.getDocumentSnapshot(docRef);\n }\n onActivity(docRef, callback) {\n return this.documentService.onActivity(docRef, callback);\n }\n onMetadataChange(docRef, cb) {\n return this.documentService.onMetadataChange(docRef, cb);\n }\n onPresence(docRef, callback, options) {\n return this.documentService.onPresence(docRef, callback, options);\n }\n onStateChange(docRef, cb) {\n return this.documentService.onStateChange(docRef, cb);\n }\n updateCustomPresence(docRef, model, eventData) {\n this.documentService.updateCustomPresence(docRef, model, eventData);\n }\n async getRecordSnapshot(recordRef) {\n return this.documentService.getRecordSnapshot(recordRef);\n }\n async setRecord(recordRef, state) {\n return this.documentService.setRecord(recordRef, state);\n }\n async updateRecord(recordRef, partialState) {\n return this.documentService.updateRecord(recordRef, partialState);\n }\n withTransaction(docRef, fn, description) {\n this.documentService.withTransaction(docRef, fn, description);\n }\n\n // Collection methods\n getCreateRecordCollectionRef(docRef, model) {\n return this.documentService.getCreateRecordCollectionRef(docRef, model);\n }\n\n // FIXME: confusing vs createRecordRef\n getRecord(collection, id) {\n return this.documentService.getRecord(collection, id);\n }\n hasRecord(collection, id) {\n return this.documentService.hasRecord(collection, id);\n }\n async setCollectionRecord(collection, id, state) {\n return this.documentService.setCollectionRecord(collection, id, state);\n }\n getCollectionSize(collection) {\n return this.documentService.getCollectionSize(collection);\n }\n getCollectionRecords(collection) {\n return this.documentService.getCollectionRecords(collection);\n }\n onRecordChanged(record, callback) {\n return this.documentService.onRecordChanged(record, callback);\n }\n onRecordDeleted(record, callback) {\n return this.documentService.onRecordDeleted(record, callback);\n }\n onCollectionItemsAdded(collection, callback) {\n return this.documentService.onCollectionItemsAdded(collection, callback);\n }\n onCollectionItemsChanged(collection, callback) {\n return this.documentService.onCollectionItemsChanged(collection, callback);\n }\n onCollectionItemsDeleted(collection, callback) {\n return this.documentService.onCollectionItemsDeleted(collection, callback);\n }\n\n // Status methods implementation\n getDocumentStatus(docRef) {\n return this.documentService.getDocumentStatus(docRef);\n }\n onStatusChange(docRef, callback) {\n return this.documentService.onStatusChange(docRef, callback);\n }\n async waitForMetadataLoad(docRef) {\n return this.documentService.waitForMetadataLoad(docRef);\n }\n async waitForDataLoad(docRef) {\n return this.documentService.waitForDataLoad(docRef);\n }\n async deleteRecord(record) {\n return this.documentService.deleteRecord(record);\n }\n}\nexport function getStateModule(app) {\n assertIsAppInternal(app);\n return app.getModule(STATE_MODULE_KEY);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DocumentRefBrand } from \"@palantir/pack.document-schema.model-types\";\nimport { getStateModule } from \"./StateModule.js\";\nconst INVALID_DOC_REF_ID = \"INVALID_DOC_REF\";\nconst INVALID_DOC_REF = Object.freeze({\n id: INVALID_DOC_REF_ID,\n schema: {},\n [DocumentRefBrand]: DocumentRefBrand,\n getDocSnapshot: () => Promise.reject(new Error(\"Invalid document reference\")),\n getRecords: () => {\n throw new Error(\"Invalid document reference\");\n },\n onActivity: () => () => {},\n onMetadataChange: () => () => {},\n onPresence: () => () => {},\n onStateChange: () => () => {},\n updateCustomPresence: () => {},\n withTransaction: () => {\n throw new Error(\"Invalid document reference\");\n }\n});\nexport const createDocRef = (app, id, schema) => {\n return new DocumentRefImpl(app, id, schema);\n};\n\n/**\n * Get an invalid document reference. This is a stable reference that can be\n * used to represent a non-existent or invalid document.\n *\n * Not to be confused with a valid reference to a non-existent document, an\n * invalid reference is one that is not properly initialized. For example, code\n * that initializes with an undefined or empty documentId might produce an\n * invalid document reference rather than propagate nullish types.\n *\n * Most operations on an invalid reference are no-ops. For the rest, it is\n * recommended to check for validity using {@link isValidDocRef} before\n * performing operations.\n */\nexport function invalidDocRef() {\n return INVALID_DOC_REF;\n}\n\n/**\n * Check if a document reference is an invalid reference.\n * Not to be confused with a valid reference to a non-existent document, an invalid reference is one that is not properly initialized.\n * For example, code that initializes with an undefined or empty documentId might produce an invalid document reference rather than\n * propagate nullish types, as most operations on an invalid reference are no-ops. For the rest, it is recommended to check for\n * validity using this function before performing operations.\n */\nexport function isValidDocRef(docRef) {\n return docRef.id !== INVALID_DOC_REF_ID && docRef.id !== \"\";\n}\nclass DocumentRefImpl {\n id;\n schema;\n #stateModule;\n constructor(app, id, schema) {\n this.#stateModule = getStateModule(app);\n this.id = id;\n this.schema = schema;\n }\n async getDocSnapshot() {\n return this.#stateModule.getDocumentSnapshot(this);\n }\n getRecords(model) {\n return this.#stateModule.getCreateRecordCollectionRef(this, model);\n }\n onActivity(callback) {\n return this.#stateModule.onActivity(this, callback);\n }\n onMetadataChange(cb) {\n return this.#stateModule.onMetadataChange(this, cb);\n }\n onPresence(callback, options) {\n return this.#stateModule.onPresence(this, callback, options);\n }\n onStateChange(callback) {\n return this.#stateModule.onStateChange(this, callback);\n }\n updateCustomPresence(model, eventData) {\n this.#stateModule.updateCustomPresence(this, model, eventData);\n }\n withTransaction(fn, description) {\n this.#stateModule.withTransaction(this, fn, description);\n }\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const DocumentLoadStatus = {\n UNLOADED: \"unloaded\",\n // Not yet loaded\n LOADING: \"loading\",\n // Initial load in progress\n LOADED: \"loaded\",\n // Successfully loaded\n ERROR: \"error\" // Load failed\n};\nexport const DocumentLiveStatus = {\n DISCONNECTED: \"disconnected\",\n // Not syncing\n CONNECTING: \"connecting\",\n // Establishing connection\n CONNECTED: \"connected\",\n // Live syncing active\n ERROR: \"error\" // Connection error\n};\n\n/**\n * Base interface for specific document service implementations.\n * The DocumentService is responsible for persisting document state,\n * metadata, and providing methods to subscribe and interact with documents.\n *\n * The main implementation communicates with the Foundry platform (see @palantir/pack.state.foundry).\n */","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { RecordCollectionRefBrand } from \"@palantir/pack.document-schema.model-types\";\nimport { invalidDocRef } from \"./DocumentRefImpl.js\";\nconst INVALID_RECORD_COLLECTION_REF = Object.freeze({\n docRef: invalidDocRef(),\n model: {},\n [RecordCollectionRefBrand]: RecordCollectionRefBrand,\n get: () => undefined,\n has: () => false,\n set: () => Promise.reject(new Error(\"Invalid record collection reference\")),\n delete: () => Promise.reject(new Error(\"Invalid record collection reference\")),\n size: 0,\n [Symbol.iterator]: () => ({\n next: () => ({\n done: true,\n value: undefined\n })\n }),\n onItemsAdded: () => () => {},\n onItemsChanged: () => () => {},\n onItemsDeleted: () => () => {}\n});\nexport const createRecordCollectionRef = (documentService, docRef, model) => {\n return new RecordCollectionRefImpl(documentService, docRef, model);\n};\n\n/**\n * Get an invalid record collection reference. This is a stable reference that\n * can be used to represent an invalid record collection.\n *\n * Not to be confused with a valid reference to a non-existent record\n * collection, an invalid reference is one that is not properly initialized. For\n * example, code that initializes with an undefined or empty model might produce\n * an invalid record collection reference rather than propagate nullish types.\n *\n * Most operations on an invalid reference are no-ops. For the rest, it is\n * recommended to check for validity using {@link isValidRecordCollectionRef}\n * before performing operations.\n */\nexport function invalidRecordCollectionRef() {\n return INVALID_RECORD_COLLECTION_REF;\n}\n\n/**\n * Check if a record collection reference is a valid reference.\n *\n * Not to be confused with a valid reference to a non-existent record\n * collection, an invalid reference is one that is not properly initialized.\n *\n * Most operations on an invalid reference are no-ops. For the rest, it is\n * recommended to check for validity using this function before performing\n * operations.\n */\nexport function isValidRecordCollectionRef(collectionRef) {\n return collectionRef !== INVALID_RECORD_COLLECTION_REF;\n}\nclass RecordCollectionRefImpl {\n docRef;\n model;\n #documentService;\n constructor(documentService, docRef, model) {\n this.docRef = docRef;\n this.model = model;\n this.#documentService = documentService;\n }\n get(id) {\n return this.#documentService.getRecord(this, id);\n }\n has(id) {\n return this.#documentService.hasRecord(this, id);\n }\n async set(id, state) {\n return this.#documentService.setCollectionRecord(this, id, state);\n }\n delete(id) {\n const recordRefInstance = this.#documentService.getRecord(this, id);\n if (recordRefInstance) {\n return this.#documentService.deleteRecord(recordRefInstance);\n }\n return Promise.reject(new Error(`Unknown record`));\n }\n get size() {\n return this.#documentService.getCollectionSize(this);\n }\n [Symbol.iterator]() {\n return this.#documentService.getCollectionRecords(this)[Symbol.iterator]();\n }\n onItemsAdded = callback => {\n return this.#documentService.onCollectionItemsAdded(this, callback);\n };\n onItemsChanged = callback => {\n return this.#documentService.onCollectionItemsChanged(this, callback);\n };\n onItemsDeleted = callback => {\n return this.#documentService.onCollectionItemsDeleted(this, callback);\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { RecordRefBrand } from \"@palantir/pack.document-schema.model-types\";\nimport { invalidDocRef } from \"./DocumentRefImpl.js\";\nconst INVALID_RECORD_ID = \"INVALID_RECORD_REF\";\nconst INVALID_RECORD_REF = Object.freeze({\n docRef: invalidDocRef(),\n id: INVALID_RECORD_ID,\n model: {},\n [RecordRefBrand]: RecordRefBrand,\n getSnapshot: () => Promise.reject(new Error(\"Invalid record reference\")),\n set: () => Promise.reject(new Error(\"Invalid record reference\")),\n onChange: () => () => {},\n onDeleted: () => () => {}\n});\nexport const createRecordRef = (documentService, docRef, id, model) => {\n return new RecordRefImpl(documentService, docRef, id, model);\n};\n\n/**\n * Get an invalid record reference. This is a stable reference that can be used\n * to represent an invalid record.\n *\n * Not to be confused with a valid reference to a non-existent record, an\n * invalid reference is one that is not properly initialized. For example, code\n * that initializes with an undefined or empty recordId might produce an\n * invalid record reference rather than propagate nullish types.\n *\n * Most operations on an invalid reference are no-ops. For the rest, it is\n * recommended to check for validity using {@link isValidRecordRef} before\n * performing operations.\n */\nexport function invalidRecordRef() {\n return INVALID_RECORD_REF;\n}\n\n/**\n * Check if a record reference is a valid reference.\n *\n * Not to be confused with a valid reference to a non-existent record, an\n * invalid reference is one that is not properly initialized.\n *\n * For example, code that initializes with an undefined or empty recordId might\n * produce an invalid record reference rather than propagate nullish types, as\n * most operations on an invalid reference are no-ops. For the rest, it is\n * recommended to check for validity using this function before performing\n * operations.\n */\nexport function isValidRecordRef(recordRef) {\n return recordRef.id !== INVALID_RECORD_ID;\n}\nclass RecordRefImpl {\n docRef;\n id;\n model;\n #documentService;\n constructor(documentService, docRef, id, model) {\n this.#documentService = documentService;\n this.docRef = docRef;\n this.id = id;\n this.model = model;\n }\n async getSnapshot() {\n return this.#documentService.getRecordSnapshot(this);\n }\n onChange(callback) {\n return this.#documentService.onRecordChanged(this, callback);\n }\n onDeleted(callback) {\n return this.#documentService.onRecordDeleted(this, callback);\n }\n delete() {\n return this.#documentService.deleteRecord(this);\n }\n set(record) {\n return this.#documentService.setRecord(this, record);\n }\n update(partialRecord) {\n return this.#documentService.updateRecord(this, partialRecord);\n }\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getMetadata } from \"@palantir/pack.document-schema.model-types\";\nimport * as Y from \"yjs\";\nexport function initializeDocumentStructure(yDoc, schema) {\n // Initialize storage for each model type using storageName directly on the root Y.Doc\n Object.values(schema).forEach(modelEntry => {\n yDoc.getMap(getMetadata(modelEntry).name);\n });\n}\nexport function getRecordsMap(yDoc, storageName) {\n return yDoc.getMap(storageName);\n}\nexport function getRecordData(yDoc, storageName, recordId) {\n const recordsCollection = getRecordsMap(yDoc, storageName);\n return recordsCollection.get(recordId);\n}\nexport function setRecord(yDoc, storageName, recordId, state) {\n const recordsCollection = getRecordsMap(yDoc, storageName);\n const currentRecord = recordsCollection.get(recordId);\n const wasExisting = currentRecord != null;\n\n // Use transaction for atomic update\n yDoc.transact(() => {\n if (currentRecord != null) {\n // Clear existing record completely\n currentRecord.clear();\n populateYMapFromState(currentRecord, state);\n } else {\n // Create new record\n const newRecord = new Y.Map();\n populateYMapFromState(newRecord, state);\n recordsCollection.set(recordId, newRecord);\n }\n });\n return wasExisting;\n}\nexport function getRecordSnapshot(yDoc, storageName, recordId) {\n const data = getRecordData(yDoc, storageName, recordId);\n if (!data) {\n return undefined;\n }\n return yMapToState(data);\n}\nexport function updateRecord(yDoc, storageName, recordId, partialState) {\n const recordsCollection = getRecordsMap(yDoc, storageName);\n const currentRecord = recordsCollection.get(recordId);\n if (currentRecord == null) {\n return false; // Record doesn't exist, cannot update\n }\n\n // Use transaction for atomic partial update\n yDoc.transact(() => {\n updateYMapFromPartialState(currentRecord, partialState);\n });\n return true;\n}\nexport function getAllRecordIds(yDoc, storageName) {\n const recordsCollection = getRecordsMap(yDoc, storageName);\n return Array.from(recordsCollection.keys()).map(key => key);\n}\nfunction populateYMapFromState(yMap, state) {\n if (state != null && typeof state === \"object\") {\n Object.entries(state).forEach(([key, value]) => {\n if (value === undefined) return;\n if (Array.isArray(value)) {\n const yArray = new Y.Array();\n value.forEach(item => {\n yArray.push([item]);\n });\n yMap.set(key, yArray);\n } else if (typeof value === \"object\" && value != null) {\n const nestedMap = new Y.Map();\n populateYMapFromState(nestedMap, value);\n yMap.set(key, nestedMap);\n } else {\n yMap.set(key, value);\n }\n });\n }\n}\nfunction updateYMapFromPartialState(yMap, partialState) {\n if (typeof partialState === \"object\") {\n Object.entries(partialState).forEach(([key, value]) => {\n if (value === undefined) {\n // Remove the field if undefined is explicitly provided\n yMap.delete(key);\n return;\n }\n if (Array.isArray(value)) {\n const yArray = new Y.Array();\n value.forEach(item => {\n yArray.push([item]);\n });\n yMap.set(key, yArray);\n } else if (typeof value === \"object\" && value != null) {\n // For nested objects, we need to handle partial updates\n const existingValue = yMap.get(key);\n if (existingValue instanceof Y.Map) {\n // Recursively update nested Y.Map\n updateYMapFromPartialState(existingValue, value);\n } else {\n // Replace with new nested map if existing value is not a Y.Map\n const nestedMap = new Y.Map();\n populateYMapFromState(nestedMap, value);\n yMap.set(key, nestedMap);\n }\n } else {\n yMap.set(key, value);\n }\n });\n }\n}\nfunction yMapToState(yMap) {\n const state = {};\n yMap.forEach((value, key) => {\n if (value instanceof Y.Array) {\n state[key] = value.toArray();\n } else if (value instanceof Y.Map) {\n state[key] = yMapToState(value);\n } else {\n state[key] = value;\n }\n });\n return state;\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable no-console */\n\nimport { getMetadata } from \"@palantir/pack.document-schema.model-types\";\nimport { isDeepEqual } from \"remeda\";\nimport invariant from \"tiny-invariant\";\nimport * as Y from \"yjs\";\nimport { createDocRef } from \"../types/DocumentRefImpl.js\";\nimport { DocumentLiveStatus, DocumentLoadStatus } from \"../types/DocumentService.js\";\nimport { createRecordCollectionRef } from \"../types/RecordCollectionRefImpl.js\";\nimport { createRecordRef } from \"../types/RecordRefImpl.js\";\nimport * as YjsSchemaMapper from \"./YjsSchemaMapper.js\";\n/**\n * Base class for document services that use Y.js for local state management.\n * Provides common Y.js operations for both in-memory and backend services.\n *\n * // TODO: Move this to an internal package\n */\nexport class BaseYjsDocumentService {\n documents = new Map();\n constructor(app, logger) {\n this.app = app;\n this.logger = logger;\n }\n createDocRef = (id, schema) => {\n // Create a (likely) temporary doc ref - the internal doc will be created if it is unknown\n // If it is known, we will return the stable ref from getCreateInternalDoc\n const temporaryRef = createDocRef(this.app, id, schema);\n const {\n internalDocRef\n } = this.getCreateInternalDoc(temporaryRef);\n return internalDocRef;\n };\n getCreateRecordCollectionRef = (docRef, model) => {\n const {\n internalDoc\n } = this.getCreateInternalDoc(docRef);\n const modelName = getMetadata(model).name;\n const existingRef = internalDoc.collectionRefs.get(modelName)?.deref();\n if (existingRef != null) {\n return existingRef;\n }\n const newRef = createRecordCollectionRef(this, docRef, model);\n internalDoc.collectionRefs.set(modelName, new WeakRef(newRef));\n return newRef;\n };\n getCreateRecordRef = (docRef, id, model) => {\n const {\n internalDoc\n } = this.getCreateInternalDoc(docRef);\n const modelName = getMetadata(model).name;\n let modelMap = internalDoc.recordRefs.get(modelName);\n if (!modelMap) {\n modelMap = new Map();\n internalDoc.recordRefs.set(modelName, modelMap);\n }\n const existingRef = modelMap.get(id)?.deref();\n if (existingRef != null) {\n return existingRef;\n }\n const newRef = createRecordRef(this, docRef, id, model);\n modelMap.set(id, new WeakRef(newRef));\n return newRef;\n };\n\n /**\n * Called when the first metadata subscription is opened for a document.\n * Implementation must:\n * - Set status to LOADING immediately\n * - Load/validate metadata asynchronously\n * - Set status to LOADED or ERROR when complete\n * - Handle all errors internally (never throw/reject)\n */\n\n /**\n * Called when the first data subscription is opened for a document.\n * Implementation must:\n * - Set status to LOADING immediately\n * - Set up data synchronization asynchronously\n * - Set status to LOADED or ERROR when ready\n * - Handle all errors internally (never throw/reject)\n */\n\n /**\n * Called when the last metadata subscription is closed for a document.\n * Implementation should clean up any resources related to metadata loading.\n */\n\n /**\n * Called when the last data subscription is closed for a document.\n * Implementation should clean up any resources related to data synchronization.\n */\n\n createBaseInternalDoc = (ref, metadata) => {\n const schema = ref.schema;\n return {\n ref: new WeakRef(ref),\n metadata,\n schema,\n metadataStatus: {\n load: metadata ? DocumentLoadStatus.LOADED : DocumentLoadStatus.UNLOADED,\n live: DocumentLiveStatus.DISCONNECTED\n },\n dataStatus: {\n load: DocumentLoadStatus.UNLOADED,\n live: DocumentLiveStatus.DISCONNECTED\n },\n metadataError: undefined,\n dataError: undefined,\n statusSubscribers: new Set(),\n hasMetadataSubscriptions: false,\n hasDataSubscriptions: false,\n collectionRefs: new Map(),\n recordRefs: new Map(),\n collectionSubscriptions: new Map(),\n docStateSubscribers: new Set(),\n metadataSubscribers: new Set(),\n recordSubscriptions: new Map(),\n yDoc: this.initializeYDoc(schema),\n yDocUpdateHandler: undefined,\n yjsCollectionHandlers: new Map()\n };\n };\n hasSubscriptions(internalDoc) {\n if (internalDoc.metadataSubscribers.size > 0 || internalDoc.docStateSubscribers.size > 0) {\n return true;\n }\n for (const subs of internalDoc.recordSubscriptions.values()) {\n if (!subs.changed?.size || !subs.deleted?.size) {\n return true;\n }\n }\n return false;\n }\n\n // Status helper methods\n notifyStatusSubscribers(internalDoc, docRef) {\n const status = {\n metadata: internalDoc.metadataStatus,\n data: internalDoc.dataStatus,\n metadataError: internalDoc.metadataError,\n dataError: internalDoc.dataError\n };\n for (const callback of internalDoc.statusSubscribers) {\n callback(docRef, status);\n }\n }\n updateMetadataStatus(internalDoc, docRef, update) {\n if (update.load != null || update.live != null) {\n internalDoc.metadataStatus = {\n load: update.load ?? internalDoc.metadataStatus.load,\n live: update.live ?? internalDoc.metadataStatus.live\n };\n }\n if (update.error != null) {\n internalDoc.metadataError = update.error;\n } else if (update.load === DocumentLoadStatus.LOADED) {\n // Clear error on successful load\n internalDoc.metadataError = undefined;\n }\n this.notifyStatusSubscribers(internalDoc, docRef);\n }\n updateDataStatus(internalDoc, docRef, update) {\n if (update.load != null || update.live != null) {\n internalDoc.dataStatus = {\n load: update.load ?? internalDoc.dataStatus.load,\n live: update.live ?? internalDoc.dataStatus.live\n };\n }\n if (update.error != null) {\n internalDoc.dataError = update.error;\n } else if (update.load === DocumentLoadStatus.LOADED) {\n // Clear error on successful load\n internalDoc.dataError = undefined;\n }\n this.notifyStatusSubscribers(internalDoc, docRef);\n }\n\n /**\n * Hook method called after a record is set. Subclasses can override to handle\n * backend synchronization, logging, or other side effects.\n */\n\n /**\n * Initialize a Y.Doc with the given schema\n */\n initializeYDoc(schema) {\n const yDoc = new Y.Doc();\n YjsSchemaMapper.initializeDocumentStructure(yDoc, schema);\n return yDoc;\n }\n\n /**\n * Get existing internal doc or create one with placeholder metadata for lazy initialization\n */\n getCreateInternalDoc(ref, metadata, initialYDoc) {\n const {\n id,\n schema\n } = ref;\n const existingDoc = this.documents.get(id);\n if (existingDoc != null) {\n // Use reference equality first (fast path), then deep equality for hot reload compatibility\n !(existingDoc.schema === schema || isDeepEqual(existingDoc.schema, schema)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Schema mismatch for existing document\") : invariant(false) : void 0;\n\n // The caller has a strong ref - in most cases this will be the same instance as we already\n // have stored in the ref field. If it is not, we want to return a stable ref so users can\n // easily depend on reference equality.\n\n // It's possible the previous weak ref was collected as all references were dropped. If so,\n // we can update the weak ref.\n const existingRef = existingDoc.ref.deref();\n if (existingRef == null) {\n existingDoc.ref = new WeakRef(ref);\n }\n return {\n internalDocRef: existingRef ?? ref,\n internalDoc: existingDoc,\n wasExisting: true\n };\n }\n const internalDoc = this.createInternalDoc(ref, metadata, initialYDoc);\n this.documents.set(id, internalDoc);\n return {\n internalDocRef: ref,\n internalDoc,\n wasExisting: false\n };\n }\n getDocumentSnapshot = docRef => {\n const {\n internalDoc\n } = this.getCreateInternalDoc(docRef);\n\n // For now, return the Y.Doc as the state\n // Later this can be enhanced to serialize Y.Doc content or return specific data\n return Promise.resolve(internalDoc.yDoc);\n };\n getRecordSnapshot = recordRef => {\n const {\n internalDoc\n } = this.getCreateInternalDoc(recordRef.docRef);\n const snapshot = this.getRecordSnapshotInternal(internalDoc, recordRef);\n\n // This is a promise interface for async loading for external API implementations to trigger a load first\n // For this base implementation, we always return from the local Y.Doc\n\n if (snapshot == null) {\n // TODO: well known error types\n return Promise.reject(new Error(`Record not found: ${recordRef.id}`));\n }\n return Promise.resolve(snapshot);\n };\n getRecordSnapshotInternal(internalDoc, recordRef) {\n return YjsSchemaMapper.getRecordSnapshot(internalDoc.yDoc, getMetadata(recordRef.model).name, recordRef.id);\n }\n setRecord = (recordRef, state) => {\n const internalDoc = this.documents.get(recordRef.docRef.id);\n !(internalDoc != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot set record as document not found: ${recordRef.docRef.id}`) : invariant(false) : void 0;\n\n // TODO: you cannot resurrect tomb stoned records I think, so need to check for that before notify\n // TODO: perhaps we just call this via onRecordSet instead?\n\n YjsSchemaMapper.setRecord(internalDoc.yDoc, getMetadata(recordRef.model).name, recordRef.id, state);\n\n // Call hook method for subclass-specific handling\n this.onRecordSet?.(recordRef, state);\n return Promise.resolve();\n };\n updateRecord = (recordRef, partialState) => {\n const internalDoc = this.documents.get(recordRef.docRef.id);\n !(internalDoc != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot update record as document not found: ${recordRef.docRef.id}`) : invariant(false) : void 0;\n const wasUpdated = YjsSchemaMapper.updateRecord(internalDoc.yDoc, getMetadata(recordRef.model).name, recordRef.id, partialState);\n if (!wasUpdated) {\n return Promise.reject(new Error(`Record not found for update: ${recordRef.id}`));\n }\n\n // Call hook method for subclass-specific handling\n this.onRecordSet?.(recordRef, partialState);\n return Promise.resolve();\n };\n withTransaction = (docRef, fn, description) => {\n const internalDoc = this.documents.get(docRef.id);\n !(internalDoc != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot start transaction as document not found: ${docRef.id}`) : invariant(false) : void 0;\n internalDoc.yDoc.transact(fn, description);\n };\n onMetadataChange(docRef, callback) {\n const {\n internalDoc,\n internalDocRef\n } = this.getCreateInternalDoc(docRef);\n const isFirstSubscription = !internalDoc.hasMetadataSubscriptions;\n internalDoc.metadataSubscribers.add(callback);\n internalDoc.hasMetadataSubscriptions = true;\n\n // Trigger remote load if this is the first subscription and not yet loaded\n if (isFirstSubscription && internalDoc.metadataStatus.load === DocumentLoadStatus.UNLOADED) {\n this.onMetadataSubscriptionOpened(internalDoc, internalDocRef);\n }\n\n // Immediately call back with current metadata if available\n if (internalDoc.metadata != null) {\n callback(docRef, internalDoc.metadata);\n }\n return () => {\n const currentDoc = this.documents.get(docRef.id);\n if (currentDoc) {\n currentDoc.metadataSubscribers.delete(callback);\n\n // Check if this was the last metadata subscription\n if (currentDoc.metadataSubscribers.size === 0) {\n currentDoc.hasMetadataSubscriptions = false;\n this.onMetadataSubscriptionClosed(currentDoc, internalDocRef);\n }\n }\n };\n }\n onStateChange = (docRef, callback) => {\n const {\n internalDoc,\n internalDocRef\n } = this.getCreateInternalDoc(docRef);\n const isFirstDataSubscription = !internalDoc.hasDataSubscriptions;\n const isFirstStateSubscription = internalDoc.docStateSubscribers.size === 0;\n internalDoc.docStateSubscribers.add(callback);\n internalDoc.hasDataSubscriptions = true;\n\n // Trigger remote load if this is the first data subscription and not yet loaded\n if (isFirstDataSubscription && internalDoc.dataStatus.load === DocumentLoadStatus.UNLOADED) {\n this.onDataSubscriptionOpened(internalDoc, internalDocRef);\n }\n\n // Set up Y.Doc listener if this is the first state subscription\n if (isFirstStateSubscription && !internalDoc.yDocUpdateHandler) {\n const updateHandler = () => {\n this.notifyStateSubscribers(internalDoc, docRef);\n };\n internalDoc.yDoc.on(\"update\", updateHandler);\n internalDoc.yDocUpdateHandler = updateHandler;\n }\n\n // Call callback immediately with current state\n callback(internalDocRef);\n return () => {\n const currentDoc = this.documents.get(docRef.id);\n if (!currentDoc) return;\n currentDoc.docStateSubscribers.delete(callback);\n\n // Clean up Y.Doc listener if no more state subscriptions\n if (currentDoc.docStateSubscribers.size === 0 && currentDoc.yDocUpdateHandler) {\n currentDoc.yDoc.off(\"update\", currentDoc.yDocUpdateHandler);\n currentDoc.yDocUpdateHandler = undefined;\n }\n\n // Check if this removes all data subscriptions (state + record + collection)\n const hasDataSubs = currentDoc.docStateSubscribers.size > 0 || currentDoc.recordSubscriptions.size > 0 || Array.from(currentDoc.collectionSubscriptions.values()).some(subs => subs.added?.size || subs.changed?.size || subs.deleted?.size);\n if (!hasDataSubs) {\n currentDoc.hasDataSubscriptions = false;\n this.onDataSubscriptionClosed(currentDoc, internalDocRef);\n }\n };\n };\n getDocumentRef(docId) {\n const internalDoc = this.documents.get(docId);\n if (!internalDoc) return null;\n return createDocRef(this.app, docId, internalDoc.schema);\n }\n notifyMetadataSubscribers(internalDoc, docRef, metadata) {\n for (const callback of internalDoc.metadataSubscribers) {\n callback(docRef, metadata);\n }\n }\n notifyStateSubscribers(internalDoc, docRef) {\n for (const callback of internalDoc.docStateSubscribers) {\n callback(docRef);\n }\n }\n updateMetadata(docId, metadata) {\n const internalDoc = this.documents.get(docId);\n if (internalDoc) {\n internalDoc.metadata = metadata;\n const docRef = this.getDocumentRef(docId);\n if (docRef) {\n this.notifyMetadataSubscribers(internalDoc, docRef, metadata);\n }\n }\n }\n notifyCollectionSubscribers(internalDoc, collection, recordId, changeType) {\n const storageName = getMetadata(collection.model).name;\n const subs = internalDoc.collectionSubscriptions.get(storageName);\n if (!subs) {\n return;\n }\n const subscribers = subs[changeType];\n if (subscribers == null || subscribers.size === 0) {\n return;\n }\n const recordRefInstance = this.getCreateRecordRef(collection.docRef, recordId, collection.model);\n const records = [recordRefInstance];\n for (const callback of subscribers) {\n callback(records);\n }\n }\n notifyRecordSubscribers(recordRef, changeType) {\n const internalDoc = this.documents.get(recordRef.docRef.id);\n !(internalDoc != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Document not found for record notifications\") : invariant(false) : void 0;\n const recordSubs = internalDoc.recordSubscriptions.get(recordRef.id);\n if (recordSubs == null) {\n return;\n }\n\n // Verify model consistency\n !(getMetadata(recordSubs.ref.model).name === getMetadata(recordRef.model).name) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Model mismatch when notifying record subscribers for ${recordRef.id}: expected ${getMetadata(recordSubs.ref.model).name}, got ${getMetadata(recordRef.model).name}`) : invariant(false) : void 0;\n switch (changeType) {\n case \"changed\":\n {\n const snapshot = this.getRecordSnapshotInternal(internalDoc, recordRef);\n for (const callback of recordSubs.changed ?? []) {\n try {\n callback(snapshot, recordRef);\n } catch (e) {\n console.error(\"Record onChanged callback threw unhandled error\", e, {\n model: getMetadata(recordRef.model).name,\n id: recordRef.id\n });\n }\n }\n break;\n }\n case \"deleted\":\n {\n for (const callback of recordSubs.deleted ?? []) {\n try {\n callback(recordRef);\n } catch (e) {\n console.error(\"Record onDeleted callback threw unhandled error\", e, {\n model: getMetadata(recordRef.model).name,\n id: recordRef.id\n });\n }\n }\n break;\n }\n }\n }\n\n // Collection methods implementation\n getRecord = (collection, id) => {\n const internalDoc = this.documents.get(collection.docRef.id);\n if (!internalDoc) return undefined;\n const storageName = getMetadata(collection.model).name;\n const recordExists = YjsSchemaMapper.getRecordData(internalDoc.yDoc, storageName, id);\n return recordExists ? this.getCreateRecordRef(collection.docRef, id, collection.model) : undefined;\n };\n hasRecord = (collection, id) => {\n const internalDoc = this.documents.get(collection.docRef.id);\n if (!internalDoc) return false;\n const storageName = getMetadata(collection.model).name;\n return YjsSchemaMapper.getRecordData(internalDoc.yDoc, storageName, id) != null;\n };\n setCollectionRecord = (collection, id, state) => {\n // Create a RecordRef and delegate to existing setRecord method\n const recordRefInstance = this.getCreateRecordRef(collection.docRef, id, collection.model);\n return this.setRecord(recordRefInstance, state);\n };\n deleteRecord = record => {\n const internalDoc = this.documents.get(record.docRef.id);\n if (!internalDoc) {\n // Document doesn't exist, record doesn't exist - this is a no-op\n return Promise.resolve();\n }\n const storageName = getMetadata(record.model).name;\n const recordsCollection = YjsSchemaMapper.getRecordsMap(internalDoc.yDoc, storageName);\n const existed = recordsCollection.has(record.id);\n if (existed) {\n recordsCollection.delete(record.id);\n }\n return Promise.resolve();\n };\n getCollectionSize = collection => {\n const internalDoc = this.documents.get(collection.docRef.id);\n if (!internalDoc) return 0;\n const storageName = getMetadata(collection.model).name;\n return YjsSchemaMapper.getAllRecordIds(internalDoc.yDoc, storageName).length;\n };\n getCollectionRecords = collection => {\n const internalDoc = this.documents.get(collection.docRef.id);\n if (!internalDoc) return [];\n const storageName = getMetadata(collection.model).name;\n const recordIds = YjsSchemaMapper.getAllRecordIds(internalDoc.yDoc, storageName);\n return recordIds.map(id => this.getCreateRecordRef(collection.docRef, id, collection.model));\n };\n onCollectionItemsAdded = (collection, callback) => {\n const {\n internalDoc,\n internalDocRef\n } = this.getCreateInternalDoc(collection.docRef);\n return this.subscribeToCollectionChanges(internalDoc, internalDocRef, collection, \"added\", callback);\n };\n onCollectionItemsChanged = (collection, callback) => {\n const {\n internalDoc,\n internalDocRef\n } = this.getCreateInternalDoc(collection.docRef);\n return this.subscribeToCollectionChanges(internalDoc, internalDocRef, collection, \"changed\", callback);\n };\n onCollectionItemsDeleted = (collection, callback) => {\n const {\n internalDoc,\n internalDocRef\n } = this.getCreateInternalDoc(collection.docRef);\n return this.subscribeToCollectionChanges(internalDoc, internalDocRef, collection, \"deleted\", callback);\n };\n\n // TODO: clearer naming of subscription vs handlers etc.\n onRecordChanged = (record, callback) => {\n const {\n internalDoc,\n internalDocRef\n } = this.getCreateInternalDoc(record.docRef);\n const isFirstDataSubscription = !internalDoc.hasDataSubscriptions;\n const storageName = getMetadata(record.model).name;\n const collectionRef = this.getCreateRecordCollectionRef(record.docRef, record.model);\n const needsCollectionListener = !internalDoc.yjsCollectionHandlers.has(storageName);\n const recordSubs = this.getCreateRecordSubscriptions(internalDoc, record);\n (recordSubs.changed ??= new Set()).add(callback);\n internalDoc.hasDataSubscriptions = true;\n\n // Trigger remote load if this is the first data subscription and not yet loaded\n if (isFirstDataSubscription && internalDoc.dataStatus.load === DocumentLoadStatus.UNLOADED) {\n // Call lifecycle method without awaiting\n this.onDataSubscriptionOpened(internalDoc, internalDocRef);\n }\n if (needsCollectionListener) {\n this.getCreateCollectionSubscriptions(internalDoc, collectionRef);\n this.setupCollectionListener(internalDoc, collectionRef);\n }\n const snapshot = this.getRecordSnapshotInternal(internalDoc, record);\n if (snapshot != null) {\n callback(snapshot, record);\n }\n return () => {\n recordSubs.changed?.delete(callback);\n const currentDoc = this.documents.get(record.docRef.id);\n if (!currentDoc) return;\n if (isRecordSubscriptionsEmpty(recordSubs)) {\n currentDoc.recordSubscriptions.delete(record.id);\n }\n this.cleanupCollectionListenerIfUnused(currentDoc, record.docRef.id, storageName);\n const hasDataSubs = currentDoc.docStateSubscribers.size > 0 || currentDoc.recordSubscriptions.size > 0 || Array.from(currentDoc.collectionSubscriptions.values()).some(subs => subs.added?.size || subs.changed?.size || subs.deleted?.size);\n if (!hasDataSubs) {\n currentDoc.hasDataSubscriptions = false;\n this.onDataSubscriptionClosed(currentDoc, internalDocRef);\n }\n };\n };\n onRecordDeleted = (record, callback) => {\n const {\n internalDoc,\n internalDocRef\n } = this.getCreateInternalDoc(record.docRef);\n const isFirstDataSubscription = !internalDoc.hasDataSubscriptions;\n const storageName = getMetadata(record.model).name;\n const collectionRef = this.getCreateRecordCollectionRef(record.docRef, record.model);\n const needsCollectionListener = !internalDoc.yjsCollectionHandlers.has(storageName);\n const recordSubs = this.getCreateRecordSubscriptions(internalDoc, record);\n (recordSubs.deleted ??= new Set()).add(callback);\n internalDoc.hasDataSubscriptions = true;\n if (isFirstDataSubscription && internalDoc.dataStatus.load === DocumentLoadStatus.UNLOADED) {\n this.onDataSubscriptionOpened(internalDoc, internalDocRef);\n }\n if (needsCollectionListener) {\n this.getCreateCollectionSubscriptions(internalDoc, collectionRef);\n this.setupCollectionListener(internalDoc, collectionRef);\n }\n return () => {\n recordSubs.deleted?.delete(callback);\n const currentDoc = this.documents.get(record.docRef.id);\n if (!currentDoc) return;\n if (isRecordSubscriptionsEmpty(recordSubs)) {\n currentDoc.recordSubscriptions.delete(record.id);\n }\n this.cleanupCollectionListenerIfUnused(currentDoc, record.docRef.id, storageName);\n const hasDataSubs = currentDoc.docStateSubscribers.size > 0 || currentDoc.recordSubscriptions.size > 0 || Array.from(currentDoc.collectionSubscriptions.values()).some(subs => subs.added?.size || subs.changed?.size || subs.deleted?.size);\n if (!hasDataSubs) {\n currentDoc.hasDataSubscriptions = false;\n this.onDataSubscriptionClosed(currentDoc, internalDocRef);\n }\n };\n };\n getCreateCollectionSubscriptions(internalDoc, collection) {\n const storageName = getMetadata(collection.model).name;\n const docCollectionSubs = internalDoc.collectionSubscriptions.get(storageName) ?? internalDoc.collectionSubscriptions.set(storageName, {}).get(storageName);\n\n // Generic cast to specific types\n return docCollectionSubs;\n }\n getCreateRecordSubscriptions(internalDoc, record) {\n let recordSubs = internalDoc.recordSubscriptions.get(record.id);\n if (!recordSubs) {\n // Create new subscription entry with the record ref\n recordSubs = {\n ref: record\n };\n internalDoc.recordSubscriptions.set(record.id, recordSubs);\n } else {\n // Verify model consistency - records with same ID should have same model\n if (getMetadata(recordSubs.ref.model).name !== getMetadata(record.model).name) {\n throw new Error(`Model mismatch for record ${record.id}: expected ${getMetadata(recordSubs.ref.model).name}, got ${getMetadata(record.model).name}`);\n }\n }\n return recordSubs;\n }\n subscribeToCollectionChanges(internalDoc, internalDocRef, collection, changeType, callback) {\n const isFirstDataSubscription = !internalDoc.hasDataSubscriptions;\n const modelSubscriptions = this.getCreateCollectionSubscriptions(internalDoc, collection);\n const wasEmpty = isCollectionSubscriptionsEmpty(modelSubscriptions);\n (modelSubscriptions[changeType] ??= new Set()).add(callback);\n internalDoc.hasDataSubscriptions = true;\n\n // Trigger remote load if this is the first data subscription and not yet loaded\n if (isFirstDataSubscription && internalDoc.dataStatus.load === DocumentLoadStatus.UNLOADED) {\n // Call lifecycle method without awaiting\n this.onDataSubscriptionOpened(internalDoc, internalDocRef);\n }\n\n // Set up Y.Map listener if this is the first subscription for this collection\n if (wasEmpty) {\n this.setupCollectionListener(internalDoc, collection);\n }\n return () => {\n modelSubscriptions[changeType]?.delete(callback);\n const currentDoc = this.documents.get(collection.docRef.id);\n if (!currentDoc) return;\n const storageName = getMetadata(collection.model).name;\n this.cleanupCollectionListenerIfUnused(currentDoc, collection.docRef.id, storageName);\n const hasDataSubs = currentDoc.docStateSubscribers.size > 0 || currentDoc.recordSubscriptions.size > 0 || Array.from(currentDoc.collectionSubscriptions.values()).some(subs => subs.added?.size || subs.changed?.size || subs.deleted?.size);\n if (!hasDataSubs) {\n currentDoc.hasDataSubscriptions = false;\n this.onDataSubscriptionClosed(currentDoc, internalDocRef);\n }\n };\n }\n setupCollectionListener(internalDoc, collection) {\n const docId = collection.docRef.id;\n const storageName = getMetadata(collection.model).name;\n const yCollection = internalDoc.yDoc.getMap(storageName);\n this.logger.debug(\"Setting up collection listener\", {\n docId,\n storageName,\n existingKeys: Array.from(yCollection.keys()),\n allDocMaps: Array.from(internalDoc.yDoc.share.keys())\n });\n\n // TODO: tidy this up\n const eventHandler = events => {\n this.logger.debug(\"Y.Map observeDeep fired\", {\n docId,\n storageName,\n eventCount: events.length\n });\n const currentDoc = this.documents.get(docId);\n if (!currentDoc) return;\n const subs = currentDoc.collectionSubscriptions.get(storageName);\n if (!subs) return;\n const addedKeys = new Set();\n const changedKeys = new Set();\n const deletedKeys = new Set();\n for (const event of events) {\n // Shallow change, ie the collection itself was modified\n if (event.target === yCollection) {\n // Collection-level change (add/remove/replace keys in collection)\n for (const [key, change] of event.changes.keys) {\n switch (change.action) {\n case \"add\":\n addedKeys.add(key);\n break;\n case \"update\":\n // this is a replacement within the map\n changedKeys.add(key);\n break;\n case \"delete\":\n deletedKeys.add(key);\n break;\n }\n }\n } else {\n // Nested change (property change within a record)\n // path[0] is the record ID since path is relative to currentTarget (yCollection)\n const recordId = event.path[0];\n if (recordId != null) {\n changedKeys.add(recordId);\n }\n }\n }\n\n // Notify subscribers\n if (addedKeys.size > 0) {\n const addedRecords = Array.from(addedKeys).map(id => this.getCreateRecordRef(collection.docRef, id, collection.model));\n if (subs.added != null) {\n for (const callback of subs.added) {\n callback(addedRecords);\n }\n }\n for (const record of addedRecords) {\n this.notifyRecordSubscribers(record, \"changed\");\n }\n }\n if (changedKeys.size > 0) {\n const changedRecords = Array.from(changedKeys).map(id => this.getCreateRecordRef(collection.docRef, id, collection.model));\n if (subs.changed != null) {\n for (const callback of subs.changed) {\n callback(changedRecords);\n }\n }\n for (const record of changedRecords) {\n this.notifyRecordSubscribers(record, \"changed\");\n }\n }\n if (deletedKeys.size > 0) {\n const deletedRecords = Array.from(deletedKeys).map(id => this.getCreateRecordRef(collection.docRef, id, collection.model));\n if (subs.deleted?.size) {\n for (const callback of subs.deleted) {\n callback(deletedRecords);\n }\n }\n for (const record of deletedRecords) {\n this.notifyRecordSubscribers(record, \"deleted\");\n }\n }\n };\n yCollection.observeDeep(eventHandler);\n\n // Store the handler for cleanup\n internalDoc.yjsCollectionHandlers.set(storageName, () => {\n yCollection.unobserveDeep(eventHandler);\n });\n }\n cleanupCollectionListener(docId, storageName) {\n const internalDoc = this.documents.get(docId);\n if (internalDoc == null) {\n return;\n }\n const cleanup = internalDoc.yjsCollectionHandlers.get(storageName);\n if (cleanup != null) {\n cleanup();\n internalDoc.yjsCollectionHandlers.delete(storageName);\n }\n }\n cleanupCollectionListenerIfUnused(internalDoc, docId, storageName) {\n const collectionSubs = internalDoc.collectionSubscriptions.get(storageName);\n const hasCollectionSubs = collectionSubs != null && (collectionSubs.added?.size || collectionSubs.changed?.size || collectionSubs.deleted?.size);\n const hasRecordSubs = Array.from(internalDoc.recordSubscriptions.values()).some(recordSubs => getMetadata(recordSubs.ref.model).name === storageName && !isRecordSubscriptionsEmpty(recordSubs));\n if (!hasCollectionSubs && !hasRecordSubs) {\n this.cleanupCollectionListener(docId, storageName);\n if (collectionSubs != null) {\n internalDoc.collectionSubscriptions.delete(storageName);\n }\n }\n }\n\n // DocumentService status methods implementation\n getDocumentStatus = docRef => {\n const {\n internalDoc\n } = this.getCreateInternalDoc(docRef);\n return {\n metadata: internalDoc.metadataStatus,\n data: internalDoc.dataStatus,\n metadataError: internalDoc.metadataError,\n dataError: internalDoc.dataError\n };\n };\n onStatusChange = (docRef, callback) => {\n const {\n internalDoc\n } = this.getCreateInternalDoc(docRef);\n internalDoc.statusSubscribers.add(callback);\n\n // Call callback immediately with current status\n const status = {\n metadata: internalDoc.metadataStatus,\n data: internalDoc.dataStatus,\n metadataError: internalDoc.metadataError,\n dataError: internalDoc.dataError\n };\n callback(docRef, status);\n return () => {\n const currentDoc = this.documents.get(docRef.id);\n if (currentDoc) {\n currentDoc.statusSubscribers.delete(callback);\n }\n };\n };\n waitForMetadataLoad = async docRef => {\n const {\n internalDoc\n } = this.getCreateInternalDoc(docRef);\n if (internalDoc.metadataStatus.load === DocumentLoadStatus.LOADED) {\n return Promise.resolve();\n }\n if (internalDoc.metadataStatus.load === DocumentLoadStatus.ERROR) {\n return Promise.reject(new Error(\"Metadata load error\", {\n cause: internalDoc.metadataError\n }));\n }\n\n // Wait for status to change to LOADED or ERROR\n return new Promise((resolve, reject) => {\n const unsubscribe = this.onStatusChange(docRef, (_, status) => {\n if (status.metadata.load === DocumentLoadStatus.LOADED) {\n unsubscribe();\n resolve();\n } else if (status.metadata.load === DocumentLoadStatus.ERROR) {\n unsubscribe();\n reject(new Error(\"Metadata load error\", {\n cause: status.metadataError\n }));\n }\n });\n });\n };\n waitForDataLoad = async docRef => {\n const {\n internalDoc\n } = this.getCreateInternalDoc(docRef);\n if (internalDoc.dataStatus.load === DocumentLoadStatus.LOADED) {\n return Promise.resolve();\n }\n if (internalDoc.dataStatus.load === DocumentLoadStatus.ERROR) {\n return Promise.reject(new Error(\"Data load error\", {\n cause: internalDoc.dataError\n }));\n }\n\n // Wait for status to change to LOADED or ERROR\n return new Promise((resolve, reject) => {\n const unsubscribe = this.onStatusChange(docRef, (_, status) => {\n if (status.data.load === DocumentLoadStatus.LOADED) {\n unsubscribe();\n resolve();\n } else if (status.data.load === DocumentLoadStatus.ERROR) {\n unsubscribe();\n reject(new Error(\"Data load error\", {\n cause: status.dataError\n }));\n }\n });\n });\n };\n\n // FIXME: don't expose in production builds\n /**\n * @internal\n */\n getYDocForTesting(docId) {\n const internalDoc = this.documents.get(docId);\n return internalDoc ? internalDoc.yDoc : null;\n }\n}\nfunction isCollectionSubscriptionsEmpty(subs) {\n return !subs.added?.size && !subs.changed?.size && !subs.deleted?.size;\n}\nfunction isRecordSubscriptionsEmpty(subs) {\n return !subs.changed?.size && !subs.deleted?.size;\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { generateId } from \"@palantir/pack.core\";\nimport { createDocumentServiceConfig } from \"../DocumentServiceModule.js\";\nimport { createDocRef } from \"../types/DocumentRefImpl.js\";\nimport { DocumentLoadStatus } from \"../types/DocumentService.js\";\nimport { BaseYjsDocumentService } from \"./BaseYjsDocumentService.js\";\nexport function createInMemoryDocumentServiceConfig({\n autoCreateDocuments = true\n} = {}) {\n const config = {\n autoCreateDocuments\n };\n return createDocumentServiceConfig(internalCreateInMemoryDocumentService, config);\n}\nexport function internalCreateInMemoryDocumentService(app, options) {\n return new InMemoryDocumentService(app, options);\n}\nclass InMemoryDocumentService extends BaseYjsDocumentService {\n constructor(app, config) {\n super(app, app.config.logger.child({}, {\n level: \"debug\",\n msgPrefix: \"InMemoryDocumentService\"\n }));\n this.config = config;\n }\n createInternalDoc(ref, metadata) {\n return this.createBaseInternalDoc(ref, metadata);\n }\n get hasMetadataSubscriptions() {\n return Array.from(this.documents.values()).some(doc => this.hasSubscriptions(doc) && doc.metadataSubscribers.size > 0);\n }\n get hasStateSubscriptions() {\n return Array.from(this.documents.values()).some(doc => this.hasSubscriptions(doc) && doc.docStateSubscribers.size > 0);\n }\n createDocument = (metadata, schema) => {\n const id = generateDocumentId();\n const docRef = createDocRef(this.app, id, schema);\n const yDoc = this.initializeYDoc(schema);\n this.getCreateInternalDoc(docRef, metadata, yDoc);\n return Promise.resolve(docRef);\n };\n searchDocuments = (documentTypeName, schema, options) => {\n const results = [];\n const {\n documentName,\n limit\n } = options ?? {};\n for (const [docId, internalDoc] of this.documents.entries()) {\n if (internalDoc.metadata?.documentTypeName === documentTypeName) {\n if (documentName && !internalDoc.metadata.name.includes(documentName)) {\n continue;\n }\n results.push({\n ...internalDoc.metadata,\n id: docId\n });\n if (limit && results.length >= limit) {\n break;\n }\n }\n }\n return Promise.resolve(results);\n };\n\n // Lifecycle method implementations\n onMetadataSubscriptionOpened(internalDoc, docRef) {\n this.updateMetadataStatus(internalDoc, docRef, {\n load: DocumentLoadStatus.LOADING\n });\n if (this.config.autoCreateDocuments === false && internalDoc.metadata == null) {\n this.updateMetadataStatus(internalDoc, docRef, {\n error: new Error(\"Document not found and autoCreateDocuments is disabled\"),\n load: DocumentLoadStatus.ERROR\n });\n return;\n }\n this.updateMetadataStatus(internalDoc, docRef, {\n load: DocumentLoadStatus.LOADED\n });\n }\n onDataSubscriptionOpened(internalDoc, docRef) {\n this.updateDataStatus(internalDoc, docRef, {\n load: DocumentLoadStatus.LOADING\n });\n if (this.config.autoCreateDocuments === false && internalDoc.metadata == null) {\n this.updateDataStatus(internalDoc, docRef, {\n error: new Error(\"Document not found and autoCreateDocuments is disabled\"),\n load: DocumentLoadStatus.ERROR\n });\n return;\n }\n this.updateDataStatus(internalDoc, docRef, {\n load: DocumentLoadStatus.LOADED\n });\n }\n onMetadataSubscriptionClosed(_internalDoc, _docRef) {\n // No cleanup needed for in-memory service\n }\n onDataSubscriptionClosed(_internalDoc, _docRef) {\n // No cleanup needed for in-memory service\n }\n onActivity(_docRef, _callback) {\n return () => {};\n }\n onPresence(_docRef, _callback, _options) {\n return () => {};\n }\n updateCustomPresence(_docRef, _model, _eventData) {}\n}\nfunction generateDocumentId() {\n return generateId();\n}"]}
1
+ {"version":3,"sources":["../../src/DocumentServiceModule.ts","../../src/types/StateModule.ts","../../src/types/DocumentRefImpl.ts","../../src/types/DocumentService.ts","../../src/types/RecordCollectionRefImpl.ts","../../src/types/RecordRefImpl.ts","../../src/service/YjsSchemaMapper.ts","../../src/service/BaseYjsDocumentService.ts","../../src/service/InMemoryDocumentService.ts"],"names":["getMetadata","Y2"],"mappings":"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","file":"index.js","sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const DOCUMENT_SERVICE_MODULE_KEY = {\n key: Symbol(\"DocumentService\"),\n initModule: initDocumentService\n};\nexport function getDocumentService(app) {\n return app.getModule(DOCUMENT_SERVICE_MODULE_KEY);\n}\nexport function createDocumentServiceConfig(init, config) {\n return [DOCUMENT_SERVICE_MODULE_KEY, {\n ...config,\n init\n }];\n}\nfunction initDocumentService(app, config) {\n if (config == null) {\n throw new Error(\"DocumentServiceConfig is required to initialize DocumentService\");\n }\n return config.init(app, config);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assertIsAppInternal } from \"@palantir/pack.core\";\nimport { DOCUMENT_SERVICE_MODULE_KEY } from \"../DocumentServiceModule.js\";\n// Ensure state module is accessible on PackApp instances.\nexport const STATE_MODULE_ACCESSOR = \"state\";\nexport const STATE_MODULE_KEY = {\n appMemberName: STATE_MODULE_ACCESSOR,\n key: Symbol.for(\"pack.state\"),\n initModule: app => {\n const documentService = app.getModule(DOCUMENT_SERVICE_MODULE_KEY);\n return new StateModuleImpl(documentService);\n }\n};\nexport class StateModuleImpl {\n constructor(documentService) {\n this.documentService = documentService;\n }\n createDocRef(id, schema) {\n return this.documentService.createDocRef(id, schema);\n }\n createRecordRef(docRef, id, model) {\n return this.documentService.getCreateRecordRef(docRef, id, model);\n }\n async createDocument(metadata, schema) {\n return this.documentService.createDocument(metadata, schema);\n }\n async searchDocuments(documentTypeName, schema, options) {\n return this.documentService.searchDocuments(documentTypeName, schema, options);\n }\n async getDocumentSnapshot(docRef) {\n return this.documentService.getDocumentSnapshot(docRef);\n }\n onActivity(docRef, callback) {\n return this.documentService.onActivity(docRef, callback);\n }\n onMetadataChange(docRef, cb) {\n return this.documentService.onMetadataChange(docRef, cb);\n }\n onPresence(docRef, callback, options) {\n return this.documentService.onPresence(docRef, callback, options);\n }\n onStateChange(docRef, cb) {\n return this.documentService.onStateChange(docRef, cb);\n }\n updateCustomPresence(docRef, model, eventData) {\n this.documentService.updateCustomPresence(docRef, model, eventData);\n }\n async getRecordSnapshot(recordRef) {\n return this.documentService.getRecordSnapshot(recordRef);\n }\n async setRecord(recordRef, state) {\n return this.documentService.setRecord(recordRef, state);\n }\n async updateRecord(recordRef, partialState) {\n return this.documentService.updateRecord(recordRef, partialState);\n }\n withTransaction(docRef, fn, description) {\n this.documentService.withTransaction(docRef, fn, description);\n }\n\n // Collection methods\n getCreateRecordCollectionRef(docRef, model) {\n return this.documentService.getCreateRecordCollectionRef(docRef, model);\n }\n\n // FIXME: confusing vs createRecordRef\n getRecord(collection, id) {\n return this.documentService.getRecord(collection, id);\n }\n hasRecord(collection, id) {\n return this.documentService.hasRecord(collection, id);\n }\n async setCollectionRecord(collection, id, state) {\n return this.documentService.setCollectionRecord(collection, id, state);\n }\n getCollectionSize(collection) {\n return this.documentService.getCollectionSize(collection);\n }\n getCollectionRecords(collection) {\n return this.documentService.getCollectionRecords(collection);\n }\n onRecordChanged(record, callback) {\n return this.documentService.onRecordChanged(record, callback);\n }\n onRecordDeleted(record, callback) {\n return this.documentService.onRecordDeleted(record, callback);\n }\n onCollectionItemsAdded(collection, callback) {\n return this.documentService.onCollectionItemsAdded(collection, callback);\n }\n onCollectionItemsChanged(collection, callback) {\n return this.documentService.onCollectionItemsChanged(collection, callback);\n }\n onCollectionItemsDeleted(collection, callback) {\n return this.documentService.onCollectionItemsDeleted(collection, callback);\n }\n\n // Status methods implementation\n getDocumentStatus(docRef) {\n return this.documentService.getDocumentStatus(docRef);\n }\n onStatusChange(docRef, callback) {\n return this.documentService.onStatusChange(docRef, callback);\n }\n async waitForMetadataLoad(docRef) {\n return this.documentService.waitForMetadataLoad(docRef);\n }\n async waitForDataLoad(docRef) {\n return this.documentService.waitForDataLoad(docRef);\n }\n async deleteRecord(record) {\n return this.documentService.deleteRecord(record);\n }\n}\nexport function getStateModule(app) {\n assertIsAppInternal(app);\n return app.getModule(STATE_MODULE_KEY);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DocumentRefBrand } from \"@palantir/pack.document-schema.model-types\";\nimport { getStateModule } from \"./StateModule.js\";\nconst INVALID_DOC_REF_ID = \"INVALID_DOC_REF\";\nconst INVALID_DOC_REF = Object.freeze({\n id: INVALID_DOC_REF_ID,\n schema: {},\n [DocumentRefBrand]: DocumentRefBrand,\n getDocSnapshot: () => Promise.reject(new Error(\"Invalid document reference\")),\n getRecords: () => {\n throw new Error(\"Invalid document reference\");\n },\n onActivity: () => () => {},\n onMetadataChange: () => () => {},\n onPresence: () => () => {},\n onStateChange: () => () => {},\n updateCustomPresence: () => {},\n withTransaction: () => {\n throw new Error(\"Invalid document reference\");\n }\n});\nexport const createDocRef = (app, id, schema) => {\n return new DocumentRefImpl(app, id, schema);\n};\n\n/**\n * Get an invalid document reference. This is a stable reference that can be\n * used to represent a non-existent or invalid document.\n *\n * Not to be confused with a valid reference to a non-existent document, an\n * invalid reference is one that is not properly initialized. For example, code\n * that initializes with an undefined or empty documentId might produce an\n * invalid document reference rather than propagate nullish types.\n *\n * Most operations on an invalid reference are no-ops. For the rest, it is\n * recommended to check for validity using {@link isValidDocRef} before\n * performing operations.\n */\nexport function invalidDocRef() {\n return INVALID_DOC_REF;\n}\n\n/**\n * Check if a document reference is an invalid reference.\n * Not to be confused with a valid reference to a non-existent document, an invalid reference is one that is not properly initialized.\n * For example, code that initializes with an undefined or empty documentId might produce an invalid document reference rather than\n * propagate nullish types, as most operations on an invalid reference are no-ops. For the rest, it is recommended to check for\n * validity using this function before performing operations.\n */\nexport function isValidDocRef(docRef) {\n return docRef.id !== INVALID_DOC_REF_ID && docRef.id !== \"\";\n}\nclass DocumentRefImpl {\n id;\n schema;\n #stateModule;\n constructor(app, id, schema) {\n this.#stateModule = getStateModule(app);\n this.id = id;\n this.schema = schema;\n }\n async getDocSnapshot() {\n return this.#stateModule.getDocumentSnapshot(this);\n }\n getRecords(model) {\n return this.#stateModule.getCreateRecordCollectionRef(this, model);\n }\n onActivity(callback) {\n return this.#stateModule.onActivity(this, callback);\n }\n onMetadataChange(cb) {\n return this.#stateModule.onMetadataChange(this, cb);\n }\n onPresence(callback, options) {\n return this.#stateModule.onPresence(this, callback, options);\n }\n onStateChange(callback) {\n return this.#stateModule.onStateChange(this, callback);\n }\n updateCustomPresence(model, eventData) {\n this.#stateModule.updateCustomPresence(this, model, eventData);\n }\n withTransaction(fn, description) {\n this.#stateModule.withTransaction(this, fn, description);\n }\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const DocumentLoadStatus = {\n UNLOADED: \"unloaded\",\n // Not yet loaded\n LOADING: \"loading\",\n // Initial load in progress\n LOADED: \"loaded\",\n // Successfully loaded\n ERROR: \"error\" // Load failed\n};\nexport const DocumentLiveStatus = {\n DISCONNECTED: \"disconnected\",\n // Not syncing\n CONNECTING: \"connecting\",\n // Establishing connection\n CONNECTED: \"connected\",\n // Live syncing active\n ERROR: \"error\" // Connection error\n};\n\n/**\n * Base interface for specific document service implementations.\n * The DocumentService is responsible for persisting document state,\n * metadata, and providing methods to subscribe and interact with documents.\n *\n * The main implementation communicates with the Foundry platform (see @palantir/pack.state.foundry).\n */","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { RecordCollectionRefBrand } from \"@palantir/pack.document-schema.model-types\";\nimport { invalidDocRef } from \"./DocumentRefImpl.js\";\nconst INVALID_RECORD_COLLECTION_REF = Object.freeze({\n docRef: invalidDocRef(),\n model: {},\n [RecordCollectionRefBrand]: RecordCollectionRefBrand,\n get: () => undefined,\n has: () => false,\n set: () => Promise.reject(new Error(\"Invalid record collection reference\")),\n delete: () => Promise.reject(new Error(\"Invalid record collection reference\")),\n size: 0,\n [Symbol.iterator]: () => ({\n next: () => ({\n done: true,\n value: undefined\n })\n }),\n onItemsAdded: () => () => {},\n onItemsChanged: () => () => {},\n onItemsDeleted: () => () => {}\n});\nexport const createRecordCollectionRef = (documentService, docRef, model) => {\n return new RecordCollectionRefImpl(documentService, docRef, model);\n};\n\n/**\n * Get an invalid record collection reference. This is a stable reference that\n * can be used to represent an invalid record collection.\n *\n * Not to be confused with a valid reference to a non-existent record\n * collection, an invalid reference is one that is not properly initialized. For\n * example, code that initializes with an undefined or empty model might produce\n * an invalid record collection reference rather than propagate nullish types.\n *\n * Most operations on an invalid reference are no-ops. For the rest, it is\n * recommended to check for validity using {@link isValidRecordCollectionRef}\n * before performing operations.\n */\nexport function invalidRecordCollectionRef() {\n return INVALID_RECORD_COLLECTION_REF;\n}\n\n/**\n * Check if a record collection reference is a valid reference.\n *\n * Not to be confused with a valid reference to a non-existent record\n * collection, an invalid reference is one that is not properly initialized.\n *\n * Most operations on an invalid reference are no-ops. For the rest, it is\n * recommended to check for validity using this function before performing\n * operations.\n */\nexport function isValidRecordCollectionRef(collectionRef) {\n return collectionRef !== INVALID_RECORD_COLLECTION_REF;\n}\nclass RecordCollectionRefImpl {\n docRef;\n model;\n #documentService;\n constructor(documentService, docRef, model) {\n this.docRef = docRef;\n this.model = model;\n this.#documentService = documentService;\n }\n get(id) {\n return this.#documentService.getRecord(this, id);\n }\n has(id) {\n return this.#documentService.hasRecord(this, id);\n }\n async set(id, state) {\n return this.#documentService.setCollectionRecord(this, id, state);\n }\n delete(id) {\n const recordRefInstance = this.#documentService.getRecord(this, id);\n if (recordRefInstance) {\n return this.#documentService.deleteRecord(recordRefInstance);\n }\n return Promise.reject(new Error(`Unknown record`));\n }\n get size() {\n return this.#documentService.getCollectionSize(this);\n }\n [Symbol.iterator]() {\n return this.#documentService.getCollectionRecords(this)[Symbol.iterator]();\n }\n onItemsAdded = callback => {\n return this.#documentService.onCollectionItemsAdded(this, callback);\n };\n onItemsChanged = callback => {\n return this.#documentService.onCollectionItemsChanged(this, callback);\n };\n onItemsDeleted = callback => {\n return this.#documentService.onCollectionItemsDeleted(this, callback);\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { RecordRefBrand } from \"@palantir/pack.document-schema.model-types\";\nimport { invalidDocRef } from \"./DocumentRefImpl.js\";\nconst INVALID_RECORD_ID = \"INVALID_RECORD_REF\";\nconst INVALID_RECORD_REF = Object.freeze({\n docRef: invalidDocRef(),\n id: INVALID_RECORD_ID,\n model: {},\n [RecordRefBrand]: RecordRefBrand,\n delete: () => Promise.reject(new Error(\"Invalid record reference\")),\n getSnapshot: () => Promise.reject(new Error(\"Invalid record reference\")),\n set: () => Promise.reject(new Error(\"Invalid record reference\")),\n onChange: () => () => {},\n onDeleted: () => () => {},\n update: () => Promise.reject(new Error(\"Invalid record reference\"))\n});\nexport const createRecordRef = (documentService, docRef, id, model) => {\n return new RecordRefImpl(documentService, docRef, id, model);\n};\n\n/**\n * Get an invalid record reference. This is a stable reference that can be used\n * to represent an invalid record.\n *\n * Not to be confused with a valid reference to a non-existent record, an\n * invalid reference is one that is not properly initialized. For example, code\n * that initializes with an undefined or empty recordId might produce an\n * invalid record reference rather than propagate nullish types.\n *\n * Most operations on an invalid reference are no-ops. For the rest, it is\n * recommended to check for validity using {@link isValidRecordRef} before\n * performing operations.\n */\nexport function invalidRecordRef() {\n return INVALID_RECORD_REF;\n}\n\n/**\n * Check if a record reference is a valid reference.\n *\n * Not to be confused with a valid reference to a non-existent record, an\n * invalid reference is one that is not properly initialized.\n *\n * For example, code that initializes with an undefined or empty recordId might\n * produce an invalid record reference rather than propagate nullish types, as\n * most operations on an invalid reference are no-ops. For the rest, it is\n * recommended to check for validity using this function before performing\n * operations.\n */\nexport function isValidRecordRef(recordRef) {\n return recordRef.id !== INVALID_RECORD_ID;\n}\nclass RecordRefImpl {\n docRef;\n id;\n model;\n #documentService;\n constructor(documentService, docRef, id, model) {\n this.#documentService = documentService;\n this.docRef = docRef;\n this.id = id;\n this.model = model;\n }\n async getSnapshot() {\n return this.#documentService.getRecordSnapshot(this);\n }\n onChange(callback) {\n return this.#documentService.onRecordChanged(this, callback);\n }\n onDeleted(callback) {\n return this.#documentService.onRecordDeleted(this, callback);\n }\n delete() {\n return this.#documentService.deleteRecord(this);\n }\n set(record) {\n return this.#documentService.setRecord(this, record);\n }\n update(partialRecord) {\n return this.#documentService.updateRecord(this, partialRecord);\n }\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getMetadata } from \"@palantir/pack.document-schema.model-types\";\nimport * as Y from \"yjs\";\nexport function initializeDocumentStructure(yDoc, schema) {\n // Initialize storage for each model type using storageName directly on the root Y.Doc\n Object.values(schema).forEach(modelEntry => {\n yDoc.getMap(getMetadata(modelEntry).name);\n });\n}\nexport function getRecordsMap(yDoc, storageName) {\n return yDoc.getMap(storageName);\n}\nexport function getRecordData(yDoc, storageName, recordId) {\n const recordsCollection = getRecordsMap(yDoc, storageName);\n return recordsCollection.get(recordId);\n}\nexport function setRecord(yDoc, storageName, recordId, state) {\n const recordsCollection = getRecordsMap(yDoc, storageName);\n const currentRecord = recordsCollection.get(recordId);\n const wasExisting = currentRecord != null;\n\n // Use transaction for atomic update\n yDoc.transact(() => {\n if (currentRecord != null) {\n // Clear existing record completely\n currentRecord.clear();\n populateYMapFromState(currentRecord, state);\n } else {\n // Create new record\n const newRecord = new Y.Map();\n populateYMapFromState(newRecord, state);\n recordsCollection.set(recordId, newRecord);\n }\n });\n return wasExisting;\n}\nexport function getRecordSnapshot(yDoc, storageName, recordId) {\n const data = getRecordData(yDoc, storageName, recordId);\n if (!data) {\n return undefined;\n }\n return yMapToState(data);\n}\nexport function updateRecord(yDoc, storageName, recordId, partialState) {\n const recordsCollection = getRecordsMap(yDoc, storageName);\n const currentRecord = recordsCollection.get(recordId);\n if (currentRecord == null) {\n return false; // Record doesn't exist, cannot update\n }\n\n // Use transaction for atomic partial update\n yDoc.transact(() => {\n updateYMapFromPartialState(currentRecord, partialState);\n });\n return true;\n}\nexport function getAllRecordIds(yDoc, storageName) {\n const recordsCollection = getRecordsMap(yDoc, storageName);\n return Array.from(recordsCollection.keys()).map(key => key);\n}\nfunction populateYMapFromState(yMap, state) {\n if (state != null && typeof state === \"object\") {\n Object.entries(state).forEach(([key, value]) => {\n if (value === undefined) return;\n if (Array.isArray(value)) {\n const yArray = new Y.Array();\n value.forEach(item => {\n yArray.push([item]);\n });\n yMap.set(key, yArray);\n } else if (typeof value === \"object\" && value != null) {\n const nestedMap = new Y.Map();\n populateYMapFromState(nestedMap, value);\n yMap.set(key, nestedMap);\n } else {\n yMap.set(key, value);\n }\n });\n }\n}\nfunction updateYMapFromPartialState(yMap, partialState) {\n if (typeof partialState === \"object\") {\n Object.entries(partialState).forEach(([key, value]) => {\n if (value === undefined) {\n // Remove the field if undefined is explicitly provided\n yMap.delete(key);\n return;\n }\n if (Array.isArray(value)) {\n const yArray = new Y.Array();\n value.forEach(item => {\n yArray.push([item]);\n });\n yMap.set(key, yArray);\n } else if (typeof value === \"object\" && value != null) {\n // For nested objects, we need to handle partial updates\n const existingValue = yMap.get(key);\n if (existingValue instanceof Y.Map) {\n // Recursively update nested Y.Map\n updateYMapFromPartialState(existingValue, value);\n } else {\n // Replace with new nested map if existing value is not a Y.Map\n const nestedMap = new Y.Map();\n populateYMapFromState(nestedMap, value);\n yMap.set(key, nestedMap);\n }\n } else {\n yMap.set(key, value);\n }\n });\n }\n}\nfunction yMapToState(yMap) {\n const state = {};\n yMap.forEach((value, key) => {\n if (value instanceof Y.Array) {\n state[key] = value.toArray();\n } else if (value instanceof Y.Map) {\n state[key] = yMapToState(value);\n } else {\n state[key] = value;\n }\n });\n return state;\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable no-console */\n\nimport { getMetadata } from \"@palantir/pack.document-schema.model-types\";\nimport { isDeepEqual } from \"remeda\";\nimport invariant from \"tiny-invariant\";\nimport * as Y from \"yjs\";\nimport { createDocRef } from \"../types/DocumentRefImpl.js\";\nimport { DocumentLiveStatus, DocumentLoadStatus } from \"../types/DocumentService.js\";\nimport { createRecordCollectionRef } from \"../types/RecordCollectionRefImpl.js\";\nimport { createRecordRef } from \"../types/RecordRefImpl.js\";\nimport * as YjsSchemaMapper from \"./YjsSchemaMapper.js\";\n/**\n * Base class for document services that use Y.js for local state management.\n * Provides common Y.js operations for both in-memory and backend services.\n *\n * // TODO: Move this to an internal package\n */\nexport class BaseYjsDocumentService {\n documents = new Map();\n constructor(app, logger) {\n this.app = app;\n this.logger = logger;\n }\n createDocRef = (id, schema) => {\n // Create a (likely) temporary doc ref - the internal doc will be created if it is unknown\n // If it is known, we will return the stable ref from getCreateInternalDoc\n const temporaryRef = createDocRef(this.app, id, schema);\n const {\n internalDocRef\n } = this.getCreateInternalDoc(temporaryRef);\n return internalDocRef;\n };\n getCreateRecordCollectionRef = (docRef, model) => {\n const {\n internalDoc\n } = this.getCreateInternalDoc(docRef);\n const modelName = getMetadata(model).name;\n const existingRef = internalDoc.collectionRefs.get(modelName)?.deref();\n if (existingRef != null) {\n return existingRef;\n }\n const newRef = createRecordCollectionRef(this, docRef, model);\n internalDoc.collectionRefs.set(modelName, new WeakRef(newRef));\n return newRef;\n };\n getCreateRecordRef = (docRef, id, model) => {\n const {\n internalDoc\n } = this.getCreateInternalDoc(docRef);\n const modelName = getMetadata(model).name;\n let modelMap = internalDoc.recordRefs.get(modelName);\n if (!modelMap) {\n modelMap = new Map();\n internalDoc.recordRefs.set(modelName, modelMap);\n }\n const existingRef = modelMap.get(id)?.deref();\n if (existingRef != null) {\n return existingRef;\n }\n const newRef = createRecordRef(this, docRef, id, model);\n modelMap.set(id, new WeakRef(newRef));\n return newRef;\n };\n\n /**\n * Called when the first metadata subscription is opened for a document.\n * Implementation must:\n * - Set status to LOADING immediately\n * - Load/validate metadata asynchronously\n * - Set status to LOADED or ERROR when complete\n * - Handle all errors internally (never throw/reject)\n */\n\n /**\n * Called when the first data subscription is opened for a document.\n * Implementation must:\n * - Set status to LOADING immediately\n * - Set up data synchronization asynchronously\n * - Set status to LOADED or ERROR when ready\n * - Handle all errors internally (never throw/reject)\n */\n\n /**\n * Called when the last metadata subscription is closed for a document.\n * Implementation should clean up any resources related to metadata loading.\n */\n\n /**\n * Called when the last data subscription is closed for a document.\n * Implementation should clean up any resources related to data synchronization.\n */\n\n createBaseInternalDoc = (ref, metadata) => {\n const schema = ref.schema;\n return {\n ref: new WeakRef(ref),\n metadata,\n schema,\n metadataStatus: {\n load: metadata ? DocumentLoadStatus.LOADED : DocumentLoadStatus.UNLOADED,\n live: DocumentLiveStatus.DISCONNECTED\n },\n dataStatus: {\n load: DocumentLoadStatus.UNLOADED,\n live: DocumentLiveStatus.DISCONNECTED\n },\n metadataError: undefined,\n dataError: undefined,\n statusSubscribers: new Set(),\n hasMetadataSubscriptions: false,\n hasDataSubscriptions: false,\n collectionRefs: new Map(),\n recordRefs: new Map(),\n collectionSubscriptions: new Map(),\n docStateSubscribers: new Set(),\n metadataSubscribers: new Set(),\n recordSubscriptions: new Map(),\n yDoc: this.initializeYDoc(schema),\n yDocUpdateHandler: undefined,\n yjsCollectionHandlers: new Map()\n };\n };\n hasSubscriptions(internalDoc) {\n if (internalDoc.metadataSubscribers.size > 0 || internalDoc.docStateSubscribers.size > 0) {\n return true;\n }\n for (const subs of internalDoc.recordSubscriptions.values()) {\n if (!subs.changed?.size || !subs.deleted?.size) {\n return true;\n }\n }\n return false;\n }\n\n // Status helper methods\n notifyStatusSubscribers(internalDoc, docRef) {\n const status = {\n metadata: internalDoc.metadataStatus,\n data: internalDoc.dataStatus,\n metadataError: internalDoc.metadataError,\n dataError: internalDoc.dataError\n };\n for (const callback of internalDoc.statusSubscribers) {\n callback(docRef, status);\n }\n }\n updateMetadataStatus(internalDoc, docRef, update) {\n if (update.load != null || update.live != null) {\n internalDoc.metadataStatus = {\n load: update.load ?? internalDoc.metadataStatus.load,\n live: update.live ?? internalDoc.metadataStatus.live\n };\n }\n if (update.error != null) {\n internalDoc.metadataError = update.error;\n } else if (update.load === DocumentLoadStatus.LOADED) {\n // Clear error on successful load\n internalDoc.metadataError = undefined;\n }\n this.notifyStatusSubscribers(internalDoc, docRef);\n }\n updateDataStatus(internalDoc, docRef, update) {\n if (update.load != null || update.live != null) {\n internalDoc.dataStatus = {\n load: update.load ?? internalDoc.dataStatus.load,\n live: update.live ?? internalDoc.dataStatus.live\n };\n }\n if (update.error != null) {\n internalDoc.dataError = update.error;\n } else if (update.load === DocumentLoadStatus.LOADED) {\n // Clear error on successful load\n internalDoc.dataError = undefined;\n }\n this.notifyStatusSubscribers(internalDoc, docRef);\n }\n\n /**\n * Hook method called after a record is set. Subclasses can override to handle\n * backend synchronization, logging, or other side effects.\n */\n\n /**\n * Initialize a Y.Doc with the given schema\n */\n initializeYDoc(schema) {\n const yDoc = new Y.Doc();\n YjsSchemaMapper.initializeDocumentStructure(yDoc, schema);\n return yDoc;\n }\n\n /**\n * Get existing internal doc or create one with placeholder metadata for lazy initialization\n */\n getCreateInternalDoc(ref, metadata, initialYDoc) {\n const {\n id,\n schema\n } = ref;\n const existingDoc = this.documents.get(id);\n if (existingDoc != null) {\n // Use reference equality first (fast path), then deep equality for hot reload compatibility\n !(existingDoc.schema === schema || isDeepEqual(existingDoc.schema, schema)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Schema mismatch for existing document\") : invariant(false) : void 0;\n\n // The caller has a strong ref - in most cases this will be the same instance as we already\n // have stored in the ref field. If it is not, we want to return a stable ref so users can\n // easily depend on reference equality.\n\n // It's possible the previous weak ref was collected as all references were dropped. If so,\n // we can update the weak ref.\n const existingRef = existingDoc.ref.deref();\n if (existingRef == null) {\n existingDoc.ref = new WeakRef(ref);\n }\n return {\n internalDocRef: existingRef ?? ref,\n internalDoc: existingDoc,\n wasExisting: true\n };\n }\n const internalDoc = this.createInternalDoc(ref, metadata, initialYDoc);\n this.documents.set(id, internalDoc);\n return {\n internalDocRef: ref,\n internalDoc,\n wasExisting: false\n };\n }\n getDocumentSnapshot = docRef => {\n const {\n internalDoc\n } = this.getCreateInternalDoc(docRef);\n\n // For now, return the Y.Doc as the state\n // Later this can be enhanced to serialize Y.Doc content or return specific data\n return Promise.resolve(internalDoc.yDoc);\n };\n getRecordSnapshot = recordRef => {\n const {\n internalDoc\n } = this.getCreateInternalDoc(recordRef.docRef);\n const snapshot = this.getRecordSnapshotInternal(internalDoc, recordRef);\n\n // This is a promise interface for async loading for external API implementations to trigger a load first\n // For this base implementation, we always return from the local Y.Doc\n\n if (snapshot == null) {\n // TODO: well known error types\n return Promise.reject(new Error(`Record not found: ${recordRef.id}`));\n }\n return Promise.resolve(snapshot);\n };\n getRecordSnapshotInternal(internalDoc, recordRef) {\n return YjsSchemaMapper.getRecordSnapshot(internalDoc.yDoc, getMetadata(recordRef.model).name, recordRef.id);\n }\n setRecord = (recordRef, state) => {\n const internalDoc = this.documents.get(recordRef.docRef.id);\n !(internalDoc != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot set record as document not found: ${recordRef.docRef.id}`) : invariant(false) : void 0;\n\n // TODO: you cannot resurrect tomb stoned records I think, so need to check for that before notify\n // TODO: perhaps we just call this via onRecordSet instead?\n\n YjsSchemaMapper.setRecord(internalDoc.yDoc, getMetadata(recordRef.model).name, recordRef.id, state);\n\n // Call hook method for subclass-specific handling\n this.onRecordSet?.(recordRef, state);\n return Promise.resolve();\n };\n updateRecord = (recordRef, partialState) => {\n const internalDoc = this.documents.get(recordRef.docRef.id);\n !(internalDoc != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot update record as document not found: ${recordRef.docRef.id}`) : invariant(false) : void 0;\n const wasUpdated = YjsSchemaMapper.updateRecord(internalDoc.yDoc, getMetadata(recordRef.model).name, recordRef.id, partialState);\n if (!wasUpdated) {\n return Promise.reject(new Error(`Record not found for update: ${recordRef.id}`));\n }\n\n // Call hook method for subclass-specific handling\n this.onRecordSet?.(recordRef, partialState);\n return Promise.resolve();\n };\n withTransaction = (docRef, fn, description) => {\n const internalDoc = this.documents.get(docRef.id);\n !(internalDoc != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot start transaction as document not found: ${docRef.id}`) : invariant(false) : void 0;\n internalDoc.yDoc.transact(fn, description);\n };\n onMetadataChange(docRef, callback) {\n const {\n internalDoc,\n internalDocRef\n } = this.getCreateInternalDoc(docRef);\n const isFirstSubscription = !internalDoc.hasMetadataSubscriptions;\n internalDoc.metadataSubscribers.add(callback);\n internalDoc.hasMetadataSubscriptions = true;\n\n // Trigger remote load if this is the first subscription and not yet loaded\n if (isFirstSubscription && internalDoc.metadataStatus.load === DocumentLoadStatus.UNLOADED) {\n this.onMetadataSubscriptionOpened(internalDoc, internalDocRef);\n }\n\n // Immediately call back with current metadata if available\n if (internalDoc.metadata != null) {\n callback(docRef, internalDoc.metadata);\n }\n return () => {\n const currentDoc = this.documents.get(docRef.id);\n if (currentDoc) {\n currentDoc.metadataSubscribers.delete(callback);\n\n // Check if this was the last metadata subscription\n if (currentDoc.metadataSubscribers.size === 0) {\n currentDoc.hasMetadataSubscriptions = false;\n this.onMetadataSubscriptionClosed(currentDoc, internalDocRef);\n }\n }\n };\n }\n onStateChange = (docRef, callback) => {\n const {\n internalDoc,\n internalDocRef\n } = this.getCreateInternalDoc(docRef);\n const isFirstDataSubscription = !internalDoc.hasDataSubscriptions;\n const isFirstStateSubscription = internalDoc.docStateSubscribers.size === 0;\n internalDoc.docStateSubscribers.add(callback);\n internalDoc.hasDataSubscriptions = true;\n\n // Trigger remote load if this is the first data subscription and not yet loaded\n if (isFirstDataSubscription && internalDoc.dataStatus.load === DocumentLoadStatus.UNLOADED) {\n this.onDataSubscriptionOpened(internalDoc, internalDocRef);\n }\n\n // Set up Y.Doc listener if this is the first state subscription\n if (isFirstStateSubscription && !internalDoc.yDocUpdateHandler) {\n const updateHandler = () => {\n this.notifyStateSubscribers(internalDoc, docRef);\n };\n internalDoc.yDoc.on(\"update\", updateHandler);\n internalDoc.yDocUpdateHandler = updateHandler;\n }\n\n // Call callback immediately with current state\n callback(internalDocRef);\n return () => {\n const currentDoc = this.documents.get(docRef.id);\n if (!currentDoc) return;\n currentDoc.docStateSubscribers.delete(callback);\n\n // Clean up Y.Doc listener if no more state subscriptions\n if (currentDoc.docStateSubscribers.size === 0 && currentDoc.yDocUpdateHandler) {\n currentDoc.yDoc.off(\"update\", currentDoc.yDocUpdateHandler);\n currentDoc.yDocUpdateHandler = undefined;\n }\n\n // Check if this removes all data subscriptions (state + record + collection)\n const hasDataSubs = currentDoc.docStateSubscribers.size > 0 || currentDoc.recordSubscriptions.size > 0 || Array.from(currentDoc.collectionSubscriptions.values()).some(subs => subs.added?.size || subs.changed?.size || subs.deleted?.size);\n if (!hasDataSubs) {\n currentDoc.hasDataSubscriptions = false;\n this.onDataSubscriptionClosed(currentDoc, internalDocRef);\n }\n };\n };\n getDocumentRef(docId) {\n const internalDoc = this.documents.get(docId);\n if (!internalDoc) return null;\n return createDocRef(this.app, docId, internalDoc.schema);\n }\n notifyMetadataSubscribers(internalDoc, docRef, metadata) {\n for (const callback of internalDoc.metadataSubscribers) {\n callback(docRef, metadata);\n }\n }\n notifyStateSubscribers(internalDoc, docRef) {\n for (const callback of internalDoc.docStateSubscribers) {\n callback(docRef);\n }\n }\n updateMetadata(docId, metadata) {\n const internalDoc = this.documents.get(docId);\n if (internalDoc) {\n internalDoc.metadata = metadata;\n const docRef = this.getDocumentRef(docId);\n if (docRef) {\n this.notifyMetadataSubscribers(internalDoc, docRef, metadata);\n }\n }\n }\n notifyCollectionSubscribers(internalDoc, collection, recordId, changeType) {\n const storageName = getMetadata(collection.model).name;\n const subs = internalDoc.collectionSubscriptions.get(storageName);\n if (!subs) {\n return;\n }\n const subscribers = subs[changeType];\n if (subscribers == null || subscribers.size === 0) {\n return;\n }\n const recordRefInstance = this.getCreateRecordRef(collection.docRef, recordId, collection.model);\n const records = [recordRefInstance];\n for (const callback of subscribers) {\n callback(records);\n }\n }\n notifyRecordSubscribers(recordRef, changeType) {\n const internalDoc = this.documents.get(recordRef.docRef.id);\n !(internalDoc != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Document not found for record notifications\") : invariant(false) : void 0;\n const recordSubs = internalDoc.recordSubscriptions.get(recordRef.id);\n if (recordSubs == null) {\n return;\n }\n\n // Verify model consistency\n !(getMetadata(recordSubs.ref.model).name === getMetadata(recordRef.model).name) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Model mismatch when notifying record subscribers for ${recordRef.id}: expected ${getMetadata(recordSubs.ref.model).name}, got ${getMetadata(recordRef.model).name}`) : invariant(false) : void 0;\n switch (changeType) {\n case \"changed\":\n {\n const snapshot = this.getRecordSnapshotInternal(internalDoc, recordRef);\n for (const callback of recordSubs.changed ?? []) {\n try {\n callback(snapshot, recordRef);\n } catch (e) {\n console.error(\"Record onChanged callback threw unhandled error\", e, {\n model: getMetadata(recordRef.model).name,\n id: recordRef.id\n });\n }\n }\n break;\n }\n case \"deleted\":\n {\n for (const callback of recordSubs.deleted ?? []) {\n try {\n callback(recordRef);\n } catch (e) {\n console.error(\"Record onDeleted callback threw unhandled error\", e, {\n model: getMetadata(recordRef.model).name,\n id: recordRef.id\n });\n }\n }\n break;\n }\n }\n }\n\n // Collection methods implementation\n getRecord = (collection, id) => {\n const internalDoc = this.documents.get(collection.docRef.id);\n if (!internalDoc) return undefined;\n const storageName = getMetadata(collection.model).name;\n const recordExists = YjsSchemaMapper.getRecordData(internalDoc.yDoc, storageName, id);\n return recordExists ? this.getCreateRecordRef(collection.docRef, id, collection.model) : undefined;\n };\n hasRecord = (collection, id) => {\n const internalDoc = this.documents.get(collection.docRef.id);\n if (!internalDoc) return false;\n const storageName = getMetadata(collection.model).name;\n return YjsSchemaMapper.getRecordData(internalDoc.yDoc, storageName, id) != null;\n };\n setCollectionRecord = (collection, id, state) => {\n // Create a RecordRef and delegate to existing setRecord method\n const recordRefInstance = this.getCreateRecordRef(collection.docRef, id, collection.model);\n return this.setRecord(recordRefInstance, state);\n };\n deleteRecord = record => {\n const internalDoc = this.documents.get(record.docRef.id);\n if (!internalDoc) {\n // Document doesn't exist, record doesn't exist - this is a no-op\n return Promise.resolve();\n }\n const storageName = getMetadata(record.model).name;\n const recordsCollection = YjsSchemaMapper.getRecordsMap(internalDoc.yDoc, storageName);\n const existed = recordsCollection.has(record.id);\n if (existed) {\n recordsCollection.delete(record.id);\n }\n return Promise.resolve();\n };\n getCollectionSize = collection => {\n const internalDoc = this.documents.get(collection.docRef.id);\n if (!internalDoc) return 0;\n const storageName = getMetadata(collection.model).name;\n return YjsSchemaMapper.getAllRecordIds(internalDoc.yDoc, storageName).length;\n };\n getCollectionRecords = collection => {\n const internalDoc = this.documents.get(collection.docRef.id);\n if (!internalDoc) return [];\n const storageName = getMetadata(collection.model).name;\n const recordIds = YjsSchemaMapper.getAllRecordIds(internalDoc.yDoc, storageName);\n return recordIds.map(id => this.getCreateRecordRef(collection.docRef, id, collection.model));\n };\n onCollectionItemsAdded = (collection, callback) => {\n const {\n internalDoc,\n internalDocRef\n } = this.getCreateInternalDoc(collection.docRef);\n return this.subscribeToCollectionChanges(internalDoc, internalDocRef, collection, \"added\", callback);\n };\n onCollectionItemsChanged = (collection, callback) => {\n const {\n internalDoc,\n internalDocRef\n } = this.getCreateInternalDoc(collection.docRef);\n return this.subscribeToCollectionChanges(internalDoc, internalDocRef, collection, \"changed\", callback);\n };\n onCollectionItemsDeleted = (collection, callback) => {\n const {\n internalDoc,\n internalDocRef\n } = this.getCreateInternalDoc(collection.docRef);\n return this.subscribeToCollectionChanges(internalDoc, internalDocRef, collection, \"deleted\", callback);\n };\n\n // TODO: clearer naming of subscription vs handlers etc.\n onRecordChanged = (record, callback) => {\n const {\n internalDoc,\n internalDocRef\n } = this.getCreateInternalDoc(record.docRef);\n const isFirstDataSubscription = !internalDoc.hasDataSubscriptions;\n const storageName = getMetadata(record.model).name;\n const collectionRef = this.getCreateRecordCollectionRef(record.docRef, record.model);\n const needsCollectionListener = !internalDoc.yjsCollectionHandlers.has(storageName);\n const recordSubs = this.getCreateRecordSubscriptions(internalDoc, record);\n (recordSubs.changed ??= new Set()).add(callback);\n internalDoc.hasDataSubscriptions = true;\n\n // Trigger remote load if this is the first data subscription and not yet loaded\n if (isFirstDataSubscription && internalDoc.dataStatus.load === DocumentLoadStatus.UNLOADED) {\n // Call lifecycle method without awaiting\n this.onDataSubscriptionOpened(internalDoc, internalDocRef);\n }\n if (needsCollectionListener) {\n this.getCreateCollectionSubscriptions(internalDoc, collectionRef);\n this.setupCollectionListener(internalDoc, collectionRef);\n }\n const snapshot = this.getRecordSnapshotInternal(internalDoc, record);\n if (snapshot != null) {\n callback(snapshot, record);\n }\n return () => {\n recordSubs.changed?.delete(callback);\n const currentDoc = this.documents.get(record.docRef.id);\n if (!currentDoc) return;\n if (isRecordSubscriptionsEmpty(recordSubs)) {\n currentDoc.recordSubscriptions.delete(record.id);\n }\n this.cleanupCollectionListenerIfUnused(currentDoc, record.docRef.id, storageName);\n const hasDataSubs = currentDoc.docStateSubscribers.size > 0 || currentDoc.recordSubscriptions.size > 0 || Array.from(currentDoc.collectionSubscriptions.values()).some(subs => subs.added?.size || subs.changed?.size || subs.deleted?.size);\n if (!hasDataSubs) {\n currentDoc.hasDataSubscriptions = false;\n this.onDataSubscriptionClosed(currentDoc, internalDocRef);\n }\n };\n };\n onRecordDeleted = (record, callback) => {\n const {\n internalDoc,\n internalDocRef\n } = this.getCreateInternalDoc(record.docRef);\n const isFirstDataSubscription = !internalDoc.hasDataSubscriptions;\n const storageName = getMetadata(record.model).name;\n const collectionRef = this.getCreateRecordCollectionRef(record.docRef, record.model);\n const needsCollectionListener = !internalDoc.yjsCollectionHandlers.has(storageName);\n const recordSubs = this.getCreateRecordSubscriptions(internalDoc, record);\n (recordSubs.deleted ??= new Set()).add(callback);\n internalDoc.hasDataSubscriptions = true;\n if (isFirstDataSubscription && internalDoc.dataStatus.load === DocumentLoadStatus.UNLOADED) {\n this.onDataSubscriptionOpened(internalDoc, internalDocRef);\n }\n if (needsCollectionListener) {\n this.getCreateCollectionSubscriptions(internalDoc, collectionRef);\n this.setupCollectionListener(internalDoc, collectionRef);\n }\n return () => {\n recordSubs.deleted?.delete(callback);\n const currentDoc = this.documents.get(record.docRef.id);\n if (!currentDoc) return;\n if (isRecordSubscriptionsEmpty(recordSubs)) {\n currentDoc.recordSubscriptions.delete(record.id);\n }\n this.cleanupCollectionListenerIfUnused(currentDoc, record.docRef.id, storageName);\n const hasDataSubs = currentDoc.docStateSubscribers.size > 0 || currentDoc.recordSubscriptions.size > 0 || Array.from(currentDoc.collectionSubscriptions.values()).some(subs => subs.added?.size || subs.changed?.size || subs.deleted?.size);\n if (!hasDataSubs) {\n currentDoc.hasDataSubscriptions = false;\n this.onDataSubscriptionClosed(currentDoc, internalDocRef);\n }\n };\n };\n getCreateCollectionSubscriptions(internalDoc, collection) {\n const storageName = getMetadata(collection.model).name;\n const docCollectionSubs = internalDoc.collectionSubscriptions.get(storageName) ?? internalDoc.collectionSubscriptions.set(storageName, {}).get(storageName);\n\n // Generic cast to specific types\n return docCollectionSubs;\n }\n getCreateRecordSubscriptions(internalDoc, record) {\n let recordSubs = internalDoc.recordSubscriptions.get(record.id);\n if (!recordSubs) {\n // Create new subscription entry with the record ref\n recordSubs = {\n ref: record\n };\n internalDoc.recordSubscriptions.set(record.id, recordSubs);\n } else {\n // Verify model consistency - records with same ID should have same model\n if (getMetadata(recordSubs.ref.model).name !== getMetadata(record.model).name) {\n throw new Error(`Model mismatch for record ${record.id}: expected ${getMetadata(recordSubs.ref.model).name}, got ${getMetadata(record.model).name}`);\n }\n }\n return recordSubs;\n }\n subscribeToCollectionChanges(internalDoc, internalDocRef, collection, changeType, callback) {\n const isFirstDataSubscription = !internalDoc.hasDataSubscriptions;\n const modelSubscriptions = this.getCreateCollectionSubscriptions(internalDoc, collection);\n const wasEmpty = isCollectionSubscriptionsEmpty(modelSubscriptions);\n (modelSubscriptions[changeType] ??= new Set()).add(callback);\n internalDoc.hasDataSubscriptions = true;\n\n // Trigger remote load if this is the first data subscription and not yet loaded\n if (isFirstDataSubscription && internalDoc.dataStatus.load === DocumentLoadStatus.UNLOADED) {\n // Call lifecycle method without awaiting\n this.onDataSubscriptionOpened(internalDoc, internalDocRef);\n }\n\n // Set up Y.Map listener if this is the first subscription for this collection\n if (wasEmpty) {\n this.setupCollectionListener(internalDoc, collection);\n }\n return () => {\n modelSubscriptions[changeType]?.delete(callback);\n const currentDoc = this.documents.get(collection.docRef.id);\n if (!currentDoc) return;\n const storageName = getMetadata(collection.model).name;\n this.cleanupCollectionListenerIfUnused(currentDoc, collection.docRef.id, storageName);\n const hasDataSubs = currentDoc.docStateSubscribers.size > 0 || currentDoc.recordSubscriptions.size > 0 || Array.from(currentDoc.collectionSubscriptions.values()).some(subs => subs.added?.size || subs.changed?.size || subs.deleted?.size);\n if (!hasDataSubs) {\n currentDoc.hasDataSubscriptions = false;\n this.onDataSubscriptionClosed(currentDoc, internalDocRef);\n }\n };\n }\n setupCollectionListener(internalDoc, collection) {\n const docId = collection.docRef.id;\n const storageName = getMetadata(collection.model).name;\n const yCollection = internalDoc.yDoc.getMap(storageName);\n this.logger.debug(\"Setting up collection listener\", {\n docId,\n storageName,\n existingKeys: Array.from(yCollection.keys()),\n allDocMaps: Array.from(internalDoc.yDoc.share.keys())\n });\n\n // TODO: tidy this up\n const eventHandler = events => {\n this.logger.debug(\"Y.Map observeDeep fired\", {\n docId,\n storageName,\n eventCount: events.length\n });\n const currentDoc = this.documents.get(docId);\n if (!currentDoc) return;\n const subs = currentDoc.collectionSubscriptions.get(storageName);\n if (!subs) return;\n const addedKeys = new Set();\n const changedKeys = new Set();\n const deletedKeys = new Set();\n for (const event of events) {\n // Shallow change, ie the collection itself was modified\n if (event.target === yCollection) {\n // Collection-level change (add/remove/replace keys in collection)\n for (const [key, change] of event.changes.keys) {\n switch (change.action) {\n case \"add\":\n addedKeys.add(key);\n break;\n case \"update\":\n // this is a replacement within the map\n changedKeys.add(key);\n break;\n case \"delete\":\n deletedKeys.add(key);\n break;\n }\n }\n } else {\n // Nested change (property change within a record)\n // path[0] is the record ID since path is relative to currentTarget (yCollection)\n const recordId = event.path[0];\n if (recordId != null) {\n changedKeys.add(recordId);\n }\n }\n }\n\n // Notify subscribers\n if (addedKeys.size > 0) {\n const addedRecords = Array.from(addedKeys).map(id => this.getCreateRecordRef(collection.docRef, id, collection.model));\n if (subs.added != null) {\n for (const callback of subs.added) {\n callback(addedRecords);\n }\n }\n for (const record of addedRecords) {\n this.notifyRecordSubscribers(record, \"changed\");\n }\n }\n if (changedKeys.size > 0) {\n const changedRecords = Array.from(changedKeys).map(id => this.getCreateRecordRef(collection.docRef, id, collection.model));\n if (subs.changed != null) {\n for (const callback of subs.changed) {\n callback(changedRecords);\n }\n }\n for (const record of changedRecords) {\n this.notifyRecordSubscribers(record, \"changed\");\n }\n }\n if (deletedKeys.size > 0) {\n const deletedRecords = Array.from(deletedKeys).map(id => this.getCreateRecordRef(collection.docRef, id, collection.model));\n if (subs.deleted?.size) {\n for (const callback of subs.deleted) {\n callback(deletedRecords);\n }\n }\n for (const record of deletedRecords) {\n this.notifyRecordSubscribers(record, \"deleted\");\n }\n }\n };\n yCollection.observeDeep(eventHandler);\n\n // Store the handler for cleanup\n internalDoc.yjsCollectionHandlers.set(storageName, () => {\n yCollection.unobserveDeep(eventHandler);\n });\n }\n cleanupCollectionListener(docId, storageName) {\n const internalDoc = this.documents.get(docId);\n if (internalDoc == null) {\n return;\n }\n const cleanup = internalDoc.yjsCollectionHandlers.get(storageName);\n if (cleanup != null) {\n cleanup();\n internalDoc.yjsCollectionHandlers.delete(storageName);\n }\n }\n cleanupCollectionListenerIfUnused(internalDoc, docId, storageName) {\n const collectionSubs = internalDoc.collectionSubscriptions.get(storageName);\n const hasCollectionSubs = collectionSubs != null && (collectionSubs.added?.size || collectionSubs.changed?.size || collectionSubs.deleted?.size);\n const hasRecordSubs = Array.from(internalDoc.recordSubscriptions.values()).some(recordSubs => getMetadata(recordSubs.ref.model).name === storageName && !isRecordSubscriptionsEmpty(recordSubs));\n if (!hasCollectionSubs && !hasRecordSubs) {\n this.cleanupCollectionListener(docId, storageName);\n if (collectionSubs != null) {\n internalDoc.collectionSubscriptions.delete(storageName);\n }\n }\n }\n\n // DocumentService status methods implementation\n getDocumentStatus = docRef => {\n const {\n internalDoc\n } = this.getCreateInternalDoc(docRef);\n return {\n metadata: internalDoc.metadataStatus,\n data: internalDoc.dataStatus,\n metadataError: internalDoc.metadataError,\n dataError: internalDoc.dataError\n };\n };\n onStatusChange = (docRef, callback) => {\n const {\n internalDoc\n } = this.getCreateInternalDoc(docRef);\n internalDoc.statusSubscribers.add(callback);\n\n // Call callback immediately with current status\n const status = {\n metadata: internalDoc.metadataStatus,\n data: internalDoc.dataStatus,\n metadataError: internalDoc.metadataError,\n dataError: internalDoc.dataError\n };\n callback(docRef, status);\n return () => {\n const currentDoc = this.documents.get(docRef.id);\n if (currentDoc) {\n currentDoc.statusSubscribers.delete(callback);\n }\n };\n };\n waitForMetadataLoad = async docRef => {\n const {\n internalDoc\n } = this.getCreateInternalDoc(docRef);\n if (internalDoc.metadataStatus.load === DocumentLoadStatus.LOADED) {\n return Promise.resolve();\n }\n if (internalDoc.metadataStatus.load === DocumentLoadStatus.ERROR) {\n return Promise.reject(new Error(\"Metadata load error\", {\n cause: internalDoc.metadataError\n }));\n }\n\n // Wait for status to change to LOADED or ERROR\n return new Promise((resolve, reject) => {\n const unsubscribe = this.onStatusChange(docRef, (_, status) => {\n if (status.metadata.load === DocumentLoadStatus.LOADED) {\n unsubscribe();\n resolve();\n } else if (status.metadata.load === DocumentLoadStatus.ERROR) {\n unsubscribe();\n reject(new Error(\"Metadata load error\", {\n cause: status.metadataError\n }));\n }\n });\n });\n };\n waitForDataLoad = async docRef => {\n const {\n internalDoc\n } = this.getCreateInternalDoc(docRef);\n if (internalDoc.dataStatus.load === DocumentLoadStatus.LOADED) {\n return Promise.resolve();\n }\n if (internalDoc.dataStatus.load === DocumentLoadStatus.ERROR) {\n return Promise.reject(new Error(\"Data load error\", {\n cause: internalDoc.dataError\n }));\n }\n\n // Wait for status to change to LOADED or ERROR\n return new Promise((resolve, reject) => {\n const unsubscribe = this.onStatusChange(docRef, (_, status) => {\n if (status.data.load === DocumentLoadStatus.LOADED) {\n unsubscribe();\n resolve();\n } else if (status.data.load === DocumentLoadStatus.ERROR) {\n unsubscribe();\n reject(new Error(\"Data load error\", {\n cause: status.dataError\n }));\n }\n });\n });\n };\n\n // FIXME: don't expose in production builds\n /**\n * @internal\n */\n getYDocForTesting(docId) {\n const internalDoc = this.documents.get(docId);\n return internalDoc ? internalDoc.yDoc : null;\n }\n}\nfunction isCollectionSubscriptionsEmpty(subs) {\n return !subs.added?.size && !subs.changed?.size && !subs.deleted?.size;\n}\nfunction isRecordSubscriptionsEmpty(subs) {\n return !subs.changed?.size && !subs.deleted?.size;\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { generateId } from \"@palantir/pack.core\";\nimport { createDocumentServiceConfig } from \"../DocumentServiceModule.js\";\nimport { createDocRef } from \"../types/DocumentRefImpl.js\";\nimport { DocumentLoadStatus } from \"../types/DocumentService.js\";\nimport { BaseYjsDocumentService } from \"./BaseYjsDocumentService.js\";\nexport function createInMemoryDocumentServiceConfig({\n autoCreateDocuments = true\n} = {}) {\n const config = {\n autoCreateDocuments\n };\n return createDocumentServiceConfig(internalCreateInMemoryDocumentService, config);\n}\nexport function internalCreateInMemoryDocumentService(app, options) {\n return new InMemoryDocumentService(app, options);\n}\nclass InMemoryDocumentService extends BaseYjsDocumentService {\n constructor(app, config) {\n super(app, app.config.logger.child({}, {\n level: \"debug\",\n msgPrefix: \"InMemoryDocumentService\"\n }));\n this.config = config;\n }\n createInternalDoc(ref, metadata) {\n return this.createBaseInternalDoc(ref, metadata);\n }\n get hasMetadataSubscriptions() {\n return Array.from(this.documents.values()).some(doc => this.hasSubscriptions(doc) && doc.metadataSubscribers.size > 0);\n }\n get hasStateSubscriptions() {\n return Array.from(this.documents.values()).some(doc => this.hasSubscriptions(doc) && doc.docStateSubscribers.size > 0);\n }\n createDocument = (metadata, schema) => {\n const id = generateDocumentId();\n const docRef = createDocRef(this.app, id, schema);\n const yDoc = this.initializeYDoc(schema);\n this.getCreateInternalDoc(docRef, metadata, yDoc);\n return Promise.resolve(docRef);\n };\n searchDocuments = (documentTypeName, schema, options) => {\n const results = [];\n const {\n documentName,\n limit\n } = options ?? {};\n for (const [docId, internalDoc] of this.documents.entries()) {\n if (internalDoc.metadata?.documentTypeName === documentTypeName) {\n if (documentName && !internalDoc.metadata.name.includes(documentName)) {\n continue;\n }\n results.push({\n ...internalDoc.metadata,\n id: docId\n });\n if (limit && results.length >= limit) {\n break;\n }\n }\n }\n return Promise.resolve(results);\n };\n\n // Lifecycle method implementations\n onMetadataSubscriptionOpened(internalDoc, docRef) {\n this.updateMetadataStatus(internalDoc, docRef, {\n load: DocumentLoadStatus.LOADING\n });\n if (this.config.autoCreateDocuments === false && internalDoc.metadata == null) {\n this.updateMetadataStatus(internalDoc, docRef, {\n error: new Error(\"Document not found and autoCreateDocuments is disabled\"),\n load: DocumentLoadStatus.ERROR\n });\n return;\n }\n this.updateMetadataStatus(internalDoc, docRef, {\n load: DocumentLoadStatus.LOADED\n });\n }\n onDataSubscriptionOpened(internalDoc, docRef) {\n this.updateDataStatus(internalDoc, docRef, {\n load: DocumentLoadStatus.LOADING\n });\n if (this.config.autoCreateDocuments === false && internalDoc.metadata == null) {\n this.updateDataStatus(internalDoc, docRef, {\n error: new Error(\"Document not found and autoCreateDocuments is disabled\"),\n load: DocumentLoadStatus.ERROR\n });\n return;\n }\n this.updateDataStatus(internalDoc, docRef, {\n load: DocumentLoadStatus.LOADED\n });\n }\n onMetadataSubscriptionClosed(_internalDoc, _docRef) {\n // No cleanup needed for in-memory service\n }\n onDataSubscriptionClosed(_internalDoc, _docRef) {\n // No cleanup needed for in-memory service\n }\n onActivity(_docRef, _callback) {\n return () => {};\n }\n onPresence(_docRef, _callback, _options) {\n return () => {};\n }\n updateCustomPresence(_docRef, _model, _eventData) {}\n}\nfunction generateDocumentId() {\n return generateId();\n}"]}
@@ -1 +1 @@
1
- {"mappings":"AAgBA,cACE,aACA,OAEA,UACA,iBAEK;AAGP,cAAc,uBAAuB;AAgBrC,OAAO,cAAM,wBAAyB,UAAU,OAC9C,iBAAiB,iBACjB,QAAQ,aACR,IAAI,UACJ,OAAO,MACN,UAAU;;;;;;;;;;;;;;AAiBb,OAAO,iBAAS,iBAAiB,UAAU,QAAQ,UAAU,UAAU;;;;;;;;;;;;;AAgBvE,OAAO,iBAAS,iBAAiB,UAAU,QAAQ,OACjD,WAAW,UAAU,KACpB,aAAa,UAAU","names":[],"sources":["../../../src/types/RecordRefImpl.ts"],"version":3,"file":"RecordRefImpl.d.ts"}
1
+ {"mappings":"AAgBA,cACE,aACA,OAEA,UACA,iBAEK;AAGP,cAAc,uBAAuB;AAkBrC,OAAO,cAAM,wBAAyB,UAAU,OAC9C,iBAAiB,iBACjB,QAAQ,aACR,IAAI,UACJ,OAAO,MACN,UAAU;;;;;;;;;;;;;;AAiBb,OAAO,iBAAS,iBAAiB,UAAU,QAAQ,UAAU,UAAU;;;;;;;;;;;;;AAgBvE,OAAO,iBAAS,iBAAiB,UAAU,QAAQ,OACjD,WAAW,UAAU,KACpB,aAAa,UAAU","names":[],"sources":["../../../src/types/RecordRefImpl.ts"],"version":3,"file":"RecordRefImpl.d.ts"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@palantir/pack.state.core",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "PACK State logic and utilities",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -33,7 +33,7 @@
33
33
  "tiny-invariant": "^1.3.3",
34
34
  "yjs": "^13.6.27",
35
35
  "@palantir/pack.core": "0.2.0",
36
- "@palantir/pack.document-schema.model-types": "0.2.0"
36
+ "@palantir/pack.document-schema.model-types": "0.2.2"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "zod": "^4.1.0"
@@ -33,10 +33,12 @@ const INVALID_RECORD_REF: RecordRef = Object.freeze(
33
33
  id: INVALID_RECORD_ID,
34
34
  model: {} as Model,
35
35
  [RecordRefBrand]: RecordRefBrand,
36
+ delete: () => Promise.reject(new Error("Invalid record reference")),
36
37
  getSnapshot: () => Promise.reject(new Error("Invalid record reference")),
37
38
  set: () => Promise.reject(new Error("Invalid record reference")),
38
39
  onChange: () => () => {},
39
40
  onDeleted: () => () => {},
41
+ update: () => Promise.reject(new Error("Invalid record reference")),
40
42
  } as const,
41
43
  );
42
44