@casual-simulation/aux-records 3.5.3 → 3.7.0-alpha.16977445547

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.
Files changed (78) hide show
  1. package/ComIdConfig.d.ts +8 -0
  2. package/ComIdConfig.js +1 -0
  3. package/ComIdConfig.js.map +1 -1
  4. package/DataRecordsController.d.ts +4 -0
  5. package/DataRecordsController.js +21 -0
  6. package/DataRecordsController.js.map +1 -1
  7. package/DataRecordsStore.d.ts +5 -0
  8. package/DataRecordsStore.js.map +1 -1
  9. package/PolicyController.js +2 -1
  10. package/PolicyController.js.map +1 -1
  11. package/PolicyStore.d.ts +13 -0
  12. package/PolicyStore.js +16 -0
  13. package/PolicyStore.js.map +1 -1
  14. package/RecordsController.d.ts +5 -0
  15. package/RecordsServer.d.ts +144 -4
  16. package/RecordsServer.js +214 -1
  17. package/RecordsServer.js.map +1 -1
  18. package/ServerConfig.d.ts +447 -0
  19. package/ServerConfig.js +54 -0
  20. package/ServerConfig.js.map +1 -1
  21. package/SubscriptionConfigBuilder.d.ts +3 -1
  22. package/SubscriptionConfigBuilder.js +10 -0
  23. package/SubscriptionConfigBuilder.js.map +1 -1
  24. package/SubscriptionConfiguration.d.ts +229 -0
  25. package/SubscriptionConfiguration.js +35 -0
  26. package/SubscriptionConfiguration.js.map +1 -1
  27. package/crud/CrudRecordsController.d.ts +12 -8
  28. package/crud/CrudRecordsController.js +29 -12
  29. package/crud/CrudRecordsController.js.map +1 -1
  30. package/crud/CrudRecordsControllerTests.d.ts +5 -5
  31. package/crud/CrudRecordsControllerTests.js +128 -69
  32. package/crud/CrudRecordsControllerTests.js.map +1 -1
  33. package/index.d.ts +1 -0
  34. package/index.js +1 -0
  35. package/index.js.map +1 -1
  36. package/notifications/NotificationRecordsController.d.ts +1 -1
  37. package/notifications/NotificationRecordsController.js.map +1 -1
  38. package/package.json +4 -3
  39. package/packages/PackageRecordsController.d.ts +1 -1
  40. package/packages/PackageRecordsController.js.map +1 -1
  41. package/queue/MemoryQueue.d.ts +24 -0
  42. package/queue/MemoryQueue.js +45 -0
  43. package/queue/MemoryQueue.js.map +1 -0
  44. package/queue/Queue.d.ts +12 -0
  45. package/queue/Queue.js +19 -0
  46. package/queue/Queue.js.map +1 -0
  47. package/queue/index.d.ts +2 -0
  48. package/queue/index.js +19 -0
  49. package/queue/index.js.map +1 -0
  50. package/search/MemorySearchInterface.d.ts +25 -0
  51. package/search/MemorySearchInterface.js +192 -0
  52. package/search/MemorySearchInterface.js.map +1 -0
  53. package/search/MemorySearchRecordsStore.d.ts +21 -0
  54. package/search/MemorySearchRecordsStore.js +80 -0
  55. package/search/MemorySearchRecordsStore.js.map +1 -0
  56. package/search/SearchInterface.d.ts +329 -0
  57. package/search/SearchInterface.js +19 -0
  58. package/search/SearchInterface.js.map +1 -0
  59. package/search/SearchRecordsController.d.ts +491 -0
  60. package/search/SearchRecordsController.js +521 -0
  61. package/search/SearchRecordsController.js.map +1 -0
  62. package/search/SearchRecordsStore.d.ts +176 -0
  63. package/search/SearchRecordsStore.js +2 -0
  64. package/search/SearchRecordsStore.js.map +1 -0
  65. package/search/SearchSyncProcessor.d.ts +162 -0
  66. package/search/SearchSyncProcessor.js +256 -0
  67. package/search/SearchSyncProcessor.js.map +1 -0
  68. package/search/TypesenseSearchInterface.d.ts +18 -0
  69. package/search/TypesenseSearchInterface.js +171 -0
  70. package/search/TypesenseSearchInterface.js.map +1 -0
  71. package/search/index.d.ts +7 -0
  72. package/search/index.js +24 -0
  73. package/search/index.js.map +1 -0
  74. package/webhooks/WebhookRecordsController.d.ts +3 -3
  75. package/webhooks/WebhookRecordsController.js +3 -3
  76. package/webhooks/WebhookRecordsController.js.map +1 -1
  77. package/websockets/WebsocketController.js +30 -25
  78. package/websockets/WebsocketController.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"PolicyStore.js","sourceRoot":"","sources":["PolicyStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PolicyStore.js","sourceRoot":"","sources":["PolicyStore.ts"],"names":[],"mappings":"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"}
@@ -607,6 +607,11 @@ export interface GetPlayerConfigSuccess {
607
607
  * The URL that the comId logo is available at.
608
608
  */
609
609
  logoUrl: string;
610
+ /**
611
+ * The background color of the background of the logo.
612
+ * This is used to set the background color of the splash screen.
613
+ */
614
+ logoBackgroundColor?: string;
610
615
  /**
611
616
  * The config that should be used for the player.
612
617
  */
@@ -17,6 +17,7 @@ import type { WebhookRecordsController } from './webhooks/WebhookRecordsControll
17
17
  import type { NotificationRecordsController } from './notifications/NotificationRecordsController';
18
18
  import type { PackageRecordsController } from './packages/PackageRecordsController';
19
19
  import type { PackageVersionRecordsController } from './packages/version/PackageVersionRecordsController';
20
+ import type { SearchRecordsController } from './search';
20
21
  export declare const NOT_LOGGED_IN_RESULT: {
21
22
  success: false;
22
23
  errorCode: "not_logged_in";
@@ -213,6 +214,11 @@ export interface RecordsServerOptions {
213
214
  * If null, then package versions are not supported.
214
215
  */
215
216
  packageVersionController?: PackageVersionRecordsController | null;
217
+ /**
218
+ * The controller that should be used for handling search records.
219
+ * If null, then search records are not supported.
220
+ */
221
+ searchRecordsController?: SearchRecordsController | null;
216
222
  }
217
223
  /**
218
224
  * Defines a class that represents a generic HTTP server suitable for Records HTTP Requests.
@@ -234,6 +240,7 @@ export declare class RecordsServer {
234
240
  private _notificationsController;
235
241
  private _packagesController;
236
242
  private _packageVersionController;
243
+ private _searchRecordsController;
237
244
  /**
238
245
  * The set of origins that are allowed for API requests.
239
246
  */
@@ -856,7 +863,7 @@ export declare class RecordsServer {
856
863
  fileDescription?: string;
857
864
  };
858
865
  entitlements?: {
859
- feature?: "inst" | "data" | "event" | "file" | "webhook" | "notification" | "package" | "permissions" | "ai";
866
+ feature?: "search" | "inst" | "data" | "event" | "file" | "webhook" | "notification" | "package" | "permissions" | "ai";
860
867
  scope?: "shared" | "personal" | "owned" | "studio" | "designated";
861
868
  designatedRecords?: string[];
862
869
  }[];
@@ -925,6 +932,129 @@ export declare class RecordsServer {
925
932
  errorCode: "not_supported";
926
933
  errorMessage: string;
927
934
  }, any>;
935
+ recordSearchCollection: Procedure<{
936
+ recordName?: string;
937
+ item?: {
938
+ address?: string;
939
+ markers?: [string, ...string[]];
940
+ schema?: z.objectOutputType<{}, z.ZodObject<{
941
+ type: z.ZodEnum<["string", "string[]", "int32", "int32[]", "int64", "int64[]", "float", "float[]", "bool", "bool[]", "geopoint", "geopoint[]", "geopolygon", "object", "object[]", "string*", "image", "auto"]>;
942
+ optional: z.ZodNullable<z.ZodOptional<z.ZodBoolean>>;
943
+ index: z.ZodNullable<z.ZodOptional<z.ZodBoolean>>;
944
+ store: z.ZodNullable<z.ZodOptional<z.ZodBoolean>>;
945
+ sort: z.ZodNullable<z.ZodOptional<z.ZodBoolean>>;
946
+ infix: z.ZodNullable<z.ZodOptional<z.ZodBoolean>>;
947
+ locale: z.ZodNullable<z.ZodOptional<z.ZodString>>;
948
+ stem: z.ZodNullable<z.ZodOptional<z.ZodBoolean>>;
949
+ drop: z.ZodNullable<z.ZodOptional<z.ZodBoolean>>;
950
+ }, "strip", z.ZodTypeAny, {
951
+ type?: "string" | "object" | "float" | "auto" | "image" | "string[]" | "int32" | "int32[]" | "int64" | "int64[]" | "float[]" | "bool" | "bool[]" | "geopoint" | "geopoint[]" | "geopolygon" | "object[]" | "string*";
952
+ optional?: boolean;
953
+ index?: boolean;
954
+ store?: boolean;
955
+ sort?: boolean;
956
+ infix?: boolean;
957
+ locale?: string;
958
+ stem?: boolean;
959
+ drop?: boolean;
960
+ }, {
961
+ type?: "string" | "object" | "float" | "auto" | "image" | "string[]" | "int32" | "int32[]" | "int64" | "int64[]" | "float[]" | "bool" | "bool[]" | "geopoint" | "geopoint[]" | "geopolygon" | "object[]" | "string*";
962
+ optional?: boolean;
963
+ index?: boolean;
964
+ store?: boolean;
965
+ sort?: boolean;
966
+ infix?: boolean;
967
+ locale?: string;
968
+ stem?: boolean;
969
+ drop?: boolean;
970
+ }>, "strip">;
971
+ };
972
+ instances?: string[];
973
+ }, import("./crud").CrudRecordItemResult, any>;
974
+ getSearchCollection: Procedure<{
975
+ recordName?: string;
976
+ address?: string;
977
+ instances?: string[];
978
+ }, import("./crud").CrudGetItemResult<any>, any>;
979
+ eraseSearchCollection: Procedure<{
980
+ recordName?: string;
981
+ address?: string;
982
+ instances?: string[];
983
+ }, import("./crud").CrudEraseItemResult, any>;
984
+ listSearchCollections: Procedure<{
985
+ recordName?: string;
986
+ address?: string;
987
+ marker?: string;
988
+ sort?: "ascending" | "descending";
989
+ instances?: string[];
990
+ }, import("./AuthController").ValidateSessionKeyFailure | import("./crud").CrudListItemsFailure | import("./crud").CrudListItemsSuccess<any> | {
991
+ success: false;
992
+ errorCode: "not_supported";
993
+ errorMessage: string;
994
+ }, any>;
995
+ recordSearchDocument: Procedure<{
996
+ recordName?: string;
997
+ address?: string;
998
+ document?: z.objectOutputType<{
999
+ recordName: z.ZodNullable<z.ZodOptional<z.ZodString>>;
1000
+ address: z.ZodNullable<z.ZodOptional<z.ZodString>>;
1001
+ resourceKind: z.ZodNullable<z.ZodOptional<z.ZodEnum<["data", "file", "event", "marker", "role", "inst", "loom", "ai.sloyd", "ai.hume", "ai.openai.realtime", "webhook", "notification", "package", "package.version", "search"]>>>;
1002
+ }, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString, "many">, z.ZodArray<z.ZodNumber, "many">, z.ZodArray<z.ZodBoolean, "many">, z.ZodEffects<z.ZodObject<{}, "strip", z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>, z.objectOutputType<{}, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>, "strip">, z.objectInputType<{}, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>, "strip">>, z.objectOutputType<{}, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>, "strip">, z.objectInputType<{}, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>, "strip">>]>, "strip">;
1003
+ instances?: string[];
1004
+ }, import("./AuthController").ValidateSessionKeyFailure | {
1005
+ success: false;
1006
+ errorCode: "not_logged_in";
1007
+ errorMessage: "The user is not logged in. A session key must be provided for this operation.";
1008
+ } | import("@casual-simulation/aux-common").GenericResult<import("./search").SearchDocumentInfo, import("@casual-simulation/aux-common").SimpleError>, any>;
1009
+ eraseSearchDocument: Procedure<{
1010
+ recordName?: string;
1011
+ address?: string;
1012
+ documentId?: string;
1013
+ instances?: string[];
1014
+ }, import("./AuthController").ValidateSessionKeyFailure | {
1015
+ success: false;
1016
+ errorCode: "not_logged_in";
1017
+ errorMessage: "The user is not logged in. A session key must be provided for this operation.";
1018
+ } | import("@casual-simulation/aux-common").GenericResult<import("./search").SearchDocumentInfo, import("@casual-simulation/aux-common").SimpleError>, any>;
1019
+ syncSearchRecord: Procedure<{
1020
+ recordName?: string;
1021
+ address?: string;
1022
+ targetRecordName?: string;
1023
+ targetResourceKind?: "data";
1024
+ targetMarker?: string;
1025
+ targetMapping?: [string, string, ...unknown[]][];
1026
+ instances?: string[];
1027
+ }, import("./AuthController").ValidateSessionKeyFailure | {
1028
+ success: false;
1029
+ errorCode: "not_logged_in";
1030
+ errorMessage: "The user is not logged in. A session key must be provided for this operation.";
1031
+ } | import("@casual-simulation/aux-common").GenericResult<{
1032
+ syncId: string;
1033
+ }, import("@casual-simulation/aux-common").SimpleError>, any>;
1034
+ unsyncSearchRecord: Procedure<{
1035
+ syncId?: string;
1036
+ instances?: string[];
1037
+ }, import("./AuthController").ValidateSessionKeyFailure | {
1038
+ success: false;
1039
+ errorCode: "not_logged_in";
1040
+ errorMessage: "The user is not logged in. A session key must be provided for this operation.";
1041
+ } | import("@casual-simulation/aux-common").GenericResult<void, import("@casual-simulation/aux-common").SimpleError>, any>;
1042
+ search: Procedure<{
1043
+ recordName?: string;
1044
+ address?: string;
1045
+ query?: z.objectOutputType<{
1046
+ q: z.ZodString;
1047
+ queryBy: z.ZodString;
1048
+ filterBy: z.ZodNullable<z.ZodOptional<z.ZodString>>;
1049
+ }, z.ZodUnion<[z.ZodString, z.ZodBoolean, z.ZodNumber]>, "strip">;
1050
+ instances?: string[];
1051
+ }, import("./AuthController").ValidateSessionKeyFailure | import("@casual-simulation/aux-common").GenericResult<{
1052
+ found: number;
1053
+ outOf: number;
1054
+ page: number;
1055
+ searchTimeMs: number;
1056
+ hits: import("./search").SearchHit[];
1057
+ }, import("@casual-simulation/aux-common").SimpleError>, any>;
928
1058
  listRecords: Procedure<{
929
1059
  studioId?: string;
930
1060
  userId?: string;
@@ -1062,6 +1192,14 @@ export declare class RecordsServer {
1062
1192
  expireTimeMs?: number;
1063
1193
  resourceKind?: "package.version";
1064
1194
  action?: "create" | "read" | "update" | "delete" | "list" | "run";
1195
+ } | {
1196
+ marker?: string;
1197
+ subjectType?: "inst" | "user" | "role";
1198
+ subjectId?: string;
1199
+ resourceId?: string;
1200
+ expireTimeMs?: number;
1201
+ resourceKind?: "search";
1202
+ action?: "create" | "read" | "update" | "delete" | "list";
1065
1203
  };
1066
1204
  instances?: string[];
1067
1205
  }, import("./AuthController").ValidateSessionKeyFailure | import("./PolicyController").GrantMarkerPermissionSuccess | import("./PolicyController").GrantMarkerPermissionFailure | {
@@ -1076,7 +1214,7 @@ export declare class RecordsServer {
1076
1214
  listPermissions: Procedure<{
1077
1215
  recordName?: string;
1078
1216
  marker?: string;
1079
- resourceKind?: "data" | "role" | "event" | "inst" | "file" | "marker" | "loom" | "ai.sloyd" | "ai.hume" | "ai.openai.realtime" | "webhook" | "notification" | "package" | "package.version";
1217
+ resourceKind?: "search" | "data" | "role" | "event" | "inst" | "file" | "marker" | "loom" | "ai.sloyd" | "ai.hume" | "ai.openai.realtime" | "webhook" | "notification" | "package" | "package.version";
1080
1218
  resourceId?: string;
1081
1219
  }, import("./AuthController").ValidateSessionKeyFailure | import("./PolicyController").ListPermissionsFailure | import("./PolicyController").ListPermissionsForMarkerSuccess | import("./PolicyController").ListPermissionsForResourceSuccess, any>;
1082
1220
  listUserRoles: Procedure<{
@@ -1114,7 +1252,7 @@ export declare class RecordsServer {
1114
1252
  packageId?: string;
1115
1253
  userId?: string;
1116
1254
  recordName?: string;
1117
- feature?: "data" | "event" | "inst" | "file" | "webhook" | "notification" | "package" | "permissions" | "ai";
1255
+ feature?: "search" | "data" | "event" | "inst" | "file" | "webhook" | "notification" | "package" | "permissions" | "ai";
1118
1256
  scope?: "designated";
1119
1257
  expireTimeMs?: number;
1120
1258
  }, import("./PolicyController").GrantEntitlementResult, any>;
@@ -1339,6 +1477,7 @@ export declare class RecordsServer {
1339
1477
  id?: string;
1340
1478
  displayName?: string;
1341
1479
  logoUrl?: string;
1480
+ logoBackgroundColor?: string;
1342
1481
  comIdConfig?: {
1343
1482
  allowedStudioCreators?: "anyone" | "only-members";
1344
1483
  };
@@ -1350,6 +1489,7 @@ export declare class RecordsServer {
1350
1489
  allowedBiosOptions?: ("studio" | "enter join code" | "join inst" | "static inst" | "local inst" | "local" | "public inst" | "private inst" | "free inst" | "free" | "studio inst" | "sign in" | "sign up" | "sign out" | "delete inst")[];
1351
1490
  defaultBiosOption?: "studio" | "enter join code" | "join inst" | "static inst" | "local inst" | "local" | "public inst" | "private inst" | "free inst" | "free" | "studio inst" | "sign in" | "sign up" | "sign out" | "delete inst";
1352
1491
  automaticBiosOption?: "studio" | "enter join code" | "join inst" | "static inst" | "local inst" | "local" | "public inst" | "private inst" | "free inst" | "free" | "studio inst" | "sign in" | "sign up" | "sign out" | "delete inst";
1492
+ logoBackgroundColor?: string;
1353
1493
  };
1354
1494
  loomConfig?: {
1355
1495
  appId?: string;
@@ -1520,7 +1660,7 @@ export declare class RecordsServer {
1520
1660
  success: true;
1521
1661
  }, any>;
1522
1662
  };
1523
- constructor({ allowedAccountOrigins, allowedApiOrigins, authController, livekitController, recordsController, eventsController, dataController, manualDataController, filesController, subscriptionController, websocketController, websocketRateLimitController, rateLimitController, policyController, aiController, moderationController, loomController, webhooksController, notificationsController, packagesController, packageVersionController, }: RecordsServerOptions);
1663
+ constructor({ allowedAccountOrigins, allowedApiOrigins, authController, livekitController, recordsController, eventsController, dataController, manualDataController, filesController, subscriptionController, websocketController, websocketRateLimitController, rateLimitController, policyController, aiController, moderationController, loomController, webhooksController, notificationsController, packagesController, packageVersionController, searchRecordsController, }: RecordsServerOptions);
1524
1664
  private _createProcedures;
1525
1665
  private _setupRoutes;
1526
1666
  /**
package/RecordsServer.js CHANGED
@@ -41,6 +41,8 @@ import { eraseItemProcedure, getItemProcedure, listItemsProcedure, recordItemPro
41
41
  import { merge, omit } from 'lodash';
42
42
  import { PUSH_NOTIFICATION_PAYLOAD, PUSH_SUBSCRIPTION_SCHEMA, } from './notifications';
43
43
  import { getPackageVersionSpecifier } from './packages/version/PackageVersionRecordsStore';
44
+ import { SEARCH_COLLECTION_SCHEMA, SEARCH_DOCUMENT_SCHEMA } from './search';
45
+ import { genericResult } from '@casual-simulation/aux-common';
44
46
  export const NOT_LOGGED_IN_RESULT = {
45
47
  success: false,
46
48
  errorCode: 'not_logged_in',
@@ -119,7 +121,7 @@ export class RecordsServer {
119
121
  get procedures() {
120
122
  return this._procedures;
121
123
  }
122
- constructor({ allowedAccountOrigins, allowedApiOrigins, authController, livekitController, recordsController, eventsController, dataController, manualDataController, filesController, subscriptionController, websocketController, websocketRateLimitController, rateLimitController, policyController, aiController, moderationController, loomController, webhooksController, notificationsController, packagesController, packageVersionController, }) {
124
+ constructor({ allowedAccountOrigins, allowedApiOrigins, authController, livekitController, recordsController, eventsController, dataController, manualDataController, filesController, subscriptionController, websocketController, websocketRateLimitController, rateLimitController, policyController, aiController, moderationController, loomController, webhooksController, notificationsController, packagesController, packageVersionController, searchRecordsController, }) {
123
125
  /**
124
126
  * The map of paths to routes that they match.
125
127
  */
@@ -146,6 +148,7 @@ export class RecordsServer {
146
148
  this._notificationsController = notificationsController;
147
149
  this._packagesController = packagesController;
148
150
  this._packageVersionController = packageVersionController;
151
+ this._searchRecordsController = searchRecordsController;
149
152
  this._tracer = trace.getTracer('RecordsServer', typeof GIT_TAG === 'undefined' ? undefined : GIT_TAG);
150
153
  this._procedures = this._createProcedures();
151
154
  this._setupRoutes();
@@ -1603,6 +1606,207 @@ export class RecordsServer {
1603
1606
  });
1604
1607
  return result;
1605
1608
  }),
1609
+ recordSearchCollection: recordItemProcedure(this._auth, this._searchRecordsController, z.object({
1610
+ address: ADDRESS_VALIDATION,
1611
+ markers: MARKERS_VALIDATION,
1612
+ schema: SEARCH_COLLECTION_SCHEMA,
1613
+ }), procedure()
1614
+ .origins('api')
1615
+ .http('POST', '/api/v2/records/search/collection')),
1616
+ getSearchCollection: getItemProcedure(this._auth, this._searchRecordsController, procedure()
1617
+ .origins('api')
1618
+ .http('GET', '/api/v2/records/search/collection')),
1619
+ eraseSearchCollection: eraseItemProcedure(this._auth, this._searchRecordsController, procedure()
1620
+ .origins('api')
1621
+ .http('DELETE', '/api/v2/records/search/collection')),
1622
+ listSearchCollections: listItemsProcedure(this._auth, this._searchRecordsController, procedure()
1623
+ .origins('api')
1624
+ .http('GET', '/api/v2/records/search/collection/list')),
1625
+ recordSearchDocument: procedure()
1626
+ .origins('api')
1627
+ .http('POST', '/api/v2/records/search/document')
1628
+ .inputs(z.object({
1629
+ recordName: RECORD_NAME_VALIDATION,
1630
+ address: ADDRESS_VALIDATION,
1631
+ document: SEARCH_DOCUMENT_SCHEMA,
1632
+ instances: INSTANCES_ARRAY_VALIDATION.optional(),
1633
+ }))
1634
+ .handler(async ({ recordName, address, document, instances }, context) => {
1635
+ if (!this._searchRecordsController) {
1636
+ return {
1637
+ success: false,
1638
+ errorCode: 'not_supported',
1639
+ errorMessage: 'This feature is not supported.',
1640
+ };
1641
+ }
1642
+ const validation = await this._validateSessionKey(context.sessionKey);
1643
+ if (validation.success === false) {
1644
+ if (validation.errorCode === 'no_session_key') {
1645
+ return NOT_LOGGED_IN_RESULT;
1646
+ }
1647
+ return validation;
1648
+ }
1649
+ const result = await this._searchRecordsController.storeDocument({
1650
+ recordName,
1651
+ address,
1652
+ document,
1653
+ userId: validation.userId,
1654
+ instances,
1655
+ });
1656
+ return genericResult(result);
1657
+ }),
1658
+ eraseSearchDocument: procedure()
1659
+ .origins('api')
1660
+ .http('DELETE', '/api/v2/records/search/document')
1661
+ .inputs(z.object({
1662
+ recordName: RECORD_NAME_VALIDATION,
1663
+ address: ADDRESS_VALIDATION,
1664
+ documentId: z.string().min(1).max(256),
1665
+ instances: INSTANCES_ARRAY_VALIDATION.optional(),
1666
+ }))
1667
+ .handler(async ({ recordName, address, documentId, instances }, context) => {
1668
+ if (!this._searchRecordsController) {
1669
+ return {
1670
+ success: false,
1671
+ errorCode: 'not_supported',
1672
+ errorMessage: 'This feature is not supported.',
1673
+ };
1674
+ }
1675
+ const validation = await this._validateSessionKey(context.sessionKey);
1676
+ if (validation.success === false) {
1677
+ if (validation.errorCode === 'no_session_key') {
1678
+ return NOT_LOGGED_IN_RESULT;
1679
+ }
1680
+ return validation;
1681
+ }
1682
+ const result = await this._searchRecordsController.eraseDocument({
1683
+ recordName,
1684
+ address,
1685
+ documentId,
1686
+ userId: validation.userId,
1687
+ instances,
1688
+ });
1689
+ return genericResult(result);
1690
+ }),
1691
+ syncSearchRecord: procedure()
1692
+ .origins('api')
1693
+ .http('POST', '/api/v2/records/search/sync')
1694
+ .inputs(z.object({
1695
+ recordName: RECORD_NAME_VALIDATION,
1696
+ address: ADDRESS_VALIDATION,
1697
+ targetRecordName: RECORD_NAME_VALIDATION,
1698
+ targetResourceKind: z.enum(['data']),
1699
+ targetMarker: MARKER_VALIDATION,
1700
+ targetMapping: z
1701
+ .array(z.tuple([
1702
+ z.string().max(100),
1703
+ z.string().max(100),
1704
+ ]))
1705
+ .max(100),
1706
+ instances: INSTANCES_ARRAY_VALIDATION.optional(),
1707
+ }))
1708
+ .handler(async ({ recordName, address, targetRecordName, targetResourceKind, targetMarker, targetMapping, instances, }, context) => {
1709
+ if (!this._searchRecordsController) {
1710
+ return {
1711
+ success: false,
1712
+ errorCode: 'not_supported',
1713
+ errorMessage: 'This feature is not supported.',
1714
+ };
1715
+ }
1716
+ const validation = await this._validateSessionKey(context.sessionKey);
1717
+ if (validation.success === false) {
1718
+ if (validation.errorCode === 'no_session_key') {
1719
+ return NOT_LOGGED_IN_RESULT;
1720
+ }
1721
+ return validation;
1722
+ }
1723
+ const result = await this._searchRecordsController.sync({
1724
+ recordName,
1725
+ address,
1726
+ targetRecordName,
1727
+ targetResourceKind,
1728
+ targetMarker,
1729
+ targetMapping: targetMapping,
1730
+ userId: validation.userId,
1731
+ instances: instances !== null && instances !== void 0 ? instances : [],
1732
+ });
1733
+ return genericResult(result);
1734
+ }),
1735
+ unsyncSearchRecord: procedure()
1736
+ .origins('api')
1737
+ .http('POST', '/api/v2/records/search/unsync')
1738
+ .inputs(z.object({
1739
+ syncId: z.string().min(1),
1740
+ instances: INSTANCES_ARRAY_VALIDATION.optional(),
1741
+ }))
1742
+ .handler(async ({ syncId, instances }, context) => {
1743
+ if (!this._searchRecordsController) {
1744
+ return {
1745
+ success: false,
1746
+ errorCode: 'not_supported',
1747
+ errorMessage: 'This feature is not supported.',
1748
+ };
1749
+ }
1750
+ const validation = await this._validateSessionKey(context.sessionKey);
1751
+ if (validation.success === false) {
1752
+ if (validation.errorCode === 'no_session_key') {
1753
+ return NOT_LOGGED_IN_RESULT;
1754
+ }
1755
+ return validation;
1756
+ }
1757
+ const result = await this._searchRecordsController.unsync({
1758
+ syncId,
1759
+ userId: validation.userId,
1760
+ instances: instances !== null && instances !== void 0 ? instances : [],
1761
+ });
1762
+ return genericResult(result);
1763
+ }),
1764
+ search: procedure()
1765
+ .origins('api')
1766
+ .http('POST', '/api/v2/records/search')
1767
+ .inputs(z.object({
1768
+ recordName: RECORD_NAME_VALIDATION,
1769
+ address: ADDRESS_VALIDATION,
1770
+ query: z
1771
+ .object({
1772
+ q: z.string().min(1).max(1024),
1773
+ queryBy: z.string().min(1).max(1024),
1774
+ filterBy: z
1775
+ .string()
1776
+ .min(1)
1777
+ .max(1024)
1778
+ .optional()
1779
+ .nullable(),
1780
+ })
1781
+ .catchall(z.union([
1782
+ z.string().max(1024),
1783
+ z.boolean(),
1784
+ z.number(),
1785
+ ])),
1786
+ instances: INSTANCES_ARRAY_VALIDATION.optional(),
1787
+ }))
1788
+ .handler(async ({ recordName, address, query, instances }, context) => {
1789
+ if (!this._searchRecordsController) {
1790
+ return {
1791
+ success: false,
1792
+ errorCode: 'not_supported',
1793
+ errorMessage: 'This feature is not supported.',
1794
+ };
1795
+ }
1796
+ const validation = await this._validateSessionKey(context.sessionKey);
1797
+ if (validation.success === false &&
1798
+ validation.errorCode !== 'no_session_key') {
1799
+ return validation;
1800
+ }
1801
+ const result = await this._searchRecordsController.search({
1802
+ recordName,
1803
+ address,
1804
+ query: query,
1805
+ userId: validation.userId,
1806
+ instances: instances !== null && instances !== void 0 ? instances : [],
1807
+ });
1808
+ return genericResult(result);
1809
+ }),
1606
1810
  listRecords: procedure()
1607
1811
  .origins('api')
1608
1812
  .http('GET', '/api/v2/records/list')
@@ -2474,6 +2678,15 @@ export class RecordsServer {
2474
2678
  .max(512)
2475
2679
  .nullable()
2476
2680
  .optional(),
2681
+ logoBackgroundColor: z
2682
+ .string({
2683
+ invalid_type_error: 'logoBackgroundColor must be a string.',
2684
+ required_error: 'logoBackgroundColor is required.',
2685
+ })
2686
+ .min(1)
2687
+ .max(32)
2688
+ .nullable()
2689
+ .optional(),
2477
2690
  comIdConfig: COM_ID_CONFIG_SCHEMA.optional(),
2478
2691
  playerConfig: COM_ID_PLAYER_CONFIG.optional(),
2479
2692
  loomConfig: LOOM_CONFIG.optional(),