@yorkie-js/react 0.7.8 → 0.7.10-rc
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/yorkie-js-react.d.ts +123 -3
- package/dist/yorkie-js-react.es.js +381 -187
- package/dist/yorkie-js-react.es.js.map +1 -1
- package/dist/yorkie-js-react.js +381 -187
- package/dist/yorkie-js-react.js.map +1 -1
- package/package.json +2 -2
|
@@ -5790,41 +5790,41 @@ function createGrpcWebTransport(options) {
|
|
|
5790
5790
|
}
|
|
5791
5791
|
};
|
|
5792
5792
|
}
|
|
5793
|
-
const file_src_api_yorkie_v1_resources = /* @__PURE__ */ fileDesc("CiFzcmMvYXBpL3lvcmtpZS92MS9yZXNvdXJjZXMucHJvdG8SCXlvcmtpZS52MSKuAQoIU25hcHNob3QSJAoEcm9vdBgBIAEoCzIWLnlvcmtpZS52MS5KU09ORWxlbWVudBI1CglwcmVzZW5jZXMYAiADKAsyIi55b3JraWUudjEuU25hcHNob3QuUHJlc2VuY2VzRW50cnkaRQoOUHJlc2VuY2VzRW50cnkSCwoDa2V5GAEgASgJEiIKBXZhbHVlGAIgASgLMhMueW9ya2llLnYxLlByZXNlbmNlOgI4ASL7AQoKQ2hhbmdlUGFjaxIUCgxkb2N1bWVudF9rZXkYASABKAkSKQoKY2hlY2twb2ludBgCIAEoCzIVLnlvcmtpZS52MS5DaGVja3BvaW50EhAKCHNuYXBzaG90GAMgASgMEiIKB2NoYW5nZXMYBCADKAsyES55b3JraWUudjEuQ2hhbmdlEjAKEW1pbl9zeW5jZWRfdGlja2V0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSEgoKaXNfcmVtb3ZlZBgGIAEoCBIwCg52ZXJzaW9uX3ZlY3RvchgHIAEoCzIYLnlvcmtpZS52MS5WZXJzaW9uVmVjdG9yIpgBCgZDaGFuZ2USHwoCaWQYASABKAsyEy55b3JraWUudjEuQ2hhbmdlSUQSDwoHbWVzc2FnZRgCIAEoCRIoCgpvcGVyYXRpb25zGAMgAygLMhQueW9ya2llLnYxLk9wZXJhdGlvbhIyCg9wcmVzZW5jZV9jaGFuZ2UYBCABKAsyGS55b3JraWUudjEuUHJlc2VuY2VDaGFuZ2UihwEKCENoYW5nZUlEEhIKCmNsaWVudF9zZXEYASABKA0SEgoKc2VydmVyX3NlcRgCIAEoAxIPCgdsYW1wb3J0GAMgASgDEhAKCGFjdG9yX2lkGAQgASgMEjAKDnZlcnNpb25fdmVjdG9yGAUgASgLMhgueW9ya2llLnYxLlZlcnNpb25WZWN0b3IidAoNVmVyc2lvblZlY3RvchI0CgZ2ZWN0b3IYASADKAsyJC55b3JraWUudjEuVmVyc2lvblZlY3Rvci5WZWN0b3JFbnRyeRotCgtWZWN0b3JFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAM6AjgBItkaCglPcGVyYXRpb24SJwoDc2V0GAEgASgLMhgueW9ya2llLnYxLk9wZXJhdGlvbi5TZXRIABInCgNhZGQYAiABKAsyGC55b3JraWUudjEuT3BlcmF0aW9uLkFkZEgAEikKBG1vdmUYAyABKAsyGS55b3JraWUudjEuT3BlcmF0aW9uLk1vdmVIABItCgZyZW1vdmUYBCABKAsyGy55b3JraWUudjEuT3BlcmF0aW9uLlJlbW92ZUgAEikKBGVkaXQYBSABKAsyGS55b3JraWUudjEuT3BlcmF0aW9uLkVkaXRIABIrCgVzdHlsZRgHIAEoCzIaLnlvcmtpZS52MS5PcGVyYXRpb24uU3R5bGVIABIxCghpbmNyZWFzZRgIIAEoCzIdLnlvcmtpZS52MS5PcGVyYXRpb24uSW5jcmVhc2VIABIyCgl0cmVlX2VkaXQYCSABKAsyHS55b3JraWUudjEuT3BlcmF0aW9uLlRyZWVFZGl0SAASNAoKdHJlZV9zdHlsZRgKIAEoCzIeLnlvcmtpZS52MS5PcGVyYXRpb24uVHJlZVN0eWxlSAASMgoJYXJyYXlfc2V0GAsgASgLMh0ueW9ya2llLnYxLk9wZXJhdGlvbi5BcnJheVNldEgAGp0BCgNTZXQSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBILCgNrZXkYAiABKAkSKwoFdmFsdWUYAyABKAsyHC55b3JraWUudjEuSlNPTkVsZW1lbnRTaW1wbGUSKgoLZXhlY3V0ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBrAAQoDQWRkEjAKEXBhcmVudF9jcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSLgoPcHJldl9jcmVhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKwoFdmFsdWUYAyABKAsyHC55b3JraWUudjEuSlNPTkVsZW1lbnRTaW1wbGUSKgoLZXhlY3V0ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBq/AQoETW92ZRIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0Ei4KD3ByZXZfY3JlYXRlZF9hdBgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EikKCmNyZWF0ZWRfYXQYAyABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIqCgtleGVjdXRlZF9hdBgEIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0GpEBCgZSZW1vdmUSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpjcmVhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKgoLZXhlY3V0ZWRfYXQYAyABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBrZAwoERWRpdBIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EiQKBGZyb20YAiABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSIgoCdG8YAyABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSUwoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYBCADKAsyMi55b3JraWUudjEuT3BlcmF0aW9uLkVkaXQuQ3JlYXRlZEF0TWFwQnlBY3RvckVudHJ5Eg8KB2NvbnRlbnQYBSABKAkSKgoLZXhlY3V0ZWRfYXQYBiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBI9CgphdHRyaWJ1dGVzGAcgAygLMikueW9ya2llLnYxLk9wZXJhdGlvbi5FZGl0LkF0dHJpYnV0ZXNFbnRyeRpRChhDcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVlGAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQ6AjgBGjEKD0F0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGukDCgVTdHlsZRIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EiQKBGZyb20YAiABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSIgoCdG8YAyABKAsyFi55b3JraWUudjEuVGV4dE5vZGVQb3MSPgoKYXR0cmlidXRlcxgEIAMoCzIqLnlvcmtpZS52MS5PcGVyYXRpb24uU3R5bGUuQXR0cmlidXRlc0VudHJ5EioKC2V4ZWN1dGVkX2F0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSVAoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYBiADKAsyMy55b3JraWUudjEuT3BlcmF0aW9uLlN0eWxlLkNyZWF0ZWRBdE1hcEJ5QWN0b3JFbnRyeRIcChRhdHRyaWJ1dGVzX3RvX3JlbW92ZRgHIAMoCRoxCg9BdHRyaWJ1dGVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARpRChhDcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVlGAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQ6AjgBGqQBCghJbmNyZWFzZRIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EisKBXZhbHVlGAIgASgLMhwueW9ya2llLnYxLkpTT05FbGVtZW50U2ltcGxlEioKC2V4ZWN1dGVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSDQoFYWN0b3IYBCABKAkakwMKCFRyZWVFZGl0EjAKEXBhcmVudF9jcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSIAoEZnJvbRgCIAEoCzISLnlvcmtpZS52MS5UcmVlUG9zEh4KAnRvGAMgASgLMhIueW9ya2llLnYxLlRyZWVQb3MSVwoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYBCADKAsyNi55b3JraWUudjEuT3BlcmF0aW9uLlRyZWVFZGl0LkNyZWF0ZWRBdE1hcEJ5QWN0b3JFbnRyeRImCghjb250ZW50cxgFIAMoCzIULnlvcmtpZS52MS5UcmVlTm9kZXMSEwoLc3BsaXRfbGV2ZWwYByABKAUSKgoLZXhlY3V0ZWRfYXQYBiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBpRChhDcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVlGAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQ6AjgBGu0DCglUcmVlU3R5bGUSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIgCgRmcm9tGAIgASgLMhIueW9ya2llLnYxLlRyZWVQb3MSHgoCdG8YAyABKAsyEi55b3JraWUudjEuVHJlZVBvcxJCCgphdHRyaWJ1dGVzGAQgAygLMi4ueW9ya2llLnYxLk9wZXJhdGlvbi5UcmVlU3R5bGUuQXR0cmlidXRlc0VudHJ5EioKC2V4ZWN1dGVkX2F0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSHAoUYXR0cmlidXRlc190b19yZW1vdmUYBiADKAkSWAoXY3JlYXRlZF9hdF9tYXBfYnlfYWN0b3IYByADKAsyNy55b3JraWUudjEuT3BlcmF0aW9uLlRyZWVTdHlsZS5DcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkaMQoPQXR0cmlidXRlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaUQoYQ3JlYXRlZEF0TWFwQnlBY3RvckVudHJ5EgsKA2tleRgBIAEoCRIkCgV2YWx1ZRgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0OgI4ARrAAQoIQXJyYXlTZXQSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpjcmVhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKwoFdmFsdWUYAyABKAsyHC55b3JraWUudjEuSlNPTkVsZW1lbnRTaW1wbGUSKgoLZXhlY3V0ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldEIGCgRib2R5IsUBChFKU09ORWxlbWVudFNpbXBsZRIpCgpjcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSJwoIbW92ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpyZW1vdmVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSIgoEdHlwZRgEIAEoDjIULnlvcmtpZS52MS5WYWx1ZVR5cGUSDQoFdmFsdWUYBSABKAwinwsKC0pTT05FbGVtZW50EjgKC2pzb25fb2JqZWN0GAEgASgLMiEueW9ya2llLnYxLkpTT05FbGVtZW50LkpTT05PYmplY3RIABI2Cgpqc29uX2FycmF5GAIgASgLMiAueW9ya2llLnYxLkpTT05FbGVtZW50LkpTT05BcnJheUgAEjUKCXByaW1pdGl2ZRgDIAEoCzIgLnlvcmtpZS52MS5KU09ORWxlbWVudC5QcmltaXRpdmVIABIrCgR0ZXh0GAUgASgLMhsueW9ya2llLnYxLkpTT05FbGVtZW50LlRleHRIABIxCgdjb3VudGVyGAYgASgLMh4ueW9ya2llLnYxLkpTT05FbGVtZW50LkNvdW50ZXJIABIrCgR0cmVlGAcgASgLMhsueW9ya2llLnYxLkpTT05FbGVtZW50LlRyZWVIABquAQoKSlNPTk9iamVjdBIhCgVub2RlcxgBIAMoCzISLnlvcmtpZS52MS5SSFROb2RlEikKCmNyZWF0ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBInCghtb3ZlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EikKCnJlbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBqtAQoJSlNPTkFycmF5EiEKBW5vZGVzGAEgAygLMhIueW9ya2llLnYxLlJHQU5vZGUSKQoKY3JlYXRlZF9hdBgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EicKCG1vdmVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKQoKcmVtb3ZlZF9hdBgEIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0Gr0BCglQcmltaXRpdmUSIgoEdHlwZRgBIAEoDjIULnlvcmtpZS52MS5WYWx1ZVR5cGUSDQoFdmFsdWUYAiABKAwSKQoKY3JlYXRlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EicKCG1vdmVkX2F0GAQgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKQoKcmVtb3ZlZF9hdBgFIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0GqkBCgRUZXh0EiIKBW5vZGVzGAEgAygLMhMueW9ya2llLnYxLlRleHROb2RlEikKCmNyZWF0ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBInCghtb3ZlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EikKCnJlbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBrYAQoHQ291bnRlchIiCgR0eXBlGAEgASgOMhQueW9ya2llLnYxLlZhbHVlVHlwZRINCgV2YWx1ZRgCIAEoDBIpCgpjcmVhdGVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSJwoIbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpyZW1vdmVkX2F0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSFQoNaGxsX3JlZ2lzdGVycxgHIAEoDEoECAYQBxqpAQoEVHJlZRIiCgVub2RlcxgBIAMoCzITLnlvcmtpZS52MS5UcmVlTm9kZRIpCgpjcmVhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSJwoIbW92ZWRfYXQYAyABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpyZW1vdmVkX2F0GAQgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXRCBgoEYm9keSI/CgdSSFROb2RlEgsKA2tleRgBIAEoCRInCgdlbGVtZW50GAIgASgLMhYueW9ya2llLnYxLkpTT05FbGVtZW50Iu4BCgdSR0FOb2RlEiAKBG5leHQYASABKAsyEi55b3JraWUudjEuUkdBTm9kZRInCgdlbGVtZW50GAIgASgLMhYueW9ya2llLnYxLkpTT05FbGVtZW50EjIKE3Bvc2l0aW9uX2NyZWF0ZWRfYXQYAyABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIwChFwb3NpdGlvbl9tb3ZlZF9hdBgEIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EjIKE3Bvc2l0aW9uX3JlbW92ZWRfYXQYBSABKAsyFS55b3JraWUudjEuVGltZVRpY2tldCJYCghOb2RlQXR0chINCgV2YWx1ZRgBIAEoCRIpCgp1cGRhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSEgoKaXNfcmVtb3ZlZBgDIAEoCCKUAgoIVGV4dE5vZGUSIQoCaWQYASABKAsyFS55b3JraWUudjEuVGV4dE5vZGVJRBINCgV2YWx1ZRgCIAEoCRIpCgpyZW1vdmVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKgoLaW5zX3ByZXZfaWQYBCABKAsyFS55b3JraWUudjEuVGV4dE5vZGVJRBI3CgphdHRyaWJ1dGVzGAUgAygLMiMueW9ya2llLnYxLlRleHROb2RlLkF0dHJpYnV0ZXNFbnRyeRpGCg9BdHRyaWJ1dGVzRW50cnkSCwoDa2V5GAEgASgJEiIKBXZhbHVlGAIgASgLMhMueW9ya2llLnYxLk5vZGVBdHRyOgI4ASJHCgpUZXh0Tm9kZUlEEikKCmNyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIOCgZvZmZzZXQYAiABKAUiswMKCFRyZWVOb2RlEiEKAmlkGAEgASgLMhUueW9ya2llLnYxLlRyZWVOb2RlSUQSDAoEdHlwZRgCIAEoCRINCgV2YWx1ZRgDIAEoCRIpCgpyZW1vdmVkX2F0GAQgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKgoLaW5zX3ByZXZfaWQYBSABKAsyFS55b3JraWUudjEuVHJlZU5vZGVJRBIqCgtpbnNfbmV4dF9pZBgGIAEoCzIVLnlvcmtpZS52MS5UcmVlTm9kZUlEEg0KBWRlcHRoGAcgASgFEjcKCmF0dHJpYnV0ZXMYCCADKAsyIy55b3JraWUudjEuVHJlZU5vZGUuQXR0cmlidXRlc0VudHJ5EioKC21lcmdlZF9mcm9tGAkgASgLMhUueW9ya2llLnYxLlRyZWVOb2RlSUQSKAoJbWVyZ2VkX2F0GAogASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQaRgoPQXR0cmlidXRlc0VudHJ5EgsKA2tleRgBIAEoCRIiCgV2YWx1ZRgCIAEoCzITLnlvcmtpZS52MS5Ob2RlQXR0cjoCOAEiMQoJVHJlZU5vZGVzEiQKB2NvbnRlbnQYASADKAsyEy55b3JraWUudjEuVHJlZU5vZGUiRwoKVHJlZU5vZGVJRBIpCgpjcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSDgoGb2Zmc2V0GAIgASgFImMKB1RyZWVQb3MSKAoJcGFyZW50X2lkGAEgASgLMhUueW9ya2llLnYxLlRyZWVOb2RlSUQSLgoPbGVmdF9zaWJsaW5nX2lkGAIgASgLMhUueW9ya2llLnYxLlRyZWVOb2RlSUQiawoEVXNlchIKCgJpZBgBIAEoCRIVCg1hdXRoX3Byb3ZpZGVyGAIgASgJEhAKCHVzZXJuYW1lGAMgASgJEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIokBCgZNZW1iZXISCgoCaWQYASABKAkSEgoKcHJvamVjdF9pZBgCIAEoCRIPCgd1c2VyX2lkGAMgASgJEhAKCHVzZXJuYW1lGAQgASgJEgwKBHJvbGUYBSABKAkSLgoKaW52aXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAi6QYKB1Byb2plY3QSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRISCgpwdWJsaWNfa2V5GAMgASgJEhIKCnNlY3JldF9rZXkYBCABKAkSGAoQYXV0aF93ZWJob29rX3VybBgFIAEoCRIcChRhdXRoX3dlYmhvb2tfbWV0aG9kcxgGIAMoCRIgChhhdXRoX3dlYmhvb2tfbWF4X3JldHJpZXMYESABKAQSJgoeYXV0aF93ZWJob29rX21pbl93YWl0X2ludGVydmFsGBIgASgJEiYKHmF1dGhfd2ViaG9va19tYXhfd2FpdF9pbnRlcnZhbBgTIAEoCRIkChxhdXRoX3dlYmhvb2tfcmVxdWVzdF90aW1lb3V0GBQgASgJEhkKEWV2ZW50X3dlYmhvb2tfdXJsGAcgASgJEhwKFGV2ZW50X3dlYmhvb2tfZXZlbnRzGAggAygJEiEKGWV2ZW50X3dlYmhvb2tfbWF4X3JldHJpZXMYFSABKAQSJwofZXZlbnRfd2ViaG9va19taW5fd2FpdF9pbnRlcnZhbBgWIAEoCRInCh9ldmVudF93ZWJob29rX21heF93YWl0X2ludGVydmFsGBcgASgJEiUKHWV2ZW50X3dlYmhvb2tfcmVxdWVzdF90aW1lb3V0GBggASgJEiMKG2NsaWVudF9kZWFjdGl2YXRlX3RocmVzaG9sZBgJIAEoCRIaChJzbmFwc2hvdF90aHJlc2hvbGQYGSABKAMSGQoRc25hcHNob3RfaW50ZXJ2YWwYGiABKAMSJAocbWF4X3N1YnNjcmliZXJzX3Blcl9kb2N1bWVudBgKIAEoBRIkChxtYXhfYXR0YWNobWVudHNfcGVyX2RvY3VtZW50GAsgASgFEh0KFW1heF9zaXplX3Blcl9kb2N1bWVudBgPIAEoBRIYChByZW1vdmVfb25fZGV0YWNoGBAgASgIEh0KFWF1dG9fcmV2aXNpb25fZW5hYmxlZBgbIAEoCBIXCg9hbGxvd2VkX29yaWdpbnMYDiADKAkSLgoKY3JlYXRlZF9hdBgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgNIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiLwoLTWV0cmljUG9pbnQSEQoJdGltZXN0YW1wGAEgASgDEg0KBXZhbHVlGAIgASgFIqMMChZVcGRhdGFibGVQcm9qZWN0RmllbGRzEioKBG5hbWUYASABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSNgoQYXV0aF93ZWJob29rX3VybBgCIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJSChRhdXRoX3dlYmhvb2tfbWV0aG9kcxgDIAEoCzI0LnlvcmtpZS52MS5VcGRhdGFibGVQcm9qZWN0RmllbGRzLkF1dGhXZWJob29rTWV0aG9kcxI+ChhhdXRoX3dlYmhvb2tfbWF4X3JldHJpZXMYDCABKAsyHC5nb29nbGUucHJvdG9idWYuVUludDY0VmFsdWUSRAoeYXV0aF93ZWJob29rX21pbl93YWl0X2ludGVydmFsGA0gASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEkQKHmF1dGhfd2ViaG9va19tYXhfd2FpdF9pbnRlcnZhbBgOIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJCChxhdXRoX3dlYmhvb2tfcmVxdWVzdF90aW1lb3V0GA8gASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEjcKEWV2ZW50X3dlYmhvb2tfdXJsGAQgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlElIKFGV2ZW50X3dlYmhvb2tfZXZlbnRzGAUgASgLMjQueW9ya2llLnYxLlVwZGF0YWJsZVByb2plY3RGaWVsZHMuRXZlbnRXZWJob29rRXZlbnRzEj8KGWV2ZW50X3dlYmhvb2tfbWF4X3JldHJpZXMYECABKAsyHC5nb29nbGUucHJvdG9idWYuVUludDY0VmFsdWUSRQofZXZlbnRfd2ViaG9va19taW5fd2FpdF9pbnRlcnZhbBgRIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJFCh9ldmVudF93ZWJob29rX21heF93YWl0X2ludGVydmFsGBIgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEkMKHWV2ZW50X3dlYmhvb2tfcmVxdWVzdF90aW1lb3V0GBMgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEjcKEnNuYXBzaG90X3RocmVzaG9sZBgUIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQ2NFZhbHVlEjYKEXNuYXBzaG90X2ludGVydmFsGBUgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDY0VmFsdWUSQQobY2xpZW50X2RlYWN0aXZhdGVfdGhyZXNob2xkGAYgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEkEKHG1heF9zdWJzY3JpYmVyc19wZXJfZG9jdW1lbnQYByABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZRJBChxtYXhfYXR0YWNobWVudHNfcGVyX2RvY3VtZW50GAggASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWUSOgoVbWF4X3NpemVfcGVyX2RvY3VtZW50GAogASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWUSNAoQcmVtb3ZlX29uX2RldGFjaBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5Cb29sVmFsdWUSOQoVYXV0b19yZXZpc2lvbl9lbmFibGVkGBYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJvb2xWYWx1ZRJJCg9hbGxvd2VkX29yaWdpbnMYCSABKAsyMC55b3JraWUudjEuVXBkYXRhYmxlUHJvamVjdEZpZWxkcy5BbGxvd2VkT3JpZ2lucxolChJBdXRoV2ViaG9va01ldGhvZHMSDwoHbWV0aG9kcxgBIAMoCRokChJFdmVudFdlYmhvb2tFdmVudHMSDgoGZXZlbnRzGAEgAygJGiEKDkFsbG93ZWRPcmlnaW5zEg8KB29yaWdpbnMYASADKAkipwMKD0RvY3VtZW50U3VtbWFyeRIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEcm9vdBgDIAEoCRIYChBhdHRhY2hlZF9jbGllbnRzGAcgASgFEikKDWRvY3VtZW50X3NpemUYCCABKAsyEi55b3JraWUudjEuRG9jU2l6ZRISCgpzY2hlbWFfa2V5GAkgASgJEjwKCXByZXNlbmNlcxgKIAMoCzIpLnlvcmtpZS52MS5Eb2N1bWVudFN1bW1hcnkuUHJlc2VuY2VzRW50cnkSLgoKY3JlYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLwoLYWNjZXNzZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wGkUKDlByZXNlbmNlc0VudHJ5EgsKA2tleRgBIAEoCRIiCgV2YWx1ZRgCIAEoCzITLnlvcmtpZS52MS5QcmVzZW5jZToCOAEi2gEKDlByZXNlbmNlQ2hhbmdlEjIKBHR5cGUYASABKA4yJC55b3JraWUudjEuUHJlc2VuY2VDaGFuZ2UuQ2hhbmdlVHlwZRIlCghwcmVzZW5jZRgCIAEoCzITLnlvcmtpZS52MS5QcmVzZW5jZSJtCgpDaGFuZ2VUeXBlEhsKF0NIQU5HRV9UWVBFX1VOU1BFQ0lGSUVEEAASEwoPQ0hBTkdFX1RZUEVfUFVUEAESFgoSQ0hBTkdFX1RZUEVfREVMRVRFEAISFQoRQ0hBTkdFX1RZUEVfQ0xFQVIQAyJkCghQcmVzZW5jZRIrCgRkYXRhGAEgAygLMh0ueW9ya2llLnYxLlByZXNlbmNlLkRhdGFFbnRyeRorCglEYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASI0Cg5DaGFubmVsU3VtbWFyeRILCgNrZXkYASABKAkSFQoNc2Vzc2lvbl9jb3VudBgCIAEoBSI0CgpDaGVja3BvaW50EhIKCnNlcnZlcl9zZXEYASABKAMSEgoKY2xpZW50X3NlcRgCIAEoDSJhCgtUZXh0Tm9kZVBvcxIpCgpjcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSDgoGb2Zmc2V0GAIgASgFEhcKD3JlbGF0aXZlX29mZnNldBgDIAEoBSJCCgpUaW1lVGlja2V0Eg8KB2xhbXBvcnQYASABKAMSEQoJZGVsaW1pdGVyGAIgASgNEhAKCGFjdG9yX2lkGAMgASgMIi4KDERvY0V2ZW50Qm9keRINCgV0b3BpYxgBIAEoCRIPCgdwYXlsb2FkGAIgASgMImsKCERvY0V2ZW50EiUKBHR5cGUYASABKA4yFy55b3JraWUudjEuRG9jRXZlbnRUeXBlEhEKCXB1Ymxpc2hlchgCIAEoCRIlCgRib2R5GAMgASgLMhcueW9ya2llLnYxLkRvY0V2ZW50Qm9keSLWAQoMQ2hhbm5lbEV2ZW50EioKBHR5cGUYASABKA4yHC55b3JraWUudjEuQ2hhbm5lbEV2ZW50LlR5cGUSEQoJcHVibGlzaGVyGAIgASgJEhUKDXNlc3Npb25fY291bnQYAyABKAMSCwoDc2VxGAQgASgDEg0KBXRvcGljGAUgASgJEg8KB3BheWxvYWQYBiABKAwiQwoEVHlwZRIUChBUWVBFX1VOU1BFQ0lGSUVEEAASEQoNVFlQRV9QUkVTRU5DRRABEhIKDlRZUEVfQlJPQURDQVNUEAIiJgoIRGF0YVNpemUSDAoEZGF0YRgBIAEoBRIMCgRtZXRhGAIgASgFIk0KB0RvY1NpemUSIQoEbGl2ZRgBIAEoCzITLnlvcmtpZS52MS5EYXRhU2l6ZRIfCgJnYxgCIAEoCzITLnlvcmtpZS52MS5EYXRhU2l6ZSKRAQoGU2NoZW1hEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSDwoHdmVyc2lvbhgDIAEoBRIMCgRib2R5GAQgASgJEh4KBXJ1bGVzGAUgAygLMg8ueW9ya2llLnYxLlJ1bGUSLgoKY3JlYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiUAoMVHJlZU5vZGVSdWxlEhEKCW5vZGVfdHlwZRgBIAEoCRIPCgdjb250ZW50GAIgASgJEg0KBW1hcmtzGAMgASgJEg0KBWdyb3VwGAQgASgJIk8KBFJ1bGUSDAoEcGF0aBgBIAEoCRIMCgR0eXBlGAIgASgJEisKCnRyZWVfbm9kZXMYAyADKAsyFy55b3JraWUudjEuVHJlZU5vZGVSdWxlIoMBCg9SZXZpc2lvblN1bW1hcnkSCgoCaWQYASABKAkSDQoFbGFiZWwYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSEAoIc25hcHNob3QYBCABKAkSLgoKY3JlYXRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAq/AIKCVZhbHVlVHlwZRITCg9WQUxVRV9UWVBFX05VTEwQABIWChJWQUxVRV9UWVBFX0JPT0xFQU4QARIWChJWQUxVRV9UWVBFX0lOVEVHRVIQAhITCg9WQUxVRV9UWVBFX0xPTkcQAxIVChFWQUxVRV9UWVBFX0RPVUJMRRAEEhUKEVZBTFVFX1RZUEVfU1RSSU5HEAUSFAoQVkFMVUVfVFlQRV9CWVRFUxAGEhMKD1ZBTFVFX1RZUEVfREFURRAHEhoKFlZBTFVFX1RZUEVfSlNPTl9PQkpFQ1QQCBIZChVWQUxVRV9UWVBFX0pTT05fQVJSQVkQCRITCg9WQUxVRV9UWVBFX1RFWFQQChIaChZWQUxVRV9UWVBFX0lOVEVHRVJfQ05UEAsSFwoTVkFMVUVfVFlQRV9MT05HX0NOVBAMEhMKD1ZBTFVFX1RZUEVfVFJFRRANEiAKHFZBTFVFX1RZUEVfSU5URUdFUl9ERURVUF9DTlQQDiIECA8QDyqmAQoMRG9jRXZlbnRUeXBlEiMKH0RPQ19FVkVOVF9UWVBFX0RPQ1VNRU5UX0NIQU5HRUQQABIjCh9ET0NfRVZFTlRfVFlQRV9ET0NVTUVOVF9XQVRDSEVEEAESJQohRE9DX0VWRU5UX1RZUEVfRE9DVU1FTlRfVU5XQVRDSEVEEAISJQohRE9DX0VWRU5UX1RZUEVfRE9DVU1FTlRfQlJPQURDQVNUEANCRQoRZGV2LnlvcmtpZS5hcGkudjFQAVouZ2l0aHViLmNvbS95b3JraWUtdGVhbS95b3JraWUvYXBpL3lvcmtpZS92MTt2MWIGcHJvdG8z", [file_google_protobuf_timestamp, file_google_protobuf_wrappers]);
|
|
5794
|
-
const SnapshotSchema = /* @__PURE__ */ messageDesc(
|
|
5795
|
-
const ChangePackSchema = /* @__PURE__ */ messageDesc(
|
|
5796
|
-
const ChangeSchema = /* @__PURE__ */ messageDesc(
|
|
5797
|
-
const ChangeIDSchema = /* @__PURE__ */ messageDesc(
|
|
5798
|
-
const VersionVectorSchema = /* @__PURE__ */ messageDesc(
|
|
5799
|
-
const OperationSchema = /* @__PURE__ */ messageDesc(
|
|
5800
|
-
const Operation_SetSchema = /* @__PURE__ */ messageDesc(
|
|
5801
|
-
const Operation_AddSchema = /* @__PURE__ */ messageDesc(
|
|
5802
|
-
const Operation_MoveSchema = /* @__PURE__ */ messageDesc(
|
|
5803
|
-
const Operation_RemoveSchema = /* @__PURE__ */ messageDesc(
|
|
5804
|
-
const Operation_EditSchema = /* @__PURE__ */ messageDesc(
|
|
5805
|
-
const Operation_StyleSchema = /* @__PURE__ */ messageDesc(
|
|
5806
|
-
const Operation_IncreaseSchema = /* @__PURE__ */ messageDesc(
|
|
5807
|
-
const Operation_TreeEditSchema = /* @__PURE__ */ messageDesc(
|
|
5808
|
-
const Operation_TreeStyleSchema = /* @__PURE__ */ messageDesc(
|
|
5809
|
-
const Operation_ArraySetSchema = /* @__PURE__ */ messageDesc(
|
|
5810
|
-
const JSONElementSimpleSchema = /* @__PURE__ */ messageDesc(
|
|
5811
|
-
const JSONElementSchema = /* @__PURE__ */ messageDesc(
|
|
5812
|
-
const JSONElement_JSONObjectSchema = /* @__PURE__ */ messageDesc(
|
|
5813
|
-
const JSONElement_JSONArraySchema = /* @__PURE__ */ messageDesc(
|
|
5814
|
-
const JSONElement_PrimitiveSchema = /* @__PURE__ */ messageDesc(
|
|
5815
|
-
const JSONElement_TextSchema = /* @__PURE__ */ messageDesc(
|
|
5816
|
-
const JSONElement_CounterSchema = /* @__PURE__ */ messageDesc(
|
|
5817
|
-
const JSONElement_TreeSchema = /* @__PURE__ */ messageDesc(
|
|
5818
|
-
const RHTNodeSchema = /* @__PURE__ */ messageDesc(
|
|
5819
|
-
const RGANodeSchema = /* @__PURE__ */ messageDesc(
|
|
5820
|
-
const NodeAttrSchema = /* @__PURE__ */ messageDesc(
|
|
5821
|
-
const TextNodeSchema = /* @__PURE__ */ messageDesc(
|
|
5822
|
-
const TextNodeIDSchema = /* @__PURE__ */ messageDesc(
|
|
5823
|
-
const TreeNodeSchema = /* @__PURE__ */ messageDesc(
|
|
5824
|
-
const TreeNodesSchema = /* @__PURE__ */ messageDesc(
|
|
5825
|
-
const TreeNodeIDSchema = /* @__PURE__ */ messageDesc(
|
|
5826
|
-
const TreePosSchema = /* @__PURE__ */ messageDesc(
|
|
5827
|
-
const PresenceChangeSchema = /* @__PURE__ */ messageDesc(
|
|
5793
|
+
const file_yorkie_v1_resources = /* @__PURE__ */ fileDesc("Chl5b3JraWUvdjEvcmVzb3VyY2VzLnByb3RvEgl5b3JraWUudjEirgEKCFNuYXBzaG90EiQKBHJvb3QYASABKAsyFi55b3JraWUudjEuSlNPTkVsZW1lbnQSNQoJcHJlc2VuY2VzGAIgAygLMiIueW9ya2llLnYxLlNuYXBzaG90LlByZXNlbmNlc0VudHJ5GkUKDlByZXNlbmNlc0VudHJ5EgsKA2tleRgBIAEoCRIiCgV2YWx1ZRgCIAEoCzITLnlvcmtpZS52MS5QcmVzZW5jZToCOAEi+wEKCkNoYW5nZVBhY2sSFAoMZG9jdW1lbnRfa2V5GAEgASgJEikKCmNoZWNrcG9pbnQYAiABKAsyFS55b3JraWUudjEuQ2hlY2twb2ludBIQCghzbmFwc2hvdBgDIAEoDBIiCgdjaGFuZ2VzGAQgAygLMhEueW9ya2llLnYxLkNoYW5nZRIwChFtaW5fc3luY2VkX3RpY2tldBgFIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EhIKCmlzX3JlbW92ZWQYBiABKAgSMAoOdmVyc2lvbl92ZWN0b3IYByABKAsyGC55b3JraWUudjEuVmVyc2lvblZlY3RvciKYAQoGQ2hhbmdlEh8KAmlkGAEgASgLMhMueW9ya2llLnYxLkNoYW5nZUlEEg8KB21lc3NhZ2UYAiABKAkSKAoKb3BlcmF0aW9ucxgDIAMoCzIULnlvcmtpZS52MS5PcGVyYXRpb24SMgoPcHJlc2VuY2VfY2hhbmdlGAQgASgLMhkueW9ya2llLnYxLlByZXNlbmNlQ2hhbmdlIocBCghDaGFuZ2VJRBISCgpjbGllbnRfc2VxGAEgASgNEhIKCnNlcnZlcl9zZXEYAiABKAMSDwoHbGFtcG9ydBgDIAEoAxIQCghhY3Rvcl9pZBgEIAEoDBIwCg52ZXJzaW9uX3ZlY3RvchgFIAEoCzIYLnlvcmtpZS52MS5WZXJzaW9uVmVjdG9yInQKDVZlcnNpb25WZWN0b3ISNAoGdmVjdG9yGAEgAygLMiQueW9ya2llLnYxLlZlcnNpb25WZWN0b3IuVmVjdG9yRW50cnkaLQoLVmVjdG9yRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgDOgI4ASLZGgoJT3BlcmF0aW9uEicKA3NldBgBIAEoCzIYLnlvcmtpZS52MS5PcGVyYXRpb24uU2V0SAASJwoDYWRkGAIgASgLMhgueW9ya2llLnYxLk9wZXJhdGlvbi5BZGRIABIpCgRtb3ZlGAMgASgLMhkueW9ya2llLnYxLk9wZXJhdGlvbi5Nb3ZlSAASLQoGcmVtb3ZlGAQgASgLMhsueW9ya2llLnYxLk9wZXJhdGlvbi5SZW1vdmVIABIpCgRlZGl0GAUgASgLMhkueW9ya2llLnYxLk9wZXJhdGlvbi5FZGl0SAASKwoFc3R5bGUYByABKAsyGi55b3JraWUudjEuT3BlcmF0aW9uLlN0eWxlSAASMQoIaW5jcmVhc2UYCCABKAsyHS55b3JraWUudjEuT3BlcmF0aW9uLkluY3JlYXNlSAASMgoJdHJlZV9lZGl0GAkgASgLMh0ueW9ya2llLnYxLk9wZXJhdGlvbi5UcmVlRWRpdEgAEjQKCnRyZWVfc3R5bGUYCiABKAsyHi55b3JraWUudjEuT3BlcmF0aW9uLlRyZWVTdHlsZUgAEjIKCWFycmF5X3NldBgLIAEoCzIdLnlvcmtpZS52MS5PcGVyYXRpb24uQXJyYXlTZXRIABqdAQoDU2V0EjAKEXBhcmVudF9jcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSCwoDa2V5GAIgASgJEisKBXZhbHVlGAMgASgLMhwueW9ya2llLnYxLkpTT05FbGVtZW50U2ltcGxlEioKC2V4ZWN1dGVkX2F0GAQgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQawAEKA0FkZBIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0Ei4KD3ByZXZfY3JlYXRlZF9hdBgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EisKBXZhbHVlGAMgASgLMhwueW9ya2llLnYxLkpTT05FbGVtZW50U2ltcGxlEioKC2V4ZWN1dGVkX2F0GAQgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQavwEKBE1vdmUSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIuCg9wcmV2X2NyZWF0ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpjcmVhdGVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKgoLZXhlY3V0ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBqRAQoGUmVtb3ZlEjAKEXBhcmVudF9jcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKQoKY3JlYXRlZF9hdBgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EioKC2V4ZWN1dGVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQa2QMKBEVkaXQSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIkCgRmcm9tGAIgASgLMhYueW9ya2llLnYxLlRleHROb2RlUG9zEiIKAnRvGAMgASgLMhYueW9ya2llLnYxLlRleHROb2RlUG9zElMKF2NyZWF0ZWRfYXRfbWFwX2J5X2FjdG9yGAQgAygLMjIueW9ya2llLnYxLk9wZXJhdGlvbi5FZGl0LkNyZWF0ZWRBdE1hcEJ5QWN0b3JFbnRyeRIPCgdjb250ZW50GAUgASgJEioKC2V4ZWN1dGVkX2F0GAYgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSPQoKYXR0cmlidXRlcxgHIAMoCzIpLnlvcmtpZS52MS5PcGVyYXRpb24uRWRpdC5BdHRyaWJ1dGVzRW50cnkaUQoYQ3JlYXRlZEF0TWFwQnlBY3RvckVudHJ5EgsKA2tleRgBIAEoCRIkCgV2YWx1ZRgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0OgI4ARoxCg9BdHRyaWJ1dGVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARrpAwoFU3R5bGUSMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIkCgRmcm9tGAIgASgLMhYueW9ya2llLnYxLlRleHROb2RlUG9zEiIKAnRvGAMgASgLMhYueW9ya2llLnYxLlRleHROb2RlUG9zEj4KCmF0dHJpYnV0ZXMYBCADKAsyKi55b3JraWUudjEuT3BlcmF0aW9uLlN0eWxlLkF0dHJpYnV0ZXNFbnRyeRIqCgtleGVjdXRlZF9hdBgFIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0ElQKF2NyZWF0ZWRfYXRfbWFwX2J5X2FjdG9yGAYgAygLMjMueW9ya2llLnYxLk9wZXJhdGlvbi5TdHlsZS5DcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkSHAoUYXR0cmlidXRlc190b19yZW1vdmUYByADKAkaMQoPQXR0cmlidXRlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaUQoYQ3JlYXRlZEF0TWFwQnlBY3RvckVudHJ5EgsKA2tleRgBIAEoCRIkCgV2YWx1ZRgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0OgI4ARqkAQoISW5jcmVhc2USMAoRcGFyZW50X2NyZWF0ZWRfYXQYASABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIrCgV2YWx1ZRgCIAEoCzIcLnlvcmtpZS52MS5KU09ORWxlbWVudFNpbXBsZRIqCgtleGVjdXRlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0Eg0KBWFjdG9yGAQgASgJGpMDCghUcmVlRWRpdBIwChFwYXJlbnRfY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EiAKBGZyb20YAiABKAsyEi55b3JraWUudjEuVHJlZVBvcxIeCgJ0bxgDIAEoCzISLnlvcmtpZS52MS5UcmVlUG9zElcKF2NyZWF0ZWRfYXRfbWFwX2J5X2FjdG9yGAQgAygLMjYueW9ya2llLnYxLk9wZXJhdGlvbi5UcmVlRWRpdC5DcmVhdGVkQXRNYXBCeUFjdG9yRW50cnkSJgoIY29udGVudHMYBSADKAsyFC55b3JraWUudjEuVHJlZU5vZGVzEhMKC3NwbGl0X2xldmVsGAcgASgFEioKC2V4ZWN1dGVkX2F0GAYgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQaUQoYQ3JlYXRlZEF0TWFwQnlBY3RvckVudHJ5EgsKA2tleRgBIAEoCRIkCgV2YWx1ZRgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0OgI4ARrtAwoJVHJlZVN0eWxlEjAKEXBhcmVudF9jcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSIAoEZnJvbRgCIAEoCzISLnlvcmtpZS52MS5UcmVlUG9zEh4KAnRvGAMgASgLMhIueW9ya2llLnYxLlRyZWVQb3MSQgoKYXR0cmlidXRlcxgEIAMoCzIuLnlvcmtpZS52MS5PcGVyYXRpb24uVHJlZVN0eWxlLkF0dHJpYnV0ZXNFbnRyeRIqCgtleGVjdXRlZF9hdBgFIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EhwKFGF0dHJpYnV0ZXNfdG9fcmVtb3ZlGAYgAygJElgKF2NyZWF0ZWRfYXRfbWFwX2J5X2FjdG9yGAcgAygLMjcueW9ya2llLnYxLk9wZXJhdGlvbi5UcmVlU3R5bGUuQ3JlYXRlZEF0TWFwQnlBY3RvckVudHJ5GjEKD0F0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGlEKGENyZWF0ZWRBdE1hcEJ5QWN0b3JFbnRyeRILCgNrZXkYASABKAkSJAoFdmFsdWUYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldDoCOAEawAEKCEFycmF5U2V0EjAKEXBhcmVudF9jcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKQoKY3JlYXRlZF9hdBgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EisKBXZhbHVlGAMgASgLMhwueW9ya2llLnYxLkpTT05FbGVtZW50U2ltcGxlEioKC2V4ZWN1dGVkX2F0GAQgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXRCBgoEYm9keSLFAQoRSlNPTkVsZW1lbnRTaW1wbGUSKQoKY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EicKCG1vdmVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKQoKcmVtb3ZlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EiIKBHR5cGUYBCABKA4yFC55b3JraWUudjEuVmFsdWVUeXBlEg0KBXZhbHVlGAUgASgMIp8LCgtKU09ORWxlbWVudBI4Cgtqc29uX29iamVjdBgBIAEoCzIhLnlvcmtpZS52MS5KU09ORWxlbWVudC5KU09OT2JqZWN0SAASNgoKanNvbl9hcnJheRgCIAEoCzIgLnlvcmtpZS52MS5KU09ORWxlbWVudC5KU09OQXJyYXlIABI1CglwcmltaXRpdmUYAyABKAsyIC55b3JraWUudjEuSlNPTkVsZW1lbnQuUHJpbWl0aXZlSAASKwoEdGV4dBgFIAEoCzIbLnlvcmtpZS52MS5KU09ORWxlbWVudC5UZXh0SAASMQoHY291bnRlchgGIAEoCzIeLnlvcmtpZS52MS5KU09ORWxlbWVudC5Db3VudGVySAASKwoEdHJlZRgHIAEoCzIbLnlvcmtpZS52MS5KU09ORWxlbWVudC5UcmVlSAAargEKCkpTT05PYmplY3QSIQoFbm9kZXMYASADKAsyEi55b3JraWUudjEuUkhUTm9kZRIpCgpjcmVhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSJwoIbW92ZWRfYXQYAyABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpyZW1vdmVkX2F0GAQgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQarQEKCUpTT05BcnJheRIhCgVub2RlcxgBIAMoCzISLnlvcmtpZS52MS5SR0FOb2RlEikKCmNyZWF0ZWRfYXQYAiABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBInCghtb3ZlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EikKCnJlbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBq9AQoJUHJpbWl0aXZlEiIKBHR5cGUYASABKA4yFC55b3JraWUudjEuVmFsdWVUeXBlEg0KBXZhbHVlGAIgASgMEikKCmNyZWF0ZWRfYXQYAyABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBInCghtb3ZlZF9hdBgEIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EikKCnJlbW92ZWRfYXQYBSABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBqpAQoEVGV4dBIiCgVub2RlcxgBIAMoCzITLnlvcmtpZS52MS5UZXh0Tm9kZRIpCgpjcmVhdGVkX2F0GAIgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSJwoIbW92ZWRfYXQYAyABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIpCgpyZW1vdmVkX2F0GAQgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQa2AEKB0NvdW50ZXISIgoEdHlwZRgBIAEoDjIULnlvcmtpZS52MS5WYWx1ZVR5cGUSDQoFdmFsdWUYAiABKAwSKQoKY3JlYXRlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EicKCG1vdmVkX2F0GAQgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKQoKcmVtb3ZlZF9hdBgFIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EhUKDWhsbF9yZWdpc3RlcnMYByABKAxKBAgGEAcaqQEKBFRyZWUSIgoFbm9kZXMYASADKAsyEy55b3JraWUudjEuVHJlZU5vZGUSKQoKY3JlYXRlZF9hdBgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EicKCG1vdmVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSKQoKcmVtb3ZlZF9hdBgEIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0QgYKBGJvZHkiPwoHUkhUTm9kZRILCgNrZXkYASABKAkSJwoHZWxlbWVudBgCIAEoCzIWLnlvcmtpZS52MS5KU09ORWxlbWVudCLuAQoHUkdBTm9kZRIgCgRuZXh0GAEgASgLMhIueW9ya2llLnYxLlJHQU5vZGUSJwoHZWxlbWVudBgCIAEoCzIWLnlvcmtpZS52MS5KU09ORWxlbWVudBIyChNwb3NpdGlvbl9jcmVhdGVkX2F0GAMgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSMAoRcG9zaXRpb25fbW92ZWRfYXQYBCABKAsyFS55b3JraWUudjEuVGltZVRpY2tldBIyChNwb3NpdGlvbl9yZW1vdmVkX2F0GAUgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQiWAoITm9kZUF0dHISDQoFdmFsdWUYASABKAkSKQoKdXBkYXRlZF9hdBgCIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EhIKCmlzX3JlbW92ZWQYAyABKAgilAIKCFRleHROb2RlEiEKAmlkGAEgASgLMhUueW9ya2llLnYxLlRleHROb2RlSUQSDQoFdmFsdWUYAiABKAkSKQoKcmVtb3ZlZF9hdBgDIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EioKC2luc19wcmV2X2lkGAQgASgLMhUueW9ya2llLnYxLlRleHROb2RlSUQSNwoKYXR0cmlidXRlcxgFIAMoCzIjLnlvcmtpZS52MS5UZXh0Tm9kZS5BdHRyaWJ1dGVzRW50cnkaRgoPQXR0cmlidXRlc0VudHJ5EgsKA2tleRgBIAEoCRIiCgV2YWx1ZRgCIAEoCzITLnlvcmtpZS52MS5Ob2RlQXR0cjoCOAEiRwoKVGV4dE5vZGVJRBIpCgpjcmVhdGVkX2F0GAEgASgLMhUueW9ya2llLnYxLlRpbWVUaWNrZXQSDgoGb2Zmc2V0GAIgASgFIrMDCghUcmVlTm9kZRIhCgJpZBgBIAEoCzIVLnlvcmtpZS52MS5UcmVlTm9kZUlEEgwKBHR5cGUYAiABKAkSDQoFdmFsdWUYAyABKAkSKQoKcmVtb3ZlZF9hdBgEIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0EioKC2luc19wcmV2X2lkGAUgASgLMhUueW9ya2llLnYxLlRyZWVOb2RlSUQSKgoLaW5zX25leHRfaWQYBiABKAsyFS55b3JraWUudjEuVHJlZU5vZGVJRBINCgVkZXB0aBgHIAEoBRI3CgphdHRyaWJ1dGVzGAggAygLMiMueW9ya2llLnYxLlRyZWVOb2RlLkF0dHJpYnV0ZXNFbnRyeRIqCgttZXJnZWRfZnJvbRgJIAEoCzIVLnlvcmtpZS52MS5UcmVlTm9kZUlEEigKCW1lcmdlZF9hdBgKIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0GkYKD0F0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkSIgoFdmFsdWUYAiABKAsyEy55b3JraWUudjEuTm9kZUF0dHI6AjgBIjEKCVRyZWVOb2RlcxIkCgdjb250ZW50GAEgAygLMhMueW9ya2llLnYxLlRyZWVOb2RlIkcKClRyZWVOb2RlSUQSKQoKY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0Eg4KBm9mZnNldBgCIAEoBSJjCgdUcmVlUG9zEigKCXBhcmVudF9pZBgBIAEoCzIVLnlvcmtpZS52MS5UcmVlTm9kZUlEEi4KD2xlZnRfc2libGluZ19pZBgCIAEoCzIVLnlvcmtpZS52MS5UcmVlTm9kZUlEImsKBFVzZXISCgoCaWQYASABKAkSFQoNYXV0aF9wcm92aWRlchgCIAEoCRIQCgh1c2VybmFtZRgDIAEoCRIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKJAQoGTWVtYmVyEgoKAmlkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSDwoHdXNlcl9pZBgDIAEoCRIQCgh1c2VybmFtZRgEIAEoCRIMCgRyb2xlGAUgASgJEi4KCmludml0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIukGCgdQcm9qZWN0EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEgoKcHVibGljX2tleRgDIAEoCRISCgpzZWNyZXRfa2V5GAQgASgJEhgKEGF1dGhfd2ViaG9va191cmwYBSABKAkSHAoUYXV0aF93ZWJob29rX21ldGhvZHMYBiADKAkSIAoYYXV0aF93ZWJob29rX21heF9yZXRyaWVzGBEgASgEEiYKHmF1dGhfd2ViaG9va19taW5fd2FpdF9pbnRlcnZhbBgSIAEoCRImCh5hdXRoX3dlYmhvb2tfbWF4X3dhaXRfaW50ZXJ2YWwYEyABKAkSJAocYXV0aF93ZWJob29rX3JlcXVlc3RfdGltZW91dBgUIAEoCRIZChFldmVudF93ZWJob29rX3VybBgHIAEoCRIcChRldmVudF93ZWJob29rX2V2ZW50cxgIIAMoCRIhChlldmVudF93ZWJob29rX21heF9yZXRyaWVzGBUgASgEEicKH2V2ZW50X3dlYmhvb2tfbWluX3dhaXRfaW50ZXJ2YWwYFiABKAkSJwofZXZlbnRfd2ViaG9va19tYXhfd2FpdF9pbnRlcnZhbBgXIAEoCRIlCh1ldmVudF93ZWJob29rX3JlcXVlc3RfdGltZW91dBgYIAEoCRIjChtjbGllbnRfZGVhY3RpdmF0ZV90aHJlc2hvbGQYCSABKAkSGgoSc25hcHNob3RfdGhyZXNob2xkGBkgASgDEhkKEXNuYXBzaG90X2ludGVydmFsGBogASgDEiQKHG1heF9zdWJzY3JpYmVyc19wZXJfZG9jdW1lbnQYCiABKAUSJAocbWF4X2F0dGFjaG1lbnRzX3Blcl9kb2N1bWVudBgLIAEoBRIdChVtYXhfc2l6ZV9wZXJfZG9jdW1lbnQYDyABKAUSGAoQcmVtb3ZlX29uX2RldGFjaBgQIAEoCBIdChVhdXRvX3JldmlzaW9uX2VuYWJsZWQYGyABKAgSFwoPYWxsb3dlZF9vcmlnaW5zGA4gAygJEi4KCmNyZWF0ZWRfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIi8KC01ldHJpY1BvaW50EhEKCXRpbWVzdGFtcBgBIAEoAxINCgV2YWx1ZRgCIAEoBSKjDAoWVXBkYXRhYmxlUHJvamVjdEZpZWxkcxIqCgRuYW1lGAEgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEjYKEGF1dGhfd2ViaG9va191cmwYAiABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSUgoUYXV0aF93ZWJob29rX21ldGhvZHMYAyABKAsyNC55b3JraWUudjEuVXBkYXRhYmxlUHJvamVjdEZpZWxkcy5BdXRoV2ViaG9va01ldGhvZHMSPgoYYXV0aF93ZWJob29rX21heF9yZXRyaWVzGAwgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlVJbnQ2NFZhbHVlEkQKHmF1dGhfd2ViaG9va19taW5fd2FpdF9pbnRlcnZhbBgNIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJECh5hdXRoX3dlYmhvb2tfbWF4X3dhaXRfaW50ZXJ2YWwYDiABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSQgocYXV0aF93ZWJob29rX3JlcXVlc3RfdGltZW91dBgPIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRI3ChFldmVudF93ZWJob29rX3VybBgEIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJSChRldmVudF93ZWJob29rX2V2ZW50cxgFIAEoCzI0LnlvcmtpZS52MS5VcGRhdGFibGVQcm9qZWN0RmllbGRzLkV2ZW50V2ViaG9va0V2ZW50cxI/ChlldmVudF93ZWJob29rX21heF9yZXRyaWVzGBAgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlVJbnQ2NFZhbHVlEkUKH2V2ZW50X3dlYmhvb2tfbWluX3dhaXRfaW50ZXJ2YWwYESABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSRQofZXZlbnRfd2ViaG9va19tYXhfd2FpdF9pbnRlcnZhbBgSIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJDCh1ldmVudF93ZWJob29rX3JlcXVlc3RfdGltZW91dBgTIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRI3ChJzbmFwc2hvdF90aHJlc2hvbGQYFCABKAsyGy5nb29nbGUucHJvdG9idWYuSW50NjRWYWx1ZRI2ChFzbmFwc2hvdF9pbnRlcnZhbBgVIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQ2NFZhbHVlEkEKG2NsaWVudF9kZWFjdGl2YXRlX3RocmVzaG9sZBgGIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRJBChxtYXhfc3Vic2NyaWJlcnNfcGVyX2RvY3VtZW50GAcgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWUSQQocbWF4X2F0dGFjaG1lbnRzX3Blcl9kb2N1bWVudBgIIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlEjoKFW1heF9zaXplX3Blcl9kb2N1bWVudBgKIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlEjQKEHJlbW92ZV9vbl9kZXRhY2gYCyABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlEjkKFWF1dG9fcmV2aXNpb25fZW5hYmxlZBgWIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5Cb29sVmFsdWUSSQoPYWxsb3dlZF9vcmlnaW5zGAkgASgLMjAueW9ya2llLnYxLlVwZGF0YWJsZVByb2plY3RGaWVsZHMuQWxsb3dlZE9yaWdpbnMaJQoSQXV0aFdlYmhvb2tNZXRob2RzEg8KB21ldGhvZHMYASADKAkaJAoSRXZlbnRXZWJob29rRXZlbnRzEg4KBmV2ZW50cxgBIAMoCRohCg5BbGxvd2VkT3JpZ2lucxIPCgdvcmlnaW5zGAEgAygJIqcDCg9Eb2N1bWVudFN1bW1hcnkSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBHJvb3QYAyABKAkSGAoQYXR0YWNoZWRfY2xpZW50cxgHIAEoBRIpCg1kb2N1bWVudF9zaXplGAggASgLMhIueW9ya2llLnYxLkRvY1NpemUSEgoKc2NoZW1hX2tleRgJIAEoCRI8CglwcmVzZW5jZXMYCiADKAsyKS55b3JraWUudjEuRG9jdW1lbnRTdW1tYXJ5LlByZXNlbmNlc0VudHJ5Ei4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KC2FjY2Vzc2VkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBpFCg5QcmVzZW5jZXNFbnRyeRILCgNrZXkYASABKAkSIgoFdmFsdWUYAiABKAsyEy55b3JraWUudjEuUHJlc2VuY2U6AjgBItoBCg5QcmVzZW5jZUNoYW5nZRIyCgR0eXBlGAEgASgOMiQueW9ya2llLnYxLlByZXNlbmNlQ2hhbmdlLkNoYW5nZVR5cGUSJQoIcHJlc2VuY2UYAiABKAsyEy55b3JraWUudjEuUHJlc2VuY2UibQoKQ2hhbmdlVHlwZRIbChdDSEFOR0VfVFlQRV9VTlNQRUNJRklFRBAAEhMKD0NIQU5HRV9UWVBFX1BVVBABEhYKEkNIQU5HRV9UWVBFX0RFTEVURRACEhUKEUNIQU5HRV9UWVBFX0NMRUFSEAMiZAoIUHJlc2VuY2USKwoEZGF0YRgBIAMoCzIdLnlvcmtpZS52MS5QcmVzZW5jZS5EYXRhRW50cnkaKwoJRGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiNAoOQ2hhbm5lbFN1bW1hcnkSCwoDa2V5GAEgASgJEhUKDXNlc3Npb25fY291bnQYAiABKAUiNAoKQ2hlY2twb2ludBISCgpzZXJ2ZXJfc2VxGAEgASgDEhIKCmNsaWVudF9zZXEYAiABKA0iYQoLVGV4dE5vZGVQb3MSKQoKY3JlYXRlZF9hdBgBIAEoCzIVLnlvcmtpZS52MS5UaW1lVGlja2V0Eg4KBm9mZnNldBgCIAEoBRIXCg9yZWxhdGl2ZV9vZmZzZXQYAyABKAUiQgoKVGltZVRpY2tldBIPCgdsYW1wb3J0GAEgASgDEhEKCWRlbGltaXRlchgCIAEoDRIQCghhY3Rvcl9pZBgDIAEoDCIuCgxEb2NFdmVudEJvZHkSDQoFdG9waWMYASABKAkSDwoHcGF5bG9hZBgCIAEoDCJrCghEb2NFdmVudBIlCgR0eXBlGAEgASgOMhcueW9ya2llLnYxLkRvY0V2ZW50VHlwZRIRCglwdWJsaXNoZXIYAiABKAkSJQoEYm9keRgDIAEoCzIXLnlvcmtpZS52MS5Eb2NFdmVudEJvZHki1gEKDENoYW5uZWxFdmVudBIqCgR0eXBlGAEgASgOMhwueW9ya2llLnYxLkNoYW5uZWxFdmVudC5UeXBlEhEKCXB1Ymxpc2hlchgCIAEoCRIVCg1zZXNzaW9uX2NvdW50GAMgASgDEgsKA3NlcRgEIAEoAxINCgV0b3BpYxgFIAEoCRIPCgdwYXlsb2FkGAYgASgMIkMKBFR5cGUSFAoQVFlQRV9VTlNQRUNJRklFRBAAEhEKDVRZUEVfUFJFU0VOQ0UQARISCg5UWVBFX0JST0FEQ0FTVBACIiYKCERhdGFTaXplEgwKBGRhdGEYASABKAUSDAoEbWV0YRgCIAEoBSJNCgdEb2NTaXplEiEKBGxpdmUYASABKAsyEy55b3JraWUudjEuRGF0YVNpemUSHwoCZ2MYAiABKAsyEy55b3JraWUudjEuRGF0YVNpemUikQEKBlNjaGVtYRIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEg8KB3ZlcnNpb24YAyABKAUSDAoEYm9keRgEIAEoCRIeCgVydWxlcxgFIAMoCzIPLnlvcmtpZS52MS5SdWxlEi4KCmNyZWF0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIlAKDFRyZWVOb2RlUnVsZRIRCglub2RlX3R5cGUYASABKAkSDwoHY29udGVudBgCIAEoCRINCgVtYXJrcxgDIAEoCRINCgVncm91cBgEIAEoCSJPCgRSdWxlEgwKBHBhdGgYASABKAkSDAoEdHlwZRgCIAEoCRIrCgp0cmVlX25vZGVzGAMgAygLMhcueW9ya2llLnYxLlRyZWVOb2RlUnVsZSKDAQoPUmV2aXNpb25TdW1tYXJ5EgoKAmlkGAEgASgJEg0KBWxhYmVsGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhAKCHNuYXBzaG90GAQgASgJEi4KCmNyZWF0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wKvwCCglWYWx1ZVR5cGUSEwoPVkFMVUVfVFlQRV9OVUxMEAASFgoSVkFMVUVfVFlQRV9CT09MRUFOEAESFgoSVkFMVUVfVFlQRV9JTlRFR0VSEAISEwoPVkFMVUVfVFlQRV9MT05HEAMSFQoRVkFMVUVfVFlQRV9ET1VCTEUQBBIVChFWQUxVRV9UWVBFX1NUUklORxAFEhQKEFZBTFVFX1RZUEVfQllURVMQBhITCg9WQUxVRV9UWVBFX0RBVEUQBxIaChZWQUxVRV9UWVBFX0pTT05fT0JKRUNUEAgSGQoVVkFMVUVfVFlQRV9KU09OX0FSUkFZEAkSEwoPVkFMVUVfVFlQRV9URVhUEAoSGgoWVkFMVUVfVFlQRV9JTlRFR0VSX0NOVBALEhcKE1ZBTFVFX1RZUEVfTE9OR19DTlQQDBITCg9WQUxVRV9UWVBFX1RSRUUQDRIgChxWQUxVRV9UWVBFX0lOVEVHRVJfREVEVVBfQ05UEA4iBAgPEA8qpgEKDERvY0V2ZW50VHlwZRIjCh9ET0NfRVZFTlRfVFlQRV9ET0NVTUVOVF9DSEFOR0VEEAASIwofRE9DX0VWRU5UX1RZUEVfRE9DVU1FTlRfV0FUQ0hFRBABEiUKIURPQ19FVkVOVF9UWVBFX0RPQ1VNRU5UX1VOV0FUQ0hFRBACEiUKIURPQ19FVkVOVF9UWVBFX0RPQ1VNRU5UX0JST0FEQ0FTVBADQkUKEWRldi55b3JraWUuYXBpLnYxUAFaLmdpdGh1Yi5jb20veW9ya2llLXRlYW0veW9ya2llL2FwaS95b3JraWUvdjE7djFiBnByb3RvMw", [file_google_protobuf_timestamp, file_google_protobuf_wrappers]);
|
|
5794
|
+
const SnapshotSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 0);
|
|
5795
|
+
const ChangePackSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 1);
|
|
5796
|
+
const ChangeSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 2);
|
|
5797
|
+
const ChangeIDSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 3);
|
|
5798
|
+
const VersionVectorSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 4);
|
|
5799
|
+
const OperationSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 5);
|
|
5800
|
+
const Operation_SetSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 5, 0);
|
|
5801
|
+
const Operation_AddSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 5, 1);
|
|
5802
|
+
const Operation_MoveSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 5, 2);
|
|
5803
|
+
const Operation_RemoveSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 5, 3);
|
|
5804
|
+
const Operation_EditSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 5, 4);
|
|
5805
|
+
const Operation_StyleSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 5, 5);
|
|
5806
|
+
const Operation_IncreaseSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 5, 6);
|
|
5807
|
+
const Operation_TreeEditSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 5, 7);
|
|
5808
|
+
const Operation_TreeStyleSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 5, 8);
|
|
5809
|
+
const Operation_ArraySetSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 5, 9);
|
|
5810
|
+
const JSONElementSimpleSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 6);
|
|
5811
|
+
const JSONElementSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 7);
|
|
5812
|
+
const JSONElement_JSONObjectSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 7, 0);
|
|
5813
|
+
const JSONElement_JSONArraySchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 7, 1);
|
|
5814
|
+
const JSONElement_PrimitiveSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 7, 2);
|
|
5815
|
+
const JSONElement_TextSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 7, 3);
|
|
5816
|
+
const JSONElement_CounterSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 7, 4);
|
|
5817
|
+
const JSONElement_TreeSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 7, 5);
|
|
5818
|
+
const RHTNodeSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 8);
|
|
5819
|
+
const RGANodeSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 9);
|
|
5820
|
+
const NodeAttrSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 10);
|
|
5821
|
+
const TextNodeSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 11);
|
|
5822
|
+
const TextNodeIDSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 12);
|
|
5823
|
+
const TreeNodeSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 13);
|
|
5824
|
+
const TreeNodesSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 14);
|
|
5825
|
+
const TreeNodeIDSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 15);
|
|
5826
|
+
const TreePosSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 16);
|
|
5827
|
+
const PresenceChangeSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 23);
|
|
5828
5828
|
var PresenceChange_ChangeType = /* @__PURE__ */ ((PresenceChange_ChangeType2) => {
|
|
5829
5829
|
PresenceChange_ChangeType2[PresenceChange_ChangeType2["UNSPECIFIED"] = 0] = "UNSPECIFIED";
|
|
5830
5830
|
PresenceChange_ChangeType2[PresenceChange_ChangeType2["PUT"] = 1] = "PUT";
|
|
@@ -5832,10 +5832,10 @@ var PresenceChange_ChangeType = /* @__PURE__ */ ((PresenceChange_ChangeType2) =>
|
|
|
5832
5832
|
PresenceChange_ChangeType2[PresenceChange_ChangeType2["CLEAR"] = 3] = "CLEAR";
|
|
5833
5833
|
return PresenceChange_ChangeType2;
|
|
5834
5834
|
})(PresenceChange_ChangeType || {});
|
|
5835
|
-
const PresenceSchema = /* @__PURE__ */ messageDesc(
|
|
5836
|
-
const CheckpointSchema = /* @__PURE__ */ messageDesc(
|
|
5837
|
-
const TextNodePosSchema = /* @__PURE__ */ messageDesc(
|
|
5838
|
-
const TimeTicketSchema = /* @__PURE__ */ messageDesc(
|
|
5835
|
+
const PresenceSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 24);
|
|
5836
|
+
const CheckpointSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 26);
|
|
5837
|
+
const TextNodePosSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 27);
|
|
5838
|
+
const TimeTicketSchema = /* @__PURE__ */ messageDesc(file_yorkie_v1_resources, 28);
|
|
5839
5839
|
var ChannelEvent_Type = /* @__PURE__ */ ((ChannelEvent_Type2) => {
|
|
5840
5840
|
ChannelEvent_Type2[ChannelEvent_Type2["UNSPECIFIED"] = 0] = "UNSPECIFIED";
|
|
5841
5841
|
ChannelEvent_Type2[ChannelEvent_Type2["PRESENCE"] = 1] = "PRESENCE";
|
|
@@ -5867,8 +5867,8 @@ var DocEventType$1 = /* @__PURE__ */ ((DocEventType2) => {
|
|
|
5867
5867
|
DocEventType2[DocEventType2["DOCUMENT_BROADCAST"] = 3] = "DOCUMENT_BROADCAST";
|
|
5868
5868
|
return DocEventType2;
|
|
5869
5869
|
})(DocEventType$1 || {});
|
|
5870
|
-
const
|
|
5871
|
-
const YorkieService = /* @__PURE__ */ serviceDesc(
|
|
5870
|
+
const file_yorkie_v1_yorkie = /* @__PURE__ */ fileDesc("ChZ5b3JraWUvdjEveW9ya2llLnByb3RvEgl5b3JraWUudjEingEKFUFjdGl2YXRlQ2xpZW50UmVxdWVzdBISCgpjbGllbnRfa2V5GAEgASgJEkAKCG1ldGFkYXRhGAIgAygLMi4ueW9ya2llLnYxLkFjdGl2YXRlQ2xpZW50UmVxdWVzdC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASIrChZBY3RpdmF0ZUNsaWVudFJlc3BvbnNlEhEKCWNsaWVudF9pZBgBIAEoCSJBChdEZWFjdGl2YXRlQ2xpZW50UmVxdWVzdBIRCgljbGllbnRfaWQYASABKAkSEwoLc3luY2hyb25vdXMYAiABKAgiGgoYRGVhY3RpdmF0ZUNsaWVudFJlc3BvbnNlImoKFUF0dGFjaERvY3VtZW50UmVxdWVzdBIRCgljbGllbnRfaWQYASABKAkSKgoLY2hhbmdlX3BhY2sYAiABKAsyFS55b3JraWUudjEuQ2hhbmdlUGFjaxISCgpzY2hlbWFfa2V5GAMgASgJIp8BChZBdHRhY2hEb2N1bWVudFJlc3BvbnNlEhMKC2RvY3VtZW50X2lkGAEgASgJEioKC2NoYW5nZV9wYWNrGAIgASgLMhUueW9ya2llLnYxLkNoYW5nZVBhY2sSHQoVbWF4X3NpemVfcGVyX2RvY3VtZW50GAMgASgFEiUKDHNjaGVtYV9ydWxlcxgEIAMoCzIPLnlvcmtpZS52MS5SdWxlIosBChVEZXRhY2hEb2N1bWVudFJlcXVlc3QSEQoJY2xpZW50X2lkGAEgASgJEhMKC2RvY3VtZW50X2lkGAIgASgJEioKC2NoYW5nZV9wYWNrGAMgASgLMhUueW9ya2llLnYxLkNoYW5nZVBhY2sSHgoWcmVtb3ZlX2lmX25vdF9hdHRhY2hlZBgEIAEoCCJEChZEZXRhY2hEb2N1bWVudFJlc3BvbnNlEioKC2NoYW5nZV9wYWNrGAIgASgLMhUueW9ya2llLnYxLkNoYW5nZVBhY2siUwoMV2F0Y2hSZXF1ZXN0EhEKCWNsaWVudF9pZBgBIAEoCRIwCglyZXNvdXJjZXMYAiADKAsyHS55b3JraWUudjEuUmVzb3VyY2VEZXNjcmlwdG9yIoQBChJSZXNvdXJjZURlc2NyaXB0b3ISMQoIZG9jdW1lbnQYASABKAsyHS55b3JraWUudjEuRG9jdW1lbnREZXNjcmlwdG9ySAASLwoHY2hhbm5lbBgCIAEoCzIcLnlvcmtpZS52MS5DaGFubmVsRGVzY3JpcHRvckgAQgoKCHJlc291cmNlIikKEkRvY3VtZW50RGVzY3JpcHRvchITCgtkb2N1bWVudF9pZBgBIAEoCSIoChFDaGFubmVsRGVzY3JpcHRvchITCgtjaGFubmVsX2tleRgBIAEoCSJ5Cg1XYXRjaFJlc3BvbnNlEjgKDmluaXRpYWxpemF0aW9uGAEgASgLMh4ueW9ya2llLnYxLldhdGNoSW5pdGlhbGl6YXRpb25IABImCgVldmVudBgCIAEoCzIVLnlvcmtpZS52MS5XYXRjaEV2ZW50SABCBgoEYm9keSJGChNXYXRjaEluaXRpYWxpemF0aW9uEi8KDnJlc291cmNlX2luaXRzGAEgAygLMhcueW9ya2llLnYxLlJlc291cmNlSW5pdCJ4CgxSZXNvdXJjZUluaXQSMAoNZG9jdW1lbnRfaW5pdBgBIAEoCzIXLnlvcmtpZS52MS5Eb2N1bWVudEluaXRIABIuCgxjaGFubmVsX2luaXQYAiABKAsyFi55b3JraWUudjEuQ2hhbm5lbEluaXRIAEIGCgRpbml0IjcKDERvY3VtZW50SW5pdBITCgtkb2N1bWVudF9pZBgBIAEoCRISCgpjbGllbnRfaWRzGAIgAygJIkYKC0NoYW5uZWxJbml0EhMKC2NoYW5uZWxfa2V5GAEgASgJEhUKDXNlc3Npb25fY291bnQYAiABKAMSCwoDc2VxGAMgASgDInsKCldhdGNoRXZlbnQSLQoJZG9jX2V2ZW50GAEgASgLMhgueW9ya2llLnYxLkRvY1dhdGNoRXZlbnRIABI1Cg1jaGFubmVsX2V2ZW50GAIgASgLMhwueW9ya2llLnYxLkNoYW5uZWxXYXRjaEV2ZW50SABCBwoFZXZlbnQiSAoNRG9jV2F0Y2hFdmVudBITCgtkb2N1bWVudF9pZBgBIAEoCRIiCgVldmVudBgCIAEoCzITLnlvcmtpZS52MS5Eb2NFdmVudCJQChFDaGFubmVsV2F0Y2hFdmVudBITCgtjaGFubmVsX2tleRgBIAEoCRImCgVldmVudBgCIAEoCzIXLnlvcmtpZS52MS5DaGFubmVsRXZlbnQiPgoUV2F0Y2hEb2N1bWVudFJlcXVlc3QSEQoJY2xpZW50X2lkGAEgASgJEhMKC2RvY3VtZW50X2lkGAIgASgJIrYBChVXYXRjaERvY3VtZW50UmVzcG9uc2USSQoOaW5pdGlhbGl6YXRpb24YASABKAsyLy55b3JraWUudjEuV2F0Y2hEb2N1bWVudFJlc3BvbnNlLkluaXRpYWxpemF0aW9uSAASJAoFZXZlbnQYAiABKAsyEy55b3JraWUudjEuRG9jRXZlbnRIABokCg5Jbml0aWFsaXphdGlvbhISCgpjbGllbnRfaWRzGAEgAygJQgYKBGJvZHkiPQoTV2F0Y2hDaGFubmVsUmVxdWVzdBIRCgljbGllbnRfaWQYASABKAkSEwoLY2hhbm5lbF9rZXkYAiABKAkigwEKFFdhdGNoQ2hhbm5lbFJlc3BvbnNlEjkKC2luaXRpYWxpemVkGAEgASgLMiIueW9ya2llLnYxLldhdGNoQ2hhbm5lbEluaXRpYWxpemVkSAASKAoFZXZlbnQYAiABKAsyFy55b3JraWUudjEuQ2hhbm5lbEV2ZW50SABCBgoEYm9keSI9ChdXYXRjaENoYW5uZWxJbml0aWFsaXplZBIVCg1zZXNzaW9uX2NvdW50GAEgASgDEgsKA3NlcRgCIAEoAyJrChVSZW1vdmVEb2N1bWVudFJlcXVlc3QSEQoJY2xpZW50X2lkGAEgASgJEhMKC2RvY3VtZW50X2lkGAIgASgJEioKC2NoYW5nZV9wYWNrGAMgASgLMhUueW9ya2llLnYxLkNoYW5nZVBhY2siRAoWUmVtb3ZlRG9jdW1lbnRSZXNwb25zZRIqCgtjaGFuZ2VfcGFjaxgBIAEoCzIVLnlvcmtpZS52MS5DaGFuZ2VQYWNrIn8KFlB1c2hQdWxsQ2hhbmdlc1JlcXVlc3QSEQoJY2xpZW50X2lkGAEgASgJEhMKC2RvY3VtZW50X2lkGAIgASgJEioKC2NoYW5nZV9wYWNrGAMgASgLMhUueW9ya2llLnYxLkNoYW5nZVBhY2sSEQoJcHVzaF9vbmx5GAQgASgIIkUKF1B1c2hQdWxsQ2hhbmdlc1Jlc3BvbnNlEioKC2NoYW5nZV9wYWNrGAEgASgLMhUueW9ya2llLnYxLkNoYW5nZVBhY2siYwoVQ3JlYXRlUmV2aXNpb25SZXF1ZXN0EhEKCWNsaWVudF9pZBgBIAEoCRITCgtkb2N1bWVudF9pZBgCIAEoCRINCgVsYWJlbBgDIAEoCRITCgtkZXNjcmlwdGlvbhgEIAEoCSJGChZDcmVhdGVSZXZpc2lvblJlc3BvbnNlEiwKCHJldmlzaW9uGAEgASgLMhoueW9ya2llLnYxLlJldmlzaW9uU3VtbWFyeSJRChJHZXRSZXZpc2lvblJlcXVlc3QSEQoJY2xpZW50X2lkGAEgASgJEhMKC2RvY3VtZW50X2lkGAIgASgJEhMKC3JldmlzaW9uX2lkGAMgASgJIkMKE0dldFJldmlzaW9uUmVzcG9uc2USLAoIcmV2aXNpb24YASABKAsyGi55b3JraWUudjEuUmV2aXNpb25TdW1tYXJ5InUKFExpc3RSZXZpc2lvbnNSZXF1ZXN0EhEKCWNsaWVudF9pZBgBIAEoCRITCgtkb2N1bWVudF9pZBgCIAEoCRIRCglwYWdlX3NpemUYAyABKAUSDgoGb2Zmc2V0GAQgASgFEhIKCmlzX2ZvcndhcmQYBSABKAgiRgoVTGlzdFJldmlzaW9uc1Jlc3BvbnNlEi0KCXJldmlzaW9ucxgBIAMoCzIaLnlvcmtpZS52MS5SZXZpc2lvblN1bW1hcnkiVQoWUmVzdG9yZVJldmlzaW9uUmVxdWVzdBIRCgljbGllbnRfaWQYASABKAkSEwoLZG9jdW1lbnRfaWQYAiABKAkSEwoLcmV2aXNpb25faWQYBCABKAkiGQoXUmVzdG9yZVJldmlzaW9uUmVzcG9uc2UiPgoUQXR0YWNoQ2hhbm5lbFJlcXVlc3QSEQoJY2xpZW50X2lkGAEgASgJEhMKC2NoYW5uZWxfa2V5GAIgASgJIkIKFUF0dGFjaENoYW5uZWxSZXNwb25zZRISCgpzZXNzaW9uX2lkGAEgASgJEhUKDXNlc3Npb25fY291bnQYAiABKAMiUgoURGV0YWNoQ2hhbm5lbFJlcXVlc3QSEQoJY2xpZW50X2lkGAEgASgJEhMKC2NoYW5uZWxfa2V5GAIgASgJEhIKCnNlc3Npb25faWQYAyABKAkiLgoVRGV0YWNoQ2hhbm5lbFJlc3BvbnNlEhUKDXNlc3Npb25fY291bnQYASABKAMi2gEKFVJlZnJlc2hDaGFubmVsUmVxdWVzdBIRCgljbGllbnRfaWQYASABKAkSEwoLY2hhbm5lbF9rZXkYAiABKAkSEgoKc2Vzc2lvbl9pZBgDIAEoCRISCgpjbGllbnRfa2V5GAQgASgJEkAKCG1ldGFkYXRhGAUgAygLMi4ueW9ya2llLnYxLlJlZnJlc2hDaGFubmVsUmVxdWVzdC5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJWChZSZWZyZXNoQ2hhbm5lbFJlc3BvbnNlEhUKDXNlc3Npb25fY291bnQYASABKAMSEQoJY2xpZW50X2lkGAIgASgJEhIKCnNlc3Npb25faWQYAyABKAkiKQoSUGVla0NoYW5uZWxSZXF1ZXN0EhMKC2NoYW5uZWxfa2V5GAEgASgJIiwKE1BlZWtDaGFubmVsUmVzcG9uc2USFQoNc2Vzc2lvbl9jb3VudBgBIAEoAyJaChBCcm9hZGNhc3RSZXF1ZXN0EhEKCWNsaWVudF9pZBgBIAEoCRITCgtjaGFubmVsX2tleRgCIAEoCRINCgV0b3BpYxgDIAEoCRIPCgdwYXlsb2FkGAQgASgMIhMKEUJyb2FkY2FzdFJlc3BvbnNlMpUMCg1Zb3JraWVTZXJ2aWNlElcKDkFjdGl2YXRlQ2xpZW50EiAueW9ya2llLnYxLkFjdGl2YXRlQ2xpZW50UmVxdWVzdBohLnlvcmtpZS52MS5BY3RpdmF0ZUNsaWVudFJlc3BvbnNlIgASXQoQRGVhY3RpdmF0ZUNsaWVudBIiLnlvcmtpZS52MS5EZWFjdGl2YXRlQ2xpZW50UmVxdWVzdBojLnlvcmtpZS52MS5EZWFjdGl2YXRlQ2xpZW50UmVzcG9uc2UiABJXCg5BdHRhY2hEb2N1bWVudBIgLnlvcmtpZS52MS5BdHRhY2hEb2N1bWVudFJlcXVlc3QaIS55b3JraWUudjEuQXR0YWNoRG9jdW1lbnRSZXNwb25zZSIAElcKDkRldGFjaERvY3VtZW50EiAueW9ya2llLnYxLkRldGFjaERvY3VtZW50UmVxdWVzdBohLnlvcmtpZS52MS5EZXRhY2hEb2N1bWVudFJlc3BvbnNlIgASVwoOUmVtb3ZlRG9jdW1lbnQSIC55b3JraWUudjEuUmVtb3ZlRG9jdW1lbnRSZXF1ZXN0GiEueW9ya2llLnYxLlJlbW92ZURvY3VtZW50UmVzcG9uc2UiABJaCg9QdXNoUHVsbENoYW5nZXMSIS55b3JraWUudjEuUHVzaFB1bGxDaGFuZ2VzUmVxdWVzdBoiLnlvcmtpZS52MS5QdXNoUHVsbENoYW5nZXNSZXNwb25zZSIAEj4KBVdhdGNoEhcueW9ya2llLnYxLldhdGNoUmVxdWVzdBoYLnlvcmtpZS52MS5XYXRjaFJlc3BvbnNlIgAwARJWCg1XYXRjaERvY3VtZW50Eh8ueW9ya2llLnYxLldhdGNoRG9jdW1lbnRSZXF1ZXN0GiAueW9ya2llLnYxLldhdGNoRG9jdW1lbnRSZXNwb25zZSIAMAESUwoMV2F0Y2hDaGFubmVsEh4ueW9ya2llLnYxLldhdGNoQ2hhbm5lbFJlcXVlc3QaHy55b3JraWUudjEuV2F0Y2hDaGFubmVsUmVzcG9uc2UiADABElcKDkNyZWF0ZVJldmlzaW9uEiAueW9ya2llLnYxLkNyZWF0ZVJldmlzaW9uUmVxdWVzdBohLnlvcmtpZS52MS5DcmVhdGVSZXZpc2lvblJlc3BvbnNlIgASTgoLR2V0UmV2aXNpb24SHS55b3JraWUudjEuR2V0UmV2aXNpb25SZXF1ZXN0Gh4ueW9ya2llLnYxLkdldFJldmlzaW9uUmVzcG9uc2UiABJUCg1MaXN0UmV2aXNpb25zEh8ueW9ya2llLnYxLkxpc3RSZXZpc2lvbnNSZXF1ZXN0GiAueW9ya2llLnYxLkxpc3RSZXZpc2lvbnNSZXNwb25zZSIAEloKD1Jlc3RvcmVSZXZpc2lvbhIhLnlvcmtpZS52MS5SZXN0b3JlUmV2aXNpb25SZXF1ZXN0GiIueW9ya2llLnYxLlJlc3RvcmVSZXZpc2lvblJlc3BvbnNlIgASVAoNQXR0YWNoQ2hhbm5lbBIfLnlvcmtpZS52MS5BdHRhY2hDaGFubmVsUmVxdWVzdBogLnlvcmtpZS52MS5BdHRhY2hDaGFubmVsUmVzcG9uc2UiABJUCg1EZXRhY2hDaGFubmVsEh8ueW9ya2llLnYxLkRldGFjaENoYW5uZWxSZXF1ZXN0GiAueW9ya2llLnYxLkRldGFjaENoYW5uZWxSZXNwb25zZSIAElcKDlJlZnJlc2hDaGFubmVsEiAueW9ya2llLnYxLlJlZnJlc2hDaGFubmVsUmVxdWVzdBohLnlvcmtpZS52MS5SZWZyZXNoQ2hhbm5lbFJlc3BvbnNlIgASTgoLUGVla0NoYW5uZWwSHS55b3JraWUudjEuUGVla0NoYW5uZWxSZXF1ZXN0Gh4ueW9ya2llLnYxLlBlZWtDaGFubmVsUmVzcG9uc2UiABJICglCcm9hZGNhc3QSGy55b3JraWUudjEuQnJvYWRjYXN0UmVxdWVzdBocLnlvcmtpZS52MS5Ccm9hZGNhc3RSZXNwb25zZSIAQkUKEWRldi55b3JraWUuYXBpLnYxUAFaLmdpdGh1Yi5jb20veW9ya2llLXRlYW0veW9ya2llL2FwaS95b3JraWUvdjE7djFiBnByb3RvMw", [file_yorkie_v1_resources]);
|
|
5871
|
+
const YorkieService = /* @__PURE__ */ serviceDesc(file_yorkie_v1_yorkie, 0);
|
|
5872
5872
|
const file_google_rpc_error_details = /* @__PURE__ */ fileDesc("Ch5nb29nbGUvcnBjL2Vycm9yX2RldGFpbHMucHJvdG8SCmdvb2dsZS5ycGMikwEKCUVycm9ySW5mbxIOCgZyZWFzb24YASABKAkSDgoGZG9tYWluGAIgASgJEjUKCG1ldGFkYXRhGAMgAygLMiMuZ29vZ2xlLnJwYy5FcnJvckluZm8uTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiOwoJUmV0cnlJbmZvEi4KC3JldHJ5X2RlbGF5GAEgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uIjIKCURlYnVnSW5mbxIVCg1zdGFja19lbnRyaWVzGAEgAygJEg4KBmRldGFpbBgCIAEoCSKPAwoMUXVvdGFGYWlsdXJlEjYKCnZpb2xhdGlvbnMYASADKAsyIi5nb29nbGUucnBjLlF1b3RhRmFpbHVyZS5WaW9sYXRpb24axgIKCVZpb2xhdGlvbhIPCgdzdWJqZWN0GAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEhMKC2FwaV9zZXJ2aWNlGAMgASgJEhQKDHF1b3RhX21ldHJpYxgEIAEoCRIQCghxdW90YV9pZBgFIAEoCRJRChBxdW90YV9kaW1lbnNpb25zGAYgAygLMjcuZ29vZ2xlLnJwYy5RdW90YUZhaWx1cmUuVmlvbGF0aW9uLlF1b3RhRGltZW5zaW9uc0VudHJ5EhMKC3F1b3RhX3ZhbHVlGAcgASgDEh8KEmZ1dHVyZV9xdW90YV92YWx1ZRgIIAEoA0gAiAEBGjYKFFF1b3RhRGltZW5zaW9uc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCFQoTX2Z1dHVyZV9xdW90YV92YWx1ZSKVAQoTUHJlY29uZGl0aW9uRmFpbHVyZRI9Cgp2aW9sYXRpb25zGAEgAygLMikuZ29vZ2xlLnJwYy5QcmVjb25kaXRpb25GYWlsdXJlLlZpb2xhdGlvbho/CglWaW9sYXRpb24SDAoEdHlwZRgBIAEoCRIPCgdzdWJqZWN0GAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJIswBCgpCYWRSZXF1ZXN0Ej8KEGZpZWxkX3Zpb2xhdGlvbnMYASADKAsyJS5nb29nbGUucnBjLkJhZFJlcXVlc3QuRmllbGRWaW9sYXRpb24afQoORmllbGRWaW9sYXRpb24SDQoFZmllbGQYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSDgoGcmVhc29uGAMgASgJEjcKEWxvY2FsaXplZF9tZXNzYWdlGAQgASgLMhwuZ29vZ2xlLnJwYy5Mb2NhbGl6ZWRNZXNzYWdlIjcKC1JlcXVlc3RJbmZvEhIKCnJlcXVlc3RfaWQYASABKAkSFAoMc2VydmluZ19kYXRhGAIgASgJImAKDFJlc291cmNlSW5mbxIVCg1yZXNvdXJjZV90eXBlGAEgASgJEhUKDXJlc291cmNlX25hbWUYAiABKAkSDQoFb3duZXIYAyABKAkSEwoLZGVzY3JpcHRpb24YBCABKAkiVgoESGVscBIkCgVsaW5rcxgBIAMoCzIVLmdvb2dsZS5ycGMuSGVscC5MaW5rGigKBExpbmsSEwoLZGVzY3JpcHRpb24YASABKAkSCwoDdXJsGAIgASgJIjMKEExvY2FsaXplZE1lc3NhZ2USDgoGbG9jYWxlGAEgASgJEg8KB21lc3NhZ2UYAiABKAlCbAoOY29tLmdvb2dsZS5ycGNCEUVycm9yRGV0YWlsc1Byb3RvUAFaP2dvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvcnBjL2VycmRldGFpbHM7ZXJyZGV0YWlsc6ICA1JQQ2IGcHJvdG8z", [file_google_protobuf_duration]);
|
|
5873
5873
|
const ErrorInfoSchema = /* @__PURE__ */ messageDesc(file_google_rpc_error_details, 0);
|
|
5874
5874
|
var Code = /* @__PURE__ */ ((Code2) => {
|
|
@@ -5880,6 +5880,7 @@ var Code = /* @__PURE__ */ ((Code2) => {
|
|
|
5880
5880
|
Code2["ErrDummy"] = "ErrDummy";
|
|
5881
5881
|
Code2["ErrNotAttached"] = "ErrNotAttached";
|
|
5882
5882
|
Code2["ErrNotDetached"] = "ErrNotDetached";
|
|
5883
|
+
Code2["ErrSessionNotFound"] = "ErrSessionNotFound";
|
|
5883
5884
|
Code2["ErrDocumentRemoved"] = "ErrDocumentRemoved";
|
|
5884
5885
|
Code2["ErrDocumentSizeExceedsLimit"] = "ErrDocumentSizeExceedsLimit";
|
|
5885
5886
|
Code2["ErrDocumentSchemaValidationFailed"] = "ErrDocumentSchemaValidationFailed";
|
|
@@ -20778,12 +20779,25 @@ class Document {
|
|
|
20778
20779
|
}
|
|
20779
20780
|
class Attachment {
|
|
20780
20781
|
resource;
|
|
20782
|
+
/**
|
|
20783
|
+
* For Documents: the document's resourceID, available at attach time.
|
|
20784
|
+
* For Channels: the server-issued session_id. Starts empty and is
|
|
20785
|
+
* populated after the first `RefreshChannel` first-call response.
|
|
20786
|
+
*/
|
|
20781
20787
|
resourceID;
|
|
20782
20788
|
syncMode;
|
|
20783
20789
|
changeEventReceived;
|
|
20784
20790
|
lastHeartbeatTime;
|
|
20785
20791
|
pollInterval;
|
|
20786
20792
|
pollIntervalPinned;
|
|
20793
|
+
/**
|
|
20794
|
+
* `unsubscribeLocalBroadcast` is set by `attachChannel` when it forwards
|
|
20795
|
+
* a Channel's `local-broadcast` events to the RPC client, and consumed
|
|
20796
|
+
* by `detachInternal` so the subscription does not survive a detach.
|
|
20797
|
+
* Without this, re-attaching a channel accumulates duplicate handlers
|
|
20798
|
+
* on each attach cycle.
|
|
20799
|
+
*/
|
|
20800
|
+
unsubscribeLocalBroadcast;
|
|
20787
20801
|
reconnectStreamDelay;
|
|
20788
20802
|
cancelled;
|
|
20789
20803
|
watchStream;
|
|
@@ -20791,13 +20805,13 @@ class Attachment {
|
|
|
20791
20805
|
watchAbortController;
|
|
20792
20806
|
syncPromise;
|
|
20793
20807
|
_detaching = false;
|
|
20794
|
-
constructor(reconnectStreamDelay, resource, resourceID, syncMode, pollInterval = 0, pollIntervalPinned = false) {
|
|
20808
|
+
constructor(reconnectStreamDelay, resource, resourceID = "", syncMode, pollInterval = 0, pollIntervalPinned = false) {
|
|
20795
20809
|
this.reconnectStreamDelay = reconnectStreamDelay;
|
|
20796
20810
|
this.resource = resource;
|
|
20797
20811
|
this.resourceID = resourceID;
|
|
20798
20812
|
this.syncMode = syncMode;
|
|
20799
20813
|
this.changeEventReceived = syncMode !== void 0 ? false : void 0;
|
|
20800
|
-
this.lastHeartbeatTime =
|
|
20814
|
+
this.lastHeartbeatTime = 0;
|
|
20801
20815
|
this.pollInterval = pollInterval;
|
|
20802
20816
|
this.pollIntervalPinned = pollIntervalPinned;
|
|
20803
20817
|
this.cancelled = false;
|
|
@@ -20959,7 +20973,7 @@ function createAuthInterceptor(apiKey, token) {
|
|
|
20959
20973
|
};
|
|
20960
20974
|
}
|
|
20961
20975
|
const name$1 = "@yorkie-js/sdk";
|
|
20962
|
-
const version$1 = "0.7.
|
|
20976
|
+
const version$1 = "0.7.10-rc";
|
|
20963
20977
|
const pkg$1 = {
|
|
20964
20978
|
name: name$1,
|
|
20965
20979
|
version: version$1
|
|
@@ -20997,6 +21011,7 @@ var ChannelEventType = /* @__PURE__ */ ((ChannelEventType2) => {
|
|
|
20997
21011
|
ChannelEventType2["Broadcast"] = "broadcast";
|
|
20998
21012
|
ChannelEventType2["LocalBroadcast"] = "local-broadcast";
|
|
20999
21013
|
ChannelEventType2["AuthError"] = "auth-error";
|
|
21014
|
+
ChannelEventType2["SyncError"] = "sync-error";
|
|
21000
21015
|
return ChannelEventType2;
|
|
21001
21016
|
})(ChannelEventType || {});
|
|
21002
21017
|
const KeyPathSeparator = ".";
|
|
@@ -21136,6 +21151,13 @@ class Channel2 {
|
|
|
21136
21151
|
}
|
|
21137
21152
|
});
|
|
21138
21153
|
}
|
|
21154
|
+
if (typeOrTopic === "sync-error") {
|
|
21155
|
+
return this.eventStream.subscribe((event) => {
|
|
21156
|
+
if (event.type === "sync-error") {
|
|
21157
|
+
callback(event);
|
|
21158
|
+
}
|
|
21159
|
+
});
|
|
21160
|
+
}
|
|
21139
21161
|
if (typeOrTopic === "presence") {
|
|
21140
21162
|
return this.eventStream.subscribe((event) => {
|
|
21141
21163
|
if (event.type === "presence-changed" || event.type === "initialized") {
|
|
@@ -21245,13 +21267,14 @@ var SyncMode = /* @__PURE__ */ ((SyncMode2) => {
|
|
|
21245
21267
|
SyncMode2["Polling"] = "polling";
|
|
21246
21268
|
return SyncMode2;
|
|
21247
21269
|
})(SyncMode || {});
|
|
21248
|
-
const
|
|
21270
|
+
const DefaultDocumentPollIntervalMs = 3e3;
|
|
21271
|
+
const DefaultChannelHeartbeatMs = 5e3;
|
|
21249
21272
|
const DefaultClientOptions = {
|
|
21250
21273
|
rpcAddr: "https://api.yorkie.dev",
|
|
21251
21274
|
syncLoopDuration: 50,
|
|
21252
21275
|
retrySyncLoopDelay: 1e3,
|
|
21253
21276
|
reconnectStreamDelay: 1e3,
|
|
21254
|
-
channelHeartbeatInterval:
|
|
21277
|
+
channelHeartbeatInterval: DefaultChannelHeartbeatMs
|
|
21255
21278
|
};
|
|
21256
21279
|
const DefaultBroadcastOptions = {
|
|
21257
21280
|
maxRetries: Infinity,
|
|
@@ -21448,7 +21471,7 @@ class Client {
|
|
|
21448
21471
|
);
|
|
21449
21472
|
}
|
|
21450
21473
|
const pollIntervalPinned = opts.documentPollInterval !== void 0;
|
|
21451
|
-
const pollInterval = pollIntervalPinned ? opts.documentPollInterval : syncMode === "polling" ?
|
|
21474
|
+
const pollInterval = pollIntervalPinned ? opts.documentPollInterval : syncMode === "polling" ? DefaultDocumentPollIntervalMs : 0;
|
|
21452
21475
|
return this.enqueueTask(async () => {
|
|
21453
21476
|
try {
|
|
21454
21477
|
const res = await this.rpcClient.attachDocument(
|
|
@@ -21577,127 +21600,88 @@ class Client {
|
|
|
21577
21600
|
return this.enqueueTask(task);
|
|
21578
21601
|
}
|
|
21579
21602
|
/**
|
|
21580
|
-
* `
|
|
21581
|
-
*
|
|
21603
|
+
* `attachChannel` attaches the given channel to this client. The channel is
|
|
21604
|
+
* registered locally and the server is notified on the next RefreshChannel
|
|
21605
|
+
* heartbeat.
|
|
21582
21606
|
*/
|
|
21583
21607
|
async attachChannel(channel, opts = {}) {
|
|
21584
|
-
if (!this.isActive()) {
|
|
21585
|
-
throw new YorkieError(
|
|
21586
|
-
Code.ErrClientNotActivated,
|
|
21587
|
-
`${this.key} is not active`
|
|
21588
|
-
);
|
|
21589
|
-
}
|
|
21590
21608
|
if (channel.getStatus() !== ChannelStatus.Detached) {
|
|
21591
21609
|
throw new YorkieError(
|
|
21592
21610
|
Code.ErrNotDetached,
|
|
21593
21611
|
`${channel.getKey()} is not detached`
|
|
21594
21612
|
);
|
|
21595
21613
|
}
|
|
21596
|
-
|
|
21614
|
+
const syncMode = opts.syncMode ?? "realtime";
|
|
21615
|
+
this.assertValidChannelSyncMode(syncMode);
|
|
21616
|
+
if (opts.channelHeartbeatInterval !== void 0 && opts.channelHeartbeatInterval <= 0) {
|
|
21617
|
+
throw new YorkieError(
|
|
21618
|
+
Code.ErrInvalidArgument,
|
|
21619
|
+
"channelHeartbeatInterval must be greater than 0"
|
|
21620
|
+
);
|
|
21621
|
+
}
|
|
21622
|
+
const pollIntervalPinned = opts.channelHeartbeatInterval !== void 0;
|
|
21623
|
+
const pollInterval = opts.channelHeartbeatInterval ?? this.channelHeartbeatInterval;
|
|
21597
21624
|
const task = async () => {
|
|
21598
|
-
|
|
21599
|
-
|
|
21600
|
-
|
|
21601
|
-
|
|
21602
|
-
|
|
21603
|
-
|
|
21604
|
-
|
|
21605
|
-
|
|
21606
|
-
|
|
21607
|
-
|
|
21608
|
-
|
|
21609
|
-
|
|
21610
|
-
|
|
21611
|
-
|
|
21612
|
-
|
|
21613
|
-
const syncMode = opts.syncMode ?? "realtime";
|
|
21614
|
-
this.assertValidChannelSyncMode(syncMode);
|
|
21615
|
-
if (opts.channelHeartbeatInterval !== void 0 && opts.channelHeartbeatInterval <= 0) {
|
|
21616
|
-
throw new YorkieError(
|
|
21617
|
-
Code.ErrInvalidArgument,
|
|
21618
|
-
"channelHeartbeatInterval must be greater than 0"
|
|
21619
|
-
);
|
|
21620
|
-
}
|
|
21621
|
-
const pollIntervalPinned = opts.channelHeartbeatInterval !== void 0;
|
|
21622
|
-
const pollInterval = pollIntervalPinned ? opts.channelHeartbeatInterval : syncMode === "polling" ? DefaultPollingIntervalMs : this.channelHeartbeatInterval;
|
|
21623
|
-
const attachment = new Attachment(
|
|
21624
|
-
this.reconnectStreamDelay,
|
|
21625
|
-
channel,
|
|
21626
|
-
res.sessionId,
|
|
21627
|
-
syncMode,
|
|
21628
|
-
pollInterval,
|
|
21629
|
-
pollIntervalPinned
|
|
21630
|
-
);
|
|
21631
|
-
channel.subscribe("local-broadcast", (event) => {
|
|
21625
|
+
if (this.id) {
|
|
21626
|
+
channel.setActor(this.id);
|
|
21627
|
+
}
|
|
21628
|
+
const attachment = new Attachment(
|
|
21629
|
+
this.reconnectStreamDelay,
|
|
21630
|
+
channel,
|
|
21631
|
+
"",
|
|
21632
|
+
// sessionID populated on first refresh response
|
|
21633
|
+
syncMode,
|
|
21634
|
+
pollInterval,
|
|
21635
|
+
pollIntervalPinned
|
|
21636
|
+
);
|
|
21637
|
+
attachment.unsubscribeLocalBroadcast = channel.subscribe(
|
|
21638
|
+
"local-broadcast",
|
|
21639
|
+
(event) => {
|
|
21632
21640
|
const { topic, payload, options } = event;
|
|
21633
21641
|
this.broadcast(channel.getKey(), topic, payload, options).catch(
|
|
21634
21642
|
(error) => {
|
|
21635
|
-
if (options?.error)
|
|
21636
|
-
options.error(error);
|
|
21637
|
-
}
|
|
21643
|
+
if (options?.error) options.error(error);
|
|
21638
21644
|
logger.error(`[BC] c:"${this.getKey()}" failed: ${error}`);
|
|
21639
21645
|
}
|
|
21640
21646
|
);
|
|
21641
|
-
});
|
|
21642
|
-
this.attachmentMap.set(channel.getKey(), attachment);
|
|
21643
|
-
if (syncMode === "realtime") {
|
|
21644
|
-
await this.runWatchLoop(channel.getKey());
|
|
21645
21647
|
}
|
|
21646
|
-
|
|
21647
|
-
|
|
21648
|
-
|
|
21649
|
-
|
|
21650
|
-
|
|
21651
|
-
|
|
21652
|
-
|
|
21653
|
-
throw err;
|
|
21648
|
+
);
|
|
21649
|
+
this.attachmentMap.set(channel.getKey(), attachment);
|
|
21650
|
+
if (!this.conditions[
|
|
21651
|
+
"SyncLoop"
|
|
21652
|
+
/* SyncLoop */
|
|
21653
|
+
]) {
|
|
21654
|
+
this.runSyncLoop();
|
|
21654
21655
|
}
|
|
21656
|
+
logger.info(
|
|
21657
|
+
`[AP] c:"${this.getKey()}" attaches p:"${channel.getKey()}" mode:${syncMode}`
|
|
21658
|
+
);
|
|
21659
|
+
return channel;
|
|
21655
21660
|
};
|
|
21656
21661
|
return this.enqueueTask(task);
|
|
21657
21662
|
}
|
|
21658
21663
|
/**
|
|
21659
|
-
* `detachChannel` detaches the given channel from this client.
|
|
21660
|
-
*
|
|
21664
|
+
* `detachChannel` detaches the given channel from this client. The detach
|
|
21665
|
+
* is a local cleanup; the server reclaims the session via TTL when
|
|
21666
|
+
* heartbeats stop.
|
|
21661
21667
|
*/
|
|
21662
21668
|
async detachChannel(channel) {
|
|
21663
|
-
|
|
21664
|
-
|
|
21665
|
-
Code.ErrClientNotActivated,
|
|
21666
|
-
`${this.key} is not active`
|
|
21667
|
-
);
|
|
21668
|
-
}
|
|
21669
|
-
if (!this.attachmentMap.has(channel.getKey())) {
|
|
21669
|
+
const attachment = this.attachmentMap.get(channel.getKey());
|
|
21670
|
+
if (!attachment) {
|
|
21670
21671
|
throw new YorkieError(
|
|
21671
21672
|
Code.ErrNotAttached,
|
|
21672
21673
|
`${channel.getKey()} is not attached`
|
|
21673
21674
|
);
|
|
21674
21675
|
}
|
|
21676
|
+
attachment.markDetaching();
|
|
21677
|
+
await attachment.waitForSyncComplete();
|
|
21675
21678
|
const task = async () => {
|
|
21676
|
-
|
|
21677
|
-
|
|
21678
|
-
|
|
21679
|
-
|
|
21680
|
-
|
|
21681
|
-
|
|
21682
|
-
},
|
|
21683
|
-
{
|
|
21684
|
-
headers: {
|
|
21685
|
-
"x-shard-key": `${this.apiKey}/${channel.getFirstKeyPath()}`
|
|
21686
|
-
}
|
|
21687
|
-
}
|
|
21688
|
-
);
|
|
21689
|
-
channel.updateSessionCount(Number(res.sessionCount), 0);
|
|
21690
|
-
channel.applyStatus(ChannelStatus.Detached);
|
|
21691
|
-
this.detachInternal(channel.getKey());
|
|
21692
|
-
logger.info(
|
|
21693
|
-
`[DP] c:"${this.getKey()}" detaches p:"${channel.getKey()}" count:${channel.getSessionCount()}`
|
|
21694
|
-
);
|
|
21695
|
-
return channel;
|
|
21696
|
-
} catch (err) {
|
|
21697
|
-
logger.error(`[DP] c:"${this.getKey()}" err :`, err);
|
|
21698
|
-
await this.handleConnectError(err);
|
|
21699
|
-
throw err;
|
|
21700
|
-
}
|
|
21679
|
+
channel.applyStatus(ChannelStatus.Detached);
|
|
21680
|
+
this.detachInternal(channel.getKey());
|
|
21681
|
+
logger.info(
|
|
21682
|
+
`[DP] c:"${this.getKey()}" detaches p:"${channel.getKey()}" (local)`
|
|
21683
|
+
);
|
|
21684
|
+
return channel;
|
|
21701
21685
|
};
|
|
21702
21686
|
return this.enqueueTask(task);
|
|
21703
21687
|
}
|
|
@@ -21738,7 +21722,7 @@ class Client {
|
|
|
21738
21722
|
attachment.changeEventReceived = true;
|
|
21739
21723
|
}
|
|
21740
21724
|
if (!attachment.pollIntervalPinned) {
|
|
21741
|
-
attachment.pollInterval = syncMode === "polling" ?
|
|
21725
|
+
attachment.pollInterval = syncMode === "polling" ? DefaultDocumentPollIntervalMs : 0;
|
|
21742
21726
|
}
|
|
21743
21727
|
if ((prevSyncMode === "manual" || prevSyncMode === "polling") && syncMode !== "manual" && syncMode !== "polling") {
|
|
21744
21728
|
attachment.resetCancelled();
|
|
@@ -21759,12 +21743,6 @@ class Client {
|
|
|
21759
21743
|
}
|
|
21760
21744
|
}
|
|
21761
21745
|
async changeChannelSyncMode(channel, syncMode) {
|
|
21762
|
-
if (!this.isActive()) {
|
|
21763
|
-
throw new YorkieError(
|
|
21764
|
-
Code.ErrClientNotActivated,
|
|
21765
|
-
`${this.key} is not active`
|
|
21766
|
-
);
|
|
21767
|
-
}
|
|
21768
21746
|
const attachment = this.attachmentMap.get(channel.getKey());
|
|
21769
21747
|
if (!attachment) {
|
|
21770
21748
|
throw new YorkieError(
|
|
@@ -21782,7 +21760,7 @@ class Client {
|
|
|
21782
21760
|
}
|
|
21783
21761
|
attachment.changeSyncMode(syncMode);
|
|
21784
21762
|
if (!attachment.pollIntervalPinned) {
|
|
21785
|
-
attachment.pollInterval = syncMode === "
|
|
21763
|
+
attachment.pollInterval = syncMode === "manual" ? 0 : this.channelHeartbeatInterval;
|
|
21786
21764
|
}
|
|
21787
21765
|
if (syncMode === "realtime") {
|
|
21788
21766
|
attachment.resetCancelled();
|
|
@@ -21794,7 +21772,7 @@ class Client {
|
|
|
21794
21772
|
* `sync` implementation that handles both Document and Channel.
|
|
21795
21773
|
*/
|
|
21796
21774
|
sync(resource) {
|
|
21797
|
-
if (!this.isActive()) {
|
|
21775
|
+
if (!(resource instanceof Channel2) && !this.isActive()) {
|
|
21798
21776
|
throw new YorkieError(
|
|
21799
21777
|
Code.ErrClientNotActivated,
|
|
21800
21778
|
`${this.key} is not active`
|
|
@@ -22110,16 +22088,34 @@ class Client {
|
|
|
22110
22088
|
};
|
|
22111
22089
|
return this.enqueueTask(task);
|
|
22112
22090
|
}
|
|
22091
|
+
/**
|
|
22092
|
+
* `peekChannel` reads the current session count of a channel without
|
|
22093
|
+
* creating a session on the server. Use this when the caller only needs
|
|
22094
|
+
* to display the count (e.g. "N people writing") without contributing to
|
|
22095
|
+
* it and without receiving broadcasts.
|
|
22096
|
+
*
|
|
22097
|
+
* Unlike `attach({ readOnly: true })`, this does not occupy a `Session`
|
|
22098
|
+
* entry on the server, does not generate heartbeat RPCs, and does not
|
|
22099
|
+
* subscribe to channel events. Polling is the caller's responsibility.
|
|
22100
|
+
*/
|
|
22101
|
+
async peekChannel(channelKey) {
|
|
22102
|
+
return this.enqueueTask(async () => {
|
|
22103
|
+
const firstKeyPath = channelKey.split(".")[0];
|
|
22104
|
+
const res = await this.rpcClient.peekChannel(
|
|
22105
|
+
{ channelKey },
|
|
22106
|
+
{
|
|
22107
|
+
headers: {
|
|
22108
|
+
"x-shard-key": `${this.apiKey}/${firstKeyPath}`
|
|
22109
|
+
}
|
|
22110
|
+
}
|
|
22111
|
+
);
|
|
22112
|
+
return Number(res.sessionCount);
|
|
22113
|
+
});
|
|
22114
|
+
}
|
|
22113
22115
|
/**
|
|
22114
22116
|
* `broadcast` broadcasts the given payload to the given topic.
|
|
22115
22117
|
*/
|
|
22116
22118
|
async broadcast(key, topic, payload, options) {
|
|
22117
|
-
if (!this.isActive()) {
|
|
22118
|
-
throw new YorkieError(
|
|
22119
|
-
Code.ErrClientNotActivated,
|
|
22120
|
-
`${this.key} is not active`
|
|
22121
|
-
);
|
|
22122
|
-
}
|
|
22123
22119
|
const attachment = this.attachmentMap.get(key);
|
|
22124
22120
|
if (!attachment) {
|
|
22125
22121
|
throw new YorkieError(Code.ErrNotAttached, `${key} is not attached`);
|
|
@@ -22196,8 +22192,16 @@ class Client {
|
|
|
22196
22192
|
*/
|
|
22197
22193
|
runSyncLoop() {
|
|
22198
22194
|
const doLoop = async () => {
|
|
22199
|
-
if (
|
|
22200
|
-
logger.debug(`[SL] c:"${this.getKey()}" exit sync loop`);
|
|
22195
|
+
if (this.deactivating) {
|
|
22196
|
+
logger.debug(`[SL] c:"${this.getKey()}" exit sync loop (deactivating)`);
|
|
22197
|
+
this.conditions[
|
|
22198
|
+
"SyncLoop"
|
|
22199
|
+
/* SyncLoop */
|
|
22200
|
+
] = false;
|
|
22201
|
+
return;
|
|
22202
|
+
}
|
|
22203
|
+
if (!this.isActive() && this.attachmentMap.size === 0) {
|
|
22204
|
+
logger.debug(`[SL] c:"${this.getKey()}" exit sync loop (idle)`);
|
|
22201
22205
|
this.conditions[
|
|
22202
22206
|
"SyncLoop"
|
|
22203
22207
|
/* SyncLoop */
|
|
@@ -22583,6 +22587,10 @@ class Client {
|
|
|
22583
22587
|
return;
|
|
22584
22588
|
}
|
|
22585
22589
|
attachment.cancelWatchStream();
|
|
22590
|
+
if (attachment.unsubscribeLocalBroadcast) {
|
|
22591
|
+
attachment.unsubscribeLocalBroadcast();
|
|
22592
|
+
attachment.unsubscribeLocalBroadcast = void 0;
|
|
22593
|
+
}
|
|
22586
22594
|
if (attachment.resource instanceof Document) {
|
|
22587
22595
|
attachment.resource.resetOnlineClients();
|
|
22588
22596
|
}
|
|
@@ -22591,12 +22599,17 @@ class Client {
|
|
|
22591
22599
|
async syncInternal(attachment, syncMode) {
|
|
22592
22600
|
const { resource } = attachment;
|
|
22593
22601
|
if (resource instanceof Channel2) {
|
|
22602
|
+
const isFirstCall = !resource.getSessionID();
|
|
22594
22603
|
try {
|
|
22595
22604
|
const res = await this.rpcClient.refreshChannel(
|
|
22596
22605
|
{
|
|
22597
|
-
clientId: this.id,
|
|
22606
|
+
clientId: this.id ?? "",
|
|
22598
22607
|
channelKey: resource.getKey(),
|
|
22599
|
-
sessionId: resource.getSessionID()
|
|
22608
|
+
sessionId: resource.getSessionID() ?? "",
|
|
22609
|
+
// First-call only — these fields are ignored by the server
|
|
22610
|
+
// once a session_id is established.
|
|
22611
|
+
clientKey: isFirstCall ? this.key : "",
|
|
22612
|
+
metadata: isFirstCall ? this.metadata : {}
|
|
22600
22613
|
},
|
|
22601
22614
|
{
|
|
22602
22615
|
headers: {
|
|
@@ -22604,12 +22617,60 @@ class Client {
|
|
|
22604
22617
|
}
|
|
22605
22618
|
}
|
|
22606
22619
|
);
|
|
22607
|
-
|
|
22620
|
+
if (isFirstCall) {
|
|
22621
|
+
if (this.deactivating || attachment.isDetaching()) {
|
|
22622
|
+
return resource;
|
|
22623
|
+
}
|
|
22624
|
+
if (res.clientId && !this.id) {
|
|
22625
|
+
this.id = res.clientId;
|
|
22626
|
+
this.status = "activated";
|
|
22627
|
+
resource.setActor(res.clientId);
|
|
22628
|
+
} else if (this.id) {
|
|
22629
|
+
resource.setActor(this.id);
|
|
22630
|
+
}
|
|
22631
|
+
if (res.sessionId) {
|
|
22632
|
+
resource.setSessionID(res.sessionId);
|
|
22633
|
+
attachment.resourceID = res.sessionId;
|
|
22634
|
+
resource.applyStatus(ChannelStatus.Attached);
|
|
22635
|
+
}
|
|
22636
|
+
if (attachment.syncMode === "realtime") {
|
|
22637
|
+
this.runWatchLoop(resource.getKey()).catch((err) => {
|
|
22638
|
+
logger.error(
|
|
22639
|
+
`[WP] c:"${this.getKey()}" failed to start watch for p:"${resource.getKey()}":`,
|
|
22640
|
+
err
|
|
22641
|
+
);
|
|
22642
|
+
});
|
|
22643
|
+
}
|
|
22644
|
+
}
|
|
22645
|
+
const prevCount = resource.getSessionCount();
|
|
22646
|
+
if (resource.updateSessionCount(Number(res.sessionCount), 0)) {
|
|
22647
|
+
if (resource.getSessionCount() !== prevCount) {
|
|
22648
|
+
resource.publish({
|
|
22649
|
+
type: ChannelEventType.PresenceChanged,
|
|
22650
|
+
count: resource.getSessionCount()
|
|
22651
|
+
});
|
|
22652
|
+
}
|
|
22653
|
+
}
|
|
22608
22654
|
attachment.updateHeartbeatTime();
|
|
22609
22655
|
logger.debug(
|
|
22610
22656
|
`[RP] c:"${this.getKey()}" refreshes p:"${resource.getKey()}" mode:${attachment.syncMode}`
|
|
22611
22657
|
);
|
|
22612
22658
|
} catch (err) {
|
|
22659
|
+
if (isErrorCode(err, Code.ErrSessionNotFound)) {
|
|
22660
|
+
logger.info(
|
|
22661
|
+
`[RP] c:"${this.getKey()}" session expired for p:"${resource.getKey()}", re-attaching`
|
|
22662
|
+
);
|
|
22663
|
+
resource.setSessionID("");
|
|
22664
|
+
attachment.resourceID = "";
|
|
22665
|
+
return resource;
|
|
22666
|
+
}
|
|
22667
|
+
if (!this.deactivating && !attachment.isDetaching()) {
|
|
22668
|
+
resource.publish({
|
|
22669
|
+
type: ChannelEventType.SyncError,
|
|
22670
|
+
error: err,
|
|
22671
|
+
method: "RefreshChannel"
|
|
22672
|
+
});
|
|
22673
|
+
}
|
|
22613
22674
|
logger.error(`[RP] c:"${this.getKey()}" err :`, err);
|
|
22614
22675
|
throw err;
|
|
22615
22676
|
}
|
|
@@ -22960,7 +23021,7 @@ if (typeof globalThis !== "undefined") {
|
|
|
22960
23021
|
};
|
|
22961
23022
|
}
|
|
22962
23023
|
const name = "@yorkie-js/react";
|
|
22963
|
-
const version = "0.7.
|
|
23024
|
+
const version = "0.7.10-rc";
|
|
22964
23025
|
const pkg = {
|
|
22965
23026
|
name,
|
|
22966
23027
|
version
|
|
@@ -22970,7 +23031,7 @@ const YorkieContext = createContext({
|
|
|
22970
23031
|
loading: true,
|
|
22971
23032
|
error: void 0
|
|
22972
23033
|
});
|
|
22973
|
-
function useYorkieClient(opts) {
|
|
23034
|
+
function useYorkieClient(opts, activate = true) {
|
|
22974
23035
|
const [client, setClient] = useState(void 0);
|
|
22975
23036
|
const [loading, setLoading] = useState(true);
|
|
22976
23037
|
const [error, setError] = useState(void 0);
|
|
@@ -22987,7 +23048,9 @@ function useYorkieClient(opts) {
|
|
|
22987
23048
|
}
|
|
22988
23049
|
try {
|
|
22989
23050
|
const newClient = new Client(opts);
|
|
22990
|
-
|
|
23051
|
+
if (activate) {
|
|
23052
|
+
await newClient.activate();
|
|
23053
|
+
}
|
|
22991
23054
|
setClient(newClient);
|
|
22992
23055
|
} catch (e) {
|
|
22993
23056
|
setError(
|
|
@@ -22999,24 +23062,21 @@ function useYorkieClient(opts) {
|
|
|
22999
23062
|
}
|
|
23000
23063
|
activateClient();
|
|
23001
23064
|
return () => {
|
|
23002
|
-
if (client?.isActive()) {
|
|
23065
|
+
if (activate && client?.isActive()) {
|
|
23003
23066
|
client.deactivate({ keepalive: true });
|
|
23004
23067
|
}
|
|
23005
23068
|
};
|
|
23006
|
-
}, [opts.apiKey, opts.rpcAddr, didMount]);
|
|
23069
|
+
}, [opts.apiKey, opts.rpcAddr, didMount, activate]);
|
|
23007
23070
|
return { client, loading, error };
|
|
23008
23071
|
}
|
|
23009
|
-
const YorkieProvider = ({
|
|
23010
|
-
children,
|
|
23011
|
-
...opts
|
|
23012
|
-
}) => {
|
|
23072
|
+
const YorkieProvider = ({ children, activate = true, ...opts }) => {
|
|
23013
23073
|
const clientOpts = useMemo(() => {
|
|
23014
23074
|
return {
|
|
23015
23075
|
userAgent: pkg.name + "/" + pkg.version,
|
|
23016
23076
|
...opts
|
|
23017
23077
|
};
|
|
23018
23078
|
}, [opts.apiKey, opts.rpcAddr]);
|
|
23019
|
-
const { client, loading, error } = useYorkieClient(clientOpts);
|
|
23079
|
+
const { client, loading, error } = useYorkieClient(clientOpts, activate);
|
|
23020
23080
|
return /* @__PURE__ */ jsx(YorkieContext.Provider, { value: { client, loading, error }, children });
|
|
23021
23081
|
};
|
|
23022
23082
|
const useYorkie = () => {
|
|
@@ -23150,7 +23210,7 @@ function shallowEqual(valueA, valueB) {
|
|
|
23150
23210
|
valueB
|
|
23151
23211
|
);
|
|
23152
23212
|
}
|
|
23153
|
-
function useYorkieDocument(client, clientLoading, clientError, docKey, initialRoot, initialPresence, enableDevtools, docStore) {
|
|
23213
|
+
function useYorkieDocument(client, clientLoading, clientError, docKey, initialRoot, initialPresence, enableDevtools, syncMode, documentPollInterval, docStore) {
|
|
23154
23214
|
const initialRootRef = useRef(initialRoot);
|
|
23155
23215
|
const initialPresenceRef = useRef(initialPresence);
|
|
23156
23216
|
const [didMount, setDidMount] = useState(false);
|
|
@@ -23208,7 +23268,9 @@ function useYorkieDocument(client, clientLoading, clientError, docKey, initialRo
|
|
|
23208
23268
|
try {
|
|
23209
23269
|
await client?.attach(newDoc, {
|
|
23210
23270
|
initialRoot: initialRootRef.current,
|
|
23211
|
-
initialPresence: initialPresenceRef.current
|
|
23271
|
+
initialPresence: initialPresenceRef.current,
|
|
23272
|
+
syncMode,
|
|
23273
|
+
documentPollInterval
|
|
23212
23274
|
});
|
|
23213
23275
|
const update = (callback) => {
|
|
23214
23276
|
try {
|
|
@@ -23248,7 +23310,16 @@ function useYorkieDocument(client, clientLoading, clientError, docKey, initialRo
|
|
|
23248
23310
|
unsub();
|
|
23249
23311
|
}
|
|
23250
23312
|
};
|
|
23251
|
-
}, [
|
|
23313
|
+
}, [
|
|
23314
|
+
client,
|
|
23315
|
+
clientLoading,
|
|
23316
|
+
clientError,
|
|
23317
|
+
docKey,
|
|
23318
|
+
docStore,
|
|
23319
|
+
didMount,
|
|
23320
|
+
syncMode,
|
|
23321
|
+
documentPollInterval
|
|
23322
|
+
]);
|
|
23252
23323
|
}
|
|
23253
23324
|
const DocumentContext = createContext(void 0);
|
|
23254
23325
|
const DocumentProvider = ({
|
|
@@ -23256,6 +23327,8 @@ const DocumentProvider = ({
|
|
|
23256
23327
|
initialRoot = {},
|
|
23257
23328
|
initialPresence = {},
|
|
23258
23329
|
enableDevtools = false,
|
|
23330
|
+
syncMode,
|
|
23331
|
+
documentPollInterval,
|
|
23259
23332
|
children
|
|
23260
23333
|
}) => {
|
|
23261
23334
|
const { client, loading: clientLoading, error: clientError } = useYorkie();
|
|
@@ -23281,6 +23354,8 @@ const DocumentProvider = ({
|
|
|
23281
23354
|
initialRoot,
|
|
23282
23355
|
initialPresence,
|
|
23283
23356
|
enableDevtools,
|
|
23357
|
+
syncMode,
|
|
23358
|
+
documentPollInterval,
|
|
23284
23359
|
documentStore
|
|
23285
23360
|
);
|
|
23286
23361
|
return /* @__PURE__ */ jsx(DocumentContext.Provider, { value: documentStore, children });
|
|
@@ -23398,6 +23473,8 @@ function useYorkieDoc(apiKey, docKey, opts) {
|
|
|
23398
23473
|
opts?.initialRoot ?? {},
|
|
23399
23474
|
opts?.initialPresence ?? {},
|
|
23400
23475
|
opts?.enableDevtools ?? false,
|
|
23476
|
+
opts?.syncMode,
|
|
23477
|
+
opts?.documentPollInterval,
|
|
23401
23478
|
documentStore
|
|
23402
23479
|
);
|
|
23403
23480
|
const documentState = useSelector(documentStore);
|
|
@@ -23416,7 +23493,7 @@ function createChannelStore(initialState) {
|
|
|
23416
23493
|
const ChannelContext = createContext(
|
|
23417
23494
|
void 0
|
|
23418
23495
|
);
|
|
23419
|
-
function useYorkieChannel(client, clientLoading, clientError, channelKey, syncMode, channelStore) {
|
|
23496
|
+
function useYorkieChannel(client, clientLoading, clientError, channelKey, syncMode, channelHeartbeatInterval, channelStore) {
|
|
23420
23497
|
const channelRef = useRef(void 0);
|
|
23421
23498
|
const [didMount, setDidMount] = useState(false);
|
|
23422
23499
|
useEffect(() => {
|
|
@@ -23435,7 +23512,7 @@ function useYorkieChannel(client, clientLoading, clientError, channelKey, syncMo
|
|
|
23435
23512
|
}
|
|
23436
23513
|
let unsubscribe;
|
|
23437
23514
|
async function attachChannel() {
|
|
23438
|
-
if (!client
|
|
23515
|
+
if (!client) {
|
|
23439
23516
|
return;
|
|
23440
23517
|
}
|
|
23441
23518
|
channelStore.setState((state) => ({
|
|
@@ -23445,20 +23522,49 @@ function useYorkieChannel(client, clientLoading, clientError, channelKey, syncMo
|
|
|
23445
23522
|
}));
|
|
23446
23523
|
try {
|
|
23447
23524
|
const newChannel = new Channel2(channelKey);
|
|
23448
|
-
await client.attach(newChannel, {
|
|
23525
|
+
await client.attach(newChannel, {
|
|
23526
|
+
syncMode,
|
|
23527
|
+
channelHeartbeatInterval
|
|
23528
|
+
});
|
|
23449
23529
|
channelRef.current = newChannel;
|
|
23450
|
-
unsubscribe = newChannel.subscribe(() => {
|
|
23530
|
+
unsubscribe = newChannel.subscribe((event) => {
|
|
23531
|
+
if (event.type === ChannelEventType.SyncError || event.type === ChannelEventType.AuthError) {
|
|
23532
|
+
const nextError = event.type === ChannelEventType.SyncError ? event.error instanceof Error ? event.error : new Error(String(event.error)) : new Error(
|
|
23533
|
+
`auth error during ${event.method}: ${event.reason}`
|
|
23534
|
+
);
|
|
23535
|
+
channelStore.setState((state) => ({
|
|
23536
|
+
...state,
|
|
23537
|
+
loading: false,
|
|
23538
|
+
error: nextError
|
|
23539
|
+
}));
|
|
23540
|
+
return;
|
|
23541
|
+
}
|
|
23542
|
+
const recovers = event.type === ChannelEventType.PresenceChanged || event.type === ChannelEventType.Initialized || event.type === ChannelEventType.Broadcast;
|
|
23543
|
+
const ready = newChannel.isAttached() && !!newChannel.getSessionID();
|
|
23451
23544
|
channelStore.setState((state) => ({
|
|
23452
23545
|
...state,
|
|
23453
|
-
sessionCount: newChannel.getSessionCount()
|
|
23546
|
+
sessionCount: newChannel.getSessionCount(),
|
|
23547
|
+
...recovers && state.error ? { error: void 0 } : {},
|
|
23548
|
+
...ready && state.loading ? { loading: false } : {}
|
|
23454
23549
|
}));
|
|
23455
23550
|
});
|
|
23456
|
-
|
|
23551
|
+
const detach = async () => {
|
|
23552
|
+
if (!client) return;
|
|
23553
|
+
try {
|
|
23554
|
+
await client.detach(newChannel);
|
|
23555
|
+
} catch (err) {
|
|
23556
|
+
if (err instanceof Error && /not attached/i.test(err.message)) {
|
|
23557
|
+
return;
|
|
23558
|
+
}
|
|
23559
|
+
throw err;
|
|
23560
|
+
}
|
|
23561
|
+
};
|
|
23562
|
+
channelStore.setState((state) => ({
|
|
23563
|
+
...state,
|
|
23457
23564
|
channel: newChannel,
|
|
23458
|
-
|
|
23459
|
-
|
|
23460
|
-
|
|
23461
|
-
});
|
|
23565
|
+
error: void 0,
|
|
23566
|
+
detach
|
|
23567
|
+
}));
|
|
23462
23568
|
} catch (e) {
|
|
23463
23569
|
channelStore.setState((state) => ({
|
|
23464
23570
|
...state,
|
|
@@ -23473,23 +23579,35 @@ function useYorkieChannel(client, clientLoading, clientError, channelKey, syncMo
|
|
|
23473
23579
|
unsubscribe();
|
|
23474
23580
|
}
|
|
23475
23581
|
async function detachChannel() {
|
|
23476
|
-
if (channelRef.current && client
|
|
23582
|
+
if (channelRef.current && client) {
|
|
23477
23583
|
try {
|
|
23478
23584
|
await client.detach(channelRef.current);
|
|
23479
23585
|
} catch (e) {
|
|
23586
|
+
if (e instanceof Error && /not attached/i.test(e.message)) {
|
|
23587
|
+
return;
|
|
23588
|
+
}
|
|
23480
23589
|
console.error("Failed to detach channel:", e);
|
|
23481
23590
|
}
|
|
23482
23591
|
}
|
|
23483
23592
|
}
|
|
23484
23593
|
detachChannel();
|
|
23485
23594
|
};
|
|
23486
|
-
}, [
|
|
23595
|
+
}, [
|
|
23596
|
+
client,
|
|
23597
|
+
clientLoading,
|
|
23598
|
+
clientError,
|
|
23599
|
+
channelKey,
|
|
23600
|
+
syncMode,
|
|
23601
|
+
channelHeartbeatInterval,
|
|
23602
|
+
didMount
|
|
23603
|
+
]);
|
|
23487
23604
|
}
|
|
23488
23605
|
const ChannelProvider = ({
|
|
23489
23606
|
children,
|
|
23490
23607
|
channelKey,
|
|
23491
23608
|
syncMode,
|
|
23492
|
-
isRealtime
|
|
23609
|
+
isRealtime,
|
|
23610
|
+
channelHeartbeatInterval
|
|
23493
23611
|
}) => {
|
|
23494
23612
|
const { client, loading: clientLoading, error: clientError } = useYorkie();
|
|
23495
23613
|
const channelStoreRef = useRef(
|
|
@@ -23500,7 +23618,11 @@ const ChannelProvider = ({
|
|
|
23500
23618
|
channel: void 0,
|
|
23501
23619
|
sessionCount: 0,
|
|
23502
23620
|
loading: true,
|
|
23503
|
-
error: void 0
|
|
23621
|
+
error: void 0,
|
|
23622
|
+
// Placeholder until `useYorkieChannel` wires up the real detach.
|
|
23623
|
+
// Pre-attach calls are a no-op rather than a throw.
|
|
23624
|
+
detach: async () => {
|
|
23625
|
+
}
|
|
23504
23626
|
});
|
|
23505
23627
|
}
|
|
23506
23628
|
const channelStore = channelStoreRef.current;
|
|
@@ -23511,6 +23633,7 @@ const ChannelProvider = ({
|
|
|
23511
23633
|
clientError,
|
|
23512
23634
|
channelKey,
|
|
23513
23635
|
resolvedSyncMode,
|
|
23636
|
+
channelHeartbeatInterval,
|
|
23514
23637
|
channelStore
|
|
23515
23638
|
);
|
|
23516
23639
|
return /* @__PURE__ */ jsx(ChannelContext.Provider, { value: channelStore, children });
|
|
@@ -23527,12 +23650,82 @@ const useChannel = () => {
|
|
|
23527
23650
|
const sessionCount = useSelector(channelStore, (state) => state.sessionCount);
|
|
23528
23651
|
const loading = useSelector(channelStore, (state) => state.loading);
|
|
23529
23652
|
const error = useSelector(channelStore, (state) => state.error);
|
|
23530
|
-
|
|
23653
|
+
const detach = useSelector(channelStore, (state) => state.detach);
|
|
23654
|
+
return { sessionCount, loading, error, detach };
|
|
23531
23655
|
};
|
|
23532
23656
|
const useChannelSessionCount = () => {
|
|
23533
23657
|
const channelStore = useChannelStore("useChannelSessionCount");
|
|
23534
23658
|
return useSelector(channelStore, (state) => state.sessionCount);
|
|
23535
23659
|
};
|
|
23660
|
+
function usePeekChannel(channelKey, opts = {}) {
|
|
23661
|
+
const { client, loading: clientLoading, error: clientError } = useYorkie();
|
|
23662
|
+
const { pollInterval, enabled = true } = opts;
|
|
23663
|
+
const [sessionCount, setSessionCount] = useState(0);
|
|
23664
|
+
const [loading, setLoading] = useState(true);
|
|
23665
|
+
const [error, setError] = useState(clientError);
|
|
23666
|
+
const channelKeyRef = useRef(channelKey);
|
|
23667
|
+
channelKeyRef.current = channelKey;
|
|
23668
|
+
const mountedRef = useRef(true);
|
|
23669
|
+
useEffect(() => {
|
|
23670
|
+
mountedRef.current = true;
|
|
23671
|
+
return () => {
|
|
23672
|
+
mountedRef.current = false;
|
|
23673
|
+
};
|
|
23674
|
+
}, []);
|
|
23675
|
+
const peekOnce = useCallback(async () => {
|
|
23676
|
+
if (!client) return;
|
|
23677
|
+
if (mountedRef.current) setLoading(true);
|
|
23678
|
+
try {
|
|
23679
|
+
const count = await client.peekChannel(channelKeyRef.current);
|
|
23680
|
+
if (!mountedRef.current) return;
|
|
23681
|
+
setSessionCount(count);
|
|
23682
|
+
setError(void 0);
|
|
23683
|
+
} catch (e) {
|
|
23684
|
+
if (!mountedRef.current) return;
|
|
23685
|
+
setError(e instanceof Error ? e : new Error(String(e)));
|
|
23686
|
+
} finally {
|
|
23687
|
+
if (mountedRef.current) setLoading(false);
|
|
23688
|
+
}
|
|
23689
|
+
}, [client]);
|
|
23690
|
+
useEffect(() => {
|
|
23691
|
+
if (clientError) {
|
|
23692
|
+
setError(clientError);
|
|
23693
|
+
setLoading(false);
|
|
23694
|
+
return;
|
|
23695
|
+
}
|
|
23696
|
+
setLoading(true);
|
|
23697
|
+
if (!enabled) {
|
|
23698
|
+
setLoading(false);
|
|
23699
|
+
return;
|
|
23700
|
+
}
|
|
23701
|
+
if (clientLoading || !client) return;
|
|
23702
|
+
let cancelled = false;
|
|
23703
|
+
let timer;
|
|
23704
|
+
const run = async () => {
|
|
23705
|
+
if (cancelled) return;
|
|
23706
|
+
try {
|
|
23707
|
+
const count = await client.peekChannel(channelKey);
|
|
23708
|
+
if (cancelled) return;
|
|
23709
|
+
setSessionCount(count);
|
|
23710
|
+
setError(void 0);
|
|
23711
|
+
} catch (e) {
|
|
23712
|
+
if (cancelled) return;
|
|
23713
|
+
setError(e instanceof Error ? e : new Error(String(e)));
|
|
23714
|
+
} finally {
|
|
23715
|
+
if (!cancelled) setLoading(false);
|
|
23716
|
+
}
|
|
23717
|
+
if (!cancelled && pollInterval !== void 0 && pollInterval > 0) {
|
|
23718
|
+
timer = setTimeout(run, pollInterval);
|
|
23719
|
+
}
|
|
23720
|
+
};
|
|
23721
|
+
run();
|
|
23722
|
+
return () => {
|
|
23723
|
+
cancelled = true;
|
|
23724
|
+
if (timer) clearTimeout(timer);
|
|
23725
|
+
};
|
|
23726
|
+
}, [client, clientLoading, clientError, channelKey, pollInterval, enabled]);
|
|
23727
|
+
return { sessionCount, loading, error, refetch: peekOnce };
|
|
23728
|
+
}
|
|
23536
23729
|
export {
|
|
23537
23730
|
ChannelProvider,
|
|
23538
23731
|
Counter,
|
|
@@ -23547,6 +23740,7 @@ export {
|
|
|
23547
23740
|
useChannelSessionCount,
|
|
23548
23741
|
useConnection,
|
|
23549
23742
|
useDocument,
|
|
23743
|
+
usePeekChannel,
|
|
23550
23744
|
usePresences,
|
|
23551
23745
|
useRevisions,
|
|
23552
23746
|
useRoot,
|