@palantir/pack.state.foundry 0.8.0 → 0.9.0
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.
- package/.turbo/turbo-lint.log +1 -1
- package/.turbo/turbo-transpileBrowser.log +1 -1
- package/.turbo/turbo-transpileCjs.log +1 -1
- package/.turbo/turbo-transpileEsm.log +1 -1
- package/.turbo/turbo-transpileTypes.log +1 -1
- package/.turbo/turbo-typecheck.log +1 -1
- package/CHANGELOG.md +13 -0
- package/build/browser/index.js +14 -4
- package/build/browser/index.js.map +1 -1
- package/build/cjs/index.cjs +14 -4
- package/build/cjs/index.cjs.map +1 -1
- package/build/esm/index.js +14 -4
- package/build/esm/index.js.map +1 -1
- package/build/types/FoundryDocumentService.d.ts.map +1 -1
- package/build/types/eventMappers.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/FoundryDocumentService.ts +2 -1
- package/src/eventMappers.ts +26 -7
package/.turbo/turbo-lint.log
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
> @palantir/pack.state.foundry@0.
|
|
2
|
+
> @palantir/pack.state.foundry@0.9.0 lint /home/runner/work/pack/pack/packages/state/foundry
|
|
3
3
|
> eslint ./src && dprint check --config $(find-up dprint.json) --allow-no-files
|
|
4
4
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @palantir/pack.state.foundry@0.
|
|
2
|
+
> @palantir/pack.state.foundry@0.9.0 transpileBrowser /home/runner/work/pack/pack/packages/state/foundry
|
|
3
3
|
> monorepo-transpile -f esm -m bundle -t browser
|
|
4
4
|
|
|
5
5
|
[baseline-browser-mapping] The data in this module is over two months old. To ensure accurate Baseline data, please update: `npm i baseline-browser-mapping@latest -D`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @palantir/pack.state.foundry@0.
|
|
2
|
+
> @palantir/pack.state.foundry@0.9.0 transpileCjs /home/runner/work/pack/pack/packages/state/foundry
|
|
3
3
|
> monorepo-transpile -f cjs -m bundle -t node
|
|
4
4
|
|
|
5
5
|
[baseline-browser-mapping] The data in this module is over two months old. To ensure accurate Baseline data, please update: `npm i baseline-browser-mapping@latest -D`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @palantir/pack.state.foundry@0.
|
|
2
|
+
> @palantir/pack.state.foundry@0.9.0 transpileEsm /home/runner/work/pack/pack/packages/state/foundry
|
|
3
3
|
> monorepo-transpile -f esm -m bundle -t node
|
|
4
4
|
|
|
5
5
|
[baseline-browser-mapping] The data in this module is over two months old. To ensure accurate Baseline data, please update: `npm i baseline-browser-mapping@latest -D`
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @palantir/pack.state.foundry
|
|
2
2
|
|
|
3
|
+
## 0.9.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 2b912f2: add discretionary security activity event
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [2b912f2]
|
|
12
|
+
- @palantir/pack.document-schema.model-types@0.6.0
|
|
13
|
+
- @palantir/pack.state.core@0.9.0
|
|
14
|
+
- @palantir/pack.state.foundry-event@0.8.0
|
|
15
|
+
|
|
3
16
|
## 0.8.0
|
|
4
17
|
|
|
5
18
|
### Minor Changes
|
package/build/browser/index.js
CHANGED
|
@@ -27,7 +27,8 @@ var PlatformEventType = {
|
|
|
27
27
|
DOCUMENT_CREATE: "DocumentCreateEvent",
|
|
28
28
|
DOCUMENT_DESCRIPTION_UPDATE: "DocumentDescriptionUpdateEvent",
|
|
29
29
|
DOCUMENT_RENAME: "DocumentRenameEvent",
|
|
30
|
-
|
|
30
|
+
DOCUMENT_MANDATORY_SECURITY_UPDATE: "DocumentMandatorySecurityUpdateEvent",
|
|
31
|
+
DOCUMENT_DISCRETIONARY_SECURITY_UPDATE: "DocumentDiscretionarySecurityUpdateEvent"
|
|
31
32
|
};
|
|
32
33
|
function getActivityEventData(docSchema, {
|
|
33
34
|
eventData,
|
|
@@ -80,12 +81,21 @@ function getPlatformActivityEventData(eventType, data) {
|
|
|
80
81
|
type: ActivityEventDataType.DOCUMENT_DESCRIPTION_UPDATE
|
|
81
82
|
};
|
|
82
83
|
}
|
|
83
|
-
case PlatformEventType.
|
|
84
|
+
case PlatformEventType.DOCUMENT_MANDATORY_SECURITY_UPDATE: {
|
|
84
85
|
const wireData = data;
|
|
85
86
|
return {
|
|
86
87
|
newClassification: wireData.newClassification ?? [],
|
|
87
88
|
newMarkings: wireData.newMarkings ?? [],
|
|
88
|
-
type: ActivityEventDataType.
|
|
89
|
+
type: ActivityEventDataType.DOCUMENT_MANDATORY_SECURITY_UPDATE
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
case PlatformEventType.DOCUMENT_DISCRETIONARY_SECURITY_UPDATE: {
|
|
93
|
+
const wireData = data;
|
|
94
|
+
return {
|
|
95
|
+
principalType: wireData.principalType ?? "",
|
|
96
|
+
previousDiscretionarySecurity: wireData.previousDiscretionarySecurity,
|
|
97
|
+
newDiscretionarySecurity: wireData.newDiscretionarySecurity ?? [],
|
|
98
|
+
type: ActivityEventDataType.DOCUMENT_DISCRETIONARY_SECURITY_UPDATE
|
|
89
99
|
};
|
|
90
100
|
}
|
|
91
101
|
default:
|
|
@@ -345,7 +355,7 @@ var FoundryDocumentService = class _FoundryDocumentService extends BaseYjsDocume
|
|
|
345
355
|
});
|
|
346
356
|
return unsubscribeFn;
|
|
347
357
|
}
|
|
348
|
-
static METADATA_ACTIVITY_EVENT_TYPES = /* @__PURE__ */ new Set([ActivityEventDataType.DOCUMENT_RENAME, ActivityEventDataType.DOCUMENT_DESCRIPTION_UPDATE, ActivityEventDataType.
|
|
358
|
+
static METADATA_ACTIVITY_EVENT_TYPES = /* @__PURE__ */ new Set([ActivityEventDataType.DOCUMENT_RENAME, ActivityEventDataType.DOCUMENT_DESCRIPTION_UPDATE, ActivityEventDataType.DOCUMENT_MANDATORY_SECURITY_UPDATE, ActivityEventDataType.DOCUMENT_DISCRETIONARY_SECURITY_UPDATE]);
|
|
349
359
|
updateMetadataFromActivityEvent(docRef, event) {
|
|
350
360
|
if (_FoundryDocumentService.METADATA_ACTIVITY_EVENT_TYPES.has(event.eventData.type)) {
|
|
351
361
|
this.refetchMetadata(docRef);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/eventMappers.ts","../../src/FoundryDocumentService.ts"],"names":["config","ActivityEventDataType"],"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\nimport { invalidUserRef } from \"@palantir/pack.auth\";\nimport { ActivityEventDataType, PresenceEventDataType } from \"@palantir/pack.document-schema.model-types\";\nexport function getActivityEvent(documentSchema, foundryEvent) {\n // TODO: need to handle deletes and ensure exhaustive handling\n if (foundryEvent.type !== \"activityCreated\") {\n return undefined;\n }\n const {\n activityEvent\n } = foundryEvent;\n const eventData = getActivityEventData(documentSchema, activityEvent);\n return {\n aggregationKey: activityEvent.aggregationKey,\n createdBy: activityEvent.createdBy,\n createdInstant: new Date(activityEvent.createdTime).getTime(),\n eventData,\n eventId: activityEvent.eventId,\n isRead: activityEvent.isRead\n };\n}\n\n/**\n * Platform event type names as sent by backpack.\n * Note: Only DOCUMENT_CREATE is currently emitted by the backend.\n * Remaining types are included for future use.\n */\nconst PlatformEventType = {\n DOCUMENT_CREATE: \"DocumentCreateEvent\",\n DOCUMENT_DESCRIPTION_UPDATE: \"DocumentDescriptionUpdateEvent\",\n DOCUMENT_RENAME: \"DocumentRenameEvent\",\n DOCUMENT_SECURITY_UPDATE: \"DocumentMandatorySecurityUpdateEvent\"\n};\nfunction getActivityEventData(docSchema, {\n eventData,\n eventType\n}) {\n const platformEventData = getPlatformActivityEventData(eventType, eventData.data);\n if (platformEventData != null) {\n return platformEventData;\n }\n\n // Handle custom application-defined activity events\n // TODO: validate model is valid for activity events\n const model = docSchema[eventType];\n if (model == null) {\n return {\n rawData: eventData.data,\n rawType: eventType,\n type: ActivityEventDataType.UNKNOWN\n };\n }\n\n // TODO: validate data against model schema\n\n return {\n eventData: eventData.data,\n model,\n type: ActivityEventDataType.CUSTOM_EVENT\n };\n}\nfunction getPlatformActivityEventData(eventType, data) {\n switch (eventType) {\n case PlatformEventType.DOCUMENT_CREATE:\n {\n const wireData = data;\n return {\n initialMandatorySecurity: {\n classification: wireData.initialMandatorySecurity?.classification,\n markings: wireData.initialMandatorySecurity?.markings\n },\n name: wireData.name ?? \"\",\n type: ActivityEventDataType.DOCUMENT_CREATE\n };\n }\n case PlatformEventType.DOCUMENT_RENAME:\n {\n const wireData = data;\n return {\n newName: wireData.newName ?? \"\",\n previousName: wireData.previousName ?? \"\",\n type: ActivityEventDataType.DOCUMENT_RENAME\n };\n }\n case PlatformEventType.DOCUMENT_DESCRIPTION_UPDATE:\n {\n const wireData = data;\n return {\n isInitial: wireData.isInitial ?? false,\n newDescription: wireData.newDescription ?? \"\",\n type: ActivityEventDataType.DOCUMENT_DESCRIPTION_UPDATE\n };\n }\n case PlatformEventType.DOCUMENT_SECURITY_UPDATE:\n {\n const wireData = data;\n return {\n newClassification: wireData.newClassification ?? [],\n newMarkings: wireData.newMarkings ?? [],\n type: ActivityEventDataType.DOCUMENT_SECURITY_UPDATE\n };\n }\n default:\n return undefined;\n }\n}\nconst ARRIVED_DATA = {\n type: PresenceEventDataType.ARRIVED\n};\nconst DEPARTED_DATA = {\n type: PresenceEventDataType.DEPARTED\n};\nexport function getPresenceEvent(documentSchema, foundryUpdate) {\n switch (foundryUpdate.type) {\n case \"presenceChangeEvent\":\n {\n const {\n userId,\n status\n } = foundryUpdate;\n const eventData = status === \"PRESENT\" ? ARRIVED_DATA : DEPARTED_DATA;\n return {\n eventData,\n userId: userId\n };\n }\n case \"customPresenceEvent\":\n {\n const {\n userId,\n eventData,\n eventType\n } = foundryUpdate;\n const presenceEventData = getPresenceEventData(documentSchema, eventType, eventData);\n return {\n eventData: presenceEventData,\n userId: userId\n };\n }\n default:\n {\n foundryUpdate;\n const unknownUpdate = foundryUpdate;\n return {\n eventData: {\n rawData: foundryUpdate,\n rawType: typeof unknownUpdate.type === \"string\" ? unknownUpdate.type : \"unknown\",\n type: PresenceEventDataType.UNKNOWN\n },\n // FIXME: try and pull userId from message? Or just fix the platform types to have useful wrappers.\n userId: invalidUserRef().userId\n };\n }\n }\n}\nfunction getPresenceEventData(docSchema, eventType, eventData) {\n const model = docSchema[eventType];\n if (model == null) {\n return {\n rawData: eventData,\n rawType: eventType,\n type: PresenceEventDataType.UNKNOWN\n };\n }\n return {\n eventData,\n model,\n type: PresenceEventDataType.CUSTOM_EVENT\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 { Documents } from \"@osdk/foundry.pack\";\nimport { assertNever, getOntologyRid } from \"@palantir/pack.core\";\nimport { ActivityEventDataType, getMetadata } from \"@palantir/pack.document-schema.model-types\";\nimport { BaseYjsDocumentService, createDocumentServiceConfig, DocumentLoadStatus } from \"@palantir/pack.state.core\";\nimport { createFoundryEventService } from \"@palantir/pack.state.foundry-event\";\nimport { getActivityEvent, getPresenceEvent } from \"./eventMappers.js\";\nconst DEFAULT_USE_PREVIEW_API = true;\nconst EMPTY_DOCUMENT_SECURITY = Object.freeze({\n discretionary: {},\n mandatory: {}\n});\nexport function createFoundryDocumentServiceConfig(config = {}) {\n return createDocumentServiceConfig((app, config) => internalCreateFoundryDocumentService(app, config), config);\n}\nexport function internalCreateFoundryDocumentService(app, config, eventService) {\n return new FoundryDocumentService(app, config, eventService ?? createFoundryEventService(app));\n}\nexport class FoundryDocumentService extends BaseYjsDocumentService {\n constructor(app, config, eventService) {\n super(app, app.config.logger.child({}, {\n level: \"debug\",\n msgPrefix: \"FoundryDocumentService\"\n }));\n this.config = config;\n this.eventService = eventService;\n }\n createInternalDoc(ref, metadata) {\n return {\n ...this.createBaseInternalDoc(ref, metadata),\n syncSession: undefined\n };\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 = async (metadata, schema) => {\n const {\n documentTypeName,\n name,\n parentFolderRid,\n security\n } = metadata;\n const ontologyRid = await getOntologyRid(this.app);\n const request = {\n documentTypeName: documentTypeName,\n name: name,\n ontologyRid: ontologyRid,\n security: getWireSecurity(security)\n };\n if (parentFolderRid != null) {\n request.parentFolderRid = parentFolderRid;\n }\n const createResponse = await Documents.create(this.app.config.osdkClient, request, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n });\n const documentId = createResponse.id;\n const docRef = this.createDocRef(documentId, schema);\n return docRef;\n };\n searchDocuments = async (documentTypeName, schema, options) => {\n const request = {\n documentTypeName,\n requestBody: {\n query: options?.documentName != null ? {\n documentName: options.documentName\n } : undefined,\n pageSize: options?.pageSize,\n pageToken: options?.pageToken\n }\n };\n const searchResponse = await Documents.search(this.app.config.osdkClient, request, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n });\n return {\n data: searchResponse.data.map(doc => ({\n createdBy: doc.createdBy,\n createdTime: doc.createdTime,\n documentTypeName: doc.documentTypeName,\n id: doc.id,\n name: doc.name,\n ontologyRid: doc.ontologyRid,\n security: getLocalSecurity(doc.security),\n updatedBy: doc.updatedBy,\n updatedTime: doc.updatedTime\n })),\n nextPageToken: searchResponse.nextPageToken\n };\n };\n updateDocument = async (docRef, update) => {\n const document = await Documents.update(this.app.config.osdkClient, docRef.id, {\n requestBody: {\n ...(update.name != null ? {\n name: update.name\n } : {}),\n ...(update.description != null ? {\n description: update.description\n } : {}),\n ...(update.security != null ? {\n security: getWireSecurity(update.security)\n } : {})\n }\n }, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n });\n const metadata = {\n description: document.description,\n documentTypeName: document.documentTypeName,\n name: document.name,\n ontologyRid: document.ontologyRid,\n security: getLocalSecurity(document.security)\n };\n this.updateMetadata(docRef.id, metadata);\n return metadata;\n };\n deleteDocument = async docRef => {\n await Documents.deleteDocument(this.app.config.osdkClient, docRef.id, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n });\n this.documents.delete(docRef.id);\n };\n onMetadataSubscriptionOpened(internalDoc, docRef) {\n if (internalDoc.metadataStatus.load !== DocumentLoadStatus.UNLOADED) {\n throw new Error(`Cannot subscribe to document metadata when status is ${internalDoc.metadataStatus.load}`);\n }\n this.updateMetadataStatus(internalDoc, docRef, {\n load: DocumentLoadStatus.LOADING\n });\n Documents.get(this.app.config.osdkClient, docRef.id, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n }).then(document => {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n const metadata = {\n description: document.description,\n documentTypeName: document.documentTypeName,\n name: document.name,\n ontologyRid: document.ontologyRid,\n security: getLocalSecurity(document.security)\n };\n internalDoc.metadata = metadata;\n this.notifyMetadataSubscribers(internalDoc, docRef, metadata);\n this.updateMetadataStatus(internalDoc, docRef, {\n load: DocumentLoadStatus.LOADED\n });\n }).catch(e => {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n const error = new Error(\"Failed to load document metadata\", {\n cause: e\n });\n this.updateMetadataStatus(internalDoc, docRef, {\n error,\n load: DocumentLoadStatus.ERROR\n });\n });\n }\n onDataSubscriptionOpened(internalDoc, docRef) {\n if (internalDoc.syncSession != null) {\n throw new Error(\"Document data subscription already opened\");\n }\n internalDoc.syncSession = this.eventService.startDocumentSync(docRef.id, internalDoc.yDoc, status => {\n this.updateDataStatus(internalDoc, docRef, status);\n });\n }\n onMetadataSubscriptionClosed(_internalDoc, _docRef) {}\n onDataSubscriptionClosed(internalDoc, _docRef) {\n if (internalDoc.syncSession) {\n this.eventService.stopDocumentSync(internalDoc.syncSession);\n internalDoc.syncSession = undefined;\n }\n }\n onActivity(docRef, callback) {\n let unsubscribed = false;\n const unsubscribeFn = () => {\n unsubscribed = true;\n };\n this.eventService.subscribeToActivityUpdates(docRef.id, foundryEvent => {\n if (!unsubscribed) {\n const localEvent = getActivityEvent(docRef.schema, foundryEvent);\n if (localEvent != null) {\n this.updateMetadataFromActivityEvent(docRef, localEvent);\n callback(docRef, localEvent);\n }\n }\n }).catch(e => {\n this.logger.error(\"Failed to subscribe to activity updates\", e, {\n docId: docRef.id\n });\n });\n return unsubscribeFn;\n }\n static METADATA_ACTIVITY_EVENT_TYPES = new Set([ActivityEventDataType.DOCUMENT_RENAME, ActivityEventDataType.DOCUMENT_DESCRIPTION_UPDATE, ActivityEventDataType.DOCUMENT_SECURITY_UPDATE]);\n updateMetadataFromActivityEvent(docRef, event) {\n if (FoundryDocumentService.METADATA_ACTIVITY_EVENT_TYPES.has(event.eventData.type)) {\n this.refetchMetadata(docRef);\n }\n }\n refetchMetadata(docRef) {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n Documents.get(this.app.config.osdkClient, docRef.id, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n }).then(document => {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n const metadata = {\n description: document.description,\n documentTypeName: document.documentTypeName,\n name: document.name,\n ontologyRid: document.ontologyRid,\n security: getLocalSecurity(document.security)\n };\n this.updateMetadata(docRef.id, metadata);\n }).catch(e => {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n this.logger.error(\"Failed to refetch document metadata\", e, {\n docId: docRef.id\n });\n });\n }\n onPresence(docRef, callback, options) {\n let unsubscribed = false;\n const unsubscribeFn = () => {\n unsubscribed = true;\n };\n this.eventService.subscribeToPresenceUpdates(docRef.id, foundryUpdate => {\n if (!unsubscribed) {\n const localEvent = getPresenceEvent(docRef.schema, foundryUpdate);\n callback(docRef, localEvent);\n }\n }, options).catch(e => {\n this.logger.error(\"Failed to subscribe to presence updates\", e, {\n docId: docRef.id\n });\n });\n return unsubscribeFn;\n }\n updateCustomPresence(docRef, model, eventData, options) {\n const eventType = getMetadata(model).name;\n void this.eventService.publishCustomPresence(docRef.id, eventType, eventData, options).catch(e => {\n this.logger.error(\"Failed to publish custom presence\", e, {\n docId: docRef.id\n });\n });\n }\n}\nfunction getWireSecurity({\n discretionary,\n mandatory\n} = EMPTY_DOCUMENT_SECURITY) {\n const {\n editors = [],\n owners = [],\n viewers = []\n } = discretionary;\n return {\n discretionary: {\n editors: editors.map(getWirePrincipal),\n owners: owners.map(getWirePrincipal),\n viewers: viewers.map(getWirePrincipal)\n },\n mandatory: {\n classification: mandatory.classification != null ? [...mandatory.classification] : [],\n markings: mandatory.markings != null ? [...mandatory.markings] : []\n }\n };\n}\nfunction getWirePrincipal(principal) {\n switch (principal.type) {\n case \"all\":\n return {\n type: \"all\"\n };\n case \"groupId\":\n return {\n type: \"groupId\",\n groupId: principal.groupId\n };\n case \"userId\":\n return {\n type: \"userId\",\n userId: principal.userId\n };\n default:\n assertNever(principal);\n }\n}\nfunction getLocalSecurity(wireSecurity) {\n return {\n discretionary: {\n editors: wireSecurity.discretionary.editors.map(getLocalPrincipal),\n owners: wireSecurity.discretionary.owners.map(getLocalPrincipal),\n viewers: wireSecurity.discretionary.viewers.map(getLocalPrincipal)\n },\n mandatory: {\n classification: [...wireSecurity.mandatory.classification],\n markings: [...wireSecurity.mandatory.markings]\n }\n };\n}\nfunction getLocalPrincipal(wirePrincipal) {\n switch (wirePrincipal.type) {\n case \"all\":\n return {\n type: \"all\"\n };\n case \"groupId\":\n return {\n type: \"groupId\",\n groupId: wirePrincipal.groupId\n };\n case \"userId\":\n return {\n type: \"userId\",\n userId: wirePrincipal.userId\n };\n default:\n assertNever(wirePrincipal);\n }\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../src/eventMappers.ts","../../src/FoundryDocumentService.ts"],"names":["config","ActivityEventDataType"],"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\nimport { invalidUserRef } from \"@palantir/pack.auth\";\nimport { ActivityEventDataType, PresenceEventDataType } from \"@palantir/pack.document-schema.model-types\";\nexport function getActivityEvent(documentSchema, foundryEvent) {\n // TODO: need to handle deletes and ensure exhaustive handling\n if (foundryEvent.type !== \"activityCreated\") {\n return undefined;\n }\n const {\n activityEvent\n } = foundryEvent;\n const eventData = getActivityEventData(documentSchema, activityEvent);\n return {\n aggregationKey: activityEvent.aggregationKey,\n createdBy: activityEvent.createdBy,\n createdInstant: new Date(activityEvent.createdTime).getTime(),\n eventData,\n eventId: activityEvent.eventId,\n isRead: activityEvent.isRead\n };\n}\n\n/**\n * Platform event type names as sent by backpack.\n * Note: Only DOCUMENT_CREATE is currently emitted by the backend.\n * Remaining types are included for future use.\n */\nconst PlatformEventType = {\n DOCUMENT_CREATE: \"DocumentCreateEvent\",\n DOCUMENT_DESCRIPTION_UPDATE: \"DocumentDescriptionUpdateEvent\",\n DOCUMENT_RENAME: \"DocumentRenameEvent\",\n DOCUMENT_MANDATORY_SECURITY_UPDATE: \"DocumentMandatorySecurityUpdateEvent\",\n DOCUMENT_DISCRETIONARY_SECURITY_UPDATE: \"DocumentDiscretionarySecurityUpdateEvent\"\n};\nfunction getActivityEventData(docSchema, {\n eventData,\n eventType\n}) {\n const platformEventData = getPlatformActivityEventData(eventType, eventData.data);\n if (platformEventData != null) {\n return platformEventData;\n }\n\n // Handle custom application-defined activity events\n // TODO: validate model is valid for activity events\n const model = docSchema[eventType];\n if (model == null) {\n return {\n rawData: eventData.data,\n rawType: eventType,\n type: ActivityEventDataType.UNKNOWN\n };\n }\n\n // TODO: validate data against model schema\n\n return {\n eventData: eventData.data,\n model,\n type: ActivityEventDataType.CUSTOM_EVENT\n };\n}\nfunction getPlatformActivityEventData(eventType, data) {\n switch (eventType) {\n case PlatformEventType.DOCUMENT_CREATE:\n {\n const wireData = data;\n return {\n initialMandatorySecurity: {\n classification: wireData.initialMandatorySecurity?.classification,\n markings: wireData.initialMandatorySecurity?.markings\n },\n name: wireData.name ?? \"\",\n type: ActivityEventDataType.DOCUMENT_CREATE\n };\n }\n case PlatformEventType.DOCUMENT_RENAME:\n {\n const wireData = data;\n return {\n newName: wireData.newName ?? \"\",\n previousName: wireData.previousName ?? \"\",\n type: ActivityEventDataType.DOCUMENT_RENAME\n };\n }\n case PlatformEventType.DOCUMENT_DESCRIPTION_UPDATE:\n {\n const wireData = data;\n return {\n isInitial: wireData.isInitial ?? false,\n newDescription: wireData.newDescription ?? \"\",\n type: ActivityEventDataType.DOCUMENT_DESCRIPTION_UPDATE\n };\n }\n case PlatformEventType.DOCUMENT_MANDATORY_SECURITY_UPDATE:\n {\n const wireData = data;\n return {\n newClassification: wireData.newClassification ?? [],\n newMarkings: wireData.newMarkings ?? [],\n type: ActivityEventDataType.DOCUMENT_MANDATORY_SECURITY_UPDATE\n };\n }\n case PlatformEventType.DOCUMENT_DISCRETIONARY_SECURITY_UPDATE:\n {\n const wireData = data;\n return {\n principalType: wireData.principalType ?? \"\",\n previousDiscretionarySecurity: wireData.previousDiscretionarySecurity,\n newDiscretionarySecurity: wireData.newDiscretionarySecurity ?? [],\n type: ActivityEventDataType.DOCUMENT_DISCRETIONARY_SECURITY_UPDATE\n };\n }\n default:\n return undefined;\n }\n}\nconst ARRIVED_DATA = {\n type: PresenceEventDataType.ARRIVED\n};\nconst DEPARTED_DATA = {\n type: PresenceEventDataType.DEPARTED\n};\nexport function getPresenceEvent(documentSchema, foundryUpdate) {\n switch (foundryUpdate.type) {\n case \"presenceChangeEvent\":\n {\n const {\n userId,\n status\n } = foundryUpdate;\n const eventData = status === \"PRESENT\" ? ARRIVED_DATA : DEPARTED_DATA;\n return {\n eventData,\n userId: userId\n };\n }\n case \"customPresenceEvent\":\n {\n const {\n userId,\n eventData,\n eventType\n } = foundryUpdate;\n const presenceEventData = getPresenceEventData(documentSchema, eventType, eventData);\n return {\n eventData: presenceEventData,\n userId: userId\n };\n }\n default:\n {\n foundryUpdate;\n const unknownUpdate = foundryUpdate;\n return {\n eventData: {\n rawData: foundryUpdate,\n rawType: typeof unknownUpdate.type === \"string\" ? unknownUpdate.type : \"unknown\",\n type: PresenceEventDataType.UNKNOWN\n },\n // FIXME: try and pull userId from message? Or just fix the platform types to have useful wrappers.\n userId: invalidUserRef().userId\n };\n }\n }\n}\nfunction getPresenceEventData(docSchema, eventType, eventData) {\n const model = docSchema[eventType];\n if (model == null) {\n return {\n rawData: eventData,\n rawType: eventType,\n type: PresenceEventDataType.UNKNOWN\n };\n }\n return {\n eventData,\n model,\n type: PresenceEventDataType.CUSTOM_EVENT\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 { Documents } from \"@osdk/foundry.pack\";\nimport { assertNever, getOntologyRid } from \"@palantir/pack.core\";\nimport { ActivityEventDataType, getMetadata } from \"@palantir/pack.document-schema.model-types\";\nimport { BaseYjsDocumentService, createDocumentServiceConfig, DocumentLoadStatus } from \"@palantir/pack.state.core\";\nimport { createFoundryEventService } from \"@palantir/pack.state.foundry-event\";\nimport { getActivityEvent, getPresenceEvent } from \"./eventMappers.js\";\nconst DEFAULT_USE_PREVIEW_API = true;\nconst EMPTY_DOCUMENT_SECURITY = Object.freeze({\n discretionary: {},\n mandatory: {}\n});\nexport function createFoundryDocumentServiceConfig(config = {}) {\n return createDocumentServiceConfig((app, config) => internalCreateFoundryDocumentService(app, config), config);\n}\nexport function internalCreateFoundryDocumentService(app, config, eventService) {\n return new FoundryDocumentService(app, config, eventService ?? createFoundryEventService(app));\n}\nexport class FoundryDocumentService extends BaseYjsDocumentService {\n constructor(app, config, eventService) {\n super(app, app.config.logger.child({}, {\n level: \"debug\",\n msgPrefix: \"FoundryDocumentService\"\n }));\n this.config = config;\n this.eventService = eventService;\n }\n createInternalDoc(ref, metadata) {\n return {\n ...this.createBaseInternalDoc(ref, metadata),\n syncSession: undefined\n };\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 = async (metadata, schema) => {\n const {\n documentTypeName,\n name,\n parentFolderRid,\n security\n } = metadata;\n const ontologyRid = await getOntologyRid(this.app);\n const request = {\n documentTypeName: documentTypeName,\n name: name,\n ontologyRid: ontologyRid,\n security: getWireSecurity(security)\n };\n if (parentFolderRid != null) {\n request.parentFolderRid = parentFolderRid;\n }\n const createResponse = await Documents.create(this.app.config.osdkClient, request, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n });\n const documentId = createResponse.id;\n const docRef = this.createDocRef(documentId, schema);\n return docRef;\n };\n searchDocuments = async (documentTypeName, schema, options) => {\n const request = {\n documentTypeName,\n requestBody: {\n query: options?.documentName != null ? {\n documentName: options.documentName\n } : undefined,\n pageSize: options?.pageSize,\n pageToken: options?.pageToken\n }\n };\n const searchResponse = await Documents.search(this.app.config.osdkClient, request, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n });\n return {\n data: searchResponse.data.map(doc => ({\n createdBy: doc.createdBy,\n createdTime: doc.createdTime,\n documentTypeName: doc.documentTypeName,\n id: doc.id,\n name: doc.name,\n ontologyRid: doc.ontologyRid,\n security: getLocalSecurity(doc.security),\n updatedBy: doc.updatedBy,\n updatedTime: doc.updatedTime\n })),\n nextPageToken: searchResponse.nextPageToken\n };\n };\n updateDocument = async (docRef, update) => {\n const document = await Documents.update(this.app.config.osdkClient, docRef.id, {\n requestBody: {\n ...(update.name != null ? {\n name: update.name\n } : {}),\n ...(update.description != null ? {\n description: update.description\n } : {}),\n ...(update.security != null ? {\n security: getWireSecurity(update.security)\n } : {})\n }\n }, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n });\n const metadata = {\n description: document.description,\n documentTypeName: document.documentTypeName,\n name: document.name,\n ontologyRid: document.ontologyRid,\n security: getLocalSecurity(document.security)\n };\n this.updateMetadata(docRef.id, metadata);\n return metadata;\n };\n deleteDocument = async docRef => {\n await Documents.deleteDocument(this.app.config.osdkClient, docRef.id, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n });\n this.documents.delete(docRef.id);\n };\n onMetadataSubscriptionOpened(internalDoc, docRef) {\n if (internalDoc.metadataStatus.load !== DocumentLoadStatus.UNLOADED) {\n throw new Error(`Cannot subscribe to document metadata when status is ${internalDoc.metadataStatus.load}`);\n }\n this.updateMetadataStatus(internalDoc, docRef, {\n load: DocumentLoadStatus.LOADING\n });\n Documents.get(this.app.config.osdkClient, docRef.id, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n }).then(document => {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n const metadata = {\n description: document.description,\n documentTypeName: document.documentTypeName,\n name: document.name,\n ontologyRid: document.ontologyRid,\n security: getLocalSecurity(document.security)\n };\n internalDoc.metadata = metadata;\n this.notifyMetadataSubscribers(internalDoc, docRef, metadata);\n this.updateMetadataStatus(internalDoc, docRef, {\n load: DocumentLoadStatus.LOADED\n });\n }).catch(e => {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n const error = new Error(\"Failed to load document metadata\", {\n cause: e\n });\n this.updateMetadataStatus(internalDoc, docRef, {\n error,\n load: DocumentLoadStatus.ERROR\n });\n });\n }\n onDataSubscriptionOpened(internalDoc, docRef) {\n if (internalDoc.syncSession != null) {\n throw new Error(\"Document data subscription already opened\");\n }\n internalDoc.syncSession = this.eventService.startDocumentSync(docRef.id, internalDoc.yDoc, status => {\n this.updateDataStatus(internalDoc, docRef, status);\n });\n }\n onMetadataSubscriptionClosed(_internalDoc, _docRef) {}\n onDataSubscriptionClosed(internalDoc, _docRef) {\n if (internalDoc.syncSession) {\n this.eventService.stopDocumentSync(internalDoc.syncSession);\n internalDoc.syncSession = undefined;\n }\n }\n onActivity(docRef, callback) {\n let unsubscribed = false;\n const unsubscribeFn = () => {\n unsubscribed = true;\n };\n this.eventService.subscribeToActivityUpdates(docRef.id, foundryEvent => {\n if (!unsubscribed) {\n const localEvent = getActivityEvent(docRef.schema, foundryEvent);\n if (localEvent != null) {\n this.updateMetadataFromActivityEvent(docRef, localEvent);\n callback(docRef, localEvent);\n }\n }\n }).catch(e => {\n this.logger.error(\"Failed to subscribe to activity updates\", e, {\n docId: docRef.id\n });\n });\n return unsubscribeFn;\n }\n static METADATA_ACTIVITY_EVENT_TYPES = new Set([ActivityEventDataType.DOCUMENT_RENAME, ActivityEventDataType.DOCUMENT_DESCRIPTION_UPDATE, ActivityEventDataType.DOCUMENT_MANDATORY_SECURITY_UPDATE, ActivityEventDataType.DOCUMENT_DISCRETIONARY_SECURITY_UPDATE]);\n updateMetadataFromActivityEvent(docRef, event) {\n if (FoundryDocumentService.METADATA_ACTIVITY_EVENT_TYPES.has(event.eventData.type)) {\n this.refetchMetadata(docRef);\n }\n }\n refetchMetadata(docRef) {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n Documents.get(this.app.config.osdkClient, docRef.id, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n }).then(document => {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n const metadata = {\n description: document.description,\n documentTypeName: document.documentTypeName,\n name: document.name,\n ontologyRid: document.ontologyRid,\n security: getLocalSecurity(document.security)\n };\n this.updateMetadata(docRef.id, metadata);\n }).catch(e => {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n this.logger.error(\"Failed to refetch document metadata\", e, {\n docId: docRef.id\n });\n });\n }\n onPresence(docRef, callback, options) {\n let unsubscribed = false;\n const unsubscribeFn = () => {\n unsubscribed = true;\n };\n this.eventService.subscribeToPresenceUpdates(docRef.id, foundryUpdate => {\n if (!unsubscribed) {\n const localEvent = getPresenceEvent(docRef.schema, foundryUpdate);\n callback(docRef, localEvent);\n }\n }, options).catch(e => {\n this.logger.error(\"Failed to subscribe to presence updates\", e, {\n docId: docRef.id\n });\n });\n return unsubscribeFn;\n }\n updateCustomPresence(docRef, model, eventData, options) {\n const eventType = getMetadata(model).name;\n void this.eventService.publishCustomPresence(docRef.id, eventType, eventData, options).catch(e => {\n this.logger.error(\"Failed to publish custom presence\", e, {\n docId: docRef.id\n });\n });\n }\n}\nfunction getWireSecurity({\n discretionary,\n mandatory\n} = EMPTY_DOCUMENT_SECURITY) {\n const {\n editors = [],\n owners = [],\n viewers = []\n } = discretionary;\n return {\n discretionary: {\n editors: editors.map(getWirePrincipal),\n owners: owners.map(getWirePrincipal),\n viewers: viewers.map(getWirePrincipal)\n },\n mandatory: {\n classification: mandatory.classification != null ? [...mandatory.classification] : [],\n markings: mandatory.markings != null ? [...mandatory.markings] : []\n }\n };\n}\nfunction getWirePrincipal(principal) {\n switch (principal.type) {\n case \"all\":\n return {\n type: \"all\"\n };\n case \"groupId\":\n return {\n type: \"groupId\",\n groupId: principal.groupId\n };\n case \"userId\":\n return {\n type: \"userId\",\n userId: principal.userId\n };\n default:\n assertNever(principal);\n }\n}\nfunction getLocalSecurity(wireSecurity) {\n return {\n discretionary: {\n editors: wireSecurity.discretionary.editors.map(getLocalPrincipal),\n owners: wireSecurity.discretionary.owners.map(getLocalPrincipal),\n viewers: wireSecurity.discretionary.viewers.map(getLocalPrincipal)\n },\n mandatory: {\n classification: [...wireSecurity.mandatory.classification],\n markings: [...wireSecurity.mandatory.markings]\n }\n };\n}\nfunction getLocalPrincipal(wirePrincipal) {\n switch (wirePrincipal.type) {\n case \"all\":\n return {\n type: \"all\"\n };\n case \"groupId\":\n return {\n type: \"groupId\",\n groupId: wirePrincipal.groupId\n };\n case \"userId\":\n return {\n type: \"userId\",\n userId: wirePrincipal.userId\n };\n default:\n assertNever(wirePrincipal);\n }\n}"]}
|
package/build/cjs/index.cjs
CHANGED
|
@@ -29,7 +29,8 @@ var PlatformEventType = {
|
|
|
29
29
|
DOCUMENT_CREATE: "DocumentCreateEvent",
|
|
30
30
|
DOCUMENT_DESCRIPTION_UPDATE: "DocumentDescriptionUpdateEvent",
|
|
31
31
|
DOCUMENT_RENAME: "DocumentRenameEvent",
|
|
32
|
-
|
|
32
|
+
DOCUMENT_MANDATORY_SECURITY_UPDATE: "DocumentMandatorySecurityUpdateEvent",
|
|
33
|
+
DOCUMENT_DISCRETIONARY_SECURITY_UPDATE: "DocumentDiscretionarySecurityUpdateEvent"
|
|
33
34
|
};
|
|
34
35
|
function getActivityEventData(docSchema, {
|
|
35
36
|
eventData,
|
|
@@ -82,12 +83,21 @@ function getPlatformActivityEventData(eventType, data) {
|
|
|
82
83
|
type: pack_documentSchema_modelTypes.ActivityEventDataType.DOCUMENT_DESCRIPTION_UPDATE
|
|
83
84
|
};
|
|
84
85
|
}
|
|
85
|
-
case PlatformEventType.
|
|
86
|
+
case PlatformEventType.DOCUMENT_MANDATORY_SECURITY_UPDATE: {
|
|
86
87
|
const wireData = data;
|
|
87
88
|
return {
|
|
88
89
|
newClassification: wireData.newClassification ?? [],
|
|
89
90
|
newMarkings: wireData.newMarkings ?? [],
|
|
90
|
-
type: pack_documentSchema_modelTypes.ActivityEventDataType.
|
|
91
|
+
type: pack_documentSchema_modelTypes.ActivityEventDataType.DOCUMENT_MANDATORY_SECURITY_UPDATE
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
case PlatformEventType.DOCUMENT_DISCRETIONARY_SECURITY_UPDATE: {
|
|
95
|
+
const wireData = data;
|
|
96
|
+
return {
|
|
97
|
+
principalType: wireData.principalType ?? "",
|
|
98
|
+
previousDiscretionarySecurity: wireData.previousDiscretionarySecurity,
|
|
99
|
+
newDiscretionarySecurity: wireData.newDiscretionarySecurity ?? [],
|
|
100
|
+
type: pack_documentSchema_modelTypes.ActivityEventDataType.DOCUMENT_DISCRETIONARY_SECURITY_UPDATE
|
|
91
101
|
};
|
|
92
102
|
}
|
|
93
103
|
default:
|
|
@@ -347,7 +357,7 @@ var FoundryDocumentService = class _FoundryDocumentService extends pack_state_co
|
|
|
347
357
|
});
|
|
348
358
|
return unsubscribeFn;
|
|
349
359
|
}
|
|
350
|
-
static METADATA_ACTIVITY_EVENT_TYPES = /* @__PURE__ */ new Set([pack_documentSchema_modelTypes.ActivityEventDataType.DOCUMENT_RENAME, pack_documentSchema_modelTypes.ActivityEventDataType.DOCUMENT_DESCRIPTION_UPDATE, pack_documentSchema_modelTypes.ActivityEventDataType.
|
|
360
|
+
static METADATA_ACTIVITY_EVENT_TYPES = /* @__PURE__ */ new Set([pack_documentSchema_modelTypes.ActivityEventDataType.DOCUMENT_RENAME, pack_documentSchema_modelTypes.ActivityEventDataType.DOCUMENT_DESCRIPTION_UPDATE, pack_documentSchema_modelTypes.ActivityEventDataType.DOCUMENT_MANDATORY_SECURITY_UPDATE, pack_documentSchema_modelTypes.ActivityEventDataType.DOCUMENT_DISCRETIONARY_SECURITY_UPDATE]);
|
|
351
361
|
updateMetadataFromActivityEvent(docRef, event) {
|
|
352
362
|
if (_FoundryDocumentService.METADATA_ACTIVITY_EVENT_TYPES.has(event.eventData.type)) {
|
|
353
363
|
this.refetchMetadata(docRef);
|
package/build/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/eventMappers.ts","../../src/FoundryDocumentService.ts"],"names":["ActivityEventDataType","PresenceEventDataType","invalidUserRef","createDocumentServiceConfig","config","createFoundryEventService","BaseYjsDocumentService","getOntologyRid","Documents","DocumentLoadStatus","getMetadata","assertNever"],"mappings":"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","file":"index.cjs","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\nimport { invalidUserRef } from \"@palantir/pack.auth\";\nimport { ActivityEventDataType, PresenceEventDataType } from \"@palantir/pack.document-schema.model-types\";\nexport function getActivityEvent(documentSchema, foundryEvent) {\n // TODO: need to handle deletes and ensure exhaustive handling\n if (foundryEvent.type !== \"activityCreated\") {\n return undefined;\n }\n const {\n activityEvent\n } = foundryEvent;\n const eventData = getActivityEventData(documentSchema, activityEvent);\n return {\n aggregationKey: activityEvent.aggregationKey,\n createdBy: activityEvent.createdBy,\n createdInstant: new Date(activityEvent.createdTime).getTime(),\n eventData,\n eventId: activityEvent.eventId,\n isRead: activityEvent.isRead\n };\n}\n\n/**\n * Platform event type names as sent by backpack.\n * Note: Only DOCUMENT_CREATE is currently emitted by the backend.\n * Remaining types are included for future use.\n */\nconst PlatformEventType = {\n DOCUMENT_CREATE: \"DocumentCreateEvent\",\n DOCUMENT_DESCRIPTION_UPDATE: \"DocumentDescriptionUpdateEvent\",\n DOCUMENT_RENAME: \"DocumentRenameEvent\",\n DOCUMENT_SECURITY_UPDATE: \"DocumentMandatorySecurityUpdateEvent\"\n};\nfunction getActivityEventData(docSchema, {\n eventData,\n eventType\n}) {\n const platformEventData = getPlatformActivityEventData(eventType, eventData.data);\n if (platformEventData != null) {\n return platformEventData;\n }\n\n // Handle custom application-defined activity events\n // TODO: validate model is valid for activity events\n const model = docSchema[eventType];\n if (model == null) {\n return {\n rawData: eventData.data,\n rawType: eventType,\n type: ActivityEventDataType.UNKNOWN\n };\n }\n\n // TODO: validate data against model schema\n\n return {\n eventData: eventData.data,\n model,\n type: ActivityEventDataType.CUSTOM_EVENT\n };\n}\nfunction getPlatformActivityEventData(eventType, data) {\n switch (eventType) {\n case PlatformEventType.DOCUMENT_CREATE:\n {\n const wireData = data;\n return {\n initialMandatorySecurity: {\n classification: wireData.initialMandatorySecurity?.classification,\n markings: wireData.initialMandatorySecurity?.markings\n },\n name: wireData.name ?? \"\",\n type: ActivityEventDataType.DOCUMENT_CREATE\n };\n }\n case PlatformEventType.DOCUMENT_RENAME:\n {\n const wireData = data;\n return {\n newName: wireData.newName ?? \"\",\n previousName: wireData.previousName ?? \"\",\n type: ActivityEventDataType.DOCUMENT_RENAME\n };\n }\n case PlatformEventType.DOCUMENT_DESCRIPTION_UPDATE:\n {\n const wireData = data;\n return {\n isInitial: wireData.isInitial ?? false,\n newDescription: wireData.newDescription ?? \"\",\n type: ActivityEventDataType.DOCUMENT_DESCRIPTION_UPDATE\n };\n }\n case PlatformEventType.DOCUMENT_SECURITY_UPDATE:\n {\n const wireData = data;\n return {\n newClassification: wireData.newClassification ?? [],\n newMarkings: wireData.newMarkings ?? [],\n type: ActivityEventDataType.DOCUMENT_SECURITY_UPDATE\n };\n }\n default:\n return undefined;\n }\n}\nconst ARRIVED_DATA = {\n type: PresenceEventDataType.ARRIVED\n};\nconst DEPARTED_DATA = {\n type: PresenceEventDataType.DEPARTED\n};\nexport function getPresenceEvent(documentSchema, foundryUpdate) {\n switch (foundryUpdate.type) {\n case \"presenceChangeEvent\":\n {\n const {\n userId,\n status\n } = foundryUpdate;\n const eventData = status === \"PRESENT\" ? ARRIVED_DATA : DEPARTED_DATA;\n return {\n eventData,\n userId: userId\n };\n }\n case \"customPresenceEvent\":\n {\n const {\n userId,\n eventData,\n eventType\n } = foundryUpdate;\n const presenceEventData = getPresenceEventData(documentSchema, eventType, eventData);\n return {\n eventData: presenceEventData,\n userId: userId\n };\n }\n default:\n {\n foundryUpdate;\n const unknownUpdate = foundryUpdate;\n return {\n eventData: {\n rawData: foundryUpdate,\n rawType: typeof unknownUpdate.type === \"string\" ? unknownUpdate.type : \"unknown\",\n type: PresenceEventDataType.UNKNOWN\n },\n // FIXME: try and pull userId from message? Or just fix the platform types to have useful wrappers.\n userId: invalidUserRef().userId\n };\n }\n }\n}\nfunction getPresenceEventData(docSchema, eventType, eventData) {\n const model = docSchema[eventType];\n if (model == null) {\n return {\n rawData: eventData,\n rawType: eventType,\n type: PresenceEventDataType.UNKNOWN\n };\n }\n return {\n eventData,\n model,\n type: PresenceEventDataType.CUSTOM_EVENT\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 { Documents } from \"@osdk/foundry.pack\";\nimport { assertNever, getOntologyRid } from \"@palantir/pack.core\";\nimport { ActivityEventDataType, getMetadata } from \"@palantir/pack.document-schema.model-types\";\nimport { BaseYjsDocumentService, createDocumentServiceConfig, DocumentLoadStatus } from \"@palantir/pack.state.core\";\nimport { createFoundryEventService } from \"@palantir/pack.state.foundry-event\";\nimport { getActivityEvent, getPresenceEvent } from \"./eventMappers.js\";\nconst DEFAULT_USE_PREVIEW_API = true;\nconst EMPTY_DOCUMENT_SECURITY = Object.freeze({\n discretionary: {},\n mandatory: {}\n});\nexport function createFoundryDocumentServiceConfig(config = {}) {\n return createDocumentServiceConfig((app, config) => internalCreateFoundryDocumentService(app, config), config);\n}\nexport function internalCreateFoundryDocumentService(app, config, eventService) {\n return new FoundryDocumentService(app, config, eventService ?? createFoundryEventService(app));\n}\nexport class FoundryDocumentService extends BaseYjsDocumentService {\n constructor(app, config, eventService) {\n super(app, app.config.logger.child({}, {\n level: \"debug\",\n msgPrefix: \"FoundryDocumentService\"\n }));\n this.config = config;\n this.eventService = eventService;\n }\n createInternalDoc(ref, metadata) {\n return {\n ...this.createBaseInternalDoc(ref, metadata),\n syncSession: undefined\n };\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 = async (metadata, schema) => {\n const {\n documentTypeName,\n name,\n parentFolderRid,\n security\n } = metadata;\n const ontologyRid = await getOntologyRid(this.app);\n const request = {\n documentTypeName: documentTypeName,\n name: name,\n ontologyRid: ontologyRid,\n security: getWireSecurity(security)\n };\n if (parentFolderRid != null) {\n request.parentFolderRid = parentFolderRid;\n }\n const createResponse = await Documents.create(this.app.config.osdkClient, request, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n });\n const documentId = createResponse.id;\n const docRef = this.createDocRef(documentId, schema);\n return docRef;\n };\n searchDocuments = async (documentTypeName, schema, options) => {\n const request = {\n documentTypeName,\n requestBody: {\n query: options?.documentName != null ? {\n documentName: options.documentName\n } : undefined,\n pageSize: options?.pageSize,\n pageToken: options?.pageToken\n }\n };\n const searchResponse = await Documents.search(this.app.config.osdkClient, request, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n });\n return {\n data: searchResponse.data.map(doc => ({\n createdBy: doc.createdBy,\n createdTime: doc.createdTime,\n documentTypeName: doc.documentTypeName,\n id: doc.id,\n name: doc.name,\n ontologyRid: doc.ontologyRid,\n security: getLocalSecurity(doc.security),\n updatedBy: doc.updatedBy,\n updatedTime: doc.updatedTime\n })),\n nextPageToken: searchResponse.nextPageToken\n };\n };\n updateDocument = async (docRef, update) => {\n const document = await Documents.update(this.app.config.osdkClient, docRef.id, {\n requestBody: {\n ...(update.name != null ? {\n name: update.name\n } : {}),\n ...(update.description != null ? {\n description: update.description\n } : {}),\n ...(update.security != null ? {\n security: getWireSecurity(update.security)\n } : {})\n }\n }, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n });\n const metadata = {\n description: document.description,\n documentTypeName: document.documentTypeName,\n name: document.name,\n ontologyRid: document.ontologyRid,\n security: getLocalSecurity(document.security)\n };\n this.updateMetadata(docRef.id, metadata);\n return metadata;\n };\n deleteDocument = async docRef => {\n await Documents.deleteDocument(this.app.config.osdkClient, docRef.id, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n });\n this.documents.delete(docRef.id);\n };\n onMetadataSubscriptionOpened(internalDoc, docRef) {\n if (internalDoc.metadataStatus.load !== DocumentLoadStatus.UNLOADED) {\n throw new Error(`Cannot subscribe to document metadata when status is ${internalDoc.metadataStatus.load}`);\n }\n this.updateMetadataStatus(internalDoc, docRef, {\n load: DocumentLoadStatus.LOADING\n });\n Documents.get(this.app.config.osdkClient, docRef.id, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n }).then(document => {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n const metadata = {\n description: document.description,\n documentTypeName: document.documentTypeName,\n name: document.name,\n ontologyRid: document.ontologyRid,\n security: getLocalSecurity(document.security)\n };\n internalDoc.metadata = metadata;\n this.notifyMetadataSubscribers(internalDoc, docRef, metadata);\n this.updateMetadataStatus(internalDoc, docRef, {\n load: DocumentLoadStatus.LOADED\n });\n }).catch(e => {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n const error = new Error(\"Failed to load document metadata\", {\n cause: e\n });\n this.updateMetadataStatus(internalDoc, docRef, {\n error,\n load: DocumentLoadStatus.ERROR\n });\n });\n }\n onDataSubscriptionOpened(internalDoc, docRef) {\n if (internalDoc.syncSession != null) {\n throw new Error(\"Document data subscription already opened\");\n }\n internalDoc.syncSession = this.eventService.startDocumentSync(docRef.id, internalDoc.yDoc, status => {\n this.updateDataStatus(internalDoc, docRef, status);\n });\n }\n onMetadataSubscriptionClosed(_internalDoc, _docRef) {}\n onDataSubscriptionClosed(internalDoc, _docRef) {\n if (internalDoc.syncSession) {\n this.eventService.stopDocumentSync(internalDoc.syncSession);\n internalDoc.syncSession = undefined;\n }\n }\n onActivity(docRef, callback) {\n let unsubscribed = false;\n const unsubscribeFn = () => {\n unsubscribed = true;\n };\n this.eventService.subscribeToActivityUpdates(docRef.id, foundryEvent => {\n if (!unsubscribed) {\n const localEvent = getActivityEvent(docRef.schema, foundryEvent);\n if (localEvent != null) {\n this.updateMetadataFromActivityEvent(docRef, localEvent);\n callback(docRef, localEvent);\n }\n }\n }).catch(e => {\n this.logger.error(\"Failed to subscribe to activity updates\", e, {\n docId: docRef.id\n });\n });\n return unsubscribeFn;\n }\n static METADATA_ACTIVITY_EVENT_TYPES = new Set([ActivityEventDataType.DOCUMENT_RENAME, ActivityEventDataType.DOCUMENT_DESCRIPTION_UPDATE, ActivityEventDataType.DOCUMENT_SECURITY_UPDATE]);\n updateMetadataFromActivityEvent(docRef, event) {\n if (FoundryDocumentService.METADATA_ACTIVITY_EVENT_TYPES.has(event.eventData.type)) {\n this.refetchMetadata(docRef);\n }\n }\n refetchMetadata(docRef) {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n Documents.get(this.app.config.osdkClient, docRef.id, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n }).then(document => {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n const metadata = {\n description: document.description,\n documentTypeName: document.documentTypeName,\n name: document.name,\n ontologyRid: document.ontologyRid,\n security: getLocalSecurity(document.security)\n };\n this.updateMetadata(docRef.id, metadata);\n }).catch(e => {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n this.logger.error(\"Failed to refetch document metadata\", e, {\n docId: docRef.id\n });\n });\n }\n onPresence(docRef, callback, options) {\n let unsubscribed = false;\n const unsubscribeFn = () => {\n unsubscribed = true;\n };\n this.eventService.subscribeToPresenceUpdates(docRef.id, foundryUpdate => {\n if (!unsubscribed) {\n const localEvent = getPresenceEvent(docRef.schema, foundryUpdate);\n callback(docRef, localEvent);\n }\n }, options).catch(e => {\n this.logger.error(\"Failed to subscribe to presence updates\", e, {\n docId: docRef.id\n });\n });\n return unsubscribeFn;\n }\n updateCustomPresence(docRef, model, eventData, options) {\n const eventType = getMetadata(model).name;\n void this.eventService.publishCustomPresence(docRef.id, eventType, eventData, options).catch(e => {\n this.logger.error(\"Failed to publish custom presence\", e, {\n docId: docRef.id\n });\n });\n }\n}\nfunction getWireSecurity({\n discretionary,\n mandatory\n} = EMPTY_DOCUMENT_SECURITY) {\n const {\n editors = [],\n owners = [],\n viewers = []\n } = discretionary;\n return {\n discretionary: {\n editors: editors.map(getWirePrincipal),\n owners: owners.map(getWirePrincipal),\n viewers: viewers.map(getWirePrincipal)\n },\n mandatory: {\n classification: mandatory.classification != null ? [...mandatory.classification] : [],\n markings: mandatory.markings != null ? [...mandatory.markings] : []\n }\n };\n}\nfunction getWirePrincipal(principal) {\n switch (principal.type) {\n case \"all\":\n return {\n type: \"all\"\n };\n case \"groupId\":\n return {\n type: \"groupId\",\n groupId: principal.groupId\n };\n case \"userId\":\n return {\n type: \"userId\",\n userId: principal.userId\n };\n default:\n assertNever(principal);\n }\n}\nfunction getLocalSecurity(wireSecurity) {\n return {\n discretionary: {\n editors: wireSecurity.discretionary.editors.map(getLocalPrincipal),\n owners: wireSecurity.discretionary.owners.map(getLocalPrincipal),\n viewers: wireSecurity.discretionary.viewers.map(getLocalPrincipal)\n },\n mandatory: {\n classification: [...wireSecurity.mandatory.classification],\n markings: [...wireSecurity.mandatory.markings]\n }\n };\n}\nfunction getLocalPrincipal(wirePrincipal) {\n switch (wirePrincipal.type) {\n case \"all\":\n return {\n type: \"all\"\n };\n case \"groupId\":\n return {\n type: \"groupId\",\n groupId: wirePrincipal.groupId\n };\n case \"userId\":\n return {\n type: \"userId\",\n userId: wirePrincipal.userId\n };\n default:\n assertNever(wirePrincipal);\n }\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../src/eventMappers.ts","../../src/FoundryDocumentService.ts"],"names":["ActivityEventDataType","PresenceEventDataType","invalidUserRef","createDocumentServiceConfig","config","createFoundryEventService","BaseYjsDocumentService","getOntologyRid","Documents","DocumentLoadStatus","getMetadata","assertNever"],"mappings":"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","file":"index.cjs","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\nimport { invalidUserRef } from \"@palantir/pack.auth\";\nimport { ActivityEventDataType, PresenceEventDataType } from \"@palantir/pack.document-schema.model-types\";\nexport function getActivityEvent(documentSchema, foundryEvent) {\n // TODO: need to handle deletes and ensure exhaustive handling\n if (foundryEvent.type !== \"activityCreated\") {\n return undefined;\n }\n const {\n activityEvent\n } = foundryEvent;\n const eventData = getActivityEventData(documentSchema, activityEvent);\n return {\n aggregationKey: activityEvent.aggregationKey,\n createdBy: activityEvent.createdBy,\n createdInstant: new Date(activityEvent.createdTime).getTime(),\n eventData,\n eventId: activityEvent.eventId,\n isRead: activityEvent.isRead\n };\n}\n\n/**\n * Platform event type names as sent by backpack.\n * Note: Only DOCUMENT_CREATE is currently emitted by the backend.\n * Remaining types are included for future use.\n */\nconst PlatformEventType = {\n DOCUMENT_CREATE: \"DocumentCreateEvent\",\n DOCUMENT_DESCRIPTION_UPDATE: \"DocumentDescriptionUpdateEvent\",\n DOCUMENT_RENAME: \"DocumentRenameEvent\",\n DOCUMENT_MANDATORY_SECURITY_UPDATE: \"DocumentMandatorySecurityUpdateEvent\",\n DOCUMENT_DISCRETIONARY_SECURITY_UPDATE: \"DocumentDiscretionarySecurityUpdateEvent\"\n};\nfunction getActivityEventData(docSchema, {\n eventData,\n eventType\n}) {\n const platformEventData = getPlatformActivityEventData(eventType, eventData.data);\n if (platformEventData != null) {\n return platformEventData;\n }\n\n // Handle custom application-defined activity events\n // TODO: validate model is valid for activity events\n const model = docSchema[eventType];\n if (model == null) {\n return {\n rawData: eventData.data,\n rawType: eventType,\n type: ActivityEventDataType.UNKNOWN\n };\n }\n\n // TODO: validate data against model schema\n\n return {\n eventData: eventData.data,\n model,\n type: ActivityEventDataType.CUSTOM_EVENT\n };\n}\nfunction getPlatformActivityEventData(eventType, data) {\n switch (eventType) {\n case PlatformEventType.DOCUMENT_CREATE:\n {\n const wireData = data;\n return {\n initialMandatorySecurity: {\n classification: wireData.initialMandatorySecurity?.classification,\n markings: wireData.initialMandatorySecurity?.markings\n },\n name: wireData.name ?? \"\",\n type: ActivityEventDataType.DOCUMENT_CREATE\n };\n }\n case PlatformEventType.DOCUMENT_RENAME:\n {\n const wireData = data;\n return {\n newName: wireData.newName ?? \"\",\n previousName: wireData.previousName ?? \"\",\n type: ActivityEventDataType.DOCUMENT_RENAME\n };\n }\n case PlatformEventType.DOCUMENT_DESCRIPTION_UPDATE:\n {\n const wireData = data;\n return {\n isInitial: wireData.isInitial ?? false,\n newDescription: wireData.newDescription ?? \"\",\n type: ActivityEventDataType.DOCUMENT_DESCRIPTION_UPDATE\n };\n }\n case PlatformEventType.DOCUMENT_MANDATORY_SECURITY_UPDATE:\n {\n const wireData = data;\n return {\n newClassification: wireData.newClassification ?? [],\n newMarkings: wireData.newMarkings ?? [],\n type: ActivityEventDataType.DOCUMENT_MANDATORY_SECURITY_UPDATE\n };\n }\n case PlatformEventType.DOCUMENT_DISCRETIONARY_SECURITY_UPDATE:\n {\n const wireData = data;\n return {\n principalType: wireData.principalType ?? \"\",\n previousDiscretionarySecurity: wireData.previousDiscretionarySecurity,\n newDiscretionarySecurity: wireData.newDiscretionarySecurity ?? [],\n type: ActivityEventDataType.DOCUMENT_DISCRETIONARY_SECURITY_UPDATE\n };\n }\n default:\n return undefined;\n }\n}\nconst ARRIVED_DATA = {\n type: PresenceEventDataType.ARRIVED\n};\nconst DEPARTED_DATA = {\n type: PresenceEventDataType.DEPARTED\n};\nexport function getPresenceEvent(documentSchema, foundryUpdate) {\n switch (foundryUpdate.type) {\n case \"presenceChangeEvent\":\n {\n const {\n userId,\n status\n } = foundryUpdate;\n const eventData = status === \"PRESENT\" ? ARRIVED_DATA : DEPARTED_DATA;\n return {\n eventData,\n userId: userId\n };\n }\n case \"customPresenceEvent\":\n {\n const {\n userId,\n eventData,\n eventType\n } = foundryUpdate;\n const presenceEventData = getPresenceEventData(documentSchema, eventType, eventData);\n return {\n eventData: presenceEventData,\n userId: userId\n };\n }\n default:\n {\n foundryUpdate;\n const unknownUpdate = foundryUpdate;\n return {\n eventData: {\n rawData: foundryUpdate,\n rawType: typeof unknownUpdate.type === \"string\" ? unknownUpdate.type : \"unknown\",\n type: PresenceEventDataType.UNKNOWN\n },\n // FIXME: try and pull userId from message? Or just fix the platform types to have useful wrappers.\n userId: invalidUserRef().userId\n };\n }\n }\n}\nfunction getPresenceEventData(docSchema, eventType, eventData) {\n const model = docSchema[eventType];\n if (model == null) {\n return {\n rawData: eventData,\n rawType: eventType,\n type: PresenceEventDataType.UNKNOWN\n };\n }\n return {\n eventData,\n model,\n type: PresenceEventDataType.CUSTOM_EVENT\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 { Documents } from \"@osdk/foundry.pack\";\nimport { assertNever, getOntologyRid } from \"@palantir/pack.core\";\nimport { ActivityEventDataType, getMetadata } from \"@palantir/pack.document-schema.model-types\";\nimport { BaseYjsDocumentService, createDocumentServiceConfig, DocumentLoadStatus } from \"@palantir/pack.state.core\";\nimport { createFoundryEventService } from \"@palantir/pack.state.foundry-event\";\nimport { getActivityEvent, getPresenceEvent } from \"./eventMappers.js\";\nconst DEFAULT_USE_PREVIEW_API = true;\nconst EMPTY_DOCUMENT_SECURITY = Object.freeze({\n discretionary: {},\n mandatory: {}\n});\nexport function createFoundryDocumentServiceConfig(config = {}) {\n return createDocumentServiceConfig((app, config) => internalCreateFoundryDocumentService(app, config), config);\n}\nexport function internalCreateFoundryDocumentService(app, config, eventService) {\n return new FoundryDocumentService(app, config, eventService ?? createFoundryEventService(app));\n}\nexport class FoundryDocumentService extends BaseYjsDocumentService {\n constructor(app, config, eventService) {\n super(app, app.config.logger.child({}, {\n level: \"debug\",\n msgPrefix: \"FoundryDocumentService\"\n }));\n this.config = config;\n this.eventService = eventService;\n }\n createInternalDoc(ref, metadata) {\n return {\n ...this.createBaseInternalDoc(ref, metadata),\n syncSession: undefined\n };\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 = async (metadata, schema) => {\n const {\n documentTypeName,\n name,\n parentFolderRid,\n security\n } = metadata;\n const ontologyRid = await getOntologyRid(this.app);\n const request = {\n documentTypeName: documentTypeName,\n name: name,\n ontologyRid: ontologyRid,\n security: getWireSecurity(security)\n };\n if (parentFolderRid != null) {\n request.parentFolderRid = parentFolderRid;\n }\n const createResponse = await Documents.create(this.app.config.osdkClient, request, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n });\n const documentId = createResponse.id;\n const docRef = this.createDocRef(documentId, schema);\n return docRef;\n };\n searchDocuments = async (documentTypeName, schema, options) => {\n const request = {\n documentTypeName,\n requestBody: {\n query: options?.documentName != null ? {\n documentName: options.documentName\n } : undefined,\n pageSize: options?.pageSize,\n pageToken: options?.pageToken\n }\n };\n const searchResponse = await Documents.search(this.app.config.osdkClient, request, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n });\n return {\n data: searchResponse.data.map(doc => ({\n createdBy: doc.createdBy,\n createdTime: doc.createdTime,\n documentTypeName: doc.documentTypeName,\n id: doc.id,\n name: doc.name,\n ontologyRid: doc.ontologyRid,\n security: getLocalSecurity(doc.security),\n updatedBy: doc.updatedBy,\n updatedTime: doc.updatedTime\n })),\n nextPageToken: searchResponse.nextPageToken\n };\n };\n updateDocument = async (docRef, update) => {\n const document = await Documents.update(this.app.config.osdkClient, docRef.id, {\n requestBody: {\n ...(update.name != null ? {\n name: update.name\n } : {}),\n ...(update.description != null ? {\n description: update.description\n } : {}),\n ...(update.security != null ? {\n security: getWireSecurity(update.security)\n } : {})\n }\n }, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n });\n const metadata = {\n description: document.description,\n documentTypeName: document.documentTypeName,\n name: document.name,\n ontologyRid: document.ontologyRid,\n security: getLocalSecurity(document.security)\n };\n this.updateMetadata(docRef.id, metadata);\n return metadata;\n };\n deleteDocument = async docRef => {\n await Documents.deleteDocument(this.app.config.osdkClient, docRef.id, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n });\n this.documents.delete(docRef.id);\n };\n onMetadataSubscriptionOpened(internalDoc, docRef) {\n if (internalDoc.metadataStatus.load !== DocumentLoadStatus.UNLOADED) {\n throw new Error(`Cannot subscribe to document metadata when status is ${internalDoc.metadataStatus.load}`);\n }\n this.updateMetadataStatus(internalDoc, docRef, {\n load: DocumentLoadStatus.LOADING\n });\n Documents.get(this.app.config.osdkClient, docRef.id, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n }).then(document => {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n const metadata = {\n description: document.description,\n documentTypeName: document.documentTypeName,\n name: document.name,\n ontologyRid: document.ontologyRid,\n security: getLocalSecurity(document.security)\n };\n internalDoc.metadata = metadata;\n this.notifyMetadataSubscribers(internalDoc, docRef, metadata);\n this.updateMetadataStatus(internalDoc, docRef, {\n load: DocumentLoadStatus.LOADED\n });\n }).catch(e => {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n const error = new Error(\"Failed to load document metadata\", {\n cause: e\n });\n this.updateMetadataStatus(internalDoc, docRef, {\n error,\n load: DocumentLoadStatus.ERROR\n });\n });\n }\n onDataSubscriptionOpened(internalDoc, docRef) {\n if (internalDoc.syncSession != null) {\n throw new Error(\"Document data subscription already opened\");\n }\n internalDoc.syncSession = this.eventService.startDocumentSync(docRef.id, internalDoc.yDoc, status => {\n this.updateDataStatus(internalDoc, docRef, status);\n });\n }\n onMetadataSubscriptionClosed(_internalDoc, _docRef) {}\n onDataSubscriptionClosed(internalDoc, _docRef) {\n if (internalDoc.syncSession) {\n this.eventService.stopDocumentSync(internalDoc.syncSession);\n internalDoc.syncSession = undefined;\n }\n }\n onActivity(docRef, callback) {\n let unsubscribed = false;\n const unsubscribeFn = () => {\n unsubscribed = true;\n };\n this.eventService.subscribeToActivityUpdates(docRef.id, foundryEvent => {\n if (!unsubscribed) {\n const localEvent = getActivityEvent(docRef.schema, foundryEvent);\n if (localEvent != null) {\n this.updateMetadataFromActivityEvent(docRef, localEvent);\n callback(docRef, localEvent);\n }\n }\n }).catch(e => {\n this.logger.error(\"Failed to subscribe to activity updates\", e, {\n docId: docRef.id\n });\n });\n return unsubscribeFn;\n }\n static METADATA_ACTIVITY_EVENT_TYPES = new Set([ActivityEventDataType.DOCUMENT_RENAME, ActivityEventDataType.DOCUMENT_DESCRIPTION_UPDATE, ActivityEventDataType.DOCUMENT_MANDATORY_SECURITY_UPDATE, ActivityEventDataType.DOCUMENT_DISCRETIONARY_SECURITY_UPDATE]);\n updateMetadataFromActivityEvent(docRef, event) {\n if (FoundryDocumentService.METADATA_ACTIVITY_EVENT_TYPES.has(event.eventData.type)) {\n this.refetchMetadata(docRef);\n }\n }\n refetchMetadata(docRef) {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n Documents.get(this.app.config.osdkClient, docRef.id, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n }).then(document => {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n const metadata = {\n description: document.description,\n documentTypeName: document.documentTypeName,\n name: document.name,\n ontologyRid: document.ontologyRid,\n security: getLocalSecurity(document.security)\n };\n this.updateMetadata(docRef.id, metadata);\n }).catch(e => {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n this.logger.error(\"Failed to refetch document metadata\", e, {\n docId: docRef.id\n });\n });\n }\n onPresence(docRef, callback, options) {\n let unsubscribed = false;\n const unsubscribeFn = () => {\n unsubscribed = true;\n };\n this.eventService.subscribeToPresenceUpdates(docRef.id, foundryUpdate => {\n if (!unsubscribed) {\n const localEvent = getPresenceEvent(docRef.schema, foundryUpdate);\n callback(docRef, localEvent);\n }\n }, options).catch(e => {\n this.logger.error(\"Failed to subscribe to presence updates\", e, {\n docId: docRef.id\n });\n });\n return unsubscribeFn;\n }\n updateCustomPresence(docRef, model, eventData, options) {\n const eventType = getMetadata(model).name;\n void this.eventService.publishCustomPresence(docRef.id, eventType, eventData, options).catch(e => {\n this.logger.error(\"Failed to publish custom presence\", e, {\n docId: docRef.id\n });\n });\n }\n}\nfunction getWireSecurity({\n discretionary,\n mandatory\n} = EMPTY_DOCUMENT_SECURITY) {\n const {\n editors = [],\n owners = [],\n viewers = []\n } = discretionary;\n return {\n discretionary: {\n editors: editors.map(getWirePrincipal),\n owners: owners.map(getWirePrincipal),\n viewers: viewers.map(getWirePrincipal)\n },\n mandatory: {\n classification: mandatory.classification != null ? [...mandatory.classification] : [],\n markings: mandatory.markings != null ? [...mandatory.markings] : []\n }\n };\n}\nfunction getWirePrincipal(principal) {\n switch (principal.type) {\n case \"all\":\n return {\n type: \"all\"\n };\n case \"groupId\":\n return {\n type: \"groupId\",\n groupId: principal.groupId\n };\n case \"userId\":\n return {\n type: \"userId\",\n userId: principal.userId\n };\n default:\n assertNever(principal);\n }\n}\nfunction getLocalSecurity(wireSecurity) {\n return {\n discretionary: {\n editors: wireSecurity.discretionary.editors.map(getLocalPrincipal),\n owners: wireSecurity.discretionary.owners.map(getLocalPrincipal),\n viewers: wireSecurity.discretionary.viewers.map(getLocalPrincipal)\n },\n mandatory: {\n classification: [...wireSecurity.mandatory.classification],\n markings: [...wireSecurity.mandatory.markings]\n }\n };\n}\nfunction getLocalPrincipal(wirePrincipal) {\n switch (wirePrincipal.type) {\n case \"all\":\n return {\n type: \"all\"\n };\n case \"groupId\":\n return {\n type: \"groupId\",\n groupId: wirePrincipal.groupId\n };\n case \"userId\":\n return {\n type: \"userId\",\n userId: wirePrincipal.userId\n };\n default:\n assertNever(wirePrincipal);\n }\n}"]}
|
package/build/esm/index.js
CHANGED
|
@@ -27,7 +27,8 @@ var PlatformEventType = {
|
|
|
27
27
|
DOCUMENT_CREATE: "DocumentCreateEvent",
|
|
28
28
|
DOCUMENT_DESCRIPTION_UPDATE: "DocumentDescriptionUpdateEvent",
|
|
29
29
|
DOCUMENT_RENAME: "DocumentRenameEvent",
|
|
30
|
-
|
|
30
|
+
DOCUMENT_MANDATORY_SECURITY_UPDATE: "DocumentMandatorySecurityUpdateEvent",
|
|
31
|
+
DOCUMENT_DISCRETIONARY_SECURITY_UPDATE: "DocumentDiscretionarySecurityUpdateEvent"
|
|
31
32
|
};
|
|
32
33
|
function getActivityEventData(docSchema, {
|
|
33
34
|
eventData,
|
|
@@ -80,12 +81,21 @@ function getPlatformActivityEventData(eventType, data) {
|
|
|
80
81
|
type: ActivityEventDataType.DOCUMENT_DESCRIPTION_UPDATE
|
|
81
82
|
};
|
|
82
83
|
}
|
|
83
|
-
case PlatformEventType.
|
|
84
|
+
case PlatformEventType.DOCUMENT_MANDATORY_SECURITY_UPDATE: {
|
|
84
85
|
const wireData = data;
|
|
85
86
|
return {
|
|
86
87
|
newClassification: wireData.newClassification ?? [],
|
|
87
88
|
newMarkings: wireData.newMarkings ?? [],
|
|
88
|
-
type: ActivityEventDataType.
|
|
89
|
+
type: ActivityEventDataType.DOCUMENT_MANDATORY_SECURITY_UPDATE
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
case PlatformEventType.DOCUMENT_DISCRETIONARY_SECURITY_UPDATE: {
|
|
93
|
+
const wireData = data;
|
|
94
|
+
return {
|
|
95
|
+
principalType: wireData.principalType ?? "",
|
|
96
|
+
previousDiscretionarySecurity: wireData.previousDiscretionarySecurity,
|
|
97
|
+
newDiscretionarySecurity: wireData.newDiscretionarySecurity ?? [],
|
|
98
|
+
type: ActivityEventDataType.DOCUMENT_DISCRETIONARY_SECURITY_UPDATE
|
|
89
99
|
};
|
|
90
100
|
}
|
|
91
101
|
default:
|
|
@@ -345,7 +355,7 @@ var FoundryDocumentService = class _FoundryDocumentService extends BaseYjsDocume
|
|
|
345
355
|
});
|
|
346
356
|
return unsubscribeFn;
|
|
347
357
|
}
|
|
348
|
-
static METADATA_ACTIVITY_EVENT_TYPES = /* @__PURE__ */ new Set([ActivityEventDataType.DOCUMENT_RENAME, ActivityEventDataType.DOCUMENT_DESCRIPTION_UPDATE, ActivityEventDataType.
|
|
358
|
+
static METADATA_ACTIVITY_EVENT_TYPES = /* @__PURE__ */ new Set([ActivityEventDataType.DOCUMENT_RENAME, ActivityEventDataType.DOCUMENT_DESCRIPTION_UPDATE, ActivityEventDataType.DOCUMENT_MANDATORY_SECURITY_UPDATE, ActivityEventDataType.DOCUMENT_DISCRETIONARY_SECURITY_UPDATE]);
|
|
349
359
|
updateMetadataFromActivityEvent(docRef, event) {
|
|
350
360
|
if (_FoundryDocumentService.METADATA_ACTIVITY_EVENT_TYPES.has(event.eventData.type)) {
|
|
351
361
|
this.refetchMetadata(docRef);
|
package/build/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/eventMappers.ts","../../src/FoundryDocumentService.ts"],"names":["config","ActivityEventDataType"],"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\nimport { invalidUserRef } from \"@palantir/pack.auth\";\nimport { ActivityEventDataType, PresenceEventDataType } from \"@palantir/pack.document-schema.model-types\";\nexport function getActivityEvent(documentSchema, foundryEvent) {\n // TODO: need to handle deletes and ensure exhaustive handling\n if (foundryEvent.type !== \"activityCreated\") {\n return undefined;\n }\n const {\n activityEvent\n } = foundryEvent;\n const eventData = getActivityEventData(documentSchema, activityEvent);\n return {\n aggregationKey: activityEvent.aggregationKey,\n createdBy: activityEvent.createdBy,\n createdInstant: new Date(activityEvent.createdTime).getTime(),\n eventData,\n eventId: activityEvent.eventId,\n isRead: activityEvent.isRead\n };\n}\n\n/**\n * Platform event type names as sent by backpack.\n * Note: Only DOCUMENT_CREATE is currently emitted by the backend.\n * Remaining types are included for future use.\n */\nconst PlatformEventType = {\n DOCUMENT_CREATE: \"DocumentCreateEvent\",\n DOCUMENT_DESCRIPTION_UPDATE: \"DocumentDescriptionUpdateEvent\",\n DOCUMENT_RENAME: \"DocumentRenameEvent\",\n DOCUMENT_SECURITY_UPDATE: \"DocumentMandatorySecurityUpdateEvent\"\n};\nfunction getActivityEventData(docSchema, {\n eventData,\n eventType\n}) {\n const platformEventData = getPlatformActivityEventData(eventType, eventData.data);\n if (platformEventData != null) {\n return platformEventData;\n }\n\n // Handle custom application-defined activity events\n // TODO: validate model is valid for activity events\n const model = docSchema[eventType];\n if (model == null) {\n return {\n rawData: eventData.data,\n rawType: eventType,\n type: ActivityEventDataType.UNKNOWN\n };\n }\n\n // TODO: validate data against model schema\n\n return {\n eventData: eventData.data,\n model,\n type: ActivityEventDataType.CUSTOM_EVENT\n };\n}\nfunction getPlatformActivityEventData(eventType, data) {\n switch (eventType) {\n case PlatformEventType.DOCUMENT_CREATE:\n {\n const wireData = data;\n return {\n initialMandatorySecurity: {\n classification: wireData.initialMandatorySecurity?.classification,\n markings: wireData.initialMandatorySecurity?.markings\n },\n name: wireData.name ?? \"\",\n type: ActivityEventDataType.DOCUMENT_CREATE\n };\n }\n case PlatformEventType.DOCUMENT_RENAME:\n {\n const wireData = data;\n return {\n newName: wireData.newName ?? \"\",\n previousName: wireData.previousName ?? \"\",\n type: ActivityEventDataType.DOCUMENT_RENAME\n };\n }\n case PlatformEventType.DOCUMENT_DESCRIPTION_UPDATE:\n {\n const wireData = data;\n return {\n isInitial: wireData.isInitial ?? false,\n newDescription: wireData.newDescription ?? \"\",\n type: ActivityEventDataType.DOCUMENT_DESCRIPTION_UPDATE\n };\n }\n case PlatformEventType.DOCUMENT_SECURITY_UPDATE:\n {\n const wireData = data;\n return {\n newClassification: wireData.newClassification ?? [],\n newMarkings: wireData.newMarkings ?? [],\n type: ActivityEventDataType.DOCUMENT_SECURITY_UPDATE\n };\n }\n default:\n return undefined;\n }\n}\nconst ARRIVED_DATA = {\n type: PresenceEventDataType.ARRIVED\n};\nconst DEPARTED_DATA = {\n type: PresenceEventDataType.DEPARTED\n};\nexport function getPresenceEvent(documentSchema, foundryUpdate) {\n switch (foundryUpdate.type) {\n case \"presenceChangeEvent\":\n {\n const {\n userId,\n status\n } = foundryUpdate;\n const eventData = status === \"PRESENT\" ? ARRIVED_DATA : DEPARTED_DATA;\n return {\n eventData,\n userId: userId\n };\n }\n case \"customPresenceEvent\":\n {\n const {\n userId,\n eventData,\n eventType\n } = foundryUpdate;\n const presenceEventData = getPresenceEventData(documentSchema, eventType, eventData);\n return {\n eventData: presenceEventData,\n userId: userId\n };\n }\n default:\n {\n foundryUpdate;\n const unknownUpdate = foundryUpdate;\n return {\n eventData: {\n rawData: foundryUpdate,\n rawType: typeof unknownUpdate.type === \"string\" ? unknownUpdate.type : \"unknown\",\n type: PresenceEventDataType.UNKNOWN\n },\n // FIXME: try and pull userId from message? Or just fix the platform types to have useful wrappers.\n userId: invalidUserRef().userId\n };\n }\n }\n}\nfunction getPresenceEventData(docSchema, eventType, eventData) {\n const model = docSchema[eventType];\n if (model == null) {\n return {\n rawData: eventData,\n rawType: eventType,\n type: PresenceEventDataType.UNKNOWN\n };\n }\n return {\n eventData,\n model,\n type: PresenceEventDataType.CUSTOM_EVENT\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 { Documents } from \"@osdk/foundry.pack\";\nimport { assertNever, getOntologyRid } from \"@palantir/pack.core\";\nimport { ActivityEventDataType, getMetadata } from \"@palantir/pack.document-schema.model-types\";\nimport { BaseYjsDocumentService, createDocumentServiceConfig, DocumentLoadStatus } from \"@palantir/pack.state.core\";\nimport { createFoundryEventService } from \"@palantir/pack.state.foundry-event\";\nimport { getActivityEvent, getPresenceEvent } from \"./eventMappers.js\";\nconst DEFAULT_USE_PREVIEW_API = true;\nconst EMPTY_DOCUMENT_SECURITY = Object.freeze({\n discretionary: {},\n mandatory: {}\n});\nexport function createFoundryDocumentServiceConfig(config = {}) {\n return createDocumentServiceConfig((app, config) => internalCreateFoundryDocumentService(app, config), config);\n}\nexport function internalCreateFoundryDocumentService(app, config, eventService) {\n return new FoundryDocumentService(app, config, eventService ?? createFoundryEventService(app));\n}\nexport class FoundryDocumentService extends BaseYjsDocumentService {\n constructor(app, config, eventService) {\n super(app, app.config.logger.child({}, {\n level: \"debug\",\n msgPrefix: \"FoundryDocumentService\"\n }));\n this.config = config;\n this.eventService = eventService;\n }\n createInternalDoc(ref, metadata) {\n return {\n ...this.createBaseInternalDoc(ref, metadata),\n syncSession: undefined\n };\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 = async (metadata, schema) => {\n const {\n documentTypeName,\n name,\n parentFolderRid,\n security\n } = metadata;\n const ontologyRid = await getOntologyRid(this.app);\n const request = {\n documentTypeName: documentTypeName,\n name: name,\n ontologyRid: ontologyRid,\n security: getWireSecurity(security)\n };\n if (parentFolderRid != null) {\n request.parentFolderRid = parentFolderRid;\n }\n const createResponse = await Documents.create(this.app.config.osdkClient, request, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n });\n const documentId = createResponse.id;\n const docRef = this.createDocRef(documentId, schema);\n return docRef;\n };\n searchDocuments = async (documentTypeName, schema, options) => {\n const request = {\n documentTypeName,\n requestBody: {\n query: options?.documentName != null ? {\n documentName: options.documentName\n } : undefined,\n pageSize: options?.pageSize,\n pageToken: options?.pageToken\n }\n };\n const searchResponse = await Documents.search(this.app.config.osdkClient, request, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n });\n return {\n data: searchResponse.data.map(doc => ({\n createdBy: doc.createdBy,\n createdTime: doc.createdTime,\n documentTypeName: doc.documentTypeName,\n id: doc.id,\n name: doc.name,\n ontologyRid: doc.ontologyRid,\n security: getLocalSecurity(doc.security),\n updatedBy: doc.updatedBy,\n updatedTime: doc.updatedTime\n })),\n nextPageToken: searchResponse.nextPageToken\n };\n };\n updateDocument = async (docRef, update) => {\n const document = await Documents.update(this.app.config.osdkClient, docRef.id, {\n requestBody: {\n ...(update.name != null ? {\n name: update.name\n } : {}),\n ...(update.description != null ? {\n description: update.description\n } : {}),\n ...(update.security != null ? {\n security: getWireSecurity(update.security)\n } : {})\n }\n }, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n });\n const metadata = {\n description: document.description,\n documentTypeName: document.documentTypeName,\n name: document.name,\n ontologyRid: document.ontologyRid,\n security: getLocalSecurity(document.security)\n };\n this.updateMetadata(docRef.id, metadata);\n return metadata;\n };\n deleteDocument = async docRef => {\n await Documents.deleteDocument(this.app.config.osdkClient, docRef.id, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n });\n this.documents.delete(docRef.id);\n };\n onMetadataSubscriptionOpened(internalDoc, docRef) {\n if (internalDoc.metadataStatus.load !== DocumentLoadStatus.UNLOADED) {\n throw new Error(`Cannot subscribe to document metadata when status is ${internalDoc.metadataStatus.load}`);\n }\n this.updateMetadataStatus(internalDoc, docRef, {\n load: DocumentLoadStatus.LOADING\n });\n Documents.get(this.app.config.osdkClient, docRef.id, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n }).then(document => {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n const metadata = {\n description: document.description,\n documentTypeName: document.documentTypeName,\n name: document.name,\n ontologyRid: document.ontologyRid,\n security: getLocalSecurity(document.security)\n };\n internalDoc.metadata = metadata;\n this.notifyMetadataSubscribers(internalDoc, docRef, metadata);\n this.updateMetadataStatus(internalDoc, docRef, {\n load: DocumentLoadStatus.LOADED\n });\n }).catch(e => {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n const error = new Error(\"Failed to load document metadata\", {\n cause: e\n });\n this.updateMetadataStatus(internalDoc, docRef, {\n error,\n load: DocumentLoadStatus.ERROR\n });\n });\n }\n onDataSubscriptionOpened(internalDoc, docRef) {\n if (internalDoc.syncSession != null) {\n throw new Error(\"Document data subscription already opened\");\n }\n internalDoc.syncSession = this.eventService.startDocumentSync(docRef.id, internalDoc.yDoc, status => {\n this.updateDataStatus(internalDoc, docRef, status);\n });\n }\n onMetadataSubscriptionClosed(_internalDoc, _docRef) {}\n onDataSubscriptionClosed(internalDoc, _docRef) {\n if (internalDoc.syncSession) {\n this.eventService.stopDocumentSync(internalDoc.syncSession);\n internalDoc.syncSession = undefined;\n }\n }\n onActivity(docRef, callback) {\n let unsubscribed = false;\n const unsubscribeFn = () => {\n unsubscribed = true;\n };\n this.eventService.subscribeToActivityUpdates(docRef.id, foundryEvent => {\n if (!unsubscribed) {\n const localEvent = getActivityEvent(docRef.schema, foundryEvent);\n if (localEvent != null) {\n this.updateMetadataFromActivityEvent(docRef, localEvent);\n callback(docRef, localEvent);\n }\n }\n }).catch(e => {\n this.logger.error(\"Failed to subscribe to activity updates\", e, {\n docId: docRef.id\n });\n });\n return unsubscribeFn;\n }\n static METADATA_ACTIVITY_EVENT_TYPES = new Set([ActivityEventDataType.DOCUMENT_RENAME, ActivityEventDataType.DOCUMENT_DESCRIPTION_UPDATE, ActivityEventDataType.DOCUMENT_SECURITY_UPDATE]);\n updateMetadataFromActivityEvent(docRef, event) {\n if (FoundryDocumentService.METADATA_ACTIVITY_EVENT_TYPES.has(event.eventData.type)) {\n this.refetchMetadata(docRef);\n }\n }\n refetchMetadata(docRef) {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n Documents.get(this.app.config.osdkClient, docRef.id, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n }).then(document => {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n const metadata = {\n description: document.description,\n documentTypeName: document.documentTypeName,\n name: document.name,\n ontologyRid: document.ontologyRid,\n security: getLocalSecurity(document.security)\n };\n this.updateMetadata(docRef.id, metadata);\n }).catch(e => {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n this.logger.error(\"Failed to refetch document metadata\", e, {\n docId: docRef.id\n });\n });\n }\n onPresence(docRef, callback, options) {\n let unsubscribed = false;\n const unsubscribeFn = () => {\n unsubscribed = true;\n };\n this.eventService.subscribeToPresenceUpdates(docRef.id, foundryUpdate => {\n if (!unsubscribed) {\n const localEvent = getPresenceEvent(docRef.schema, foundryUpdate);\n callback(docRef, localEvent);\n }\n }, options).catch(e => {\n this.logger.error(\"Failed to subscribe to presence updates\", e, {\n docId: docRef.id\n });\n });\n return unsubscribeFn;\n }\n updateCustomPresence(docRef, model, eventData, options) {\n const eventType = getMetadata(model).name;\n void this.eventService.publishCustomPresence(docRef.id, eventType, eventData, options).catch(e => {\n this.logger.error(\"Failed to publish custom presence\", e, {\n docId: docRef.id\n });\n });\n }\n}\nfunction getWireSecurity({\n discretionary,\n mandatory\n} = EMPTY_DOCUMENT_SECURITY) {\n const {\n editors = [],\n owners = [],\n viewers = []\n } = discretionary;\n return {\n discretionary: {\n editors: editors.map(getWirePrincipal),\n owners: owners.map(getWirePrincipal),\n viewers: viewers.map(getWirePrincipal)\n },\n mandatory: {\n classification: mandatory.classification != null ? [...mandatory.classification] : [],\n markings: mandatory.markings != null ? [...mandatory.markings] : []\n }\n };\n}\nfunction getWirePrincipal(principal) {\n switch (principal.type) {\n case \"all\":\n return {\n type: \"all\"\n };\n case \"groupId\":\n return {\n type: \"groupId\",\n groupId: principal.groupId\n };\n case \"userId\":\n return {\n type: \"userId\",\n userId: principal.userId\n };\n default:\n assertNever(principal);\n }\n}\nfunction getLocalSecurity(wireSecurity) {\n return {\n discretionary: {\n editors: wireSecurity.discretionary.editors.map(getLocalPrincipal),\n owners: wireSecurity.discretionary.owners.map(getLocalPrincipal),\n viewers: wireSecurity.discretionary.viewers.map(getLocalPrincipal)\n },\n mandatory: {\n classification: [...wireSecurity.mandatory.classification],\n markings: [...wireSecurity.mandatory.markings]\n }\n };\n}\nfunction getLocalPrincipal(wirePrincipal) {\n switch (wirePrincipal.type) {\n case \"all\":\n return {\n type: \"all\"\n };\n case \"groupId\":\n return {\n type: \"groupId\",\n groupId: wirePrincipal.groupId\n };\n case \"userId\":\n return {\n type: \"userId\",\n userId: wirePrincipal.userId\n };\n default:\n assertNever(wirePrincipal);\n }\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../src/eventMappers.ts","../../src/FoundryDocumentService.ts"],"names":["config","ActivityEventDataType"],"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\nimport { invalidUserRef } from \"@palantir/pack.auth\";\nimport { ActivityEventDataType, PresenceEventDataType } from \"@palantir/pack.document-schema.model-types\";\nexport function getActivityEvent(documentSchema, foundryEvent) {\n // TODO: need to handle deletes and ensure exhaustive handling\n if (foundryEvent.type !== \"activityCreated\") {\n return undefined;\n }\n const {\n activityEvent\n } = foundryEvent;\n const eventData = getActivityEventData(documentSchema, activityEvent);\n return {\n aggregationKey: activityEvent.aggregationKey,\n createdBy: activityEvent.createdBy,\n createdInstant: new Date(activityEvent.createdTime).getTime(),\n eventData,\n eventId: activityEvent.eventId,\n isRead: activityEvent.isRead\n };\n}\n\n/**\n * Platform event type names as sent by backpack.\n * Note: Only DOCUMENT_CREATE is currently emitted by the backend.\n * Remaining types are included for future use.\n */\nconst PlatformEventType = {\n DOCUMENT_CREATE: \"DocumentCreateEvent\",\n DOCUMENT_DESCRIPTION_UPDATE: \"DocumentDescriptionUpdateEvent\",\n DOCUMENT_RENAME: \"DocumentRenameEvent\",\n DOCUMENT_MANDATORY_SECURITY_UPDATE: \"DocumentMandatorySecurityUpdateEvent\",\n DOCUMENT_DISCRETIONARY_SECURITY_UPDATE: \"DocumentDiscretionarySecurityUpdateEvent\"\n};\nfunction getActivityEventData(docSchema, {\n eventData,\n eventType\n}) {\n const platformEventData = getPlatformActivityEventData(eventType, eventData.data);\n if (platformEventData != null) {\n return platformEventData;\n }\n\n // Handle custom application-defined activity events\n // TODO: validate model is valid for activity events\n const model = docSchema[eventType];\n if (model == null) {\n return {\n rawData: eventData.data,\n rawType: eventType,\n type: ActivityEventDataType.UNKNOWN\n };\n }\n\n // TODO: validate data against model schema\n\n return {\n eventData: eventData.data,\n model,\n type: ActivityEventDataType.CUSTOM_EVENT\n };\n}\nfunction getPlatformActivityEventData(eventType, data) {\n switch (eventType) {\n case PlatformEventType.DOCUMENT_CREATE:\n {\n const wireData = data;\n return {\n initialMandatorySecurity: {\n classification: wireData.initialMandatorySecurity?.classification,\n markings: wireData.initialMandatorySecurity?.markings\n },\n name: wireData.name ?? \"\",\n type: ActivityEventDataType.DOCUMENT_CREATE\n };\n }\n case PlatformEventType.DOCUMENT_RENAME:\n {\n const wireData = data;\n return {\n newName: wireData.newName ?? \"\",\n previousName: wireData.previousName ?? \"\",\n type: ActivityEventDataType.DOCUMENT_RENAME\n };\n }\n case PlatformEventType.DOCUMENT_DESCRIPTION_UPDATE:\n {\n const wireData = data;\n return {\n isInitial: wireData.isInitial ?? false,\n newDescription: wireData.newDescription ?? \"\",\n type: ActivityEventDataType.DOCUMENT_DESCRIPTION_UPDATE\n };\n }\n case PlatformEventType.DOCUMENT_MANDATORY_SECURITY_UPDATE:\n {\n const wireData = data;\n return {\n newClassification: wireData.newClassification ?? [],\n newMarkings: wireData.newMarkings ?? [],\n type: ActivityEventDataType.DOCUMENT_MANDATORY_SECURITY_UPDATE\n };\n }\n case PlatformEventType.DOCUMENT_DISCRETIONARY_SECURITY_UPDATE:\n {\n const wireData = data;\n return {\n principalType: wireData.principalType ?? \"\",\n previousDiscretionarySecurity: wireData.previousDiscretionarySecurity,\n newDiscretionarySecurity: wireData.newDiscretionarySecurity ?? [],\n type: ActivityEventDataType.DOCUMENT_DISCRETIONARY_SECURITY_UPDATE\n };\n }\n default:\n return undefined;\n }\n}\nconst ARRIVED_DATA = {\n type: PresenceEventDataType.ARRIVED\n};\nconst DEPARTED_DATA = {\n type: PresenceEventDataType.DEPARTED\n};\nexport function getPresenceEvent(documentSchema, foundryUpdate) {\n switch (foundryUpdate.type) {\n case \"presenceChangeEvent\":\n {\n const {\n userId,\n status\n } = foundryUpdate;\n const eventData = status === \"PRESENT\" ? ARRIVED_DATA : DEPARTED_DATA;\n return {\n eventData,\n userId: userId\n };\n }\n case \"customPresenceEvent\":\n {\n const {\n userId,\n eventData,\n eventType\n } = foundryUpdate;\n const presenceEventData = getPresenceEventData(documentSchema, eventType, eventData);\n return {\n eventData: presenceEventData,\n userId: userId\n };\n }\n default:\n {\n foundryUpdate;\n const unknownUpdate = foundryUpdate;\n return {\n eventData: {\n rawData: foundryUpdate,\n rawType: typeof unknownUpdate.type === \"string\" ? unknownUpdate.type : \"unknown\",\n type: PresenceEventDataType.UNKNOWN\n },\n // FIXME: try and pull userId from message? Or just fix the platform types to have useful wrappers.\n userId: invalidUserRef().userId\n };\n }\n }\n}\nfunction getPresenceEventData(docSchema, eventType, eventData) {\n const model = docSchema[eventType];\n if (model == null) {\n return {\n rawData: eventData,\n rawType: eventType,\n type: PresenceEventDataType.UNKNOWN\n };\n }\n return {\n eventData,\n model,\n type: PresenceEventDataType.CUSTOM_EVENT\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 { Documents } from \"@osdk/foundry.pack\";\nimport { assertNever, getOntologyRid } from \"@palantir/pack.core\";\nimport { ActivityEventDataType, getMetadata } from \"@palantir/pack.document-schema.model-types\";\nimport { BaseYjsDocumentService, createDocumentServiceConfig, DocumentLoadStatus } from \"@palantir/pack.state.core\";\nimport { createFoundryEventService } from \"@palantir/pack.state.foundry-event\";\nimport { getActivityEvent, getPresenceEvent } from \"./eventMappers.js\";\nconst DEFAULT_USE_PREVIEW_API = true;\nconst EMPTY_DOCUMENT_SECURITY = Object.freeze({\n discretionary: {},\n mandatory: {}\n});\nexport function createFoundryDocumentServiceConfig(config = {}) {\n return createDocumentServiceConfig((app, config) => internalCreateFoundryDocumentService(app, config), config);\n}\nexport function internalCreateFoundryDocumentService(app, config, eventService) {\n return new FoundryDocumentService(app, config, eventService ?? createFoundryEventService(app));\n}\nexport class FoundryDocumentService extends BaseYjsDocumentService {\n constructor(app, config, eventService) {\n super(app, app.config.logger.child({}, {\n level: \"debug\",\n msgPrefix: \"FoundryDocumentService\"\n }));\n this.config = config;\n this.eventService = eventService;\n }\n createInternalDoc(ref, metadata) {\n return {\n ...this.createBaseInternalDoc(ref, metadata),\n syncSession: undefined\n };\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 = async (metadata, schema) => {\n const {\n documentTypeName,\n name,\n parentFolderRid,\n security\n } = metadata;\n const ontologyRid = await getOntologyRid(this.app);\n const request = {\n documentTypeName: documentTypeName,\n name: name,\n ontologyRid: ontologyRid,\n security: getWireSecurity(security)\n };\n if (parentFolderRid != null) {\n request.parentFolderRid = parentFolderRid;\n }\n const createResponse = await Documents.create(this.app.config.osdkClient, request, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n });\n const documentId = createResponse.id;\n const docRef = this.createDocRef(documentId, schema);\n return docRef;\n };\n searchDocuments = async (documentTypeName, schema, options) => {\n const request = {\n documentTypeName,\n requestBody: {\n query: options?.documentName != null ? {\n documentName: options.documentName\n } : undefined,\n pageSize: options?.pageSize,\n pageToken: options?.pageToken\n }\n };\n const searchResponse = await Documents.search(this.app.config.osdkClient, request, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n });\n return {\n data: searchResponse.data.map(doc => ({\n createdBy: doc.createdBy,\n createdTime: doc.createdTime,\n documentTypeName: doc.documentTypeName,\n id: doc.id,\n name: doc.name,\n ontologyRid: doc.ontologyRid,\n security: getLocalSecurity(doc.security),\n updatedBy: doc.updatedBy,\n updatedTime: doc.updatedTime\n })),\n nextPageToken: searchResponse.nextPageToken\n };\n };\n updateDocument = async (docRef, update) => {\n const document = await Documents.update(this.app.config.osdkClient, docRef.id, {\n requestBody: {\n ...(update.name != null ? {\n name: update.name\n } : {}),\n ...(update.description != null ? {\n description: update.description\n } : {}),\n ...(update.security != null ? {\n security: getWireSecurity(update.security)\n } : {})\n }\n }, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n });\n const metadata = {\n description: document.description,\n documentTypeName: document.documentTypeName,\n name: document.name,\n ontologyRid: document.ontologyRid,\n security: getLocalSecurity(document.security)\n };\n this.updateMetadata(docRef.id, metadata);\n return metadata;\n };\n deleteDocument = async docRef => {\n await Documents.deleteDocument(this.app.config.osdkClient, docRef.id, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n });\n this.documents.delete(docRef.id);\n };\n onMetadataSubscriptionOpened(internalDoc, docRef) {\n if (internalDoc.metadataStatus.load !== DocumentLoadStatus.UNLOADED) {\n throw new Error(`Cannot subscribe to document metadata when status is ${internalDoc.metadataStatus.load}`);\n }\n this.updateMetadataStatus(internalDoc, docRef, {\n load: DocumentLoadStatus.LOADING\n });\n Documents.get(this.app.config.osdkClient, docRef.id, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n }).then(document => {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n const metadata = {\n description: document.description,\n documentTypeName: document.documentTypeName,\n name: document.name,\n ontologyRid: document.ontologyRid,\n security: getLocalSecurity(document.security)\n };\n internalDoc.metadata = metadata;\n this.notifyMetadataSubscribers(internalDoc, docRef, metadata);\n this.updateMetadataStatus(internalDoc, docRef, {\n load: DocumentLoadStatus.LOADED\n });\n }).catch(e => {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n const error = new Error(\"Failed to load document metadata\", {\n cause: e\n });\n this.updateMetadataStatus(internalDoc, docRef, {\n error,\n load: DocumentLoadStatus.ERROR\n });\n });\n }\n onDataSubscriptionOpened(internalDoc, docRef) {\n if (internalDoc.syncSession != null) {\n throw new Error(\"Document data subscription already opened\");\n }\n internalDoc.syncSession = this.eventService.startDocumentSync(docRef.id, internalDoc.yDoc, status => {\n this.updateDataStatus(internalDoc, docRef, status);\n });\n }\n onMetadataSubscriptionClosed(_internalDoc, _docRef) {}\n onDataSubscriptionClosed(internalDoc, _docRef) {\n if (internalDoc.syncSession) {\n this.eventService.stopDocumentSync(internalDoc.syncSession);\n internalDoc.syncSession = undefined;\n }\n }\n onActivity(docRef, callback) {\n let unsubscribed = false;\n const unsubscribeFn = () => {\n unsubscribed = true;\n };\n this.eventService.subscribeToActivityUpdates(docRef.id, foundryEvent => {\n if (!unsubscribed) {\n const localEvent = getActivityEvent(docRef.schema, foundryEvent);\n if (localEvent != null) {\n this.updateMetadataFromActivityEvent(docRef, localEvent);\n callback(docRef, localEvent);\n }\n }\n }).catch(e => {\n this.logger.error(\"Failed to subscribe to activity updates\", e, {\n docId: docRef.id\n });\n });\n return unsubscribeFn;\n }\n static METADATA_ACTIVITY_EVENT_TYPES = new Set([ActivityEventDataType.DOCUMENT_RENAME, ActivityEventDataType.DOCUMENT_DESCRIPTION_UPDATE, ActivityEventDataType.DOCUMENT_MANDATORY_SECURITY_UPDATE, ActivityEventDataType.DOCUMENT_DISCRETIONARY_SECURITY_UPDATE]);\n updateMetadataFromActivityEvent(docRef, event) {\n if (FoundryDocumentService.METADATA_ACTIVITY_EVENT_TYPES.has(event.eventData.type)) {\n this.refetchMetadata(docRef);\n }\n }\n refetchMetadata(docRef) {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n Documents.get(this.app.config.osdkClient, docRef.id, {\n preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API\n }).then(document => {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n const metadata = {\n description: document.description,\n documentTypeName: document.documentTypeName,\n name: document.name,\n ontologyRid: document.ontologyRid,\n security: getLocalSecurity(document.security)\n };\n this.updateMetadata(docRef.id, metadata);\n }).catch(e => {\n if (!this.documents.has(docRef.id)) {\n return;\n }\n this.logger.error(\"Failed to refetch document metadata\", e, {\n docId: docRef.id\n });\n });\n }\n onPresence(docRef, callback, options) {\n let unsubscribed = false;\n const unsubscribeFn = () => {\n unsubscribed = true;\n };\n this.eventService.subscribeToPresenceUpdates(docRef.id, foundryUpdate => {\n if (!unsubscribed) {\n const localEvent = getPresenceEvent(docRef.schema, foundryUpdate);\n callback(docRef, localEvent);\n }\n }, options).catch(e => {\n this.logger.error(\"Failed to subscribe to presence updates\", e, {\n docId: docRef.id\n });\n });\n return unsubscribeFn;\n }\n updateCustomPresence(docRef, model, eventData, options) {\n const eventType = getMetadata(model).name;\n void this.eventService.publishCustomPresence(docRef.id, eventType, eventData, options).catch(e => {\n this.logger.error(\"Failed to publish custom presence\", e, {\n docId: docRef.id\n });\n });\n }\n}\nfunction getWireSecurity({\n discretionary,\n mandatory\n} = EMPTY_DOCUMENT_SECURITY) {\n const {\n editors = [],\n owners = [],\n viewers = []\n } = discretionary;\n return {\n discretionary: {\n editors: editors.map(getWirePrincipal),\n owners: owners.map(getWirePrincipal),\n viewers: viewers.map(getWirePrincipal)\n },\n mandatory: {\n classification: mandatory.classification != null ? [...mandatory.classification] : [],\n markings: mandatory.markings != null ? [...mandatory.markings] : []\n }\n };\n}\nfunction getWirePrincipal(principal) {\n switch (principal.type) {\n case \"all\":\n return {\n type: \"all\"\n };\n case \"groupId\":\n return {\n type: \"groupId\",\n groupId: principal.groupId\n };\n case \"userId\":\n return {\n type: \"userId\",\n userId: principal.userId\n };\n default:\n assertNever(principal);\n }\n}\nfunction getLocalSecurity(wireSecurity) {\n return {\n discretionary: {\n editors: wireSecurity.discretionary.editors.map(getLocalPrincipal),\n owners: wireSecurity.discretionary.owners.map(getLocalPrincipal),\n viewers: wireSecurity.discretionary.viewers.map(getLocalPrincipal)\n },\n mandatory: {\n classification: [...wireSecurity.mandatory.classification],\n markings: [...wireSecurity.mandatory.markings]\n }\n };\n}\nfunction getLocalPrincipal(wirePrincipal) {\n switch (wirePrincipal.type) {\n case \"all\":\n return {\n type: \"all\"\n };\n case \"groupId\":\n return {\n type: \"groupId\",\n groupId: wirePrincipal.groupId\n };\n case \"userId\":\n return {\n type: \"userId\",\n userId: wirePrincipal.userId\n };\n default:\n assertNever(wirePrincipal);\n }\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"AAwBA,cAGO,wBACA,sBACA,mBACA;AACP,cACE,eAEA,kBACA,aACA,gBAEA,OACA,WACA,eACA,wBACA,mCACK;AAEP,cACE,wBACA,iBACA,gBACA,uBACA,8BACK;AACP,SACE,8BAGK;AACP,cAAc,qBAAqB,mBAAmB;UAU5C,6BAA6B;UAC5B;;AAGX,OAAO,iBAAS,mCACd,SAAQ,+BACP,kBAAkB;AAQrB,OAAO,iBAAS,qCACd,KAAK,iBACL,QAAQ,8BACR,eAAe,sBACd;UAQO,2BAA2B,eAAe;CAClD,cAAc;;AAGhB,OAAO,cAAM,+BAA+B,uBAAuB,oBAAoB;CAGnF,iBAAiB;CACjB,uBAAuB;CAHzB,YACE,KAAK,iBACL,AAASA,QAAQ,8BACjB,AAASC,cAAc;CAWzB,UAAU,kBACR,KAAK,aACL,UAAU,+BACT;CAOH,IAAI;CAMJ,IAAI;CAMJ,SAAS,iBAAwB,UAAU,gBACzC,UAAU,wBACV,QAAQ,MACP,QAAQ,YAAY;CA4BvB,SAAS,kBAAyB,UAAU,gBAC1C,0BACA,QAAQ,GACR,UAAU;EACR;EACA;EACA;OAED,QAAQ;CAkCX,SAAS,iBACP,QAAQ,aACR,QAAQ,2BACP,QAAQ;CA6BX,SAAS,iBACP,QAAQ,gBACP;CAWH,UAAU,6BACR,aAAa,oBACb,QAAQ;CA+CV,UAAU,yBACR,aAAa,oBACb,QAAQ;CAeV,UAAU,6BACR,cAAc,oBACd,SAAS;CAGX,UAAU,yBACR,aAAa,oBACb,SAAS;CAQX,WAAW,UAAU,gBACnB,QAAQ,YAAY,IACpB,WAAW,QAAQ,YAAY,IAAI,OAAO,yBACzC;CAyBH,wBAAwB;
|
|
1
|
+
{"mappings":"AAwBA,cAGO,wBACA,sBACA,mBACA;AACP,cACE,eAEA,kBACA,aACA,gBAEA,OACA,WACA,eACA,wBACA,mCACK;AAEP,cACE,wBACA,iBACA,gBACA,uBACA,8BACK;AACP,SACE,8BAGK;AACP,cAAc,qBAAqB,mBAAmB;UAU5C,6BAA6B;UAC5B;;AAGX,OAAO,iBAAS,mCACd,SAAQ,+BACP,kBAAkB;AAQrB,OAAO,iBAAS,qCACd,KAAK,iBACL,QAAQ,8BACR,eAAe,sBACd;UAQO,2BAA2B,eAAe;CAClD,cAAc;;AAGhB,OAAO,cAAM,+BAA+B,uBAAuB,oBAAoB;CAGnF,iBAAiB;CACjB,uBAAuB;CAHzB,YACE,KAAK,iBACL,AAASA,QAAQ,8BACjB,AAASC,cAAc;CAWzB,UAAU,kBACR,KAAK,aACL,UAAU,+BACT;CAOH,IAAI;CAMJ,IAAI;CAMJ,SAAS,iBAAwB,UAAU,gBACzC,UAAU,wBACV,QAAQ,MACP,QAAQ,YAAY;CA4BvB,SAAS,kBAAyB,UAAU,gBAC1C,0BACA,QAAQ,GACR,UAAU;EACR;EACA;EACA;OAED,QAAQ;CAkCX,SAAS,iBACP,QAAQ,aACR,QAAQ,2BACP,QAAQ;CA6BX,SAAS,iBACP,QAAQ,gBACP;CAWH,UAAU,6BACR,aAAa,oBACb,QAAQ;CA+CV,UAAU,yBACR,aAAa,oBACb,QAAQ;CAeV,UAAU,6BACR,cAAc,oBACd,SAAS;CAGX,UAAU,yBACR,aAAa,oBACb,SAAS;CAQX,WAAW,UAAU,gBACnB,QAAQ,YAAY,IACpB,WAAW,QAAQ,YAAY,IAAI,OAAO,yBACzC;CAyBH,wBAAwB;CAOxB,QAAQ;CASR,QAAQ;CA+BR,WAAW,UAAU,gBACnB,QAAQ,YAAY,IACpB,WAAW,QAAQ,YAAY,IAAI,OAAO,wBAC1C,UAAU,8BACT;CA0BH,qBAAqB,UAAU,OAC7B,QAAQ,aACR,OAAO,GACP,WAAW,UAAU,IACrB,UAAU","names":["config: FoundryDocumentServiceConfig","eventService: FoundryEventService"],"sources":["../../src/FoundryDocumentService.ts"],"version":3,"file":"FoundryDocumentService.d.ts"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"AAgBA,cACE,6BAEA,mCACK;AAEP,cACE,
|
|
1
|
+
{"mappings":"AAgBA,cACE,6BAEA,mCACK;AAEP,cACE,eAOA,gBAIA,qBAKK;AAMP,OAAO,iBAAS,iBACd,gBAAgB,gBAChB,cAAc,8BACb;AA+JH,OAAO,iBAAS,iBACd,gBAAgB,gBAChB,eAAe,8BACd","names":[],"sources":["../../src/eventMappers.ts"],"version":3,"file":"eventMappers.d.ts"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@palantir/pack.state.foundry",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "PACK State service that integrates with Palantir Foundry platform APIs.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -33,11 +33,11 @@
|
|
|
33
33
|
"conjure-client": "^2.15.0",
|
|
34
34
|
"remeda": "^2.32.0",
|
|
35
35
|
"yjs": "^13.6.27",
|
|
36
|
-
"@palantir/pack.core": "0.2.2",
|
|
37
36
|
"@palantir/pack.auth": "0.1.2",
|
|
38
|
-
"@palantir/pack.
|
|
39
|
-
"@palantir/pack.
|
|
40
|
-
"@palantir/pack.state.core": "0.
|
|
37
|
+
"@palantir/pack.document-schema.model-types": "0.6.0",
|
|
38
|
+
"@palantir/pack.core": "0.2.2",
|
|
39
|
+
"@palantir/pack.state.core": "0.9.0",
|
|
40
|
+
"@palantir/pack.state.foundry-event": "0.8.0"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@types/node": "^20.19.17",
|
|
@@ -362,7 +362,8 @@ export class FoundryDocumentService extends BaseYjsDocumentService<FoundryIntern
|
|
|
362
362
|
private static readonly METADATA_ACTIVITY_EVENT_TYPES: ReadonlySet<string> = new Set([
|
|
363
363
|
ActivityEventDataType.DOCUMENT_RENAME,
|
|
364
364
|
ActivityEventDataType.DOCUMENT_DESCRIPTION_UPDATE,
|
|
365
|
-
ActivityEventDataType.
|
|
365
|
+
ActivityEventDataType.DOCUMENT_MANDATORY_SECURITY_UPDATE,
|
|
366
|
+
ActivityEventDataType.DOCUMENT_DISCRETIONARY_SECURITY_UPDATE,
|
|
366
367
|
]);
|
|
367
368
|
|
|
368
369
|
private updateMetadataFromActivityEvent(
|
package/src/eventMappers.ts
CHANGED
|
@@ -25,9 +25,11 @@ import type {
|
|
|
25
25
|
ActivityEventData,
|
|
26
26
|
ActivityEventDataDocumentCreate,
|
|
27
27
|
ActivityEventDataDocumentDescriptionUpdate,
|
|
28
|
+
ActivityEventDataDocumentDiscretionarySecurityUpdate,
|
|
29
|
+
ActivityEventDataDocumentMandatorySecurityUpdate,
|
|
28
30
|
ActivityEventDataDocumentRename,
|
|
29
|
-
ActivityEventDataDocumentSecurityUpdate,
|
|
30
31
|
DocumentSchema,
|
|
32
|
+
DocumentSecurityDiscretionary,
|
|
31
33
|
Model,
|
|
32
34
|
ModelData,
|
|
33
35
|
PresenceEvent,
|
|
@@ -71,7 +73,8 @@ const PlatformEventType = {
|
|
|
71
73
|
DOCUMENT_CREATE: "DocumentCreateEvent",
|
|
72
74
|
DOCUMENT_DESCRIPTION_UPDATE: "DocumentDescriptionUpdateEvent",
|
|
73
75
|
DOCUMENT_RENAME: "DocumentRenameEvent",
|
|
74
|
-
|
|
76
|
+
DOCUMENT_MANDATORY_SECURITY_UPDATE: "DocumentMandatorySecurityUpdateEvent",
|
|
77
|
+
DOCUMENT_DISCRETIONARY_SECURITY_UPDATE: "DocumentDiscretionarySecurityUpdateEvent",
|
|
75
78
|
} as const;
|
|
76
79
|
|
|
77
80
|
interface WireDocumentCreateEvent {
|
|
@@ -92,11 +95,17 @@ interface WireDocumentDescriptionUpdateEvent {
|
|
|
92
95
|
readonly isInitial?: boolean;
|
|
93
96
|
}
|
|
94
97
|
|
|
95
|
-
interface
|
|
98
|
+
interface WireDocumentMandatorySecurityUpdateEvent {
|
|
96
99
|
readonly newClassification?: readonly string[];
|
|
97
100
|
readonly newMarkings?: readonly string[];
|
|
98
101
|
}
|
|
99
102
|
|
|
103
|
+
interface WireDocumentDiscretionarySecurityUpdateEvent {
|
|
104
|
+
readonly principalType: "ALL_PRINCIPAL" | "USER";
|
|
105
|
+
readonly previousDiscretionarySecurity?: DocumentSecurityDiscretionary;
|
|
106
|
+
readonly newDiscretionarySecurity: DocumentSecurityDiscretionary;
|
|
107
|
+
}
|
|
108
|
+
|
|
100
109
|
function getActivityEventData(
|
|
101
110
|
docSchema: DocumentSchema,
|
|
102
111
|
{ eventData, eventType }: FoundryActivityEvent,
|
|
@@ -164,13 +173,23 @@ function getPlatformActivityEventData(
|
|
|
164
173
|
} satisfies ActivityEventDataDocumentDescriptionUpdate;
|
|
165
174
|
}
|
|
166
175
|
|
|
167
|
-
case PlatformEventType.
|
|
168
|
-
const wireData = data as
|
|
176
|
+
case PlatformEventType.DOCUMENT_MANDATORY_SECURITY_UPDATE: {
|
|
177
|
+
const wireData = data as WireDocumentMandatorySecurityUpdateEvent;
|
|
169
178
|
return {
|
|
170
179
|
newClassification: wireData.newClassification ?? [],
|
|
171
180
|
newMarkings: wireData.newMarkings ?? [],
|
|
172
|
-
type: ActivityEventDataType.
|
|
173
|
-
} satisfies
|
|
181
|
+
type: ActivityEventDataType.DOCUMENT_MANDATORY_SECURITY_UPDATE,
|
|
182
|
+
} satisfies ActivityEventDataDocumentMandatorySecurityUpdate;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
case PlatformEventType.DOCUMENT_DISCRETIONARY_SECURITY_UPDATE: {
|
|
186
|
+
const wireData = data as WireDocumentDiscretionarySecurityUpdateEvent;
|
|
187
|
+
return {
|
|
188
|
+
principalType: wireData.principalType ?? "",
|
|
189
|
+
previousDiscretionarySecurity: wireData.previousDiscretionarySecurity,
|
|
190
|
+
newDiscretionarySecurity: wireData.newDiscretionarySecurity ?? [],
|
|
191
|
+
type: ActivityEventDataType.DOCUMENT_DISCRETIONARY_SECURITY_UPDATE,
|
|
192
|
+
} satisfies ActivityEventDataDocumentDiscretionarySecurityUpdate;
|
|
174
193
|
}
|
|
175
194
|
|
|
176
195
|
default:
|