@palantir/pack.state.foundry 0.2.0 → 0.3.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.
@@ -1,4 +1,4 @@
1
1
 
2
- > @palantir/pack.state.foundry@0.2.0 lint /home/runner/work/pack/pack/packages/state/foundry
2
+ > @palantir/pack.state.foundry@0.3.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.0 transpileBrowser /home/runner/work/pack/pack/packages/state/foundry
2
+ > @palantir/pack.state.foundry@0.3.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.0 transpileCjs /home/runner/work/pack/pack/packages/state/foundry
2
+ > @palantir/pack.state.foundry@0.3.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.0 transpileEsm /home/runner/work/pack/pack/packages/state/foundry
2
+ > @palantir/pack.state.foundry@0.3.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`
@@ -1,5 +1,5 @@
1
1
 
2
- > @palantir/pack.state.foundry@0.2.0 transpileTypes /home/runner/work/pack/pack/packages/state/foundry
2
+ > @palantir/pack.state.foundry@0.3.0 transpileTypes /home/runner/work/pack/pack/packages/state/foundry
3
3
  > monorepo-transpile -f esm -m types -t node
4
4
 
5
5
  👍
@@ -1,4 +1,4 @@
1
1
 
2
- > @palantir/pack.state.foundry@0.2.0 typecheck /home/runner/work/pack/pack/packages/state/foundry
2
+ > @palantir/pack.state.foundry@0.3.0 typecheck /home/runner/work/pack/pack/packages/state/foundry
3
3
  > tsc --noEmit --emitDeclarationOnly false
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # @palantir/pack.state.foundry
2
2
 
3
+ ## 0.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - bb1ba4e: update ephemeral events and custom presence event types and search request query
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [bb1ba4e]
12
+ - @palantir/pack.document-schema.model-types@0.4.0
13
+ - @palantir/pack.state.foundry-event@0.3.0
14
+ - @palantir/pack.state.core@0.4.0
15
+
16
+ ## 0.2.1
17
+
18
+ ### Patch Changes
19
+
20
+ - 5120719: Update dependency ranges
21
+ - Updated dependencies [5120719]
22
+ - @palantir/pack.document-schema.model-types@0.3.1
23
+ - @palantir/pack.state.foundry-event@0.2.1
24
+ - @palantir/pack.state.core@0.3.1
25
+ - @palantir/pack.auth@0.1.2
26
+ - @palantir/pack.core@0.2.2
27
+
3
28
  ## 0.2.0
4
29
 
5
30
  ### Minor Changes
@@ -114,9 +114,10 @@ function getPresenceEvent(documentSchema, foundryUpdate) {
114
114
  case "customPresenceEvent": {
115
115
  const {
116
116
  userId,
117
- eventData
117
+ eventData,
118
+ eventType
118
119
  } = foundryUpdate;
119
- const presenceEventData = getPresenceEventData(documentSchema, eventData);
120
+ const presenceEventData = getPresenceEventData(documentSchema, eventType, eventData);
120
121
  return {
121
122
  eventData: presenceEventData,
122
123
  userId
@@ -136,36 +137,17 @@ function getPresenceEvent(documentSchema, foundryUpdate) {
136
137
  }
137
138
  }
138
139
  }
139
- function getPresenceEventData(docSchema, eventData) {
140
- if (typeof eventData !== "object" || eventData == null) {
141
- return {
142
- rawData: eventData,
143
- rawType: "unknown",
144
- type: PresenceEventDataType.UNKNOWN
145
- };
146
- }
147
- const typedEventData = eventData;
148
- const {
149
- eventType,
150
- eventData: data
151
- } = typedEventData;
152
- if (typeof eventType !== "string") {
153
- return {
154
- rawData: eventData,
155
- rawType: "unknown",
156
- type: PresenceEventDataType.UNKNOWN
157
- };
158
- }
140
+ function getPresenceEventData(docSchema, eventType, eventData) {
159
141
  const model = docSchema[eventType];
160
142
  if (model == null) {
161
143
  return {
162
- rawData: data,
144
+ rawData: eventData,
163
145
  rawType: eventType,
164
146
  type: PresenceEventDataType.UNKNOWN
165
147
  };
166
148
  }
167
149
  return {
168
- eventData: data,
150
+ eventData,
169
151
  model,
170
152
  type: PresenceEventDataType.CUSTOM_EVENT
171
153
  };
@@ -227,11 +209,13 @@ var FoundryDocumentService = class extends BaseYjsDocumentService {
227
209
  searchDocuments = async (documentTypeName, schema, options) => {
228
210
  const request = {
229
211
  documentTypeName,
230
- searchQuery: options != null ? {
231
- documentName: options.documentName,
232
- pageSize: options.pageSize,
233
- pageToken: options.pageToken
234
- } : void 0
212
+ requestBody: {
213
+ query: options?.documentName != null ? {
214
+ documentName: options.documentName
215
+ } : void 0,
216
+ pageSize: options?.pageSize,
217
+ pageToken: options?.pageToken
218
+ }
235
219
  };
236
220
  const searchResponse = await Documents.search(this.app.config.osdkClient, request, {
237
221
  preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API
@@ -344,9 +328,9 @@ var FoundryDocumentService = class extends BaseYjsDocumentService {
344
328
  });
345
329
  return unsubscribeFn;
346
330
  }
347
- updateCustomPresence(docRef, model, eventData) {
331
+ updateCustomPresence(docRef, model, eventData, options) {
348
332
  const eventType = getMetadata(model).name;
349
- void this.eventService.publishCustomPresence(docRef.id, eventType, eventData).catch((e) => {
333
+ void this.eventService.publishCustomPresence(docRef.id, eventType, eventData, options).catch((e) => {
350
334
  this.logger.error("Failed to publish custom presence", e, {
351
335
  docId: docRef.id
352
336
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/eventMappers.ts","../../src/FoundryDocumentService.ts"],"names":["config"],"mappings":";;;;;;;;AAkBO,SAAS,gBAAA,CAAiB,gBAAgB,YAAA,EAAc;AAE7D,EAAA,IAAI,YAAA,CAAa,SAAS,iBAAA,EAAmB;AAC3C,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,MAAM;AAAA,IACJ;AAAA,GACF,GAAI,YAAA;AACJ,EAAA,MAAM,SAAA,GAAY,oBAAA,CAAqB,cAAA,EAAgB,aAAa,CAAA;AACpE,EAAA,OAAO;AAAA,IACL,gBAAgB,aAAA,CAAc,cAAA;AAAA,IAC9B,WAAW,aAAA,CAAc,SAAA;AAAA,IACzB,gBAAgB,IAAI,IAAA,CAAK,aAAA,CAAc,WAAW,EAAE,OAAA,EAAQ;AAAA,IAC5D,SAAA;AAAA,IACA,SAAS,aAAA,CAAc,OAAA;AAAA,IACvB,QAAQ,aAAA,CAAc;AAAA,GACxB;AACF;AAOA,IAAM,iBAAA,GAAoB;AAAA,EACxB,eAAA,EAAiB,qBAAA;AAAA,EACjB,2BAAA,EAA6B,gCAAA;AAAA,EAC7B,eAAA,EAAiB,qBAAA;AAAA,EACjB,wBAAA,EAA0B;AAC5B,CAAA;AACA,SAAS,qBAAqB,SAAA,EAAW;AAAA,EACvC,SAAA;AAAA,EACA;AACF,CAAA,EAAG;AACD,EAAA,MAAM,iBAAA,GAAoB,4BAAA,CAA6B,SAAA,EAAW,SAAA,CAAU,IAAI,CAAA;AAChF,EAAA,IAAI,qBAAqB,IAAA,EAAM;AAC7B,IAAA,OAAO,iBAAA;AAAA,EACT;AAIA,EAAA,MAAM,KAAA,GAAQ,UAAU,SAAS,CAAA;AACjC,EAAA,IAAI,SAAS,IAAA,EAAM;AACjB,IAAA,OAAO;AAAA,MACL,SAAS,SAAA,CAAU,IAAA;AAAA,MACnB,OAAA,EAAS,SAAA;AAAA,MACT,MAAM,qBAAA,CAAsB;AAAA,KAC9B;AAAA,EACF;AAIA,EAAA,OAAO;AAAA,IACL,WAAW,SAAA,CAAU,IAAA;AAAA,IACrB,KAAA;AAAA,IACA,MAAM,qBAAA,CAAsB;AAAA,GAC9B;AACF;AACA,SAAS,4BAAA,CAA6B,WAAW,IAAA,EAAM;AACrD,EAAA,QAAQ,SAAA;AAAW,IACjB,KAAK,kBAAkB,eAAA,EACrB;AACE,MAAA,MAAM,QAAA,GAAW,IAAA;AACjB,MAAA,OAAO;AAAA,QACL,wBAAA,EAA0B;AAAA,UACxB,cAAA,EAAgB,SAAS,wBAAA,EAA0B,cAAA;AAAA,UACnD,QAAA,EAAU,SAAS,wBAAA,EAA0B;AAAA,SAC/C;AAAA,QACA,IAAA,EAAM,SAAS,IAAA,IAAQ,EAAA;AAAA,QACvB,MAAM,qBAAA,CAAsB;AAAA,OAC9B;AAAA,IACF;AAAA,IACF,KAAK,kBAAkB,eAAA,EACrB;AACE,MAAA,MAAM,QAAA,GAAW,IAAA;AACjB,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,SAAS,OAAA,IAAW,EAAA;AAAA,QAC7B,YAAA,EAAc,SAAS,YAAA,IAAgB,EAAA;AAAA,QACvC,MAAM,qBAAA,CAAsB;AAAA,OAC9B;AAAA,IACF;AAAA,IACF,KAAK,kBAAkB,2BAAA,EACrB;AACE,MAAA,MAAM,QAAA,GAAW,IAAA;AACjB,MAAA,OAAO;AAAA,QACL,SAAA,EAAW,SAAS,SAAA,IAAa,KAAA;AAAA,QACjC,cAAA,EAAgB,SAAS,cAAA,IAAkB,EAAA;AAAA,QAC3C,MAAM,qBAAA,CAAsB;AAAA,OAC9B;AAAA,IACF;AAAA,IACF,KAAK,kBAAkB,wBAAA,EACrB;AACE,MAAA,MAAM,QAAA,GAAW,IAAA;AACjB,MAAA,OAAO;AAAA,QACL,iBAAA,EAAmB,QAAA,CAAS,iBAAA,IAAqB,EAAC;AAAA,QAClD,WAAA,EAAa,QAAA,CAAS,WAAA,IAAe,EAAC;AAAA,QACtC,MAAM,qBAAA,CAAsB;AAAA,OAC9B;AAAA,IACF;AAAA,IACF;AACE,MAAA,OAAO,MAAA;AAAA;AAEb;AACA,IAAM,YAAA,GAAe;AAAA,EACnB,MAAM,qBAAA,CAAsB;AAC9B,CAAA;AACA,IAAM,aAAA,GAAgB;AAAA,EACpB,MAAM,qBAAA,CAAsB;AAC9B,CAAA;AACO,SAAS,gBAAA,CAAiB,gBAAgB,aAAA,EAAe;AAC9D,EAAA,QAAQ,cAAc,IAAA;AAAM,IAC1B,KAAK,qBAAA,EACH;AACE,MAAA,MAAM;AAAA,QACJ,MAAA;AAAA,QACA;AAAA,OACF,GAAI,aAAA;AACJ,MAAA,MAAM,SAAA,GAAY,MAAA,KAAW,SAAA,GAAY,YAAA,GAAe,aAAA;AACxD,MAAA,OAAO;AAAA,QACL,SAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AAAA,IACF,KAAK,qBAAA,EACH;AACE,MAAA,MAAM;AAAA,QACJ,MAAA;AAAA,QACA;AAAA,OACF,GAAI,aAAA;AACJ,MAAA,MAAM,iBAAA,GAAoB,oBAAA,CAAqB,cAAA,EAAgB,SAAS,CAAA;AACxE,MAAA,OAAO;AAAA,QACL,SAAA,EAAW,iBAAA;AAAA,QACX;AAAA,OACF;AAAA,IACF;AAAA,IACF,SACE;AAEE,MAAA,MAAM,aAAA,GAAgB,aAAA;AACtB,MAAA,OAAO;AAAA,QACL,SAAA,EAAW;AAAA,UACT,OAAA,EAAS,aAAA;AAAA,UACT,SAAS,OAAO,aAAA,CAAc,IAAA,KAAS,QAAA,GAAW,cAAc,IAAA,GAAO,SAAA;AAAA,UACvE,MAAM,qBAAA,CAAsB;AAAA,SAC9B;AAAA;AAAA,QAEA,MAAA,EAAQ,gBAAe,CAAE;AAAA,OAC3B;AAAA,IACF;AAAA;AAEN;AACA,SAAS,oBAAA,CAAqB,WAAW,SAAA,EAAW;AAClD,EAAA,IAAI,OAAO,SAAA,KAAc,QAAA,IAAY,SAAA,IAAa,IAAA,EAAM;AACtD,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,SAAA;AAAA,MACT,OAAA,EAAS,SAAA;AAAA,MACT,MAAM,qBAAA,CAAsB;AAAA,KAC9B;AAAA,EACF;AACA,EAAA,MAAM,cAAA,GAAiB,SAAA;AACvB,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,SAAA,EAAW;AAAA,GACb,GAAI,cAAA;AACJ,EAAA,IAAI,OAAO,cAAc,QAAA,EAAU;AACjC,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,SAAA;AAAA,MACT,OAAA,EAAS,SAAA;AAAA,MACT,MAAM,qBAAA,CAAsB;AAAA,KAC9B;AAAA,EACF;AACA,EAAA,MAAM,KAAA,GAAQ,UAAU,SAAS,CAAA;AACjC,EAAA,IAAI,SAAS,IAAA,EAAM;AACjB,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,IAAA;AAAA,MACT,OAAA,EAAS,SAAA;AAAA,MACT,MAAM,qBAAA,CAAsB;AAAA,KAC9B;AAAA,EACF;AACA,EAAA,OAAO;AAAA,IACL,SAAA,EAAW,IAAA;AAAA,IACX,KAAA;AAAA,IACA,MAAM,qBAAA,CAAsB;AAAA,GAC9B;AACF;;;ACpLA,IAAM,uBAAA,GAA0B,IAAA;AAChC,IAAM,uBAAA,GAA0B,OAAO,MAAA,CAAO;AAAA,EAC5C,eAAe,EAAC;AAAA,EAChB,WAAW;AACb,CAAC,CAAA;AACM,SAAS,kCAAA,CAAmC,MAAA,GAAS,EAAC,EAAG;AAC9D,EAAA,OAAO,2BAAA,CAA4B,CAAC,GAAA,EAAKA,OAAAA,KAAW,qCAAqC,GAAA,EAAKA,OAAM,GAAG,MAAM,CAAA;AAC/G;AACO,SAAS,oCAAA,CAAqC,GAAA,EAAK,MAAA,EAAQ,YAAA,EAAc;AAC9E,EAAA,OAAO,IAAI,sBAAA,CAAuB,GAAA,EAAK,QAAwB,yBAAA,CAA0B,GAAG,CAAC,CAAA;AAC/F;AACO,IAAM,sBAAA,GAAN,cAAqC,sBAAA,CAAuB;AAAA,EACjE,WAAA,CAAY,GAAA,EAAK,MAAA,EAAQ,YAAA,EAAc;AACrC,IAAA,KAAA,CAAM,KAAK,GAAA,CAAI,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM,EAAC,EAAG;AAAA,MACrC,KAAA,EAAO,OAAA;AAAA,MACP,SAAA,EAAW;AAAA,KACZ,CAAC,CAAA;AACF,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AAAA,EACtB;AAAA,EACA,iBAAA,CAAkB,KAAK,QAAA,EAAU;AAC/B,IAAA,OAAO;AAAA,MACL,GAAG,IAAA,CAAK,qBAAA,CAAsB,GAAA,EAAK,QAAQ,CAAA;AAAA,MAC3C,WAAA,EAAa;AAAA,KACf;AAAA,EACF;AAAA,EACA,IAAI,wBAAA,GAA2B;AAC7B,IAAA,OAAO,MAAM,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,MAAA,EAAQ,CAAA,CAAE,IAAA,CAAK,CAAA,GAAA,KAAO,IAAA,CAAK,iBAAiB,GAAG,CAAA,IAAK,GAAA,CAAI,mBAAA,CAAoB,OAAO,CAAC,CAAA;AAAA,EACvH;AAAA,EACA,IAAI,qBAAA,GAAwB;AAC1B,IAAA,OAAO,MAAM,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,MAAA,EAAQ,CAAA,CAAE,IAAA,CAAK,CAAA,GAAA,KAAO,IAAA,CAAK,iBAAiB,GAAG,CAAA,IAAK,GAAA,CAAI,mBAAA,CAAoB,OAAO,CAAC,CAAA;AAAA,EACvH;AAAA,EACA,cAAA,GAAiB,OAAO,QAAA,EAAU,MAAA,KAAW;AAC3C,IAAA,MAAM;AAAA,MACJ,gBAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,KACF,GAAI,QAAA;AACJ,IAAA,MAAM,WAAA,GAAc,MAAM,cAAA,CAAe,IAAA,CAAK,GAAG,CAAA;AACjD,IAAA,MAAM,OAAA,GAAU;AAAA,MACd,gBAAA;AAAA,MACA,IAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA,EAAU,gBAAgB,QAAQ;AAAA,KACpC;AACA,IAAA,MAAM,cAAA,GAAiB,MAAM,SAAA,CAAU,MAAA,CAAO,KAAK,GAAA,CAAI,MAAA,CAAO,YAAY,OAAA,EAAS;AAAA,MACjF,OAAA,EAAS,IAAA,CAAK,MAAA,CAAO,aAAA,IAAiB;AAAA,KACvC,CAAA;AACD,IAAA,MAAM,aAAa,cAAA,CAAe,EAAA;AAClC,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,YAAA,CAAa,UAAA,EAAY,MAAM,CAAA;AACnD,IAAA,OAAO,MAAA;AAAA,EACT,CAAA;AAAA,EACA,eAAA,GAAkB,OAAO,gBAAA,EAAkB,MAAA,EAAQ,OAAA,KAAY;AAC7D,IAAA,MAAM,OAAA,GAAU;AAAA,MACd,gBAAA;AAAA,MACA,WAAA,EAAa,WAAW,IAAA,GAAO;AAAA,QAC7B,cAAc,OAAA,CAAQ,YAAA;AAAA,QACtB,UAAU,OAAA,CAAQ,QAAA;AAAA,QAClB,WAAW,OAAA,CAAQ;AAAA,OACrB,GAAI;AAAA,KACN;AACA,IAAA,MAAM,cAAA,GAAiB,MAAM,SAAA,CAAU,MAAA,CAAO,KAAK,GAAA,CAAI,MAAA,CAAO,YAAY,OAAA,EAAS;AAAA,MACjF,OAAA,EAAS,IAAA,CAAK,MAAA,CAAO,aAAA,IAAiB;AAAA,KACvC,CAAA;AACD,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,cAAA,CAAe,IAAA,CAAK,GAAA,CAAI,CAAA,GAAA,MAAQ;AAAA,QACpC,WAAW,GAAA,CAAI,SAAA;AAAA,QACf,aAAa,GAAA,CAAI,WAAA;AAAA,QACjB,kBAAkB,GAAA,CAAI,gBAAA;AAAA,QACtB,IAAI,GAAA,CAAI,EAAA;AAAA,QACR,MAAM,GAAA,CAAI,IAAA;AAAA,QACV,WAAA,EAAa,SAAA;AAAA,QACb,QAAA,EAAU;AAAA,UACR,aAAA,EAAe;AAAA,YACb,QAAQ;AAAC,WACX;AAAA,UACA,WAAW;AAAC,SACd;AAAA,QACA,WAAW,GAAA,CAAI,SAAA;AAAA,QACf,aAAa,GAAA,CAAI;AAAA,OACnB,CAAE,CAAA;AAAA,MACF,eAAe,cAAA,CAAe;AAAA,KAChC;AAAA,EACF,CAAA;AAAA,EACA,4BAAA,CAA6B,aAAa,MAAA,EAAQ;AAChD,IAAA,IAAI,WAAA,CAAY,cAAA,CAAe,IAAA,KAAS,kBAAA,CAAmB,QAAA,EAAU;AACnE,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,qDAAA,EAAwD,WAAA,CAAY,cAAA,CAAe,IAAI,CAAA,CAAE,CAAA;AAAA,IAC3G;AACA,IAAA,IAAA,CAAK,oBAAA,CAAqB,aAAa,MAAA,EAAQ;AAAA,MAC7C,MAAM,kBAAA,CAAmB;AAAA,KAC1B,CAAA;AACD,IAAA,SAAA,CAAU,IAAI,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,UAAA,EAAY,OAAO,EAAA,EAAI;AAAA,MACnD,OAAA,EAAS,IAAA,CAAK,MAAA,CAAO,aAAA,IAAiB;AAAA,KACvC,CAAA,CAAE,IAAA,CAAK,CAAA,QAAA,KAAY;AAClB,MAAA,MAAM,QAAA,GAAW;AAAA,QACf,kBAAkB,QAAA,CAAS,gBAAA;AAAA,QAC3B,MAAM,QAAA,CAAS,IAAA;AAAA,QACf,WAAA,EAAa,SAAA;AAAA,QACb,QAAA,EAAU;AAAA,UACR,aAAA,EAAe;AAAA,YACb,QAAQ;AAAC,WACX;AAAA,UACA,WAAW;AAAC;AACd,OACF;AACA,MAAA,WAAA,CAAY,QAAA,GAAW,QAAA;AACvB,MAAA,IAAA,CAAK,yBAAA,CAA0B,WAAA,EAAa,MAAA,EAAQ,QAAQ,CAAA;AAC5D,MAAA,IAAA,CAAK,oBAAA,CAAqB,aAAa,MAAA,EAAQ;AAAA,QAC7C,MAAM,kBAAA,CAAmB;AAAA,OAC1B,CAAA;AAAA,IACH,CAAC,CAAA,CAAE,KAAA,CAAM,CAAA,CAAA,KAAK;AACZ,MAAA,MAAM,KAAA,GAAQ,IAAI,KAAA,CAAM,kCAAA,EAAoC;AAAA,QAC1D,KAAA,EAAO;AAAA,OACR,CAAA;AACD,MAAA,IAAA,CAAK,oBAAA,CAAqB,aAAa,MAAA,EAAQ;AAAA,QAC7C,KAAA;AAAA,QACA,MAAM,kBAAA,CAAmB;AAAA,OAC1B,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACH;AAAA,EACA,wBAAA,CAAyB,aAAa,MAAA,EAAQ;AAC5C,IAAA,IAAI,WAAA,CAAY,eAAe,IAAA,EAAM;AACnC,MAAA,MAAM,IAAI,MAAM,2CAA2C,CAAA;AAAA,IAC7D;AACA,IAAA,WAAA,CAAY,WAAA,GAAc,KAAK,YAAA,CAAa,iBAAA,CAAkB,OAAO,EAAA,EAAI,WAAA,CAAY,MAAM,CAAA,MAAA,KAAU;AACnG,MAAA,IAAA,CAAK,gBAAA,CAAiB,WAAA,EAAa,MAAA,EAAQ,MAAM,CAAA;AAAA,IACnD,CAAC,CAAA;AAAA,EACH;AAAA,EACA,4BAAA,CAA6B,cAAc,OAAA,EAAS;AAAA,EAAC;AAAA,EACrD,wBAAA,CAAyB,aAAa,OAAA,EAAS;AAC7C,IAAA,IAAI,YAAY,WAAA,EAAa;AAC3B,MAAA,IAAA,CAAK,YAAA,CAAa,gBAAA,CAAiB,WAAA,CAAY,WAAW,CAAA;AAC1D,MAAA,WAAA,CAAY,WAAA,GAAc,MAAA;AAAA,IAC5B;AAAA,EACF;AAAA,EACA,UAAA,CAAW,QAAQ,QAAA,EAAU;AAC3B,IAAA,IAAI,YAAA,GAAe,KAAA;AACnB,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,YAAA,GAAe,IAAA;AAAA,IACjB,CAAA;AACA,IAAA,IAAA,CAAK,YAAA,CAAa,0BAAA,CAA2B,MAAA,CAAO,EAAA,EAAI,CAAA,YAAA,KAAgB;AACtE,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,MAAM,UAAA,GAAa,gBAAA,CAAiB,MAAA,CAAO,MAAA,EAAQ,YAAY,CAAA;AAC/D,QAAA,IAAI,cAAc,IAAA,EAAM;AACtB,UAAA,QAAA,CAAS,QAAQ,UAAU,CAAA;AAAA,QAC7B;AAAA,MACF;AAAA,IACF,CAAC,CAAA,CAAE,KAAA,CAAM,CAAA,CAAA,KAAK;AACZ,MAAA,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,yCAAA,EAA2C,CAAA,EAAG;AAAA,QAC9D,OAAO,MAAA,CAAO;AAAA,OACf,CAAA;AAAA,IACH,CAAC,CAAA;AACD,IAAA,OAAO,aAAA;AAAA,EACT;AAAA,EACA,UAAA,CAAW,MAAA,EAAQ,QAAA,EAAU,OAAA,EAAS;AACpC,IAAA,IAAI,YAAA,GAAe,KAAA;AACnB,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,YAAA,GAAe,IAAA;AAAA,IACjB,CAAA;AACA,IAAA,IAAA,CAAK,YAAA,CAAa,0BAAA,CAA2B,MAAA,CAAO,EAAA,EAAI,CAAA,aAAA,KAAiB;AACvE,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,MAAM,UAAA,GAAa,gBAAA,CAAiB,MAAA,CAAO,MAAA,EAAQ,aAAa,CAAA;AAChE,QAAA,QAAA,CAAS,QAAQ,UAAU,CAAA;AAAA,MAC7B;AAAA,IACF,CAAA,EAAG,OAAO,CAAA,CAAE,KAAA,CAAM,CAAA,CAAA,KAAK;AACrB,MAAA,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,yCAAA,EAA2C,CAAA,EAAG;AAAA,QAC9D,OAAO,MAAA,CAAO;AAAA,OACf,CAAA;AAAA,IACH,CAAC,CAAA;AACD,IAAA,OAAO,aAAA;AAAA,EACT;AAAA,EACA,oBAAA,CAAqB,MAAA,EAAQ,KAAA,EAAO,SAAA,EAAW;AAC7C,IAAA,MAAM,SAAA,GAAY,WAAA,CAAY,KAAK,CAAA,CAAE,IAAA;AACrC,IAAA,KAAK,IAAA,CAAK,aAAa,qBAAA,CAAsB,MAAA,CAAO,IAAI,SAAA,EAAW,SAAS,CAAA,CAAE,KAAA,CAAM,CAAA,CAAA,KAAK;AACvF,MAAA,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,mCAAA,EAAqC,CAAA,EAAG;AAAA,QACxD,OAAO,MAAA,CAAO;AAAA,OACf,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACH;AACF,CAAA;AACA,SAAS,eAAA,CAAgB;AAAA,EACvB,aAAA;AAAA,EACA;AACF,CAAA,GAAI,uBAAA,EAAyB;AAC3B,EAAA,MAAM;AAAA,IACJ,UAAU,EAAC;AAAA,IACX,SAAS,EAAC;AAAA,IACV,UAAU;AAAC,GACb,GAAI,aAAA;AACJ,EAAA,OAAO;AAAA,IACL,aAAA,EAAe;AAAA,MACb,OAAA,EAAS,OAAA,CAAQ,GAAA,CAAI,gBAAgB,CAAA;AAAA,MACrC,MAAA,EAAQ,MAAA,CAAO,GAAA,CAAI,gBAAgB,CAAA;AAAA,MACnC,OAAA,EAAS,OAAA,CAAQ,GAAA,CAAI,gBAAgB;AAAA,KACvC;AAAA,IACA,SAAA,EAAW;AAAA,MACT,cAAA,EAAgB,UAAU,cAAA,IAAkB,IAAA,GAAO,CAAC,GAAG,SAAA,CAAU,cAAc,CAAA,GAAI,EAAC;AAAA,MACpF,QAAA,EAAU,UAAU,QAAA,IAAY,IAAA,GAAO,CAAC,GAAG,SAAA,CAAU,QAAQ,CAAA,GAAI;AAAC;AACpE,GACF;AACF;AACA,SAAS,iBAAiB,SAAA,EAAW;AACnC,EAAA,QAAQ,UAAU,IAAA;AAAM,IACtB,KAAK,KAAA;AACH,MAAA,OAAO;AAAA,QACL,IAAA,EAAM;AAAA,OACR;AAAA,IACF,KAAK,SAAA;AACH,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,SAAA;AAAA,QACN,SAAS,SAAA,CAAU;AAAA,OACrB;AAAA,IACF,KAAK,QAAA;AACH,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,QAAA;AAAA,QACN,QAAQ,SAAA,CAAU;AAAA,OACpB;AAAA,IACF;AACE,MAAA,WAAA,CAAY,SAAS,CAAA;AAAA;AAE3B","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 } = foundryUpdate;\n const presenceEventData = getPresenceEventData(documentSchema, 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, eventData) {\n if (typeof eventData !== \"object\" || eventData == null) {\n return {\n rawData: eventData,\n rawType: \"unknown\",\n type: PresenceEventDataType.UNKNOWN\n };\n }\n const typedEventData = eventData;\n const {\n eventType,\n eventData: data\n } = typedEventData;\n if (typeof eventType !== \"string\") {\n return {\n rawData: eventData,\n rawType: \"unknown\",\n type: PresenceEventDataType.UNKNOWN\n };\n }\n const model = docSchema[eventType];\n if (model == null) {\n return {\n rawData: data,\n rawType: eventType,\n type: PresenceEventDataType.UNKNOWN\n };\n }\n return {\n eventData: data,\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 { 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 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 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 searchQuery: options != null ? {\n documentName: options.documentName,\n pageSize: options.pageSize,\n pageToken: options.pageToken\n } : undefined\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: \"unknown\",\n security: {\n discretionary: {\n owners: []\n },\n mandatory: {}\n },\n updatedBy: doc.updatedBy,\n updatedTime: doc.updatedTime\n })),\n nextPageToken: searchResponse.nextPageToken\n };\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 const metadata = {\n documentTypeName: document.documentTypeName,\n name: document.name,\n ontologyRid: \"unknown\",\n security: {\n discretionary: {\n owners: []\n },\n mandatory: {}\n }\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 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 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 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) {\n const eventType = getMetadata(model).name;\n void this.eventService.publishCustomPresence(docRef.id, eventType, eventData).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}"]}
1
+ {"version":3,"sources":["../../src/eventMappers.ts","../../src/FoundryDocumentService.ts"],"names":["config"],"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 { 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 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 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: \"unknown\",\n security: {\n discretionary: {\n owners: []\n },\n mandatory: {}\n },\n updatedBy: doc.updatedBy,\n updatedTime: doc.updatedTime\n })),\n nextPageToken: searchResponse.nextPageToken\n };\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 const metadata = {\n documentTypeName: document.documentTypeName,\n name: document.name,\n ontologyRid: \"unknown\",\n security: {\n discretionary: {\n owners: []\n },\n mandatory: {}\n }\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 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 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 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}"]}
@@ -116,9 +116,10 @@ function getPresenceEvent(documentSchema, foundryUpdate) {
116
116
  case "customPresenceEvent": {
117
117
  const {
118
118
  userId,
119
- eventData
119
+ eventData,
120
+ eventType
120
121
  } = foundryUpdate;
121
- const presenceEventData = getPresenceEventData(documentSchema, eventData);
122
+ const presenceEventData = getPresenceEventData(documentSchema, eventType, eventData);
122
123
  return {
123
124
  eventData: presenceEventData,
124
125
  userId
@@ -138,36 +139,17 @@ function getPresenceEvent(documentSchema, foundryUpdate) {
138
139
  }
139
140
  }
140
141
  }
141
- function getPresenceEventData(docSchema, eventData) {
142
- if (typeof eventData !== "object" || eventData == null) {
143
- return {
144
- rawData: eventData,
145
- rawType: "unknown",
146
- type: pack_documentSchema_modelTypes.PresenceEventDataType.UNKNOWN
147
- };
148
- }
149
- const typedEventData = eventData;
150
- const {
151
- eventType,
152
- eventData: data
153
- } = typedEventData;
154
- if (typeof eventType !== "string") {
155
- return {
156
- rawData: eventData,
157
- rawType: "unknown",
158
- type: pack_documentSchema_modelTypes.PresenceEventDataType.UNKNOWN
159
- };
160
- }
142
+ function getPresenceEventData(docSchema, eventType, eventData) {
161
143
  const model = docSchema[eventType];
162
144
  if (model == null) {
163
145
  return {
164
- rawData: data,
146
+ rawData: eventData,
165
147
  rawType: eventType,
166
148
  type: pack_documentSchema_modelTypes.PresenceEventDataType.UNKNOWN
167
149
  };
168
150
  }
169
151
  return {
170
- eventData: data,
152
+ eventData,
171
153
  model,
172
154
  type: pack_documentSchema_modelTypes.PresenceEventDataType.CUSTOM_EVENT
173
155
  };
@@ -229,11 +211,13 @@ var FoundryDocumentService = class extends pack_state_core.BaseYjsDocumentServic
229
211
  searchDocuments = async (documentTypeName, schema, options) => {
230
212
  const request = {
231
213
  documentTypeName,
232
- searchQuery: options != null ? {
233
- documentName: options.documentName,
234
- pageSize: options.pageSize,
235
- pageToken: options.pageToken
236
- } : void 0
214
+ requestBody: {
215
+ query: options?.documentName != null ? {
216
+ documentName: options.documentName
217
+ } : void 0,
218
+ pageSize: options?.pageSize,
219
+ pageToken: options?.pageToken
220
+ }
237
221
  };
238
222
  const searchResponse = await foundry_pack.Documents.search(this.app.config.osdkClient, request, {
239
223
  preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API
@@ -346,9 +330,9 @@ var FoundryDocumentService = class extends pack_state_core.BaseYjsDocumentServic
346
330
  });
347
331
  return unsubscribeFn;
348
332
  }
349
- updateCustomPresence(docRef, model, eventData) {
333
+ updateCustomPresence(docRef, model, eventData, options) {
350
334
  const eventType = pack_documentSchema_modelTypes.getMetadata(model).name;
351
- void this.eventService.publishCustomPresence(docRef.id, eventType, eventData).catch((e) => {
335
+ void this.eventService.publishCustomPresence(docRef.id, eventType, eventData, options).catch((e) => {
352
336
  this.logger.error("Failed to publish custom presence", e, {
353
337
  docId: docRef.id
354
338
  });
@@ -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 } = foundryUpdate;\n const presenceEventData = getPresenceEventData(documentSchema, 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, eventData) {\n if (typeof eventData !== \"object\" || eventData == null) {\n return {\n rawData: eventData,\n rawType: \"unknown\",\n type: PresenceEventDataType.UNKNOWN\n };\n }\n const typedEventData = eventData;\n const {\n eventType,\n eventData: data\n } = typedEventData;\n if (typeof eventType !== \"string\") {\n return {\n rawData: eventData,\n rawType: \"unknown\",\n type: PresenceEventDataType.UNKNOWN\n };\n }\n const model = docSchema[eventType];\n if (model == null) {\n return {\n rawData: data,\n rawType: eventType,\n type: PresenceEventDataType.UNKNOWN\n };\n }\n return {\n eventData: data,\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 { 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 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 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 searchQuery: options != null ? {\n documentName: options.documentName,\n pageSize: options.pageSize,\n pageToken: options.pageToken\n } : undefined\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: \"unknown\",\n security: {\n discretionary: {\n owners: []\n },\n mandatory: {}\n },\n updatedBy: doc.updatedBy,\n updatedTime: doc.updatedTime\n })),\n nextPageToken: searchResponse.nextPageToken\n };\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 const metadata = {\n documentTypeName: document.documentTypeName,\n name: document.name,\n ontologyRid: \"unknown\",\n security: {\n discretionary: {\n owners: []\n },\n mandatory: {}\n }\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 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 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 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) {\n const eventType = getMetadata(model).name;\n void this.eventService.publishCustomPresence(docRef.id, eventType, eventData).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}"]}
1
+ {"version":3,"sources":["../../src/eventMappers.ts","../../src/FoundryDocumentService.ts"],"names":["ActivityEventDataType","PresenceEventDataType","invalidUserRef","createDocumentServiceConfig","config","createFoundryEventService","BaseYjsDocumentService","getOntologyRid","Documents","DocumentLoadStatus","getMetadata","assertNever"],"mappings":";;;;;;;;;;AAkBO,SAAS,gBAAA,CAAiB,gBAAgB,YAAA,EAAc;AAE7D,EAAA,IAAI,YAAA,CAAa,SAAS,iBAAA,EAAmB;AAC3C,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,MAAM;AAAA,IACJ;AAAA,GACF,GAAI,YAAA;AACJ,EAAA,MAAM,SAAA,GAAY,oBAAA,CAAqB,cAAA,EAAgB,aAAa,CAAA;AACpE,EAAA,OAAO;AAAA,IACL,gBAAgB,aAAA,CAAc,cAAA;AAAA,IAC9B,WAAW,aAAA,CAAc,SAAA;AAAA,IACzB,gBAAgB,IAAI,IAAA,CAAK,aAAA,CAAc,WAAW,EAAE,OAAA,EAAQ;AAAA,IAC5D,SAAA;AAAA,IACA,SAAS,aAAA,CAAc,OAAA;AAAA,IACvB,QAAQ,aAAA,CAAc;AAAA,GACxB;AACF;AAOA,IAAM,iBAAA,GAAoB;AAAA,EACxB,eAAA,EAAiB,qBAAA;AAAA,EACjB,2BAAA,EAA6B,gCAAA;AAAA,EAC7B,eAAA,EAAiB,qBAAA;AAAA,EACjB,wBAAA,EAA0B;AAC5B,CAAA;AACA,SAAS,qBAAqB,SAAA,EAAW;AAAA,EACvC,SAAA;AAAA,EACA;AACF,CAAA,EAAG;AACD,EAAA,MAAM,iBAAA,GAAoB,4BAAA,CAA6B,SAAA,EAAW,SAAA,CAAU,IAAI,CAAA;AAChF,EAAA,IAAI,qBAAqB,IAAA,EAAM;AAC7B,IAAA,OAAO,iBAAA;AAAA,EACT;AAIA,EAAA,MAAM,KAAA,GAAQ,UAAU,SAAS,CAAA;AACjC,EAAA,IAAI,SAAS,IAAA,EAAM;AACjB,IAAA,OAAO;AAAA,MACL,SAAS,SAAA,CAAU,IAAA;AAAA,MACnB,OAAA,EAAS,SAAA;AAAA,MACT,MAAMA,oDAAA,CAAsB;AAAA,KAC9B;AAAA,EACF;AAIA,EAAA,OAAO;AAAA,IACL,WAAW,SAAA,CAAU,IAAA;AAAA,IACrB,KAAA;AAAA,IACA,MAAMA,oDAAA,CAAsB;AAAA,GAC9B;AACF;AACA,SAAS,4BAAA,CAA6B,WAAW,IAAA,EAAM;AACrD,EAAA,QAAQ,SAAA;AAAW,IACjB,KAAK,kBAAkB,eAAA,EACrB;AACE,MAAA,MAAM,QAAA,GAAW,IAAA;AACjB,MAAA,OAAO;AAAA,QACL,wBAAA,EAA0B;AAAA,UACxB,cAAA,EAAgB,SAAS,wBAAA,EAA0B,cAAA;AAAA,UACnD,QAAA,EAAU,SAAS,wBAAA,EAA0B;AAAA,SAC/C;AAAA,QACA,IAAA,EAAM,SAAS,IAAA,IAAQ,EAAA;AAAA,QACvB,MAAMA,oDAAA,CAAsB;AAAA,OAC9B;AAAA,IACF;AAAA,IACF,KAAK,kBAAkB,eAAA,EACrB;AACE,MAAA,MAAM,QAAA,GAAW,IAAA;AACjB,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,SAAS,OAAA,IAAW,EAAA;AAAA,QAC7B,YAAA,EAAc,SAAS,YAAA,IAAgB,EAAA;AAAA,QACvC,MAAMA,oDAAA,CAAsB;AAAA,OAC9B;AAAA,IACF;AAAA,IACF,KAAK,kBAAkB,2BAAA,EACrB;AACE,MAAA,MAAM,QAAA,GAAW,IAAA;AACjB,MAAA,OAAO;AAAA,QACL,SAAA,EAAW,SAAS,SAAA,IAAa,KAAA;AAAA,QACjC,cAAA,EAAgB,SAAS,cAAA,IAAkB,EAAA;AAAA,QAC3C,MAAMA,oDAAA,CAAsB;AAAA,OAC9B;AAAA,IACF;AAAA,IACF,KAAK,kBAAkB,wBAAA,EACrB;AACE,MAAA,MAAM,QAAA,GAAW,IAAA;AACjB,MAAA,OAAO;AAAA,QACL,iBAAA,EAAmB,QAAA,CAAS,iBAAA,IAAqB,EAAC;AAAA,QAClD,WAAA,EAAa,QAAA,CAAS,WAAA,IAAe,EAAC;AAAA,QACtC,MAAMA,oDAAA,CAAsB;AAAA,OAC9B;AAAA,IACF;AAAA,IACF;AACE,MAAA,OAAO,MAAA;AAAA;AAEb;AACA,IAAM,YAAA,GAAe;AAAA,EACnB,MAAMC,oDAAA,CAAsB;AAC9B,CAAA;AACA,IAAM,aAAA,GAAgB;AAAA,EACpB,MAAMA,oDAAA,CAAsB;AAC9B,CAAA;AACO,SAAS,gBAAA,CAAiB,gBAAgB,aAAA,EAAe;AAC9D,EAAA,QAAQ,cAAc,IAAA;AAAM,IAC1B,KAAK,qBAAA,EACH;AACE,MAAA,MAAM;AAAA,QACJ,MAAA;AAAA,QACA;AAAA,OACF,GAAI,aAAA;AACJ,MAAA,MAAM,SAAA,GAAY,MAAA,KAAW,SAAA,GAAY,YAAA,GAAe,aAAA;AACxD,MAAA,OAAO;AAAA,QACL,SAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AAAA,IACF,KAAK,qBAAA,EACH;AACE,MAAA,MAAM;AAAA,QACJ,MAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA,OACF,GAAI,aAAA;AACJ,MAAA,MAAM,iBAAA,GAAoB,oBAAA,CAAqB,cAAA,EAAgB,SAAA,EAAW,SAAS,CAAA;AACnF,MAAA,OAAO;AAAA,QACL,SAAA,EAAW,iBAAA;AAAA,QACX;AAAA,OACF;AAAA,IACF;AAAA,IACF,SACE;AAEE,MAAA,MAAM,aAAA,GAAgB,aAAA;AACtB,MAAA,OAAO;AAAA,QACL,SAAA,EAAW;AAAA,UACT,OAAA,EAAS,aAAA;AAAA,UACT,SAAS,OAAO,aAAA,CAAc,IAAA,KAAS,QAAA,GAAW,cAAc,IAAA,GAAO,SAAA;AAAA,UACvE,MAAMA,oDAAA,CAAsB;AAAA,SAC9B;AAAA;AAAA,QAEA,MAAA,EAAQC,0BAAe,CAAE;AAAA,OAC3B;AAAA,IACF;AAAA;AAEN;AACA,SAAS,oBAAA,CAAqB,SAAA,EAAW,SAAA,EAAW,SAAA,EAAW;AAC7D,EAAA,MAAM,KAAA,GAAQ,UAAU,SAAS,CAAA;AACjC,EAAA,IAAI,SAAS,IAAA,EAAM;AACjB,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,SAAA;AAAA,MACT,OAAA,EAAS,SAAA;AAAA,MACT,MAAMD,oDAAA,CAAsB;AAAA,KAC9B;AAAA,EACF;AACA,EAAA,OAAO;AAAA,IACL,SAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAMA,oDAAA,CAAsB;AAAA,GAC9B;AACF;;;AClKA,IAAM,uBAAA,GAA0B,IAAA;AAChC,IAAM,uBAAA,GAA0B,OAAO,MAAA,CAAO;AAAA,EAC5C,eAAe,EAAC;AAAA,EAChB,WAAW;AACb,CAAC,CAAA;AACM,SAAS,kCAAA,CAAmC,MAAA,GAAS,EAAC,EAAG;AAC9D,EAAA,OAAOE,2CAAA,CAA4B,CAAC,GAAA,EAAKC,OAAAA,KAAW,qCAAqC,GAAA,EAAKA,OAAM,GAAG,MAAM,CAAA;AAC/G;AACO,SAAS,oCAAA,CAAqC,GAAA,EAAK,MAAA,EAAQ,YAAA,EAAc;AAC9E,EAAA,OAAO,IAAI,sBAAA,CAAuB,GAAA,EAAK,QAAwBC,iDAAA,CAA0B,GAAG,CAAC,CAAA;AAC/F;AACO,IAAM,sBAAA,GAAN,cAAqCC,sCAAA,CAAuB;AAAA,EACjE,WAAA,CAAY,GAAA,EAAK,MAAA,EAAQ,YAAA,EAAc;AACrC,IAAA,KAAA,CAAM,KAAK,GAAA,CAAI,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM,EAAC,EAAG;AAAA,MACrC,KAAA,EAAO,OAAA;AAAA,MACP,SAAA,EAAW;AAAA,KACZ,CAAC,CAAA;AACF,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AAAA,EACtB;AAAA,EACA,iBAAA,CAAkB,KAAK,QAAA,EAAU;AAC/B,IAAA,OAAO;AAAA,MACL,GAAG,IAAA,CAAK,qBAAA,CAAsB,GAAA,EAAK,QAAQ,CAAA;AAAA,MAC3C,WAAA,EAAa;AAAA,KACf;AAAA,EACF;AAAA,EACA,IAAI,wBAAA,GAA2B;AAC7B,IAAA,OAAO,MAAM,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,MAAA,EAAQ,CAAA,CAAE,IAAA,CAAK,CAAA,GAAA,KAAO,IAAA,CAAK,iBAAiB,GAAG,CAAA,IAAK,GAAA,CAAI,mBAAA,CAAoB,OAAO,CAAC,CAAA;AAAA,EACvH;AAAA,EACA,IAAI,qBAAA,GAAwB;AAC1B,IAAA,OAAO,MAAM,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,MAAA,EAAQ,CAAA,CAAE,IAAA,CAAK,CAAA,GAAA,KAAO,IAAA,CAAK,iBAAiB,GAAG,CAAA,IAAK,GAAA,CAAI,mBAAA,CAAoB,OAAO,CAAC,CAAA;AAAA,EACvH;AAAA,EACA,cAAA,GAAiB,OAAO,QAAA,EAAU,MAAA,KAAW;AAC3C,IAAA,MAAM;AAAA,MACJ,gBAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,KACF,GAAI,QAAA;AACJ,IAAA,MAAM,WAAA,GAAc,MAAMC,wBAAA,CAAe,IAAA,CAAK,GAAG,CAAA;AACjD,IAAA,MAAM,OAAA,GAAU;AAAA,MACd,gBAAA;AAAA,MACA,IAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA,EAAU,gBAAgB,QAAQ;AAAA,KACpC;AACA,IAAA,MAAM,cAAA,GAAiB,MAAMC,sBAAA,CAAU,MAAA,CAAO,KAAK,GAAA,CAAI,MAAA,CAAO,YAAY,OAAA,EAAS;AAAA,MACjF,OAAA,EAAS,IAAA,CAAK,MAAA,CAAO,aAAA,IAAiB;AAAA,KACvC,CAAA;AACD,IAAA,MAAM,aAAa,cAAA,CAAe,EAAA;AAClC,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,YAAA,CAAa,UAAA,EAAY,MAAM,CAAA;AACnD,IAAA,OAAO,MAAA;AAAA,EACT,CAAA;AAAA,EACA,eAAA,GAAkB,OAAO,gBAAA,EAAkB,MAAA,EAAQ,OAAA,KAAY;AAC7D,IAAA,MAAM,OAAA,GAAU;AAAA,MACd,gBAAA;AAAA,MACA,WAAA,EAAa;AAAA,QACX,KAAA,EAAO,OAAA,EAAS,YAAA,IAAgB,IAAA,GAAO;AAAA,UACrC,cAAc,OAAA,CAAQ;AAAA,SACxB,GAAI,MAAA;AAAA,QACJ,UAAU,OAAA,EAAS,QAAA;AAAA,QACnB,WAAW,OAAA,EAAS;AAAA;AACtB,KACF;AACA,IAAA,MAAM,cAAA,GAAiB,MAAMA,sBAAA,CAAU,MAAA,CAAO,KAAK,GAAA,CAAI,MAAA,CAAO,YAAY,OAAA,EAAS;AAAA,MACjF,OAAA,EAAS,IAAA,CAAK,MAAA,CAAO,aAAA,IAAiB;AAAA,KACvC,CAAA;AACD,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,cAAA,CAAe,IAAA,CAAK,GAAA,CAAI,CAAA,GAAA,MAAQ;AAAA,QACpC,WAAW,GAAA,CAAI,SAAA;AAAA,QACf,aAAa,GAAA,CAAI,WAAA;AAAA,QACjB,kBAAkB,GAAA,CAAI,gBAAA;AAAA,QACtB,IAAI,GAAA,CAAI,EAAA;AAAA,QACR,MAAM,GAAA,CAAI,IAAA;AAAA,QACV,WAAA,EAAa,SAAA;AAAA,QACb,QAAA,EAAU;AAAA,UACR,aAAA,EAAe;AAAA,YACb,QAAQ;AAAC,WACX;AAAA,UACA,WAAW;AAAC,SACd;AAAA,QACA,WAAW,GAAA,CAAI,SAAA;AAAA,QACf,aAAa,GAAA,CAAI;AAAA,OACnB,CAAE,CAAA;AAAA,MACF,eAAe,cAAA,CAAe;AAAA,KAChC;AAAA,EACF,CAAA;AAAA,EACA,4BAAA,CAA6B,aAAa,MAAA,EAAQ;AAChD,IAAA,IAAI,WAAA,CAAY,cAAA,CAAe,IAAA,KAASC,kCAAA,CAAmB,QAAA,EAAU;AACnE,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,qDAAA,EAAwD,WAAA,CAAY,cAAA,CAAe,IAAI,CAAA,CAAE,CAAA;AAAA,IAC3G;AACA,IAAA,IAAA,CAAK,oBAAA,CAAqB,aAAa,MAAA,EAAQ;AAAA,MAC7C,MAAMA,kCAAA,CAAmB;AAAA,KAC1B,CAAA;AACD,IAAAD,sBAAA,CAAU,IAAI,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,UAAA,EAAY,OAAO,EAAA,EAAI;AAAA,MACnD,OAAA,EAAS,IAAA,CAAK,MAAA,CAAO,aAAA,IAAiB;AAAA,KACvC,CAAA,CAAE,IAAA,CAAK,CAAA,QAAA,KAAY;AAClB,MAAA,MAAM,QAAA,GAAW;AAAA,QACf,kBAAkB,QAAA,CAAS,gBAAA;AAAA,QAC3B,MAAM,QAAA,CAAS,IAAA;AAAA,QACf,WAAA,EAAa,SAAA;AAAA,QACb,QAAA,EAAU;AAAA,UACR,aAAA,EAAe;AAAA,YACb,QAAQ;AAAC,WACX;AAAA,UACA,WAAW;AAAC;AACd,OACF;AACA,MAAA,WAAA,CAAY,QAAA,GAAW,QAAA;AACvB,MAAA,IAAA,CAAK,yBAAA,CAA0B,WAAA,EAAa,MAAA,EAAQ,QAAQ,CAAA;AAC5D,MAAA,IAAA,CAAK,oBAAA,CAAqB,aAAa,MAAA,EAAQ;AAAA,QAC7C,MAAMC,kCAAA,CAAmB;AAAA,OAC1B,CAAA;AAAA,IACH,CAAC,CAAA,CAAE,KAAA,CAAM,CAAA,CAAA,KAAK;AACZ,MAAA,MAAM,KAAA,GAAQ,IAAI,KAAA,CAAM,kCAAA,EAAoC;AAAA,QAC1D,KAAA,EAAO;AAAA,OACR,CAAA;AACD,MAAA,IAAA,CAAK,oBAAA,CAAqB,aAAa,MAAA,EAAQ;AAAA,QAC7C,KAAA;AAAA,QACA,MAAMA,kCAAA,CAAmB;AAAA,OAC1B,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACH;AAAA,EACA,wBAAA,CAAyB,aAAa,MAAA,EAAQ;AAC5C,IAAA,IAAI,WAAA,CAAY,eAAe,IAAA,EAAM;AACnC,MAAA,MAAM,IAAI,MAAM,2CAA2C,CAAA;AAAA,IAC7D;AACA,IAAA,WAAA,CAAY,WAAA,GAAc,KAAK,YAAA,CAAa,iBAAA,CAAkB,OAAO,EAAA,EAAI,WAAA,CAAY,MAAM,CAAA,MAAA,KAAU;AACnG,MAAA,IAAA,CAAK,gBAAA,CAAiB,WAAA,EAAa,MAAA,EAAQ,MAAM,CAAA;AAAA,IACnD,CAAC,CAAA;AAAA,EACH;AAAA,EACA,4BAAA,CAA6B,cAAc,OAAA,EAAS;AAAA,EAAC;AAAA,EACrD,wBAAA,CAAyB,aAAa,OAAA,EAAS;AAC7C,IAAA,IAAI,YAAY,WAAA,EAAa;AAC3B,MAAA,IAAA,CAAK,YAAA,CAAa,gBAAA,CAAiB,WAAA,CAAY,WAAW,CAAA;AAC1D,MAAA,WAAA,CAAY,WAAA,GAAc,MAAA;AAAA,IAC5B;AAAA,EACF;AAAA,EACA,UAAA,CAAW,QAAQ,QAAA,EAAU;AAC3B,IAAA,IAAI,YAAA,GAAe,KAAA;AACnB,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,YAAA,GAAe,IAAA;AAAA,IACjB,CAAA;AACA,IAAA,IAAA,CAAK,YAAA,CAAa,0BAAA,CAA2B,MAAA,CAAO,EAAA,EAAI,CAAA,YAAA,KAAgB;AACtE,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,MAAM,UAAA,GAAa,gBAAA,CAAiB,MAAA,CAAO,MAAA,EAAQ,YAAY,CAAA;AAC/D,QAAA,IAAI,cAAc,IAAA,EAAM;AACtB,UAAA,QAAA,CAAS,QAAQ,UAAU,CAAA;AAAA,QAC7B;AAAA,MACF;AAAA,IACF,CAAC,CAAA,CAAE,KAAA,CAAM,CAAA,CAAA,KAAK;AACZ,MAAA,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,yCAAA,EAA2C,CAAA,EAAG;AAAA,QAC9D,OAAO,MAAA,CAAO;AAAA,OACf,CAAA;AAAA,IACH,CAAC,CAAA;AACD,IAAA,OAAO,aAAA;AAAA,EACT;AAAA,EACA,UAAA,CAAW,MAAA,EAAQ,QAAA,EAAU,OAAA,EAAS;AACpC,IAAA,IAAI,YAAA,GAAe,KAAA;AACnB,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,YAAA,GAAe,IAAA;AAAA,IACjB,CAAA;AACA,IAAA,IAAA,CAAK,YAAA,CAAa,0BAAA,CAA2B,MAAA,CAAO,EAAA,EAAI,CAAA,aAAA,KAAiB;AACvE,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,MAAM,UAAA,GAAa,gBAAA,CAAiB,MAAA,CAAO,MAAA,EAAQ,aAAa,CAAA;AAChE,QAAA,QAAA,CAAS,QAAQ,UAAU,CAAA;AAAA,MAC7B;AAAA,IACF,CAAA,EAAG,OAAO,CAAA,CAAE,KAAA,CAAM,CAAA,CAAA,KAAK;AACrB,MAAA,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,yCAAA,EAA2C,CAAA,EAAG;AAAA,QAC9D,OAAO,MAAA,CAAO;AAAA,OACf,CAAA;AAAA,IACH,CAAC,CAAA;AACD,IAAA,OAAO,aAAA;AAAA,EACT;AAAA,EACA,oBAAA,CAAqB,MAAA,EAAQ,KAAA,EAAO,SAAA,EAAW,OAAA,EAAS;AACtD,IAAA,MAAM,SAAA,GAAYC,0CAAA,CAAY,KAAK,CAAA,CAAE,IAAA;AACrC,IAAA,KAAK,IAAA,CAAK,YAAA,CAAa,qBAAA,CAAsB,MAAA,CAAO,EAAA,EAAI,WAAW,SAAA,EAAW,OAAO,CAAA,CAAE,KAAA,CAAM,CAAA,CAAA,KAAK;AAChG,MAAA,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,mCAAA,EAAqC,CAAA,EAAG;AAAA,QACxD,OAAO,MAAA,CAAO;AAAA,OACf,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACH;AACF,CAAA;AACA,SAAS,eAAA,CAAgB;AAAA,EACvB,aAAA;AAAA,EACA;AACF,CAAA,GAAI,uBAAA,EAAyB;AAC3B,EAAA,MAAM;AAAA,IACJ,UAAU,EAAC;AAAA,IACX,SAAS,EAAC;AAAA,IACV,UAAU;AAAC,GACb,GAAI,aAAA;AACJ,EAAA,OAAO;AAAA,IACL,aAAA,EAAe;AAAA,MACb,OAAA,EAAS,OAAA,CAAQ,GAAA,CAAI,gBAAgB,CAAA;AAAA,MACrC,MAAA,EAAQ,MAAA,CAAO,GAAA,CAAI,gBAAgB,CAAA;AAAA,MACnC,OAAA,EAAS,OAAA,CAAQ,GAAA,CAAI,gBAAgB;AAAA,KACvC;AAAA,IACA,SAAA,EAAW;AAAA,MACT,cAAA,EAAgB,UAAU,cAAA,IAAkB,IAAA,GAAO,CAAC,GAAG,SAAA,CAAU,cAAc,CAAA,GAAI,EAAC;AAAA,MACpF,QAAA,EAAU,UAAU,QAAA,IAAY,IAAA,GAAO,CAAC,GAAG,SAAA,CAAU,QAAQ,CAAA,GAAI;AAAC;AACpE,GACF;AACF;AACA,SAAS,iBAAiB,SAAA,EAAW;AACnC,EAAA,QAAQ,UAAU,IAAA;AAAM,IACtB,KAAK,KAAA;AACH,MAAA,OAAO;AAAA,QACL,IAAA,EAAM;AAAA,OACR;AAAA,IACF,KAAK,SAAA;AACH,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,SAAA;AAAA,QACN,SAAS,SAAA,CAAU;AAAA,OACrB;AAAA,IACF,KAAK,QAAA;AACH,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,QAAA;AAAA,QACN,QAAQ,SAAA,CAAU;AAAA,OACpB;AAAA,IACF;AACE,MAAAC,qBAAA,CAAY,SAAS,CAAA;AAAA;AAE3B","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 { 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 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 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: \"unknown\",\n security: {\n discretionary: {\n owners: []\n },\n mandatory: {}\n },\n updatedBy: doc.updatedBy,\n updatedTime: doc.updatedTime\n })),\n nextPageToken: searchResponse.nextPageToken\n };\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 const metadata = {\n documentTypeName: document.documentTypeName,\n name: document.name,\n ontologyRid: \"unknown\",\n security: {\n discretionary: {\n owners: []\n },\n mandatory: {}\n }\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 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 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 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}"]}
@@ -114,9 +114,10 @@ function getPresenceEvent(documentSchema, foundryUpdate) {
114
114
  case "customPresenceEvent": {
115
115
  const {
116
116
  userId,
117
- eventData
117
+ eventData,
118
+ eventType
118
119
  } = foundryUpdate;
119
- const presenceEventData = getPresenceEventData(documentSchema, eventData);
120
+ const presenceEventData = getPresenceEventData(documentSchema, eventType, eventData);
120
121
  return {
121
122
  eventData: presenceEventData,
122
123
  userId
@@ -136,36 +137,17 @@ function getPresenceEvent(documentSchema, foundryUpdate) {
136
137
  }
137
138
  }
138
139
  }
139
- function getPresenceEventData(docSchema, eventData) {
140
- if (typeof eventData !== "object" || eventData == null) {
141
- return {
142
- rawData: eventData,
143
- rawType: "unknown",
144
- type: PresenceEventDataType.UNKNOWN
145
- };
146
- }
147
- const typedEventData = eventData;
148
- const {
149
- eventType,
150
- eventData: data
151
- } = typedEventData;
152
- if (typeof eventType !== "string") {
153
- return {
154
- rawData: eventData,
155
- rawType: "unknown",
156
- type: PresenceEventDataType.UNKNOWN
157
- };
158
- }
140
+ function getPresenceEventData(docSchema, eventType, eventData) {
159
141
  const model = docSchema[eventType];
160
142
  if (model == null) {
161
143
  return {
162
- rawData: data,
144
+ rawData: eventData,
163
145
  rawType: eventType,
164
146
  type: PresenceEventDataType.UNKNOWN
165
147
  };
166
148
  }
167
149
  return {
168
- eventData: data,
150
+ eventData,
169
151
  model,
170
152
  type: PresenceEventDataType.CUSTOM_EVENT
171
153
  };
@@ -227,11 +209,13 @@ var FoundryDocumentService = class extends BaseYjsDocumentService {
227
209
  searchDocuments = async (documentTypeName, schema, options) => {
228
210
  const request = {
229
211
  documentTypeName,
230
- searchQuery: options != null ? {
231
- documentName: options.documentName,
232
- pageSize: options.pageSize,
233
- pageToken: options.pageToken
234
- } : void 0
212
+ requestBody: {
213
+ query: options?.documentName != null ? {
214
+ documentName: options.documentName
215
+ } : void 0,
216
+ pageSize: options?.pageSize,
217
+ pageToken: options?.pageToken
218
+ }
235
219
  };
236
220
  const searchResponse = await Documents.search(this.app.config.osdkClient, request, {
237
221
  preview: this.config.usePreviewApi ?? DEFAULT_USE_PREVIEW_API
@@ -344,9 +328,9 @@ var FoundryDocumentService = class extends BaseYjsDocumentService {
344
328
  });
345
329
  return unsubscribeFn;
346
330
  }
347
- updateCustomPresence(docRef, model, eventData) {
331
+ updateCustomPresence(docRef, model, eventData, options) {
348
332
  const eventType = getMetadata(model).name;
349
- void this.eventService.publishCustomPresence(docRef.id, eventType, eventData).catch((e) => {
333
+ void this.eventService.publishCustomPresence(docRef.id, eventType, eventData, options).catch((e) => {
350
334
  this.logger.error("Failed to publish custom presence", e, {
351
335
  docId: docRef.id
352
336
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/eventMappers.ts","../../src/FoundryDocumentService.ts"],"names":["config"],"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 } = foundryUpdate;\n const presenceEventData = getPresenceEventData(documentSchema, 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, eventData) {\n if (typeof eventData !== \"object\" || eventData == null) {\n return {\n rawData: eventData,\n rawType: \"unknown\",\n type: PresenceEventDataType.UNKNOWN\n };\n }\n const typedEventData = eventData;\n const {\n eventType,\n eventData: data\n } = typedEventData;\n if (typeof eventType !== \"string\") {\n return {\n rawData: eventData,\n rawType: \"unknown\",\n type: PresenceEventDataType.UNKNOWN\n };\n }\n const model = docSchema[eventType];\n if (model == null) {\n return {\n rawData: data,\n rawType: eventType,\n type: PresenceEventDataType.UNKNOWN\n };\n }\n return {\n eventData: data,\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 { 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 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 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 searchQuery: options != null ? {\n documentName: options.documentName,\n pageSize: options.pageSize,\n pageToken: options.pageToken\n } : undefined\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: \"unknown\",\n security: {\n discretionary: {\n owners: []\n },\n mandatory: {}\n },\n updatedBy: doc.updatedBy,\n updatedTime: doc.updatedTime\n })),\n nextPageToken: searchResponse.nextPageToken\n };\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 const metadata = {\n documentTypeName: document.documentTypeName,\n name: document.name,\n ontologyRid: \"unknown\",\n security: {\n discretionary: {\n owners: []\n },\n mandatory: {}\n }\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 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 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 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) {\n const eventType = getMetadata(model).name;\n void this.eventService.publishCustomPresence(docRef.id, eventType, eventData).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}"]}
1
+ {"version":3,"sources":["../../src/eventMappers.ts","../../src/FoundryDocumentService.ts"],"names":["config"],"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 { 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 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 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: \"unknown\",\n security: {\n discretionary: {\n owners: []\n },\n mandatory: {}\n },\n updatedBy: doc.updatedBy,\n updatedTime: doc.updatedTime\n })),\n nextPageToken: searchResponse.nextPageToken\n };\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 const metadata = {\n documentTypeName: document.documentTypeName,\n name: document.name,\n ontologyRid: \"unknown\",\n security: {\n discretionary: {\n owners: []\n },\n mandatory: {}\n }\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 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 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 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}"]}
@@ -1,5 +1,5 @@
1
1
  import { type ModuleConfigTuple, type PackAppInternal, type Unsubscribe } from "@palantir/pack.core";
2
- import type { ActivityEvent, DocumentMetadata, DocumentRef, DocumentSchema, Model, ModelData, PresenceEvent, PresenceSubscriptionOptions } from "@palantir/pack.document-schema.model-types";
2
+ import type { ActivityEvent, DocumentMetadata, DocumentRef, DocumentSchema, Model, ModelData, PresenceEvent, PresencePublishOptions, PresenceSubscriptionOptions } from "@palantir/pack.document-schema.model-types";
3
3
  import type { CreateDocumentMetadata, DocumentService, InternalYjsDoc, SearchDocumentsResult } from "@palantir/pack.state.core";
4
4
  import { BaseYjsDocumentService } from "@palantir/pack.state.core";
5
5
  import type { FoundryEventService, SyncSession } from "@palantir/pack.state.foundry-event";
@@ -30,6 +30,6 @@ export declare class FoundryDocumentService extends BaseYjsDocumentService<Found
30
30
  protected onDataSubscriptionClosed(internalDoc: FoundryInternalDoc, _docRef: DocumentRef): void;
31
31
  onActivity<T extends DocumentSchema>(docRef: DocumentRef<T>, callback: (docRef: DocumentRef<T>, event: ActivityEvent) => void): Unsubscribe;
32
32
  onPresence<T extends DocumentSchema>(docRef: DocumentRef<T>, callback: (docRef: DocumentRef<T>, event: PresenceEvent) => void, options?: PresenceSubscriptionOptions): Unsubscribe;
33
- updateCustomPresence<M extends Model>(docRef: DocumentRef, model: M, eventData: ModelData<M>): void;
33
+ updateCustomPresence<M extends Model>(docRef: DocumentRef, model: M, eventData: ModelData<M>, options?: PresencePublishOptions): void;
34
34
  }
35
35
  export {};
@@ -1 +1 @@
1
- {"mappings":"AAwBA,cAGO,wBACA,sBACA,mBACA;AACP,cACE,eAEA,kBACA,aACA,gBAEA,OACA,WACA,eACA,mCACK;AAEP,cACE,wBACA,iBACA,gBACA,6BACK;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;CAuBvB,SAAS,kBAAyB,UAAU,gBAC1C,0BACA,QAAQ,GACR,UAAU;EACR;EACA;EACA;OAED,QAAQ;CAoCX,UAAU,6BACR,aAAa,oBACb,QAAQ;CAwCV,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;CAwBH,WAAW,UAAU,gBACnB,QAAQ,YAAY,IACpB,WAAW,QAAQ,YAAY,IAAI,OAAO,wBAC1C,UAAU,8BACT;CA0BH,qBAAqB,UAAU,OAC7B,QAAQ,aACR,OAAO,GACP,WAAW,UAAU","names":["config: FoundryDocumentServiceConfig","eventService: FoundryEventService"],"sources":["../../src/FoundryDocumentService.ts"],"version":3,"file":"FoundryDocumentService.d.ts"}
1
+ {"mappings":"AAwBA,cAGO,wBACA,sBACA,mBACA;AACP,cACE,eAEA,kBACA,aACA,gBAEA,OACA,WACA,eACA,wBACA,mCACK;AAEP,cACE,wBACA,iBACA,gBACA,6BACK;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;CAuBvB,SAAS,kBAAyB,UAAU,gBAC1C,0BACA,QAAQ,GACR,UAAU;EACR;EACA;EACA;OAED,QAAQ;CAkCX,UAAU,6BACR,aAAa,oBACb,QAAQ;CAwCV,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;CAwBH,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@palantir/pack.state.foundry",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "PACK State service that integrates with Palantir Foundry platform APIs.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -28,16 +28,16 @@
28
28
  }
29
29
  },
30
30
  "dependencies": {
31
- "@osdk/api": "~2.5.2",
32
- "@osdk/foundry.pack": "~2.46.0",
31
+ "@osdk/api": "^2.5.2",
32
+ "@osdk/foundry.pack": "^2.47.0",
33
33
  "conjure-client": "^2.15.0",
34
34
  "remeda": "^2.32.0",
35
35
  "yjs": "^13.6.27",
36
- "@palantir/pack.auth": "0.1.1",
37
- "@palantir/pack.core": "0.2.1",
38
- "@palantir/pack.document-schema.model-types": "0.3.0",
39
- "@palantir/pack.state.foundry-event": "0.2.0",
40
- "@palantir/pack.state.core": "0.3.0"
36
+ "@palantir/pack.auth": "0.1.2",
37
+ "@palantir/pack.core": "0.2.2",
38
+ "@palantir/pack.document-schema.model-types": "0.4.0",
39
+ "@palantir/pack.state.core": "0.4.0",
40
+ "@palantir/pack.state.foundry-event": "0.3.0"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@types/node": "^20.19.17",
@@ -39,6 +39,7 @@ import type {
39
39
  Model,
40
40
  ModelData,
41
41
  PresenceEvent,
42
+ PresencePublishOptions,
42
43
  PresenceSubscriptionOptions,
43
44
  } from "@palantir/pack.document-schema.model-types";
44
45
  import { getMetadata } from "@palantir/pack.document-schema.model-types";
@@ -167,13 +168,11 @@ export class FoundryDocumentService extends BaseYjsDocumentService<FoundryIntern
167
168
  ): Promise<SearchDocumentsResult> => {
168
169
  const request: SearchDocumentsRequest = {
169
170
  documentTypeName,
170
- searchQuery: options != null
171
- ? {
172
- documentName: options.documentName,
173
- pageSize: options.pageSize,
174
- pageToken: options.pageToken,
175
- }
176
- : undefined,
171
+ requestBody: {
172
+ query: options?.documentName != null ? { documentName: options.documentName } : undefined,
173
+ pageSize: options?.pageSize,
174
+ pageToken: options?.pageToken,
175
+ },
177
176
  };
178
177
 
179
178
  const searchResponse = await Documents.search(
@@ -335,11 +334,12 @@ export class FoundryDocumentService extends BaseYjsDocumentService<FoundryIntern
335
334
  docRef: DocumentRef,
336
335
  model: M,
337
336
  eventData: ModelData<M>,
337
+ options?: PresencePublishOptions,
338
338
  ): void {
339
339
  const eventType = getMetadata(model).name;
340
340
 
341
341
  void this.eventService
342
- .publishCustomPresence(docRef.id, eventType, eventData)
342
+ .publishCustomPresence(docRef.id, eventType, eventData, options)
343
343
  .catch((e: unknown) => {
344
344
  this.logger.error("Failed to publish custom presence", e, {
345
345
  docId: docRef.id,
@@ -201,8 +201,8 @@ export function getPresenceEvent(
201
201
  }
202
202
 
203
203
  case "customPresenceEvent": {
204
- const { userId, eventData } = foundryUpdate;
205
- const presenceEventData = getPresenceEventData(documentSchema, eventData);
204
+ const { userId, eventData, eventType } = foundryUpdate;
205
+ const presenceEventData = getPresenceEventData(documentSchema, eventType, eventData);
206
206
  return {
207
207
  eventData: presenceEventData,
208
208
  userId: userId as UserId,
@@ -226,38 +226,20 @@ export function getPresenceEvent(
226
226
 
227
227
  function getPresenceEventData(
228
228
  docSchema: DocumentSchema,
229
+ eventType: string,
229
230
  eventData: unknown,
230
231
  ): PresenceEventData {
231
- if (typeof eventData !== "object" || eventData == null) {
232
- return {
233
- rawData: eventData,
234
- rawType: "unknown",
235
- type: PresenceEventDataType.UNKNOWN,
236
- };
237
- }
238
-
239
- const typedEventData = eventData as Record<string, unknown>;
240
- const { eventType, eventData: data } = typedEventData;
241
-
242
- if (typeof eventType !== "string") {
243
- return {
244
- rawData: eventData,
245
- rawType: "unknown",
246
- type: PresenceEventDataType.UNKNOWN,
247
- };
248
- }
249
-
250
232
  const model = docSchema[eventType];
251
233
  if (model == null) {
252
234
  return {
253
- rawData: data,
235
+ rawData: eventData,
254
236
  rawType: eventType,
255
237
  type: PresenceEventDataType.UNKNOWN,
256
238
  };
257
239
  }
258
240
 
259
241
  return {
260
- eventData: data,
242
+ eventData,
261
243
  model,
262
244
  type: PresenceEventDataType.CUSTOM_EVENT,
263
245
  };