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