@furo/open-models 1.20.2 → 1.21.1

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.
@@ -2625,21 +2625,6 @@
2625
2625
  }
2626
2626
  ]
2627
2627
  },
2628
- {
2629
- "kind": "javascript-module",
2630
- "path": "dist/web-components/furo-type-renderer.js",
2631
- "declarations": [],
2632
- "exports": [
2633
- {
2634
- "kind": "custom-element-definition",
2635
- "name": "furo-type-renderer",
2636
- "declaration": {
2637
- "name": "TypeRenderer",
2638
- "module": "/src/web-components/impl/TypeRenderer/TypeRenderer"
2639
- }
2640
- }
2641
- ]
2642
- },
2643
2628
  {
2644
2629
  "kind": "javascript-module",
2645
2630
  "path": "dist/proxies/ARRAY.js",
@@ -43087,6 +43072,21 @@
43087
43072
  }
43088
43073
  ]
43089
43074
  },
43075
+ {
43076
+ "kind": "javascript-module",
43077
+ "path": "dist/web-components/furo-type-renderer.js",
43078
+ "declarations": [],
43079
+ "exports": [
43080
+ {
43081
+ "kind": "custom-element-definition",
43082
+ "name": "furo-type-renderer",
43083
+ "declaration": {
43084
+ "name": "TypeRenderer",
43085
+ "module": "/src/web-components/impl/TypeRenderer/TypeRenderer"
43086
+ }
43087
+ }
43088
+ ]
43089
+ },
43090
43090
  {
43091
43091
  "kind": "javascript-module",
43092
43092
  "path": "dist/web-components/impl/TypeRenderer/TypeRenderer.js",
package/dist/Fetcher.js CHANGED
@@ -231,6 +231,12 @@ export class Fetcher {
231
231
  return new Promise((resolve, reject) => {
232
232
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- runtime data may not match types (REST API input)
233
233
  if (response) {
234
+ // No Content / Reset Content carry no body by definition; resolve as an empty
235
+ // message ({}) without touching the body to avoid parse errors.
236
+ if (response.status === 204 || response.status === 205) {
237
+ resolve({});
238
+ return;
239
+ }
234
240
  this.responseHandler.set("text/plain", r => {
235
241
  r.text()
236
242
  .then(text => {
@@ -252,8 +258,12 @@ export class Fetcher {
252
258
  });
253
259
  });
254
260
  this.responseHandler.set("application/json", r => {
255
- r.json()
256
- .then(json => {
261
+ r.text()
262
+ .then(text => {
263
+ // An empty body is the proto3 JSON representation of google.protobuf.Empty ({}).
264
+ // r.json() would reject on an empty body, so read text and only parse when non-empty.
265
+ const trimmed = text.trim();
266
+ const json = trimmed === "" ? {} : JSON.parse(trimmed);
257
267
  // convert to literal type when needed
258
268
  resolve(this.API_OPTIONS.UseProtoNames ? deepProtoNameToJsonName(json) : json);
259
269
  })
@@ -1 +1 @@
1
- {"version":3,"file":"Fetcher.js","sourceRoot":"","sources":["../src/Fetcher.ts"],"names":[],"mappings":"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","sourcesContent":["import { deepJsonNameToProtoName, deepProtoNameToJsonName, jsonNameToProtoName, protoNameToJsonName } from \"./Mapper\";\n\nexport interface IApiOptions {\n // leave empty to connect to the same host which delivers your files, otherwise set something like http://localhost:3000\n serverAddr: string;\n ApiBaseURL: string;\n headers?: Headers;\n timeout?: number;\n UseProtoNames: boolean; // server uses proto names on the transport layer\n UseProtoNamesForQueryParams: boolean;\n}\n\ninterface Handlers<REQ, RES> {\n /**\n * The `onResponse` handler is triggered, when we have a successful response.\n * @param response\n * @param serverResponse\n */\n onResponse?: (response: RES, serverResponse: Response) => void;\n\n /**\n * The `onResponseError` handler is triggered on any received status >=400.\n * @param parsedResponse - The parsed response body from the server.\n * @param serverResponse\n */\n onResponseError?: (parsedResponse: unknown, serverResponse: Response) => void;\n\n /**\n * The `onRequestStarted` handler is triggered, whenever a request is started.\n * @param req - The request object\n */\n onRequestStarted?: (req: REQ) => void;\n\n /**\n * The `onRequestFinished` handler is triggered, whenever a request is finished or aborted.\n * @param req - The request object\n */\n onRequestFinished?: (req: REQ) => void;\n\n /**\n * The `onRequestAborted` handler is triggered, whenever a request is aborted.\n * An abort can be triggered by\n * - calling `abortPendingRequest`.\n * - triggering the request again, while you have a pending request.\n * - by reaching the request timeout.\n *\n * The timeout can be set in the OPEN_MODELS_OPTIONS, the default is 600s aka 5min.\n *\n * @param req\n */\n onRequestAborted?: (req: REQ) => void;\n\n /**\n * The `onResponseRaw` handler is triggered, when we have a successful response.\n *\n * @param serverResponse\n */\n onResponseRaw?: (serverResponse: Response) => void;\n\n /**\n * The `onResponseErrorRaw` handler is triggered on any 400\n * @param serverResponse\n */\n onResponseErrorRaw?: (serverResponse: Response) => void;\n\n /**\n * The `onParseError` handler is triggered, when the content could not be parsed, according to the `content-type` header of the response.\n *\n * @param error\n * @param serverResponse\n */\n onResponseParseError?: (error: unknown, serverResponse: Response) => void;\n /**\n * The `onParseError` handler is triggered, when the content of the error could not be parsed, according to the `content-type` header of the response.\n *\n * @param error\n * @param serverResponse\n */\n onResponseErrorParseError?: (error: unknown, serverResponse: Response) => void;\n\n /**\n * The `onFatalError` handler is triggered when nothing could be caught with the cather.\n * This should not happen.\n * @param error\n */\n onFatalError?: (error: unknown) => void;\n}\n\nexport class Fetcher<REQ, RES> {\n public timeout: number;\n\n /**\n * Contains the response from the last request. Also on errors.\n */\n public lastResponse: Response | undefined;\n\n /**\n * Indicator for a pending request. Maybe you are also interested on the `onRequestStarted` and `onRequestFinished` callback methods.\n */\n public isLoading = false;\n\n private path: string;\n\n private requestInit: RequestInit;\n\n private method: string;\n\n private responseHandler: Map<string, (r: Response) => void> = new Map<string, (r: Response) => void>();\n\n private abortController: AbortController;\n\n private timeoutId: ReturnType<typeof setTimeout> | number | undefined;\n\n private bodyField: keyof REQ | \"*\" | undefined;\n\n private API_OPTIONS: IApiOptions;\n\n /**\n *\n * @param options\n * @param method\n * @param path\n * @param bodyField\n */\n constructor(\n options: IApiOptions,\n // method\n method: string,\n // options path\n path: string,\n bodyField?: keyof REQ | \"*\"\n ) {\n this.API_OPTIONS = options;\n this.path = path;\n this.bodyField = bodyField;\n this.method = method;\n\n this.abortController = new AbortController();\n const { signal } = this.abortController;\n this.requestInit = {\n method: this.method,\n signal,\n headers: this.API_OPTIONS.headers,\n redirect: \"follow\",\n };\n\n this.timeout = this.API_OPTIONS.timeout ?? 300000; // chrome default timeout\n }\n\n public setRequestOptions(ri: RequestInit) {\n const { signal } = this.abortController;\n this.requestInit = {\n method: this.method,\n headers: this.API_OPTIONS.headers,\n signal,\n ...ri,\n };\n }\n\n /**\n * setHandlers let you bind all handlers at once.\n * @param handlers\n */\n public setHandlers(handlers: Handlers<REQ, RES>) {\n this.onResponse = handlers.onResponse;\n this.onResponseError = handlers.onResponseError;\n this.onRequestStarted = handlers.onRequestStarted;\n this.onRequestFinished = handlers.onRequestFinished;\n this.onRequestAborted = handlers.onRequestAborted;\n this.onResponseRaw = handlers.onResponseRaw;\n this.onResponseErrorRaw = handlers.onResponseErrorRaw;\n this.onResponseParseError = handlers.onResponseParseError;\n this.onResponseErrorParseError = handlers.onResponseErrorParseError;\n this.onFatalError = handlers.onFatalError;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public abortPendingRequest(reason: any): void {\n if (!this.isLoading) {\n return;\n }\n clearTimeout(this.timeoutId);\n this.isLoading = false;\n this.abortController.abort(reason);\n\n if (this.onRequestAborted) {\n this.onRequestAborted(reason as REQ);\n }\n }\n\n public invoke(rqo: REQ, options?: RequestInit): Promise<RES> {\n return new Promise((resolve, reject) => {\n // abort old request if it is still running\n if (this.isLoading) {\n this.abortPendingRequest(\"invoke triggered before response\");\n }\n\n this.abortController = new AbortController();\n const { signal } = this.abortController;\n\n this.requestInit = {\n method: this.method,\n signal,\n headers: this.API_OPTIONS.headers,\n };\n\n if (options) {\n this.setRequestOptions(options);\n }\n\n this.isLoading = true;\n\n const { evaluatedPath, evaluatedBody } = this.buildPathAndBodyfield(this.path, this.bodyField, rqo);\n if (evaluatedBody) {\n this.requestInit.body = evaluatedBody;\n }\n\n clearTimeout(this.timeoutId);\n const request = new Request(evaluatedPath, this.requestInit);\n this.timeoutId = setTimeout(() => {\n this.abortController.abort(`Timeout of ${String(this.timeout)}ms reached`);\n if (this.onRequestAborted) {\n this.onRequestAborted(rqo);\n }\n\n console.error(`RequestService fetch aborted: Timeout of ${String(this.timeout)}ms reached`);\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(rqo);\n }, this.timeout);\n\n if (this.onRequestStarted) {\n this.onRequestStarted(rqo);\n }\n\n fetch(request)\n .then(response => {\n this._reworkRequest(response)\n .then(data => {\n resolve(data);\n })\n .catch(reject);\n if (this.onRequestFinished) {\n this.onRequestFinished(rqo);\n }\n })\n .catch((err: unknown) => {\n this.isLoading = false;\n\n if (err instanceof Error && err.name === \"AbortError\") {\n if (this.onRequestAborted) {\n this.onRequestAborted(rqo);\n }\n if (this.onRequestFinished) {\n this.onRequestFinished(rqo);\n }\n\n console.error(\"RequestService fetch aborted: \", err);\n } else {\n if (this.onRequestFinished) {\n this.onRequestFinished(rqo);\n }\n\n if (this.onFatalError) {\n this.onFatalError(err);\n }\n }\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n }\n\n /**\n * Succeeded is true if the request succeeded. The request succeeded if it\n * loaded without error, wasn't aborted, and the status code is ≥ 200, and\n * < 300, or if the status code is 0.\n */\n\n /**\n * Errorhandling according to Google rest-api-v3 Status Codes\n * (https://developers.google.com/maps-booking/reference/rest-api-v3/status_codes)\n *\n * Dispatches event `response-error` and a specific error event with status code\n * @private\n */\n _reworkRequest(response: Response): Promise<RES> {\n return new Promise((resolve, reject) => {\n /**\n * Status code 0 is accepted as a success because some schemes - e.g.,\n * file:// - don't provide status codes.\n */\n this.isLoading = false;\n clearTimeout(this.timeoutId);\n const status = response.status;\n\n if (status === 0 || (status >= 200 && status < 300)) {\n /**\n * Loaded without error, fires event `response` with full response object\n */\n this.lastResponse = response;\n\n if (this.onResponseRaw) {\n this.onResponseRaw(response);\n }\n\n /**\n * parses response object according to response heaader informationen `content-type`\n * you will find the supported content-types in the declaration area\n */\n\n this._parseResponse(response)\n .then(r => {\n resolve(r as RES);\n if (this.onResponse) {\n this.onResponse(r as RES, response);\n }\n })\n .catch((error: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(error);\n if (this.onResponseParseError) {\n this.onResponseParseError(error, response);\n }\n });\n } else {\n /**\n * Error detected\n */\n this.lastResponse = response;\n if (this.onResponseErrorRaw) {\n this.onResponseErrorRaw(response);\n }\n\n /**\n * parses response object according to response heaader `content-type`\n */\n this._parseResponse(response)\n .then(r => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(r);\n if (this.onResponseError) {\n this.onResponseError(r, response);\n }\n })\n /**\n * error parsing is not possible, empty response\n * the dispatched event will have the raw error object in the event detail\n */\n .catch((error: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(error);\n if (this.onResponseErrorParseError) {\n this.onResponseErrorParseError(error, response);\n }\n });\n }\n });\n }\n\n /**\n * parses response object according to lastRequest header informationen `content-type`\n * you will find the supported content-types in the declaration area\n * response Fetch API response object [https://developer.mozilla.org/en-US/docs/Web/API/Response]\n * Default response handler is json!\n * @param response\n * @private\n */\n\n _parseResponse(response: Response) {\n return new Promise((resolve, reject) => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- runtime data may not match types (REST API input)\n if (response) {\n this.responseHandler.set(\"text/plain\", r => {\n r.text()\n .then(text => {\n resolve(text);\n })\n .catch((err: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n\n this.responseHandler.set(\"text/html\", r => {\n r.text()\n .then(text => {\n resolve(text);\n })\n .catch((err: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n this.responseHandler.set(\"application/json\", r => {\n r.json()\n .then(json => {\n // convert to literal type when needed\n resolve(this.API_OPTIONS.UseProtoNames ? deepProtoNameToJsonName(json) : json);\n })\n .catch((err: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n\n this.responseHandler.set(\"application/x-ndjson\", r => {\n const preserveProtoNames = this.API_OPTIONS.UseProtoNames;\n\n const reader = r.body?.getReader();\n if (!reader) {\n throw new Error(\"NDJSON response has no readable body\");\n }\n\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n // Async generator that yields parsed NDJSON objects.\n const iterator = {\n async *[Symbol.asyncIterator](): AsyncGenerator<RES> {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- loop exits via break on done\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n\n // Split the buffer into lines. The last line may be incomplete.\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (trimmed === \"\") {\n continue; // skip empty lines\n }\n\n // Parse the JSON line and yield the result.\n let parsed: RES;\n try {\n parsed = JSON.parse(trimmed) as RES;\n } catch {\n // If parsing fails, we can choose to throw, skip, or yield an error object.\n // Here we simply rethrow to fail fast.\n throw new Error(`Failed to parse NDJSON line: ${trimmed}`);\n }\n\n yield preserveProtoNames ? (deepProtoNameToJsonName(parsed) as RES) : parsed;\n }\n }\n\n // Emit any remaining data after the last chunk.\n if (buffer.trim() !== \"\") {\n try {\n yield JSON.parse(buffer.trim()) as RES;\n } catch {\n throw new Error(`Failed to parse final NDJSON line: ${buffer.trim()}`);\n }\n }\n },\n };\n\n // Return the async iterator that satisfies the Symbol.asyncIterator contract.\n // as unknown as AsyncIterable<RES>\n resolve(iterator);\n });\n\n this.responseHandler.set(\"application/octet-stream\", r => {\n r.arrayBuffer()\n .then(buffer => {\n resolve(buffer);\n })\n .catch((err: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n this.responseHandler.set(\"application/pdf\", r => {\n r.blob()\n .then(blob => {\n resolve(blob);\n })\n .catch((err: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n this.responseHandler.set(\"image/jpeg\", r => {\n r.blob()\n .then(blob => {\n resolve(blob);\n })\n .catch((err: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n\n const contentType = response.headers.get(\"content-type\");\n let handler = contentType?.split(\";\")[0].trim();\n handler ??= \"application/json\";\n let typeHandler = this.responseHandler.get(handler);\n\n if (typeHandler === undefined) {\n console.error(\"No parser for\", handler);\n typeHandler = this.responseHandler.get(\"application/json\");\n }\n\n if (typeHandler) {\n typeHandler(response);\n }\n } else {\n reject(new Error(\"no response\"));\n }\n });\n }\n\n private buildPathAndBodyfield(\n path: string,\n bodyField: keyof REQ | \"*\" | undefined,\n rqo: REQ\n ): {\n evaluatedPath: string;\n evaluatedBody: string | undefined;\n } {\n // use the rules specified here https://docs.solo.io/gloo-edge/latest/reference/api/github.com/solo-io/solo-kit/api/external/google/api/http.proto.sk/\n // find all fields in path\n let evaluatedPath = path;\n let evaluatedBody;\n\n const keysForBodyOrQueryParams = new Map<string, keyof REQ>();\n Object.keys(rqo as object).forEach(key => {\n keysForBodyOrQueryParams.set(key, key as keyof REQ);\n });\n\n const fields = [...path.matchAll(/\\{([^}]+)}/g)];\n // replace url templates with values\n // /v1/cube/{id} => /v1/cube/12\n fields.forEach(field => {\n const rqoKey = protoNameToJsonName(field[1]) as keyof REQ;\n const rqoValue = rqo[rqoKey];\n evaluatedPath = evaluatedPath.replace(field[0], String(rqoValue));\n keysForBodyOrQueryParams.delete(rqoKey as string);\n });\n\n if (bodyField === \"*\") {\n // build body object\n const body: Record<string, unknown> = {};\n keysForBodyOrQueryParams.forEach(key => {\n body[key as string] = rqo[key];\n });\n evaluatedBody = JSON.stringify(body);\n } else {\n // build query params\n const params: string[] = [];\n if (bodyField !== undefined) {\n keysForBodyOrQueryParams.delete(bodyField as string);\n }\n keysForBodyOrQueryParams.forEach(key => {\n if (Array.isArray(rqo[key])) {\n (rqo[key] as unknown[]).forEach(e => {\n params.push(`${this.API_OPTIONS.UseProtoNames ? jsonNameToProtoName(key as string) : (key as string)}=${String(e)}`);\n });\n } else {\n params.push(`${this.API_OPTIONS.UseProtoNames ? jsonNameToProtoName(key as string) : (key as string)}=${String(rqo[key])}`);\n }\n });\n if (params.length) {\n evaluatedPath = `${evaluatedPath}?${params.join(\"&\")}`;\n }\n\n if (bodyField !== undefined) {\n evaluatedBody = JSON.stringify(this.API_OPTIONS.UseProtoNames ? deepJsonNameToProtoName(rqo[bodyField]) : rqo[bodyField]);\n }\n }\n\n evaluatedPath = `${this.API_OPTIONS.serverAddr}${this.API_OPTIONS.ApiBaseURL}${evaluatedPath}`;\n\n return {\n evaluatedPath,\n evaluatedBody,\n };\n }\n\n /**\n * The `onResponse` handler is triggered, when we have a successful response.\n * @param response\n * @param serverResponse\n */\n onResponse?: (response: RES, serverResponse: Response) => void;\n\n /**\n * The `onResponseError` handler is triggered on any received status >=400.\n * @param parsedResponse - The parsed response body from the server.\n * @param serverResponse\n */\n onResponseError?: (parsedResponse: unknown, serverResponse: Response) => void;\n\n /**\n * The `onRequestStarted` handler is triggered, whenever a request is started.\n * @param req - The request object\n */\n onRequestStarted?: (req: REQ) => void;\n\n /**\n * The `onRequestFinished` handler is triggered, whenever a request is finished or aborted.\n * @param req - The request object\n */\n onRequestFinished?: (req: REQ) => void;\n\n /**\n * The `onRequestAborted` handler is triggered, whenever a request is aborted.\n * An abort can be triggered by\n * - calling `abortPendingRequest`.\n * - triggering the request again, while you have a pending request.\n * - by reaching the request timeout.\n *\n * The timeout can be set in the OPEN_MODELS_OPTIONS, the default is 600s aka 5min.\n *\n * @param req\n */\n onRequestAborted?: (req: REQ) => void;\n\n /**\n * The `onResponseRaw` handler is triggered, when we have a successful response.\n *\n * @param serverResponse\n */\n onResponseRaw?: (serverResponse: Response) => void;\n\n /**\n * The `onResponseErrorRaw` handler is triggered on any 400\n * @param serverResponse\n */\n onResponseErrorRaw?: (serverResponse: Response) => void;\n\n /**\n * The `onParseError` handler is triggered, when the content could not be parsed, according to the `content-type` header of the response.\n *\n * @param error\n * @param serverResponse\n */\n onResponseParseError?: (error: unknown, serverResponse: Response) => void;\n\n /**\n * The `onParseError` handler is triggered, when the content of the error could not be parsed, according to the `content-type` header of the response.\n *\n * @param error\n * @param serverResponse\n */\n onResponseErrorParseError?: (error: unknown, serverResponse: Response) => void;\n\n /**\n * The `onFatalError` handler is triggered when nothing could be caught with the cather.\n * This should not happen.\n * @param error\n */\n onFatalError?: (error: unknown) => void;\n}\n"]}
1
+ {"version":3,"file":"Fetcher.js","sourceRoot":"","sources":["../src/Fetcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAwFtH,MAAM,OAAO,OAAO;IA6BlB;;;;;;OAMG;IACH,YACE,OAAoB;IACpB,SAAS;IACT,MAAc;IACd,eAAe;IACf,IAAY,EACZ,SAA2B;QAlC7B;;WAEG;QACI,cAAS,GAAG,KAAK,CAAC;QAQjB,oBAAe,GAAuC,IAAI,GAAG,EAAiC,CAAC;QAyBrG,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC7C,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM;YACN,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO;YACjC,QAAQ,EAAE,QAAQ;SACnB,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,yBAAyB;IAC9E,CAAC;IAEM,iBAAiB,CAAC,EAAe;QACtC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO;YACjC,MAAM;YACN,GAAG,EAAE;SACN,CAAC;IACJ,CAAC;IAED;;;OAGG;IACI,WAAW,CAAC,QAA4B;QAC7C,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;QAChD,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;QAClD,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QACpD,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;QAClD,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;QAC5C,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB,CAAC;QACtD,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,oBAAoB,CAAC;QAC1D,IAAI,CAAC,yBAAyB,GAAG,QAAQ,CAAC,yBAAyB,CAAC;QACpE,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;IAC5C,CAAC;IAED,8DAA8D;IACvD,mBAAmB,CAAC,MAAW;QACpC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEnC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC,gBAAgB,CAAC,MAAa,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,GAAQ,EAAE,OAAqB;QAC3C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,2CAA2C;YAC3C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,CAAC,mBAAmB,CAAC,kCAAkC,CAAC,CAAC;YAC/D,CAAC;YAED,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;YAC7C,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC;YAExC,IAAI,CAAC,WAAW,GAAG;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM;gBACN,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO;aAClC,CAAC;YAEF,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAClC,CAAC;YAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAEtB,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YACpG,IAAI,aAAa,EAAE,CAAC;gBAClB,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,aAAa,CAAC;YACxC,CAAC;YAED,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7D,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC/B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,cAAc,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBAC3E,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBAC1B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBAC7B,CAAC;gBAED,OAAO,CAAC,KAAK,CAAC,4CAA4C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBAC5F,6IAA6I;gBAC7I,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAEjB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC1B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;YAED,KAAK,CAAC,OAAO,CAAC;iBACX,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACf,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;qBAC1B,IAAI,CAAC,IAAI,CAAC,EAAE;oBACX,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC,CAAC;qBACD,KAAK,CAAC,MAAM,CAAC,CAAC;gBACjB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBAC3B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;gBACtB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBAEvB,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBACtD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBAC1B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;oBAC7B,CAAC;oBACD,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBAC3B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;oBAC9B,CAAC;oBAED,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;gBACvD,CAAC;qBAAM,CAAC;oBACN,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBAC3B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;oBAC9B,CAAC;oBAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;wBACtB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC;gBACD,6IAA6I;gBAC7I,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IAEH;;;;;;OAMG;IACH,cAAc,CAAC,QAAkB;QAC/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC;;;eAGG;YACH,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;YAE/B,IAAI,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;gBACpD;;mBAEG;gBACH,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;gBAE7B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC/B,CAAC;gBAED;;;mBAGG;gBAEH,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;qBAC1B,IAAI,CAAC,CAAC,CAAC,EAAE;oBACR,OAAO,CAAC,CAAQ,CAAC,CAAC;oBAClB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;wBACpB,IAAI,CAAC,UAAU,CAAC,CAAQ,EAAE,QAAQ,CAAC,CAAC;oBACtC,CAAC;gBACH,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;oBACxB,6IAA6I;oBAC7I,MAAM,CAAC,KAAK,CAAC,CAAC;oBACd,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;wBAC9B,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;oBAC7C,CAAC;gBACH,CAAC,CAAC,CAAC;YACP,CAAC;iBAAM,CAAC;gBACN;;mBAEG;gBACH,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;gBAC7B,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBAC5B,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBACpC,CAAC;gBAED;;mBAEG;gBACH,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;qBAC1B,IAAI,CAAC,CAAC,CAAC,EAAE;oBACR,6IAA6I;oBAC7I,MAAM,CAAC,CAAC,CAAC,CAAC;oBACV,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;wBACzB,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;oBACpC,CAAC;gBACH,CAAC,CAAC;oBACF;;;uBAGG;qBACF,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;oBACxB,6IAA6I;oBAC7I,MAAM,CAAC,KAAK,CAAC,CAAC;oBACd,IAAI,IAAI,CAAC,yBAAyB,EAAE,CAAC;wBACnC,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;oBAClD,CAAC;gBACH,CAAC,CAAC,CAAC;YACP,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IAEH,cAAc,CAAC,QAAkB;QAC/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,4HAA4H;YAC5H,IAAI,QAAQ,EAAE,CAAC;gBACb,8EAA8E;gBAC9E,gEAAgE;gBAChE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBACvD,OAAO,CAAC,EAAE,CAAC,CAAC;oBACZ,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE;oBACzC,CAAC,CAAC,IAAI,EAAE;yBACL,IAAI,CAAC,IAAI,CAAC,EAAE;wBACX,OAAO,CAAC,IAAI,CAAC,CAAC;oBAChB,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;wBACtB,6IAA6I;wBAC7I,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE;oBACxC,CAAC,CAAC,IAAI,EAAE;yBACL,IAAI,CAAC,IAAI,CAAC,EAAE;wBACX,OAAO,CAAC,IAAI,CAAC,CAAC;oBAChB,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;wBACtB,6IAA6I;wBAC7I,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,EAAE;oBAC/C,CAAC,CAAC,IAAI,EAAE;yBACL,IAAI,CAAC,IAAI,CAAC,EAAE;wBACX,iFAAiF;wBACjF,sFAAsF;wBACtF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;wBAC5B,MAAM,IAAI,GAAG,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAa,CAAC;wBACpE,sCAAsC;wBACtC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBACjF,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;wBACtB,6IAA6I;wBAC7I,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE;oBACnD,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;oBAE1D,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;oBACnC,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;oBAC1D,CAAC;oBAED,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;oBAClC,IAAI,MAAM,GAAG,EAAE,CAAC;oBAEhB,qDAAqD;oBACrD,MAAM,QAAQ,GAAG;wBACf,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;4BAC3B,uGAAuG;4BACvG,OAAO,IAAI,EAAE,CAAC;gCACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gCAC5C,IAAI,IAAI;oCAAE,MAAM;gCAEhB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gCAElD,gEAAgE;gCAChE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gCACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;gCAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oCACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oCAC5B,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;wCACnB,SAAS,CAAC,mBAAmB;oCAC/B,CAAC;oCAED,4CAA4C;oCAC5C,IAAI,MAAW,CAAC;oCAChB,IAAI,CAAC;wCACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAQ,CAAC;oCACtC,CAAC;oCAAC,MAAM,CAAC;wCACP,4EAA4E;wCAC5E,uCAAuC;wCACvC,MAAM,IAAI,KAAK,CAAC,gCAAgC,OAAO,EAAE,CAAC,CAAC;oCAC7D,CAAC;oCAED,MAAM,kBAAkB,CAAC,CAAC,CAAE,uBAAuB,CAAC,MAAM,CAAS,CAAC,CAAC,CAAC,MAAM,CAAC;gCAC/E,CAAC;4BACH,CAAC;4BAED,gDAAgD;4BAChD,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gCACzB,IAAI,CAAC;oCACH,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAQ,CAAC;gCACzC,CAAC;gCAAC,MAAM,CAAC;oCACP,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gCACzE,CAAC;4BACH,CAAC;wBACH,CAAC;qBACF,CAAC;oBAEF,8EAA8E;oBAC9E,mCAAmC;oBACnC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACpB,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,EAAE;oBACvD,CAAC,CAAC,WAAW,EAAE;yBACZ,IAAI,CAAC,MAAM,CAAC,EAAE;wBACb,OAAO,CAAC,MAAM,CAAC,CAAC;oBAClB,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;wBACtB,6IAA6I;wBAC7I,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE;oBAC9C,CAAC,CAAC,IAAI,EAAE;yBACL,IAAI,CAAC,IAAI,CAAC,EAAE;wBACX,OAAO,CAAC,IAAI,CAAC,CAAC;oBAChB,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;wBACtB,6IAA6I;wBAC7I,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE;oBACzC,CAAC,CAAC,IAAI,EAAE;yBACL,IAAI,CAAC,IAAI,CAAC,EAAE;wBACX,OAAO,CAAC,IAAI,CAAC,CAAC;oBAChB,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;wBACtB,6IAA6I;wBAC7I,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBAEH,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBACzD,IAAI,OAAO,GAAG,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAChD,OAAO,KAAK,kBAAkB,CAAC;gBAC/B,IAAI,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAEpD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;oBAC9B,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;oBACxC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;gBAC7D,CAAC;gBAED,IAAI,WAAW,EAAE,CAAC;oBAChB,WAAW,CAAC,QAAQ,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;YACnC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,qBAAqB,CAC3B,IAAY,EACZ,SAAsC,EACtC,GAAQ;QAKR,uJAAuJ;QACvJ,0BAA0B;QAC1B,IAAI,aAAa,GAAG,IAAI,CAAC;QACzB,IAAI,aAAa,CAAC;QAElB,MAAM,wBAAwB,GAAG,IAAI,GAAG,EAAqB,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,GAAa,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACvC,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAgB,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;QACjD,oCAAoC;QACpC,+BAA+B;QAC/B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACrB,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAc,CAAC;YAC1D,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;YAC7B,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClE,wBAAwB,CAAC,MAAM,CAAC,MAAgB,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YACtB,oBAAoB;YACpB,MAAM,IAAI,GAA4B,EAAE,CAAC;YACzC,wBAAwB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACrC,IAAI,CAAC,GAAa,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YACH,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,qBAAqB;YACrB,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,wBAAwB,CAAC,MAAM,CAAC,SAAmB,CAAC,CAAC;YACvD,CAAC;YACD,wBAAwB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACrC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC3B,GAAG,CAAC,GAAG,CAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBAClC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAa,CAAC,CAAC,CAAC,CAAE,GAAc,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACvH,CAAC,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAa,CAAC,CAAC,CAAC,CAAE,GAAc,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC9H,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,aAAa,GAAG,GAAG,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACzD,CAAC;YAED,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,uBAAuB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;YAC5H,CAAC;QACH,CAAC;QAED,aAAa,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,aAAa,EAAE,CAAC;QAE/F,OAAO;YACL,aAAa;YACb,aAAa;SACd,CAAC;IACJ,CAAC;CA4EF","sourcesContent":["import { deepJsonNameToProtoName, deepProtoNameToJsonName, jsonNameToProtoName, protoNameToJsonName } from \"./Mapper\";\n\nexport interface IApiOptions {\n // leave empty to connect to the same host which delivers your files, otherwise set something like http://localhost:3000\n serverAddr: string;\n ApiBaseURL: string;\n headers?: Headers;\n timeout?: number;\n UseProtoNames: boolean; // server uses proto names on the transport layer\n UseProtoNamesForQueryParams: boolean;\n}\n\ninterface Handlers<REQ, RES> {\n /**\n * The `onResponse` handler is triggered, when we have a successful response.\n * @param response\n * @param serverResponse\n */\n onResponse?: (response: RES, serverResponse: Response) => void;\n\n /**\n * The `onResponseError` handler is triggered on any received status >=400.\n * @param parsedResponse - The parsed response body from the server.\n * @param serverResponse\n */\n onResponseError?: (parsedResponse: unknown, serverResponse: Response) => void;\n\n /**\n * The `onRequestStarted` handler is triggered, whenever a request is started.\n * @param req - The request object\n */\n onRequestStarted?: (req: REQ) => void;\n\n /**\n * The `onRequestFinished` handler is triggered, whenever a request is finished or aborted.\n * @param req - The request object\n */\n onRequestFinished?: (req: REQ) => void;\n\n /**\n * The `onRequestAborted` handler is triggered, whenever a request is aborted.\n * An abort can be triggered by\n * - calling `abortPendingRequest`.\n * - triggering the request again, while you have a pending request.\n * - by reaching the request timeout.\n *\n * The timeout can be set in the OPEN_MODELS_OPTIONS, the default is 600s aka 5min.\n *\n * @param req\n */\n onRequestAborted?: (req: REQ) => void;\n\n /**\n * The `onResponseRaw` handler is triggered, when we have a successful response.\n *\n * @param serverResponse\n */\n onResponseRaw?: (serverResponse: Response) => void;\n\n /**\n * The `onResponseErrorRaw` handler is triggered on any 400\n * @param serverResponse\n */\n onResponseErrorRaw?: (serverResponse: Response) => void;\n\n /**\n * The `onParseError` handler is triggered, when the content could not be parsed, according to the `content-type` header of the response.\n *\n * @param error\n * @param serverResponse\n */\n onResponseParseError?: (error: unknown, serverResponse: Response) => void;\n /**\n * The `onParseError` handler is triggered, when the content of the error could not be parsed, according to the `content-type` header of the response.\n *\n * @param error\n * @param serverResponse\n */\n onResponseErrorParseError?: (error: unknown, serverResponse: Response) => void;\n\n /**\n * The `onFatalError` handler is triggered when nothing could be caught with the cather.\n * This should not happen.\n * @param error\n */\n onFatalError?: (error: unknown) => void;\n}\n\nexport class Fetcher<REQ, RES> {\n public timeout: number;\n\n /**\n * Contains the response from the last request. Also on errors.\n */\n public lastResponse: Response | undefined;\n\n /**\n * Indicator for a pending request. Maybe you are also interested on the `onRequestStarted` and `onRequestFinished` callback methods.\n */\n public isLoading = false;\n\n private path: string;\n\n private requestInit: RequestInit;\n\n private method: string;\n\n private responseHandler: Map<string, (r: Response) => void> = new Map<string, (r: Response) => void>();\n\n private abortController: AbortController;\n\n private timeoutId: ReturnType<typeof setTimeout> | number | undefined;\n\n private bodyField: keyof REQ | \"*\" | undefined;\n\n private API_OPTIONS: IApiOptions;\n\n /**\n *\n * @param options\n * @param method\n * @param path\n * @param bodyField\n */\n constructor(\n options: IApiOptions,\n // method\n method: string,\n // options path\n path: string,\n bodyField?: keyof REQ | \"*\"\n ) {\n this.API_OPTIONS = options;\n this.path = path;\n this.bodyField = bodyField;\n this.method = method;\n\n this.abortController = new AbortController();\n const { signal } = this.abortController;\n this.requestInit = {\n method: this.method,\n signal,\n headers: this.API_OPTIONS.headers,\n redirect: \"follow\",\n };\n\n this.timeout = this.API_OPTIONS.timeout ?? 300000; // chrome default timeout\n }\n\n public setRequestOptions(ri: RequestInit) {\n const { signal } = this.abortController;\n this.requestInit = {\n method: this.method,\n headers: this.API_OPTIONS.headers,\n signal,\n ...ri,\n };\n }\n\n /**\n * setHandlers let you bind all handlers at once.\n * @param handlers\n */\n public setHandlers(handlers: Handlers<REQ, RES>) {\n this.onResponse = handlers.onResponse;\n this.onResponseError = handlers.onResponseError;\n this.onRequestStarted = handlers.onRequestStarted;\n this.onRequestFinished = handlers.onRequestFinished;\n this.onRequestAborted = handlers.onRequestAborted;\n this.onResponseRaw = handlers.onResponseRaw;\n this.onResponseErrorRaw = handlers.onResponseErrorRaw;\n this.onResponseParseError = handlers.onResponseParseError;\n this.onResponseErrorParseError = handlers.onResponseErrorParseError;\n this.onFatalError = handlers.onFatalError;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public abortPendingRequest(reason: any): void {\n if (!this.isLoading) {\n return;\n }\n clearTimeout(this.timeoutId);\n this.isLoading = false;\n this.abortController.abort(reason);\n\n if (this.onRequestAborted) {\n this.onRequestAborted(reason as REQ);\n }\n }\n\n public invoke(rqo: REQ, options?: RequestInit): Promise<RES> {\n return new Promise((resolve, reject) => {\n // abort old request if it is still running\n if (this.isLoading) {\n this.abortPendingRequest(\"invoke triggered before response\");\n }\n\n this.abortController = new AbortController();\n const { signal } = this.abortController;\n\n this.requestInit = {\n method: this.method,\n signal,\n headers: this.API_OPTIONS.headers,\n };\n\n if (options) {\n this.setRequestOptions(options);\n }\n\n this.isLoading = true;\n\n const { evaluatedPath, evaluatedBody } = this.buildPathAndBodyfield(this.path, this.bodyField, rqo);\n if (evaluatedBody) {\n this.requestInit.body = evaluatedBody;\n }\n\n clearTimeout(this.timeoutId);\n const request = new Request(evaluatedPath, this.requestInit);\n this.timeoutId = setTimeout(() => {\n this.abortController.abort(`Timeout of ${String(this.timeout)}ms reached`);\n if (this.onRequestAborted) {\n this.onRequestAborted(rqo);\n }\n\n console.error(`RequestService fetch aborted: Timeout of ${String(this.timeout)}ms reached`);\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(rqo);\n }, this.timeout);\n\n if (this.onRequestStarted) {\n this.onRequestStarted(rqo);\n }\n\n fetch(request)\n .then(response => {\n this._reworkRequest(response)\n .then(data => {\n resolve(data);\n })\n .catch(reject);\n if (this.onRequestFinished) {\n this.onRequestFinished(rqo);\n }\n })\n .catch((err: unknown) => {\n this.isLoading = false;\n\n if (err instanceof Error && err.name === \"AbortError\") {\n if (this.onRequestAborted) {\n this.onRequestAborted(rqo);\n }\n if (this.onRequestFinished) {\n this.onRequestFinished(rqo);\n }\n\n console.error(\"RequestService fetch aborted: \", err);\n } else {\n if (this.onRequestFinished) {\n this.onRequestFinished(rqo);\n }\n\n if (this.onFatalError) {\n this.onFatalError(err);\n }\n }\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n }\n\n /**\n * Succeeded is true if the request succeeded. The request succeeded if it\n * loaded without error, wasn't aborted, and the status code is ≥ 200, and\n * < 300, or if the status code is 0.\n */\n\n /**\n * Errorhandling according to Google rest-api-v3 Status Codes\n * (https://developers.google.com/maps-booking/reference/rest-api-v3/status_codes)\n *\n * Dispatches event `response-error` and a specific error event with status code\n * @private\n */\n _reworkRequest(response: Response): Promise<RES> {\n return new Promise((resolve, reject) => {\n /**\n * Status code 0 is accepted as a success because some schemes - e.g.,\n * file:// - don't provide status codes.\n */\n this.isLoading = false;\n clearTimeout(this.timeoutId);\n const status = response.status;\n\n if (status === 0 || (status >= 200 && status < 300)) {\n /**\n * Loaded without error, fires event `response` with full response object\n */\n this.lastResponse = response;\n\n if (this.onResponseRaw) {\n this.onResponseRaw(response);\n }\n\n /**\n * parses response object according to response heaader informationen `content-type`\n * you will find the supported content-types in the declaration area\n */\n\n this._parseResponse(response)\n .then(r => {\n resolve(r as RES);\n if (this.onResponse) {\n this.onResponse(r as RES, response);\n }\n })\n .catch((error: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(error);\n if (this.onResponseParseError) {\n this.onResponseParseError(error, response);\n }\n });\n } else {\n /**\n * Error detected\n */\n this.lastResponse = response;\n if (this.onResponseErrorRaw) {\n this.onResponseErrorRaw(response);\n }\n\n /**\n * parses response object according to response heaader `content-type`\n */\n this._parseResponse(response)\n .then(r => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(r);\n if (this.onResponseError) {\n this.onResponseError(r, response);\n }\n })\n /**\n * error parsing is not possible, empty response\n * the dispatched event will have the raw error object in the event detail\n */\n .catch((error: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(error);\n if (this.onResponseErrorParseError) {\n this.onResponseErrorParseError(error, response);\n }\n });\n }\n });\n }\n\n /**\n * parses response object according to lastRequest header informationen `content-type`\n * you will find the supported content-types in the declaration area\n * response Fetch API response object [https://developer.mozilla.org/en-US/docs/Web/API/Response]\n * Default response handler is json!\n * @param response\n * @private\n */\n\n _parseResponse(response: Response) {\n return new Promise((resolve, reject) => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- runtime data may not match types (REST API input)\n if (response) {\n // No Content / Reset Content carry no body by definition; resolve as an empty\n // message ({}) without touching the body to avoid parse errors.\n if (response.status === 204 || response.status === 205) {\n resolve({});\n return;\n }\n\n this.responseHandler.set(\"text/plain\", r => {\n r.text()\n .then(text => {\n resolve(text);\n })\n .catch((err: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n\n this.responseHandler.set(\"text/html\", r => {\n r.text()\n .then(text => {\n resolve(text);\n })\n .catch((err: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n this.responseHandler.set(\"application/json\", r => {\n r.text()\n .then(text => {\n // An empty body is the proto3 JSON representation of google.protobuf.Empty ({}).\n // r.json() would reject on an empty body, so read text and only parse when non-empty.\n const trimmed = text.trim();\n const json = trimmed === \"\" ? {} : (JSON.parse(trimmed) as unknown);\n // convert to literal type when needed\n resolve(this.API_OPTIONS.UseProtoNames ? deepProtoNameToJsonName(json) : json);\n })\n .catch((err: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n\n this.responseHandler.set(\"application/x-ndjson\", r => {\n const preserveProtoNames = this.API_OPTIONS.UseProtoNames;\n\n const reader = r.body?.getReader();\n if (!reader) {\n throw new Error(\"NDJSON response has no readable body\");\n }\n\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n // Async generator that yields parsed NDJSON objects.\n const iterator = {\n async *[Symbol.asyncIterator](): AsyncGenerator<RES> {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- loop exits via break on done\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n\n // Split the buffer into lines. The last line may be incomplete.\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (trimmed === \"\") {\n continue; // skip empty lines\n }\n\n // Parse the JSON line and yield the result.\n let parsed: RES;\n try {\n parsed = JSON.parse(trimmed) as RES;\n } catch {\n // If parsing fails, we can choose to throw, skip, or yield an error object.\n // Here we simply rethrow to fail fast.\n throw new Error(`Failed to parse NDJSON line: ${trimmed}`);\n }\n\n yield preserveProtoNames ? (deepProtoNameToJsonName(parsed) as RES) : parsed;\n }\n }\n\n // Emit any remaining data after the last chunk.\n if (buffer.trim() !== \"\") {\n try {\n yield JSON.parse(buffer.trim()) as RES;\n } catch {\n throw new Error(`Failed to parse final NDJSON line: ${buffer.trim()}`);\n }\n }\n },\n };\n\n // Return the async iterator that satisfies the Symbol.asyncIterator contract.\n // as unknown as AsyncIterable<RES>\n resolve(iterator);\n });\n\n this.responseHandler.set(\"application/octet-stream\", r => {\n r.arrayBuffer()\n .then(buffer => {\n resolve(buffer);\n })\n .catch((err: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n this.responseHandler.set(\"application/pdf\", r => {\n r.blob()\n .then(blob => {\n resolve(blob);\n })\n .catch((err: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n this.responseHandler.set(\"image/jpeg\", r => {\n r.blob()\n .then(blob => {\n resolve(blob);\n })\n .catch((err: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n\n const contentType = response.headers.get(\"content-type\");\n let handler = contentType?.split(\";\")[0].trim();\n handler ??= \"application/json\";\n let typeHandler = this.responseHandler.get(handler);\n\n if (typeHandler === undefined) {\n console.error(\"No parser for\", handler);\n typeHandler = this.responseHandler.get(\"application/json\");\n }\n\n if (typeHandler) {\n typeHandler(response);\n }\n } else {\n reject(new Error(\"no response\"));\n }\n });\n }\n\n private buildPathAndBodyfield(\n path: string,\n bodyField: keyof REQ | \"*\" | undefined,\n rqo: REQ\n ): {\n evaluatedPath: string;\n evaluatedBody: string | undefined;\n } {\n // use the rules specified here https://docs.solo.io/gloo-edge/latest/reference/api/github.com/solo-io/solo-kit/api/external/google/api/http.proto.sk/\n // find all fields in path\n let evaluatedPath = path;\n let evaluatedBody;\n\n const keysForBodyOrQueryParams = new Map<string, keyof REQ>();\n Object.keys(rqo as object).forEach(key => {\n keysForBodyOrQueryParams.set(key, key as keyof REQ);\n });\n\n const fields = [...path.matchAll(/\\{([^}]+)}/g)];\n // replace url templates with values\n // /v1/cube/{id} => /v1/cube/12\n fields.forEach(field => {\n const rqoKey = protoNameToJsonName(field[1]) as keyof REQ;\n const rqoValue = rqo[rqoKey];\n evaluatedPath = evaluatedPath.replace(field[0], String(rqoValue));\n keysForBodyOrQueryParams.delete(rqoKey as string);\n });\n\n if (bodyField === \"*\") {\n // build body object\n const body: Record<string, unknown> = {};\n keysForBodyOrQueryParams.forEach(key => {\n body[key as string] = rqo[key];\n });\n evaluatedBody = JSON.stringify(body);\n } else {\n // build query params\n const params: string[] = [];\n if (bodyField !== undefined) {\n keysForBodyOrQueryParams.delete(bodyField as string);\n }\n keysForBodyOrQueryParams.forEach(key => {\n if (Array.isArray(rqo[key])) {\n (rqo[key] as unknown[]).forEach(e => {\n params.push(`${this.API_OPTIONS.UseProtoNames ? jsonNameToProtoName(key as string) : (key as string)}=${String(e)}`);\n });\n } else {\n params.push(`${this.API_OPTIONS.UseProtoNames ? jsonNameToProtoName(key as string) : (key as string)}=${String(rqo[key])}`);\n }\n });\n if (params.length) {\n evaluatedPath = `${evaluatedPath}?${params.join(\"&\")}`;\n }\n\n if (bodyField !== undefined) {\n evaluatedBody = JSON.stringify(this.API_OPTIONS.UseProtoNames ? deepJsonNameToProtoName(rqo[bodyField]) : rqo[bodyField]);\n }\n }\n\n evaluatedPath = `${this.API_OPTIONS.serverAddr}${this.API_OPTIONS.ApiBaseURL}${evaluatedPath}`;\n\n return {\n evaluatedPath,\n evaluatedBody,\n };\n }\n\n /**\n * The `onResponse` handler is triggered, when we have a successful response.\n * @param response\n * @param serverResponse\n */\n onResponse?: (response: RES, serverResponse: Response) => void;\n\n /**\n * The `onResponseError` handler is triggered on any received status >=400.\n * @param parsedResponse - The parsed response body from the server.\n * @param serverResponse\n */\n onResponseError?: (parsedResponse: unknown, serverResponse: Response) => void;\n\n /**\n * The `onRequestStarted` handler is triggered, whenever a request is started.\n * @param req - The request object\n */\n onRequestStarted?: (req: REQ) => void;\n\n /**\n * The `onRequestFinished` handler is triggered, whenever a request is finished or aborted.\n * @param req - The request object\n */\n onRequestFinished?: (req: REQ) => void;\n\n /**\n * The `onRequestAborted` handler is triggered, whenever a request is aborted.\n * An abort can be triggered by\n * - calling `abortPendingRequest`.\n * - triggering the request again, while you have a pending request.\n * - by reaching the request timeout.\n *\n * The timeout can be set in the OPEN_MODELS_OPTIONS, the default is 600s aka 5min.\n *\n * @param req\n */\n onRequestAborted?: (req: REQ) => void;\n\n /**\n * The `onResponseRaw` handler is triggered, when we have a successful response.\n *\n * @param serverResponse\n */\n onResponseRaw?: (serverResponse: Response) => void;\n\n /**\n * The `onResponseErrorRaw` handler is triggered on any 400\n * @param serverResponse\n */\n onResponseErrorRaw?: (serverResponse: Response) => void;\n\n /**\n * The `onParseError` handler is triggered, when the content could not be parsed, according to the `content-type` header of the response.\n *\n * @param error\n * @param serverResponse\n */\n onResponseParseError?: (error: unknown, serverResponse: Response) => void;\n\n /**\n * The `onParseError` handler is triggered, when the content of the error could not be parsed, according to the `content-type` header of the response.\n *\n * @param error\n * @param serverResponse\n */\n onResponseErrorParseError?: (error: unknown, serverResponse: Response) => void;\n\n /**\n * The `onFatalError` handler is triggered when nothing could be caught with the cather.\n * This should not happen.\n * @param error\n */\n onFatalError?: (error: unknown) => void;\n}\n"]}
@@ -182,6 +182,12 @@ export class StrictFetcher {
182
182
  return new Promise((resolve, reject) => {
183
183
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- runtime data may not match types (REST API input)
184
184
  if (response) {
185
+ // No Content / Reset Content carry no body by definition; resolve as an empty
186
+ // message ({}) without touching the body to avoid parse errors.
187
+ if (response.status === 204 || response.status === 205) {
188
+ resolve({});
189
+ return;
190
+ }
185
191
  this.responseHandler.set("text/plain", r => {
186
192
  r.text()
187
193
  .then(text => {
@@ -203,8 +209,12 @@ export class StrictFetcher {
203
209
  });
204
210
  });
205
211
  this.responseHandler.set("application/json", r => {
206
- r.json()
207
- .then(json => {
212
+ r.text()
213
+ .then(text => {
214
+ // An empty body is the proto3 JSON representation of google.protobuf.Empty ({}).
215
+ // r.json() would reject on an empty body, so read text and only parse when non-empty.
216
+ const trimmed = text.trim();
217
+ const json = trimmed === "" ? {} : JSON.parse(trimmed);
208
218
  if (this.onRawJsonResponse) {
209
219
  this.onRawJsonResponse(json);
210
220
  }
@@ -1 +1 @@
1
- {"version":3,"file":"StrictFetcher.js","sourceRoot":"","sources":["../src/StrictFetcher.ts"],"names":[],"mappings":"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","sourcesContent":["import { FieldNode } from \"./FieldNode\";\nimport type { JSONObject } from \"@/well_known/Struct\";\n\nexport interface IApiOptions {\n serverAddr: string;\n ApiBaseURL: string;\n headers?: Headers;\n timeout?: number;\n UseProtoNames: boolean;\n UseProtoNamesForQueryParams: boolean;\n}\n\ninterface Handlers<REQ, RES> {\n onResponse?: (response: RES, serverResponse: Response) => void;\n onResponseError?: (parsedResponse: unknown, serverResponse: Response) => void;\n onRequestStarted?: (req: REQ) => void;\n onRequestFinished?: (req: REQ) => void;\n onRequestAborted?: (req: REQ) => void;\n onResponseRaw?: (serverResponse: Response) => void;\n onResponseErrorRaw?: (serverResponse: Response) => void;\n onResponseParseError?: (error: unknown, serverResponse: Response) => void;\n onResponseErrorParseError?: (error: unknown, serverResponse: Response) => void;\n onFatalError?: (error: unknown) => void;\n onRawJsonResponse?:(json:JSONObject)=>void;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype FieldNodeConstructor = new (initData?: any, parent?: FieldNode, parentAttributeName?: string) => FieldNode;\n\nexport class StrictFetcher<REQ, RES> {\n public timeout: number;\n public lastResponse: Response | undefined;\n public isLoading = false;\n\n private path: string;\n private requestInit: RequestInit;\n private method: string;\n private responseHandler: Map<string, (r: Response) => void> = new Map<string, (r: Response) => void>();\n private abortController: AbortController;\n private timeoutId: ReturnType<typeof setTimeout> | number | undefined;\n private bodyField: keyof REQ | \"*\" | undefined;\n private API_OPTIONS: IApiOptions;\n\n private ReqType: FieldNodeConstructor;\n private ResType: FieldNodeConstructor;\n\n // Maps camelCase fieldName → protoName from the REQ type's field descriptors\n private reqProtoNameMap: Map<string, string>;\n // Maps camelCase fieldName → FieldConstructor from the REQ type's field descriptors\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private reqFieldConstructorMap: Map<string, any>;\n\n constructor(options: IApiOptions, method: string, path: string, ReqType: FieldNodeConstructor, ResType: FieldNodeConstructor, bodyField?: keyof REQ | \"*\") {\n this.API_OPTIONS = options;\n this.path = path;\n this.bodyField = bodyField;\n this.method = method;\n this.ReqType = ReqType;\n this.ResType = ResType;\n\n // Build the proto name map from the REQ type's field descriptors\n this.reqProtoNameMap = new Map<string, string>();\n this.reqFieldConstructorMap = new Map<string, FieldNodeConstructor>();\n const tempReq = new ReqType();\n tempReq.__meta.nodeFields.forEach(field => {\n this.reqProtoNameMap.set(field.fieldName, field.protoName);\n this.reqFieldConstructorMap.set(field.fieldName, field.FieldConstructor as FieldNodeConstructor);\n });\n\n this.abortController = new AbortController();\n const { signal } = this.abortController;\n this.requestInit = {\n method: this.method,\n signal,\n headers: this.API_OPTIONS.headers,\n redirect: \"follow\",\n };\n\n this.timeout = this.API_OPTIONS.timeout ?? 300000;\n }\n\n public setRequestOptions(ri: RequestInit) {\n const { signal } = this.abortController;\n this.requestInit = {\n method: this.method,\n headers: this.API_OPTIONS.headers,\n signal,\n ...ri,\n };\n }\n\n public setHandlers(handlers: Handlers<REQ, RES>) {\n this.onResponse = handlers.onResponse;\n this.onResponseError = handlers.onResponseError;\n this.onRequestStarted = handlers.onRequestStarted;\n this.onRequestFinished = handlers.onRequestFinished;\n this.onRequestAborted = handlers.onRequestAborted;\n this.onResponseRaw = handlers.onResponseRaw;\n this.onResponseErrorRaw = handlers.onResponseErrorRaw;\n this.onResponseParseError = handlers.onResponseParseError;\n this.onResponseErrorParseError = handlers.onResponseErrorParseError;\n this.onFatalError = handlers.onFatalError;\n this.onRawJsonResponse = handlers.onRawJsonResponse;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public abortPendingRequest(reason: any): void {\n if (!this.isLoading) {\n return;\n }\n clearTimeout(this.timeoutId);\n this.isLoading = false;\n this.abortController.abort(reason);\n\n if (this.onRequestAborted) {\n this.onRequestAborted(reason as REQ);\n }\n }\n\n public invoke(rqo: REQ, options?: RequestInit): Promise<RES> {\n return new Promise((resolve, reject) => {\n if (this.isLoading) {\n this.abortPendingRequest(\"invoke triggered before response\");\n }\n\n this.abortController = new AbortController();\n const { signal } = this.abortController;\n\n this.requestInit = {\n method: this.method,\n signal,\n headers: this.API_OPTIONS.headers,\n };\n\n if (options) {\n this.setRequestOptions(options);\n }\n\n this.isLoading = true;\n\n const { evaluatedPath, evaluatedBody } = this.buildPathAndBodyfield(this.path, this.bodyField, rqo);\n if (evaluatedBody) {\n this.requestInit.body = evaluatedBody;\n }\n\n clearTimeout(this.timeoutId);\n const request = new Request(evaluatedPath, this.requestInit);\n this.timeoutId = setTimeout(() => {\n this.abortController.abort(`Timeout of ${String(this.timeout)}ms reached`);\n if (this.onRequestAborted) {\n this.onRequestAborted(rqo);\n }\n\n console.error(`RequestService fetch aborted: Timeout of ${String(this.timeout)}ms reached`);\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(rqo);\n }, this.timeout);\n\n if (this.onRequestStarted) {\n this.onRequestStarted(rqo);\n }\n\n fetch(request)\n .then(response => {\n this._reworkRequest(response)\n .then(data => {\n resolve(data);\n })\n .catch(reject);\n if (this.onRequestFinished) {\n this.onRequestFinished(rqo);\n }\n })\n .catch((err: unknown) => {\n this.isLoading = false;\n\n if (err instanceof Error && err.name === \"AbortError\") {\n if (this.onRequestAborted) {\n this.onRequestAborted(rqo);\n }\n if (this.onRequestFinished) {\n this.onRequestFinished(rqo);\n }\n\n console.error(\"RequestService fetch aborted: \", err);\n } else {\n if (this.onRequestFinished) {\n this.onRequestFinished(rqo);\n }\n\n if (this.onFatalError) {\n this.onFatalError(err);\n }\n }\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n }\n\n _reworkRequest(response: Response): Promise<RES> {\n return new Promise((resolve, reject) => {\n this.isLoading = false;\n clearTimeout(this.timeoutId);\n const status = response.status;\n\n if (status === 0 || (status >= 200 && status < 300)) {\n this.lastResponse = response;\n\n if (this.onResponseRaw) {\n this.onResponseRaw(response);\n }\n\n this._parseResponse(response)\n .then(r => {\n resolve(r as RES);\n if (this.onResponse) {\n this.onResponse(r as RES, response);\n }\n })\n .catch((error: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(error);\n if (this.onResponseParseError) {\n this.onResponseParseError(error, response);\n }\n });\n } else {\n this.lastResponse = response;\n if (this.onResponseErrorRaw) {\n this.onResponseErrorRaw(response);\n }\n\n this._parseResponse(response)\n .then(r => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(r);\n if (this.onResponseError) {\n this.onResponseError(r, response);\n }\n })\n .catch((error: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(error);\n if (this.onResponseErrorParseError) {\n this.onResponseErrorParseError(error, response);\n }\n });\n }\n });\n }\n\n _parseResponse(response: Response) {\n return new Promise((resolve, reject) => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- runtime data may not match types (REST API input)\n if (response) {\n this.responseHandler.set(\"text/plain\", r => {\n r.text()\n .then(text => {\n resolve(text);\n })\n .catch((err: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n\n this.responseHandler.set(\"text/html\", r => {\n r.text()\n .then(text => {\n resolve(text);\n })\n .catch((err: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n\n this.responseHandler.set(\"application/json\", r => {\n r.json()\n .then(json => {\n\n if(this.onRawJsonResponse){\n this.onRawJsonResponse(json as JSONObject);\n }\n\n if (this.API_OPTIONS.UseProtoNames) {\n // Use FieldNode-based conversion instead of generic Mapper\n const resNode = new this.ResType();\n resNode.__fromProtoNameJson(json);\n resolve(resNode.__toLiteral());\n } else {\n resolve(json);\n }\n })\n .catch((err: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n\n this.responseHandler.set(\"application/x-ndjson\", r => {\n const preserveProtoNames = this.API_OPTIONS.UseProtoNames;\n const ResTypeCtor = this.ResType;\n\n const reader = r.body?.getReader();\n if (!reader) {\n throw new Error(\"NDJSON response has no readable body\");\n }\n\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n const iterator = {\n async *[Symbol.asyncIterator](): AsyncGenerator<RES> {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- loop exits via break on done\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (trimmed === \"\") {\n continue;\n }\n\n let parsed: RES;\n try {\n parsed = JSON.parse(trimmed) as RES;\n } catch {\n throw new Error(`Failed to parse NDJSON line: ${trimmed}`);\n }\n\n if (preserveProtoNames) {\n const resNode = new ResTypeCtor();\n resNode.__fromProtoNameJson(parsed);\n yield resNode.__toLiteral() as RES;\n } else {\n yield parsed;\n }\n }\n }\n\n if (buffer.trim() !== \"\") {\n try {\n const parsed = JSON.parse(buffer.trim()) as RES;\n if (preserveProtoNames) {\n const resNode = new ResTypeCtor();\n resNode.__fromProtoNameJson(parsed);\n yield resNode.__toLiteral() as RES;\n } else {\n yield parsed;\n }\n } catch {\n throw new Error(`Failed to parse final NDJSON line: ${buffer.trim()}`);\n }\n }\n },\n };\n\n resolve(iterator);\n });\n\n this.responseHandler.set(\"application/octet-stream\", r => {\n r.arrayBuffer()\n .then(buffer => {\n resolve(buffer);\n })\n .catch((err: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n this.responseHandler.set(\"application/pdf\", r => {\n r.blob()\n .then(blob => {\n resolve(blob);\n })\n .catch((err: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n this.responseHandler.set(\"image/jpeg\", r => {\n r.blob()\n .then(blob => {\n resolve(blob);\n })\n .catch((err: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n\n const contentType = response.headers.get(\"content-type\");\n let handler = contentType?.split(\";\")[0].trim();\n handler ??= \"application/json\";\n let typeHandler = this.responseHandler.get(handler);\n\n if (typeHandler === undefined) {\n console.error(\"No parser for\", handler);\n typeHandler = this.responseHandler.get(\"application/json\");\n }\n\n if (typeHandler) {\n typeHandler(response);\n }\n } else {\n reject(new Error(\"no response\"));\n }\n });\n }\n\n private buildPathAndBodyfield(\n path: string,\n bodyField: keyof REQ | \"*\" | undefined,\n rqo: REQ\n ): {\n evaluatedPath: string;\n evaluatedBody: string | undefined;\n } {\n let evaluatedPath = path;\n let evaluatedBody;\n\n const keysForBodyOrQueryParams = new Map<string, keyof REQ>();\n Object.keys(rqo as object).forEach(key => {\n keysForBodyOrQueryParams.set(key, key as keyof REQ);\n });\n\n // Build a reverse map: protoName → camelCase fieldName for path template resolution\n const protoToFieldMap = new Map<string, string>();\n this.reqProtoNameMap.forEach((protoName, fieldName) => {\n protoToFieldMap.set(protoName, fieldName);\n });\n\n const fields = [...path.matchAll(/\\{([^}]+)}/g)];\n // Replace URL templates with values: /v1/cube/{cube_id} => /v1/cube/12\n // Path templates use proto names, but rqo uses camelCase keys\n fields.forEach(field => {\n const protoName = field[1];\n const camelKey = (protoToFieldMap.get(protoName) ?? protoName) as keyof REQ;\n const rqoValue = rqo[camelKey];\n evaluatedPath = evaluatedPath.replace(field[0], String(rqoValue));\n keysForBodyOrQueryParams.delete(camelKey as string);\n });\n\n if (bodyField === \"*\") {\n // Use FieldNode serialization for body when UseProtoNames is true\n if (this.API_OPTIONS.UseProtoNames) {\n const reqNode = new this.ReqType();\n // Build a literal from remaining keys\n const literalBody: Record<string, unknown> = {};\n keysForBodyOrQueryParams.forEach(key => {\n literalBody[key as string] = rqo[key];\n });\n reqNode.__fromLiteral(literalBody);\n evaluatedBody = JSON.stringify(reqNode.__toJson());\n } else {\n const body: Record<string, unknown> = {};\n keysForBodyOrQueryParams.forEach(key => {\n body[key as string] = rqo[key];\n });\n evaluatedBody = JSON.stringify(body);\n }\n } else {\n // Build query params\n const params: string[] = [];\n if (bodyField !== undefined) {\n keysForBodyOrQueryParams.delete(bodyField as string);\n }\n keysForBodyOrQueryParams.forEach(key => {\n // Use the reqProtoNameMap for proto name lookup instead of generic conversion\n const paramName = this.API_OPTIONS.UseProtoNamesForQueryParams ? (this.reqProtoNameMap.get(key as string) ?? (key as string)) : (key as string);\n if (Array.isArray(rqo[key])) {\n (rqo[key] as unknown[]).forEach(e => {\n params.push(`${paramName}=${String(e)}`);\n });\n } else {\n params.push(`${paramName}=${String(rqo[key])}`);\n }\n });\n if (params.length) {\n evaluatedPath = `${evaluatedPath}?${params.join(\"&\")}`;\n }\n\n if (bodyField !== undefined) {\n // Use FieldNode serialization for the named body field when UseProtoNames is true\n if (this.API_OPTIONS.UseProtoNames) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- FieldConstructor stored from meta is untyped\n const FieldCtor = this.reqFieldConstructorMap.get(bodyField as string);\n if (FieldCtor) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call -- FieldConstructor is dynamically resolved from meta\n const fieldNode = new FieldCtor(undefined) as FieldNode;\n fieldNode.__fromLiteral(rqo[bodyField]);\n evaluatedBody = JSON.stringify(fieldNode.__toJson());\n } else {\n evaluatedBody = JSON.stringify(rqo[bodyField]);\n }\n } else {\n evaluatedBody = JSON.stringify(rqo[bodyField]);\n }\n }\n }\n\n evaluatedPath = `${this.API_OPTIONS.serverAddr}${this.API_OPTIONS.ApiBaseURL}${evaluatedPath}`;\n\n return {\n evaluatedPath,\n evaluatedBody,\n };\n }\n\n onResponse?: (response: RES, serverResponse: Response) => void;\n onResponseError?: (parsedResponse: unknown, serverResponse: Response) => void;\n onRequestStarted?: (req: REQ) => void;\n onRequestFinished?: (req: REQ) => void;\n onRequestAborted?: (req: REQ) => void;\n onResponseRaw?: (serverResponse: Response) => void;\n onResponseErrorRaw?: (serverResponse: Response) => void;\n onResponseParseError?: (error: unknown, serverResponse: Response) => void;\n onResponseErrorParseError?: (error: unknown, serverResponse: Response) => void;\n onFatalError?: (error: unknown) => void;\n onRawJsonResponse?: (json: JSONObject) => void;\n}\n"]}
1
+ {"version":3,"file":"StrictFetcher.js","sourceRoot":"","sources":["../src/StrictFetcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AA6BxC,MAAM,OAAO,aAAa;IAuBxB,YAAY,OAAoB,EAAE,MAAc,EAAE,IAAY,EAAE,OAA6B,EAAE,OAA6B,EAAE,SAA2B;QApBlJ,cAAS,GAAG,KAAK,CAAC;QAKjB,oBAAe,GAAuC,IAAI,GAAG,EAAiC,CAAC;QAgBrG,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,iEAAiE;QACjE,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;QACjD,IAAI,CAAC,sBAAsB,GAAG,IAAI,GAAG,EAAgC,CAAC;QACtE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAC3D,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,gBAAwC,CAAC,CAAC;QACnG,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC7C,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM;YACN,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO;YACjC,QAAQ,EAAE,QAAQ;SACnB,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,MAAM,CAAC;IACpD,CAAC;IAEM,iBAAiB,CAAC,EAAe;QACtC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO;YACjC,MAAM;YACN,GAAG,EAAE;SACN,CAAC;IACJ,CAAC;IAEM,WAAW,CAAC,QAA4B;QAC7C,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;QAChD,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;QAClD,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QACpD,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;QAClD,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;QAC5C,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB,CAAC;QACtD,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,oBAAoB,CAAC;QAC1D,IAAI,CAAC,yBAAyB,GAAG,QAAQ,CAAC,yBAAyB,CAAC;QACpE,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC1C,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;IACtD,CAAC;IAED,8DAA8D;IACvD,mBAAmB,CAAC,MAAW;QACpC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEnC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC,gBAAgB,CAAC,MAAa,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,GAAQ,EAAE,OAAqB;QAC3C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,CAAC,mBAAmB,CAAC,kCAAkC,CAAC,CAAC;YAC/D,CAAC;YAED,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;YAC7C,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC;YAExC,IAAI,CAAC,WAAW,GAAG;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM;gBACN,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO;aAClC,CAAC;YAEF,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAClC,CAAC;YAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAEtB,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YACpG,IAAI,aAAa,EAAE,CAAC;gBAClB,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,aAAa,CAAC;YACxC,CAAC;YAED,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7D,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC/B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,cAAc,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBAC3E,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBAC1B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBAC7B,CAAC;gBAED,OAAO,CAAC,KAAK,CAAC,4CAA4C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBAC5F,6IAA6I;gBAC7I,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAEjB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC1B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;YAED,KAAK,CAAC,OAAO,CAAC;iBACX,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACf,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;qBAC1B,IAAI,CAAC,IAAI,CAAC,EAAE;oBACX,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC,CAAC;qBACD,KAAK,CAAC,MAAM,CAAC,CAAC;gBACjB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBAC3B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;gBACtB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBAEvB,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBACtD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBAC1B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;oBAC7B,CAAC;oBACD,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBAC3B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;oBAC9B,CAAC;oBAED,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;gBACvD,CAAC;qBAAM,CAAC;oBACN,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBAC3B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;oBAC9B,CAAC;oBAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;wBACtB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC;gBACD,6IAA6I;gBAC7I,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,QAAkB;QAC/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;YAE/B,IAAI,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;gBACpD,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;gBAE7B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC/B,CAAC;gBAED,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;qBAC1B,IAAI,CAAC,CAAC,CAAC,EAAE;oBACR,OAAO,CAAC,CAAQ,CAAC,CAAC;oBAClB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;wBACpB,IAAI,CAAC,UAAU,CAAC,CAAQ,EAAE,QAAQ,CAAC,CAAC;oBACtC,CAAC;gBACH,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;oBACxB,6IAA6I;oBAC7I,MAAM,CAAC,KAAK,CAAC,CAAC;oBACd,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;wBAC9B,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;oBAC7C,CAAC;gBACH,CAAC,CAAC,CAAC;YACP,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;gBAC7B,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBAC5B,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBACpC,CAAC;gBAED,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;qBAC1B,IAAI,CAAC,CAAC,CAAC,EAAE;oBACR,6IAA6I;oBAC7I,MAAM,CAAC,CAAC,CAAC,CAAC;oBACV,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;wBACzB,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;oBACpC,CAAC;gBACH,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;oBACxB,6IAA6I;oBAC7I,MAAM,CAAC,KAAK,CAAC,CAAC;oBACd,IAAI,IAAI,CAAC,yBAAyB,EAAE,CAAC;wBACnC,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;oBAClD,CAAC;gBACH,CAAC,CAAC,CAAC;YACP,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,QAAkB;QAC/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,4HAA4H;YAC5H,IAAI,QAAQ,EAAE,CAAC;gBACb,8EAA8E;gBAC9E,gEAAgE;gBAChE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBACvD,OAAO,CAAC,EAAE,CAAC,CAAC;oBACZ,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE;oBACzC,CAAC,CAAC,IAAI,EAAE;yBACL,IAAI,CAAC,IAAI,CAAC,EAAE;wBACX,OAAO,CAAC,IAAI,CAAC,CAAC;oBAChB,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;wBACtB,6IAA6I;wBAC7I,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE;oBACxC,CAAC,CAAC,IAAI,EAAE;yBACL,IAAI,CAAC,IAAI,CAAC,EAAE;wBACX,OAAO,CAAC,IAAI,CAAC,CAAC;oBAChB,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;wBACtB,6IAA6I;wBAC7I,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,EAAE;oBAC/C,CAAC,CAAC,IAAI,EAAE;yBACL,IAAI,CAAC,IAAI,CAAC,EAAE;wBACX,iFAAiF;wBACjF,sFAAsF;wBACtF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;wBAC5B,MAAM,IAAI,GAAG,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAgB,CAAC;wBAEvE,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;4BAC3B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;wBAC/B,CAAC;wBAED,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;4BACnC,2DAA2D;4BAC3D,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;4BACnC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;4BAClC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;wBACjC,CAAC;6BAAM,CAAC;4BACN,OAAO,CAAC,IAAI,CAAC,CAAC;wBAChB,CAAC;oBACH,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;wBACtB,6IAA6I;wBAC7I,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE;oBACnD,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;oBAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;oBAEjC,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;oBACnC,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;oBAC1D,CAAC;oBAED,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;oBAClC,IAAI,MAAM,GAAG,EAAE,CAAC;oBAEhB,MAAM,QAAQ,GAAG;wBACf,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;4BAC3B,uGAAuG;4BACvG,OAAO,IAAI,EAAE,CAAC;gCACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gCAC5C,IAAI,IAAI;oCAAE,MAAM;gCAEhB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gCAElD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gCACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;gCAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oCACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oCAC5B,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;wCACnB,SAAS;oCACX,CAAC;oCAED,IAAI,MAAW,CAAC;oCAChB,IAAI,CAAC;wCACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAQ,CAAC;oCACtC,CAAC;oCAAC,MAAM,CAAC;wCACP,MAAM,IAAI,KAAK,CAAC,gCAAgC,OAAO,EAAE,CAAC,CAAC;oCAC7D,CAAC;oCAED,IAAI,kBAAkB,EAAE,CAAC;wCACvB,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;wCAClC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;wCACpC,MAAM,OAAO,CAAC,WAAW,EAAS,CAAC;oCACrC,CAAC;yCAAM,CAAC;wCACN,MAAM,MAAM,CAAC;oCACf,CAAC;gCACH,CAAC;4BACH,CAAC;4BAED,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gCACzB,IAAI,CAAC;oCACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAQ,CAAC;oCAChD,IAAI,kBAAkB,EAAE,CAAC;wCACvB,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;wCAClC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;wCACpC,MAAM,OAAO,CAAC,WAAW,EAAS,CAAC;oCACrC,CAAC;yCAAM,CAAC;wCACN,MAAM,MAAM,CAAC;oCACf,CAAC;gCACH,CAAC;gCAAC,MAAM,CAAC;oCACP,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gCACzE,CAAC;4BACH,CAAC;wBACH,CAAC;qBACF,CAAC;oBAEF,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACpB,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,EAAE;oBACvD,CAAC,CAAC,WAAW,EAAE;yBACZ,IAAI,CAAC,MAAM,CAAC,EAAE;wBACb,OAAO,CAAC,MAAM,CAAC,CAAC;oBAClB,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;wBACtB,6IAA6I;wBAC7I,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE;oBAC9C,CAAC,CAAC,IAAI,EAAE;yBACL,IAAI,CAAC,IAAI,CAAC,EAAE;wBACX,OAAO,CAAC,IAAI,CAAC,CAAC;oBAChB,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;wBACtB,6IAA6I;wBAC7I,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE;oBACzC,CAAC,CAAC,IAAI,EAAE;yBACL,IAAI,CAAC,IAAI,CAAC,EAAE;wBACX,OAAO,CAAC,IAAI,CAAC,CAAC;oBAChB,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;wBACtB,6IAA6I;wBAC7I,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBAEH,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBACzD,IAAI,OAAO,GAAG,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAChD,OAAO,KAAK,kBAAkB,CAAC;gBAC/B,IAAI,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAEpD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;oBAC9B,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;oBACxC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;gBAC7D,CAAC;gBAED,IAAI,WAAW,EAAE,CAAC;oBAChB,WAAW,CAAC,QAAQ,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;YACnC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,qBAAqB,CAC3B,IAAY,EACZ,SAAsC,EACtC,GAAQ;QAKR,IAAI,aAAa,GAAG,IAAI,CAAC;QACzB,IAAI,aAAa,CAAC;QAElB,MAAM,wBAAwB,GAAG,IAAI,GAAG,EAAqB,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,GAAa,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACvC,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAgB,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,oFAAoF;QACpF,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;QAClD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE;YACpD,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;QACjD,uEAAuE;QACvE,8DAA8D;QAC9D,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACrB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,QAAQ,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,CAAc,CAAC;YAC5E,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC/B,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClE,wBAAwB,CAAC,MAAM,CAAC,QAAkB,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YACtB,kEAAkE;YAClE,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;gBACnC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACnC,sCAAsC;gBACtC,MAAM,WAAW,GAA4B,EAAE,CAAC;gBAChD,wBAAwB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBACrC,WAAW,CAAC,GAAa,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;gBACxC,CAAC,CAAC,CAAC;gBACH,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;gBACnC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAA4B,EAAE,CAAC;gBACzC,wBAAwB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBACrC,IAAI,CAAC,GAAa,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;gBACjC,CAAC,CAAC,CAAC;gBACH,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,qBAAqB;YACrB,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,wBAAwB,CAAC,MAAM,CAAC,SAAmB,CAAC,CAAC;YACvD,CAAC;YACD,wBAAwB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACrC,8EAA8E;gBAC9E,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAa,CAAC,IAAK,GAAc,CAAC,CAAC,CAAC,CAAE,GAAc,CAAC;gBAChJ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC3B,GAAG,CAAC,GAAG,CAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBAClC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC3C,CAAC,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,aAAa,GAAG,GAAG,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACzD,CAAC;YAED,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,kFAAkF;gBAClF,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;oBACnC,mHAAmH;oBACnH,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAmB,CAAC,CAAC;oBACvE,IAAI,SAAS,EAAE,CAAC;wBACd,mHAAmH;wBACnH,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,SAAS,CAAc,CAAC;wBACxD,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;wBACxC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACvD,CAAC;yBAAM,CAAC;wBACN,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;oBACjD,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;QAED,aAAa,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,aAAa,EAAE,CAAC;QAE/F,OAAO;YACL,aAAa;YACb,aAAa;SACd,CAAC;IACJ,CAAC;CAaF","sourcesContent":["import { FieldNode } from \"./FieldNode\";\nimport type { JSONObject } from \"@/well_known/Struct\";\n\nexport interface IApiOptions {\n serverAddr: string;\n ApiBaseURL: string;\n headers?: Headers;\n timeout?: number;\n UseProtoNames: boolean;\n UseProtoNamesForQueryParams: boolean;\n}\n\ninterface Handlers<REQ, RES> {\n onResponse?: (response: RES, serverResponse: Response) => void;\n onResponseError?: (parsedResponse: unknown, serverResponse: Response) => void;\n onRequestStarted?: (req: REQ) => void;\n onRequestFinished?: (req: REQ) => void;\n onRequestAborted?: (req: REQ) => void;\n onResponseRaw?: (serverResponse: Response) => void;\n onResponseErrorRaw?: (serverResponse: Response) => void;\n onResponseParseError?: (error: unknown, serverResponse: Response) => void;\n onResponseErrorParseError?: (error: unknown, serverResponse: Response) => void;\n onFatalError?: (error: unknown) => void;\n onRawJsonResponse?: (json: JSONObject) => void;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype FieldNodeConstructor = new (initData?: any, parent?: FieldNode, parentAttributeName?: string) => FieldNode;\n\nexport class StrictFetcher<REQ, RES> {\n public timeout: number;\n public lastResponse: Response | undefined;\n public isLoading = false;\n\n private path: string;\n private requestInit: RequestInit;\n private method: string;\n private responseHandler: Map<string, (r: Response) => void> = new Map<string, (r: Response) => void>();\n private abortController: AbortController;\n private timeoutId: ReturnType<typeof setTimeout> | number | undefined;\n private bodyField: keyof REQ | \"*\" | undefined;\n private API_OPTIONS: IApiOptions;\n\n private ReqType: FieldNodeConstructor;\n private ResType: FieldNodeConstructor;\n\n // Maps camelCase fieldName → protoName from the REQ type's field descriptors\n private reqProtoNameMap: Map<string, string>;\n // Maps camelCase fieldName → FieldConstructor from the REQ type's field descriptors\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private reqFieldConstructorMap: Map<string, any>;\n\n constructor(options: IApiOptions, method: string, path: string, ReqType: FieldNodeConstructor, ResType: FieldNodeConstructor, bodyField?: keyof REQ | \"*\") {\n this.API_OPTIONS = options;\n this.path = path;\n this.bodyField = bodyField;\n this.method = method;\n this.ReqType = ReqType;\n this.ResType = ResType;\n\n // Build the proto name map from the REQ type's field descriptors\n this.reqProtoNameMap = new Map<string, string>();\n this.reqFieldConstructorMap = new Map<string, FieldNodeConstructor>();\n const tempReq = new ReqType();\n tempReq.__meta.nodeFields.forEach(field => {\n this.reqProtoNameMap.set(field.fieldName, field.protoName);\n this.reqFieldConstructorMap.set(field.fieldName, field.FieldConstructor as FieldNodeConstructor);\n });\n\n this.abortController = new AbortController();\n const { signal } = this.abortController;\n this.requestInit = {\n method: this.method,\n signal,\n headers: this.API_OPTIONS.headers,\n redirect: \"follow\",\n };\n\n this.timeout = this.API_OPTIONS.timeout ?? 300000;\n }\n\n public setRequestOptions(ri: RequestInit) {\n const { signal } = this.abortController;\n this.requestInit = {\n method: this.method,\n headers: this.API_OPTIONS.headers,\n signal,\n ...ri,\n };\n }\n\n public setHandlers(handlers: Handlers<REQ, RES>) {\n this.onResponse = handlers.onResponse;\n this.onResponseError = handlers.onResponseError;\n this.onRequestStarted = handlers.onRequestStarted;\n this.onRequestFinished = handlers.onRequestFinished;\n this.onRequestAborted = handlers.onRequestAborted;\n this.onResponseRaw = handlers.onResponseRaw;\n this.onResponseErrorRaw = handlers.onResponseErrorRaw;\n this.onResponseParseError = handlers.onResponseParseError;\n this.onResponseErrorParseError = handlers.onResponseErrorParseError;\n this.onFatalError = handlers.onFatalError;\n this.onRawJsonResponse = handlers.onRawJsonResponse;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public abortPendingRequest(reason: any): void {\n if (!this.isLoading) {\n return;\n }\n clearTimeout(this.timeoutId);\n this.isLoading = false;\n this.abortController.abort(reason);\n\n if (this.onRequestAborted) {\n this.onRequestAborted(reason as REQ);\n }\n }\n\n public invoke(rqo: REQ, options?: RequestInit): Promise<RES> {\n return new Promise((resolve, reject) => {\n if (this.isLoading) {\n this.abortPendingRequest(\"invoke triggered before response\");\n }\n\n this.abortController = new AbortController();\n const { signal } = this.abortController;\n\n this.requestInit = {\n method: this.method,\n signal,\n headers: this.API_OPTIONS.headers,\n };\n\n if (options) {\n this.setRequestOptions(options);\n }\n\n this.isLoading = true;\n\n const { evaluatedPath, evaluatedBody } = this.buildPathAndBodyfield(this.path, this.bodyField, rqo);\n if (evaluatedBody) {\n this.requestInit.body = evaluatedBody;\n }\n\n clearTimeout(this.timeoutId);\n const request = new Request(evaluatedPath, this.requestInit);\n this.timeoutId = setTimeout(() => {\n this.abortController.abort(`Timeout of ${String(this.timeout)}ms reached`);\n if (this.onRequestAborted) {\n this.onRequestAborted(rqo);\n }\n\n console.error(`RequestService fetch aborted: Timeout of ${String(this.timeout)}ms reached`);\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(rqo);\n }, this.timeout);\n\n if (this.onRequestStarted) {\n this.onRequestStarted(rqo);\n }\n\n fetch(request)\n .then(response => {\n this._reworkRequest(response)\n .then(data => {\n resolve(data);\n })\n .catch(reject);\n if (this.onRequestFinished) {\n this.onRequestFinished(rqo);\n }\n })\n .catch((err: unknown) => {\n this.isLoading = false;\n\n if (err instanceof Error && err.name === \"AbortError\") {\n if (this.onRequestAborted) {\n this.onRequestAborted(rqo);\n }\n if (this.onRequestFinished) {\n this.onRequestFinished(rqo);\n }\n\n console.error(\"RequestService fetch aborted: \", err);\n } else {\n if (this.onRequestFinished) {\n this.onRequestFinished(rqo);\n }\n\n if (this.onFatalError) {\n this.onFatalError(err);\n }\n }\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n }\n\n _reworkRequest(response: Response): Promise<RES> {\n return new Promise((resolve, reject) => {\n this.isLoading = false;\n clearTimeout(this.timeoutId);\n const status = response.status;\n\n if (status === 0 || (status >= 200 && status < 300)) {\n this.lastResponse = response;\n\n if (this.onResponseRaw) {\n this.onResponseRaw(response);\n }\n\n this._parseResponse(response)\n .then(r => {\n resolve(r as RES);\n if (this.onResponse) {\n this.onResponse(r as RES, response);\n }\n })\n .catch((error: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(error);\n if (this.onResponseParseError) {\n this.onResponseParseError(error, response);\n }\n });\n } else {\n this.lastResponse = response;\n if (this.onResponseErrorRaw) {\n this.onResponseErrorRaw(response);\n }\n\n this._parseResponse(response)\n .then(r => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(r);\n if (this.onResponseError) {\n this.onResponseError(r, response);\n }\n })\n .catch((error: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(error);\n if (this.onResponseErrorParseError) {\n this.onResponseErrorParseError(error, response);\n }\n });\n }\n });\n }\n\n _parseResponse(response: Response) {\n return new Promise((resolve, reject) => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- runtime data may not match types (REST API input)\n if (response) {\n // No Content / Reset Content carry no body by definition; resolve as an empty\n // message ({}) without touching the body to avoid parse errors.\n if (response.status === 204 || response.status === 205) {\n resolve({});\n return;\n }\n\n this.responseHandler.set(\"text/plain\", r => {\n r.text()\n .then(text => {\n resolve(text);\n })\n .catch((err: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n\n this.responseHandler.set(\"text/html\", r => {\n r.text()\n .then(text => {\n resolve(text);\n })\n .catch((err: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n\n this.responseHandler.set(\"application/json\", r => {\n r.text()\n .then(text => {\n // An empty body is the proto3 JSON representation of google.protobuf.Empty ({}).\n // r.json() would reject on an empty body, so read text and only parse when non-empty.\n const trimmed = text.trim();\n const json = trimmed === \"\" ? {} : (JSON.parse(trimmed) as JSONObject);\n\n if (this.onRawJsonResponse) {\n this.onRawJsonResponse(json);\n }\n\n if (this.API_OPTIONS.UseProtoNames) {\n // Use FieldNode-based conversion instead of generic Mapper\n const resNode = new this.ResType();\n resNode.__fromProtoNameJson(json);\n resolve(resNode.__toLiteral());\n } else {\n resolve(json);\n }\n })\n .catch((err: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n\n this.responseHandler.set(\"application/x-ndjson\", r => {\n const preserveProtoNames = this.API_OPTIONS.UseProtoNames;\n const ResTypeCtor = this.ResType;\n\n const reader = r.body?.getReader();\n if (!reader) {\n throw new Error(\"NDJSON response has no readable body\");\n }\n\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n const iterator = {\n async *[Symbol.asyncIterator](): AsyncGenerator<RES> {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- loop exits via break on done\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (trimmed === \"\") {\n continue;\n }\n\n let parsed: RES;\n try {\n parsed = JSON.parse(trimmed) as RES;\n } catch {\n throw new Error(`Failed to parse NDJSON line: ${trimmed}`);\n }\n\n if (preserveProtoNames) {\n const resNode = new ResTypeCtor();\n resNode.__fromProtoNameJson(parsed);\n yield resNode.__toLiteral() as RES;\n } else {\n yield parsed;\n }\n }\n }\n\n if (buffer.trim() !== \"\") {\n try {\n const parsed = JSON.parse(buffer.trim()) as RES;\n if (preserveProtoNames) {\n const resNode = new ResTypeCtor();\n resNode.__fromProtoNameJson(parsed);\n yield resNode.__toLiteral() as RES;\n } else {\n yield parsed;\n }\n } catch {\n throw new Error(`Failed to parse final NDJSON line: ${buffer.trim()}`);\n }\n }\n },\n };\n\n resolve(iterator);\n });\n\n this.responseHandler.set(\"application/octet-stream\", r => {\n r.arrayBuffer()\n .then(buffer => {\n resolve(buffer);\n })\n .catch((err: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n this.responseHandler.set(\"application/pdf\", r => {\n r.blob()\n .then(blob => {\n resolve(blob);\n })\n .catch((err: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n this.responseHandler.set(\"image/jpeg\", r => {\n r.blob()\n .then(blob => {\n resolve(blob);\n })\n .catch((err: unknown) => {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- changing rejection types would break downstream error handlers\n reject(err);\n });\n });\n\n const contentType = response.headers.get(\"content-type\");\n let handler = contentType?.split(\";\")[0].trim();\n handler ??= \"application/json\";\n let typeHandler = this.responseHandler.get(handler);\n\n if (typeHandler === undefined) {\n console.error(\"No parser for\", handler);\n typeHandler = this.responseHandler.get(\"application/json\");\n }\n\n if (typeHandler) {\n typeHandler(response);\n }\n } else {\n reject(new Error(\"no response\"));\n }\n });\n }\n\n private buildPathAndBodyfield(\n path: string,\n bodyField: keyof REQ | \"*\" | undefined,\n rqo: REQ\n ): {\n evaluatedPath: string;\n evaluatedBody: string | undefined;\n } {\n let evaluatedPath = path;\n let evaluatedBody;\n\n const keysForBodyOrQueryParams = new Map<string, keyof REQ>();\n Object.keys(rqo as object).forEach(key => {\n keysForBodyOrQueryParams.set(key, key as keyof REQ);\n });\n\n // Build a reverse map: protoName → camelCase fieldName for path template resolution\n const protoToFieldMap = new Map<string, string>();\n this.reqProtoNameMap.forEach((protoName, fieldName) => {\n protoToFieldMap.set(protoName, fieldName);\n });\n\n const fields = [...path.matchAll(/\\{([^}]+)}/g)];\n // Replace URL templates with values: /v1/cube/{cube_id} => /v1/cube/12\n // Path templates use proto names, but rqo uses camelCase keys\n fields.forEach(field => {\n const protoName = field[1];\n const camelKey = (protoToFieldMap.get(protoName) ?? protoName) as keyof REQ;\n const rqoValue = rqo[camelKey];\n evaluatedPath = evaluatedPath.replace(field[0], String(rqoValue));\n keysForBodyOrQueryParams.delete(camelKey as string);\n });\n\n if (bodyField === \"*\") {\n // Use FieldNode serialization for body when UseProtoNames is true\n if (this.API_OPTIONS.UseProtoNames) {\n const reqNode = new this.ReqType();\n // Build a literal from remaining keys\n const literalBody: Record<string, unknown> = {};\n keysForBodyOrQueryParams.forEach(key => {\n literalBody[key as string] = rqo[key];\n });\n reqNode.__fromLiteral(literalBody);\n evaluatedBody = JSON.stringify(reqNode.__toJson());\n } else {\n const body: Record<string, unknown> = {};\n keysForBodyOrQueryParams.forEach(key => {\n body[key as string] = rqo[key];\n });\n evaluatedBody = JSON.stringify(body);\n }\n } else {\n // Build query params\n const params: string[] = [];\n if (bodyField !== undefined) {\n keysForBodyOrQueryParams.delete(bodyField as string);\n }\n keysForBodyOrQueryParams.forEach(key => {\n // Use the reqProtoNameMap for proto name lookup instead of generic conversion\n const paramName = this.API_OPTIONS.UseProtoNamesForQueryParams ? (this.reqProtoNameMap.get(key as string) ?? (key as string)) : (key as string);\n if (Array.isArray(rqo[key])) {\n (rqo[key] as unknown[]).forEach(e => {\n params.push(`${paramName}=${String(e)}`);\n });\n } else {\n params.push(`${paramName}=${String(rqo[key])}`);\n }\n });\n if (params.length) {\n evaluatedPath = `${evaluatedPath}?${params.join(\"&\")}`;\n }\n\n if (bodyField !== undefined) {\n // Use FieldNode serialization for the named body field when UseProtoNames is true\n if (this.API_OPTIONS.UseProtoNames) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- FieldConstructor stored from meta is untyped\n const FieldCtor = this.reqFieldConstructorMap.get(bodyField as string);\n if (FieldCtor) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call -- FieldConstructor is dynamically resolved from meta\n const fieldNode = new FieldCtor(undefined) as FieldNode;\n fieldNode.__fromLiteral(rqo[bodyField]);\n evaluatedBody = JSON.stringify(fieldNode.__toJson());\n } else {\n evaluatedBody = JSON.stringify(rqo[bodyField]);\n }\n } else {\n evaluatedBody = JSON.stringify(rqo[bodyField]);\n }\n }\n }\n\n evaluatedPath = `${this.API_OPTIONS.serverAddr}${this.API_OPTIONS.ApiBaseURL}${evaluatedPath}`;\n\n return {\n evaluatedPath,\n evaluatedBody,\n };\n }\n\n onResponse?: (response: RES, serverResponse: Response) => void;\n onResponseError?: (parsedResponse: unknown, serverResponse: Response) => void;\n onRequestStarted?: (req: REQ) => void;\n onRequestFinished?: (req: REQ) => void;\n onRequestAborted?: (req: REQ) => void;\n onResponseRaw?: (serverResponse: Response) => void;\n onResponseErrorRaw?: (serverResponse: Response) => void;\n onResponseParseError?: (error: unknown, serverResponse: Response) => void;\n onResponseErrorParseError?: (error: unknown, serverResponse: Response) => void;\n onFatalError?: (error: unknown) => void;\n onRawJsonResponse?: (json: JSONObject) => void;\n}\n"]}
@@ -6,6 +6,10 @@ export class BOOLEAN extends FieldNode {
6
6
  return this._value;
7
7
  }
8
8
  set value(value) {
9
+ // guard for API responses which sometimes send a null instead of a value
10
+ if (typeof value !== "boolean") {
11
+ value = false;
12
+ }
9
13
  this._value = value;
10
14
  this.__isEmpty = false;
11
15
  this.__climbUpValidation();
@@ -25,6 +29,10 @@ export class BOOLEAN extends FieldNode {
25
29
  this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);
26
30
  }
27
31
  __updateWithLiteral(v) {
32
+ // guard for API responses which sometimes send a null instead of a value
33
+ if (typeof v !== "boolean") {
34
+ v = false;
35
+ }
28
36
  this._value = v;
29
37
  if (!this._value) {
30
38
  this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);
@@ -1 +1 @@
1
- {"version":3,"file":"BOOLEAN.js","sourceRoot":"","sources":["../../src/primitives/BOOLEAN.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,OAAO,OAAQ,SAAQ,SAAS;IACpC,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,KAAK,CAAC,KAAc;QACtB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;IAC5B,CAAC;IAID,YAAY,QAAkB,EAAE,MAAkB,EAAE,mBAA4B;QAC9E,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;QAC9C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,QAAQ,IAAI,KAAK,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,oBAAoB,CAAC;QAC5C,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,mBAAmB,CAAC,iBAAiB,IAAI,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACnG,CAAC;IAEQ,mBAAmB,CAAC,CAAU;QACrC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,mBAAmB,CAAC,iBAAiB,IAAI,mBAAmB,CAAC,eAAe,CAAC,CAAC;QACnG,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;QACD,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAEkB,qBAAqB;QACtC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,mBAAmB,CAAC,iBAAiB,IAAI,mBAAmB,CAAC,eAAe,CAAC,CAAC;QACpG,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,KAAK,CAAC,qBAAqB,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;IAED,kDAAkD;IACzC,wBAAwB,CAAC,IAAa;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAEQ,QAAQ;QACf,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAEQ,WAAW;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEQ,QAAQ;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAEe,OAAO,CAAC,mBAAmB,GAAG,KAAK;QACjD,oCAAoC;QACpC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,mBAAmB,CAAC,iBAAiB,IAAI,mBAAmB,CAAC,eAAe,CAAC,CAAC;QACjG,IAAI,YAAY,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;CACF;AAED,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC","sourcesContent":["import { FieldNode } from \"../FieldNode\";\nimport { OPEN_MODELS_OPTIONS } from \"../OPEN_MODELS_OPTIONS\";\nimport { Registry } from \"../Registry\";\n\nexport class BOOLEAN extends FieldNode {\n get value(): boolean {\n return this._value;\n }\n\n set value(value: boolean) {\n this._value = value;\n this.__isEmpty = false;\n this.__climbUpValidation();\n this.__notifyFieldValueChange(true);\n }\n\n /**\n * Toggle the value of the bool.\n */\n toggle() {\n this.value = !this._value;\n }\n\n public _value: boolean;\n\n constructor(initData?: boolean, parent?: FieldNode, parentAttributeName?: string) {\n super(undefined, parent, parentAttributeName);\n this.__isPrimitive = true;\n this._value = initData ?? false;\n this.__meta.typeName = \"primitives.BOOLEAN\";\n this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n }\n\n override __updateWithLiteral(v: boolean) {\n this._value = v;\n if (!this._value) {\n this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.__isEmpty = false;\n }\n this.__notifyFieldValueChange(false);\n }\n\n protected override ___updateNotEmptyPath() {\n if (!this._value) {\n this.___isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.___isEmpty = false;\n super.___updateNotEmptyPath();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n override __mapProtoNameJsonToJson(data: boolean): boolean {\n return data;\n }\n\n override __toJson(): boolean {\n return this.__toLiteral();\n }\n\n override __toLiteral() {\n return this._value;\n }\n\n override toString(): string {\n return this._value.toString();\n }\n\n public override __clear(withoutNotification = false) {\n // only notify when they are changes\n const shouldNotify = this._value;\n this._value = false;\n this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n if (shouldNotify && !withoutNotification) {\n this.__notifyFieldValueChange(false);\n }\n }\n}\n\nRegistry.register(\"boolean\", BOOLEAN);\n"]}
1
+ {"version":3,"file":"BOOLEAN.js","sourceRoot":"","sources":["../../src/primitives/BOOLEAN.ts"],"names":[],"mappings":"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","sourcesContent":["import { FieldNode } from \"../FieldNode\";\nimport { OPEN_MODELS_OPTIONS } from \"../OPEN_MODELS_OPTIONS\";\nimport { Registry } from \"../Registry\";\n\nexport class BOOLEAN extends FieldNode {\n get value(): boolean {\n return this._value;\n }\n\n set value(value: boolean) {\n // guard for API responses which sometimes send a null instead of a value\n if (typeof value !== \"boolean\") {\n value = false;\n }\n this._value = value;\n this.__isEmpty = false;\n this.__climbUpValidation();\n this.__notifyFieldValueChange(true);\n }\n\n /**\n * Toggle the value of the bool.\n */\n toggle() {\n this.value = !this._value;\n }\n\n public _value: boolean;\n\n constructor(initData?: boolean, parent?: FieldNode, parentAttributeName?: string) {\n super(undefined, parent, parentAttributeName);\n this.__isPrimitive = true;\n this._value = initData ?? false;\n this.__meta.typeName = \"primitives.BOOLEAN\";\n this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n }\n\n override __updateWithLiteral(v: boolean) {\n // guard for API responses which sometimes send a null instead of a value\n if (typeof v !== \"boolean\") {\n v = false;\n }\n this._value = v;\n if (!this._value) {\n this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.__isEmpty = false;\n }\n this.__notifyFieldValueChange(false);\n }\n\n protected override ___updateNotEmptyPath() {\n if (!this._value) {\n this.___isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.___isEmpty = false;\n super.___updateNotEmptyPath();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n override __mapProtoNameJsonToJson(data: boolean): boolean {\n return data;\n }\n\n override __toJson(): boolean {\n return this.__toLiteral();\n }\n\n override __toLiteral() {\n return this._value;\n }\n\n override toString(): string {\n return this._value.toString();\n }\n\n public override __clear(withoutNotification = false) {\n // only notify when they are changes\n const shouldNotify = this._value;\n this._value = false;\n this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n if (shouldNotify && !withoutNotification) {\n this.__notifyFieldValueChange(false);\n }\n }\n}\n\nRegistry.register(\"boolean\", BOOLEAN);\n"]}
@@ -6,6 +6,10 @@ export class BYTES extends FieldNode {
6
6
  return this._value;
7
7
  }
8
8
  set value(value) {
9
+ // guard for API responses which sometimes send a null instead of a value
10
+ if (!(value instanceof Uint8Array)) {
11
+ value = new Uint8Array();
12
+ }
9
13
  this._value = value;
10
14
  if (this._value.length === 0) {
11
15
  this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);
@@ -24,6 +28,10 @@ export class BYTES extends FieldNode {
24
28
  this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);
25
29
  }
26
30
  __updateWithLiteral(v) {
31
+ // guard for API responses which sometimes send a null instead of a value
32
+ if (!(v instanceof Uint8Array)) {
33
+ v = new Uint8Array();
34
+ }
27
35
  this._value = v;
28
36
  if (this._value.length === 0) {
29
37
  this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);
@@ -1 +1 @@
1
- {"version":3,"file":"BYTES.js","sourceRoot":"","sources":["../../src/primitives/BYTES.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldConstraints } from \"../FieldConstraints\";\nimport { FieldNode } from \"../FieldNode\";\nimport { OPEN_MODELS_OPTIONS } from \"../OPEN_MODELS_OPTIONS\";\nimport { Registry } from \"../Registry\";\n\nexport class BYTES extends FieldNode {\n get value(): Uint8Array {\n return this._value;\n }\n\n set value(value: Uint8Array) {\n this._value = value;\n if (this._value.length === 0) {\n this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.__isEmpty = false;\n }\n this.__climbUpValidation();\n this.__notifyFieldValueChange(true);\n }\n\n public _value: Uint8Array;\n\n constructor(initData?: Uint8Array, parent?: FieldNode, parentAttributeName?: string) {\n super(undefined, parent, parentAttributeName);\n this.__isPrimitive = true;\n this._value = initData ?? new Uint8Array();\n this.__meta.typeName = \"primitives.BYTES\";\n this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n }\n\n override __updateWithLiteral(v: Uint8Array) {\n this._value = v;\n if (this._value.length === 0) {\n this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.__isEmpty = false;\n }\n this.__notifyFieldValueChange(false);\n }\n\n protected override ___updateNotEmptyPath() {\n if (this._value.length === 0) {\n this.___isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.___isEmpty = false;\n super.___updateNotEmptyPath();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n override __mapProtoNameJsonToJson(data: Uint8Array): Uint8Array {\n return data;\n }\n\n protected override __checkConstraints(fieldConstraints: FieldConstraints): string[] | undefined {\n for (const [constraint, value] of Object.entries(fieldConstraints)) {\n if (constraint === \"required\") {\n if (this._value.length === 0) {\n return [\"constraint.violation.required\"];\n }\n }\n if (constraint === \"max_length\") {\n // String length can be restricted using minLength and maxLength. \">\" is used to check.\n if (this._value.length > value) {\n return [\"constraint.violation.max_length\", String(value), String(this._value)];\n }\n }\n if (constraint === \"min_length\") {\n // String length can be restricted using minLength and maxLength. \"<\" is used to check.\n if (this._value.length < value) {\n return [\"constraint.violation.min_length\", String(value), String(this._value)];\n }\n }\n if (constraint === \"pattern\") {\n // The pattern keyword lets you define a regular expression template for the Uint8Array value.\n\n const re = new RegExp(value as string);\n if (!this._value.toString().match(re)) {\n return [\"constraint.violation.pattern\", String(value), String(this._value)];\n }\n }\n }\n\n return undefined;\n }\n\n override __toJson(): Uint8Array {\n return this.__toLiteral();\n }\n\n override __toLiteral(): Uint8Array {\n return this._value;\n }\n\n override toString(): string {\n return this._value.toString();\n }\n\n public override __clear(withoutNotification = false) {\n // only notify when they are changes\n const shouldNotify = this._value.length;\n this._value = new Uint8Array();\n this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n if (shouldNotify && !withoutNotification) {\n this.__notifyFieldValueChange(false);\n }\n }\n}\n\nRegistry.register(\"Uint8Array\", BYTES);\n"]}
1
+ {"version":3,"file":"BYTES.js","sourceRoot":"","sources":["../../src/primitives/BYTES.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldConstraints } from \"../FieldConstraints\";\nimport { FieldNode } from \"../FieldNode\";\nimport { OPEN_MODELS_OPTIONS } from \"../OPEN_MODELS_OPTIONS\";\nimport { Registry } from \"../Registry\";\n\nexport class BYTES extends FieldNode {\n get value(): Uint8Array {\n return this._value;\n }\n\n set value(value: Uint8Array) {\n // guard for API responses which sometimes send a null instead of a value\n if (!(value instanceof Uint8Array)) {\n value = new Uint8Array();\n }\n this._value = value;\n if (this._value.length === 0) {\n this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.__isEmpty = false;\n }\n this.__climbUpValidation();\n this.__notifyFieldValueChange(true);\n }\n\n public _value: Uint8Array;\n\n constructor(initData?: Uint8Array, parent?: FieldNode, parentAttributeName?: string) {\n super(undefined, parent, parentAttributeName);\n this.__isPrimitive = true;\n this._value = initData ?? new Uint8Array();\n this.__meta.typeName = \"primitives.BYTES\";\n this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n }\n\n override __updateWithLiteral(v: Uint8Array) {\n // guard for API responses which sometimes send a null instead of a value\n if (!(v instanceof Uint8Array)) {\n v = new Uint8Array();\n }\n this._value = v;\n if (this._value.length === 0) {\n this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.__isEmpty = false;\n }\n this.__notifyFieldValueChange(false);\n }\n\n protected override ___updateNotEmptyPath() {\n if (this._value.length === 0) {\n this.___isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.___isEmpty = false;\n super.___updateNotEmptyPath();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n override __mapProtoNameJsonToJson(data: Uint8Array): Uint8Array {\n return data;\n }\n\n protected override __checkConstraints(fieldConstraints: FieldConstraints): string[] | undefined {\n for (const [constraint, value] of Object.entries(fieldConstraints)) {\n if (constraint === \"required\") {\n if (this._value.length === 0) {\n return [\"constraint.violation.required\"];\n }\n }\n if (constraint === \"max_length\") {\n // String length can be restricted using minLength and maxLength. \">\" is used to check.\n if (this._value.length > value) {\n return [\"constraint.violation.max_length\", String(value), String(this._value)];\n }\n }\n if (constraint === \"min_length\") {\n // String length can be restricted using minLength and maxLength. \"<\" is used to check.\n if (this._value.length < value) {\n return [\"constraint.violation.min_length\", String(value), String(this._value)];\n }\n }\n if (constraint === \"pattern\") {\n // The pattern keyword lets you define a regular expression template for the Uint8Array value.\n\n const re = new RegExp(value as string);\n if (!this._value.toString().match(re)) {\n return [\"constraint.violation.pattern\", String(value), String(this._value)];\n }\n }\n }\n\n return undefined;\n }\n\n override __toJson(): Uint8Array {\n return this.__toLiteral();\n }\n\n override __toLiteral(): Uint8Array {\n return this._value;\n }\n\n override toString(): string {\n return this._value.toString();\n }\n\n public override __clear(withoutNotification = false) {\n // only notify when they are changes\n const shouldNotify = this._value.length;\n this._value = new Uint8Array();\n this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n if (shouldNotify && !withoutNotification) {\n this.__notifyFieldValueChange(false);\n }\n }\n}\n\nRegistry.register(\"Uint8Array\", BYTES);\n"]}
@@ -6,6 +6,10 @@ export class DOUBLE extends FieldNode {
6
6
  return this._value;
7
7
  }
8
8
  set value(value) {
9
+ // guard for API responses which sometimes send a null instead of a value
10
+ if (typeof value !== "number") {
11
+ value = 0;
12
+ }
9
13
  this._value = value;
10
14
  this.__isEmpty = false;
11
15
  this.__climbUpValidation();
@@ -18,6 +22,10 @@ export class DOUBLE extends FieldNode {
18
22
  this.__meta.typeName = "primitives.DOUBLE";
19
23
  }
20
24
  __updateWithLiteral(v) {
25
+ // guard for API responses which sometimes send a null instead of a value
26
+ if (typeof v !== "number") {
27
+ v = 0;
28
+ }
21
29
  this._value = v;
22
30
  this.__isEmpty = false;
23
31
  this.__notifyFieldValueChange(false);
@@ -1 +1 @@
1
- {"version":3,"file":"DOUBLE.js","sourceRoot":"","sources":["../../src/primitives/DOUBLE.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldConstraints } from \"../FieldConstraints\";\nimport { FieldNode } from \"../FieldNode\";\nimport { OPEN_MODELS_OPTIONS } from \"../OPEN_MODELS_OPTIONS\";\nimport { Registry } from \"../Registry\";\n\nexport class DOUBLE extends FieldNode {\n get value(): number {\n return this._value;\n }\n\n set value(value: number) {\n this._value = value;\n this.__isEmpty = false;\n this.__climbUpValidation();\n this.__notifyFieldValueChange(true);\n }\n\n public _value: number;\n\n constructor(initData?: number, parent?: FieldNode, parentAttributeName?: string) {\n super(undefined, parent, parentAttributeName);\n this.__isPrimitive = true;\n this._value = Number.isInteger(initData) ? initData! : 0;\n this.__meta.typeName = \"primitives.DOUBLE\";\n }\n\n override __updateWithLiteral(v: number) {\n this._value = v;\n this.__isEmpty = false;\n this.__notifyFieldValueChange(false);\n }\n\n protected override ___updateNotEmptyPath() {\n if (this._value === 0) {\n this.___isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.___isEmpty = false;\n super.___updateNotEmptyPath();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n override __mapProtoNameJsonToJson(data: number): number {\n return data;\n }\n\n protected override __checkTypeBoundaries(): string[] | undefined {\n // check for double min max boundaries\n\n if (this._value > Number.MAX_SAFE_INTEGER) {\n return [\"constraint.violation.range.double.max\", Number.MAX_SAFE_INTEGER.toString()];\n }\n if (this._value < Number.MIN_SAFE_INTEGER) {\n return [\"constraint.violation.range.double.min\", Number.MIN_SAFE_INTEGER.toString()];\n }\n return undefined;\n }\n\n protected override __checkConstraints(fieldConstraints: FieldConstraints): string[] | undefined {\n for (const [constraint, value] of Object.entries(fieldConstraints)) {\n // An double has always a value if (constraint === 'required') {}\n if (constraint === \"maximum\") {\n // By default, the minimum and maximum values are included in the range. \">\" is used to check.\n if (fieldConstraints.exclusive_maximum && this._value >= value) {\n return [\"constraint.violation.exclusive_maximum\", String(value), String(this._value)];\n }\n if (this._value > value) {\n return [\"constraint.violation.maximum\", String(value)];\n }\n }\n if (constraint === \"minimum\") {\n // By default, the minimum and maximum values are included in the range. \"<\" is used to check.\n if (fieldConstraints.exclusive_minimum && this._value <= value) {\n return [\"constraint.violation.exclusive_minimum\", String(value), String(this._value)];\n }\n if (this._value < value) {\n return [\"constraint.violation.minimum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"multiple_of\") {\n // Use the multiple_of keyword to specify that a number must be the multiple of another number\n // use this to define the step ??\n if (this._value % value !== 0) {\n return [\"constraint.violation.multiple_of\", String(value), String(this._value)];\n }\n }\n }\n\n return undefined;\n }\n\n override __toJson(): number {\n return this.__toLiteral();\n }\n\n override __toLiteral() {\n return this._value;\n }\n\n override valueOf(): number {\n return this._value;\n }\n\n override toString(): string {\n return this._value.toString();\n }\n\n public override __clear(withoutNotification = false) {\n // only notify when they are changes\n const shouldNotify = this._value !== 0;\n this._value = 0;\n\n if (shouldNotify && !withoutNotification) {\n this.__notifyFieldValueChange(false);\n }\n }\n}\n\nRegistry.register(\"double\", DOUBLE);\n"]}
1
+ {"version":3,"file":"DOUBLE.js","sourceRoot":"","sources":["../../src/primitives/DOUBLE.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldConstraints } from \"../FieldConstraints\";\nimport { FieldNode } from \"../FieldNode\";\nimport { OPEN_MODELS_OPTIONS } from \"../OPEN_MODELS_OPTIONS\";\nimport { Registry } from \"../Registry\";\n\nexport class DOUBLE extends FieldNode {\n get value(): number {\n return this._value;\n }\n\n set value(value: number) {\n // guard for API responses which sometimes send a null instead of a value\n if (typeof value !== \"number\") {\n value = 0;\n }\n this._value = value;\n this.__isEmpty = false;\n this.__climbUpValidation();\n this.__notifyFieldValueChange(true);\n }\n\n public _value: number;\n\n constructor(initData?: number, parent?: FieldNode, parentAttributeName?: string) {\n super(undefined, parent, parentAttributeName);\n this.__isPrimitive = true;\n this._value = Number.isInteger(initData) ? initData! : 0;\n this.__meta.typeName = \"primitives.DOUBLE\";\n }\n\n override __updateWithLiteral(v: number) {\n // guard for API responses which sometimes send a null instead of a value\n if (typeof v !== \"number\") {\n v = 0;\n }\n this._value = v;\n this.__isEmpty = false;\n this.__notifyFieldValueChange(false);\n }\n\n protected override ___updateNotEmptyPath() {\n if (this._value === 0) {\n this.___isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.___isEmpty = false;\n super.___updateNotEmptyPath();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n override __mapProtoNameJsonToJson(data: number): number {\n return data;\n }\n\n protected override __checkTypeBoundaries(): string[] | undefined {\n // check for double min max boundaries\n\n if (this._value > Number.MAX_SAFE_INTEGER) {\n return [\"constraint.violation.range.double.max\", Number.MAX_SAFE_INTEGER.toString()];\n }\n if (this._value < Number.MIN_SAFE_INTEGER) {\n return [\"constraint.violation.range.double.min\", Number.MIN_SAFE_INTEGER.toString()];\n }\n return undefined;\n }\n\n protected override __checkConstraints(fieldConstraints: FieldConstraints): string[] | undefined {\n for (const [constraint, value] of Object.entries(fieldConstraints)) {\n // An double has always a value if (constraint === 'required') {}\n if (constraint === \"maximum\") {\n // By default, the minimum and maximum values are included in the range. \">\" is used to check.\n if (fieldConstraints.exclusive_maximum && this._value >= value) {\n return [\"constraint.violation.exclusive_maximum\", String(value), String(this._value)];\n }\n if (this._value > value) {\n return [\"constraint.violation.maximum\", String(value)];\n }\n }\n if (constraint === \"minimum\") {\n // By default, the minimum and maximum values are included in the range. \"<\" is used to check.\n if (fieldConstraints.exclusive_minimum && this._value <= value) {\n return [\"constraint.violation.exclusive_minimum\", String(value), String(this._value)];\n }\n if (this._value < value) {\n return [\"constraint.violation.minimum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"multiple_of\") {\n // Use the multiple_of keyword to specify that a number must be the multiple of another number\n // use this to define the step ??\n if (this._value % value !== 0) {\n return [\"constraint.violation.multiple_of\", String(value), String(this._value)];\n }\n }\n }\n\n return undefined;\n }\n\n override __toJson(): number {\n return this.__toLiteral();\n }\n\n override __toLiteral() {\n return this._value;\n }\n\n override valueOf(): number {\n return this._value;\n }\n\n override toString(): string {\n return this._value.toString();\n }\n\n public override __clear(withoutNotification = false) {\n // only notify when they are changes\n const shouldNotify = this._value !== 0;\n this._value = 0;\n\n if (shouldNotify && !withoutNotification) {\n this.__notifyFieldValueChange(false);\n }\n }\n}\n\nRegistry.register(\"double\", DOUBLE);\n"]}
@@ -6,6 +6,10 @@ export class FLOAT extends FieldNode {
6
6
  return this._value;
7
7
  }
8
8
  set value(value) {
9
+ // guard for API responses which sometimes send a null instead of a value
10
+ if (typeof value !== "number") {
11
+ value = 0;
12
+ }
9
13
  this._value = value;
10
14
  this.__isEmpty = false;
11
15
  this.__climbUpValidation();
@@ -18,6 +22,10 @@ export class FLOAT extends FieldNode {
18
22
  this.__meta.typeName = "primitives.FLOAT";
19
23
  }
20
24
  __updateWithLiteral(v) {
25
+ // guard for API responses which sometimes send a null instead of a value
26
+ if (typeof v !== "number") {
27
+ v = 0;
28
+ }
21
29
  this._value = v;
22
30
  this.__isEmpty = false;
23
31
  this.__notifyFieldValueChange(false);
@@ -1 +1 @@
1
- {"version":3,"file":"FLOAT.js","sourceRoot":"","sources":["../../src/primitives/FLOAT.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldConstraints } from \"../FieldConstraints\";\nimport { FieldNode } from \"../FieldNode\";\nimport { OPEN_MODELS_OPTIONS } from \"../OPEN_MODELS_OPTIONS\";\nimport { Registry } from \"../Registry\";\n\nexport class FLOAT extends FieldNode {\n get value(): number {\n return this._value;\n }\n\n set value(value: number) {\n this._value = value;\n this.__isEmpty = false;\n this.__climbUpValidation();\n this.__notifyFieldValueChange(true);\n }\n\n public _value: number;\n\n constructor(initData?: number, parent?: FieldNode, parentAttributeName?: string) {\n super(undefined, parent, parentAttributeName);\n this.__isPrimitive = true;\n this._value = typeof initData === \"number\" ? initData : 0;\n this.__meta.typeName = \"primitives.FLOAT\";\n }\n\n override __updateWithLiteral(v: number) {\n this._value = v;\n this.__isEmpty = false;\n this.__notifyFieldValueChange(false);\n }\n\n protected override ___updateNotEmptyPath() {\n if (this._value === 0) {\n this.___isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.___isEmpty = false;\n super.___updateNotEmptyPath();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n override __mapProtoNameJsonToJson(data: number): number {\n return data;\n }\n\n protected override __checkTypeBoundaries(): string[] | undefined {\n // check for float min max boundaries\n\n if (this._value > Number.MAX_SAFE_INTEGER) {\n return [\"constraint.violation.range.float.max\", Number.MAX_SAFE_INTEGER.toString()];\n }\n if (this._value < Number.MIN_SAFE_INTEGER) {\n return [\"constraint.violation.range.float.min\", Number.MIN_SAFE_INTEGER.toString()];\n }\n return undefined;\n }\n\n protected override __checkConstraints(fieldConstraints: FieldConstraints): string[] | undefined {\n for (const [constraint, value] of Object.entries(fieldConstraints)) {\n // An float has always a value if (constraint === 'required') {}\n if (constraint === \"maximum\") {\n // By default, the minimum and maximum values are included in the range. \">\" is used to check.\n if (fieldConstraints.exclusive_maximum && this._value >= value) {\n return [\"constraint.violation.exclusive_maximum\", String(value), String(this._value)];\n }\n if (this._value > value) {\n return [\"constraint.violation.maximum\", String(value)];\n }\n }\n if (constraint === \"minimum\") {\n // By default, the minimum and maximum values are included in the range. \"<\" is used to check.\n if (fieldConstraints.exclusive_minimum && this._value <= value) {\n return [\"constraint.violation.exclusive_minimum\", String(value), String(this._value)];\n }\n if (this._value < value) {\n return [\"constraint.violation.minimum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"multiple_of\") {\n // Use the multiple_of keyword to specify that a number must be the multiple of another number\n // use this to define the step ??\n if (this._value % value !== 0) {\n return [\"constraint.violation.multiple_of\", String(value), String(this._value)];\n }\n }\n }\n\n return undefined;\n }\n\n override __toJson(): number {\n return this.__toLiteral();\n }\n\n override __toLiteral() {\n return this._value;\n }\n\n override valueOf(): number {\n return this._value;\n }\n\n override toString(): string {\n return this._value.toString();\n }\n\n public override __clear(withoutNotification = false) {\n // only notify when they are changes\n const shouldNotify = this._value !== 0;\n this._value = 0;\n if (shouldNotify && !withoutNotification) {\n this.__notifyFieldValueChange(false);\n }\n }\n}\n\nRegistry.register(\"float\", FLOAT);\n"]}
1
+ {"version":3,"file":"FLOAT.js","sourceRoot":"","sources":["../../src/primitives/FLOAT.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldConstraints } from \"../FieldConstraints\";\nimport { FieldNode } from \"../FieldNode\";\nimport { OPEN_MODELS_OPTIONS } from \"../OPEN_MODELS_OPTIONS\";\nimport { Registry } from \"../Registry\";\n\nexport class FLOAT extends FieldNode {\n get value(): number {\n return this._value;\n }\n\n set value(value: number) {\n // guard for API responses which sometimes send a null instead of a value\n if (typeof value !== \"number\") {\n value = 0;\n }\n this._value = value;\n this.__isEmpty = false;\n this.__climbUpValidation();\n this.__notifyFieldValueChange(true);\n }\n\n public _value: number;\n\n constructor(initData?: number, parent?: FieldNode, parentAttributeName?: string) {\n super(undefined, parent, parentAttributeName);\n this.__isPrimitive = true;\n this._value = typeof initData === \"number\" ? initData : 0;\n this.__meta.typeName = \"primitives.FLOAT\";\n }\n\n override __updateWithLiteral(v: number) {\n // guard for API responses which sometimes send a null instead of a value\n if (typeof v !== \"number\") {\n v = 0;\n }\n this._value = v;\n this.__isEmpty = false;\n this.__notifyFieldValueChange(false);\n }\n\n protected override ___updateNotEmptyPath() {\n if (this._value === 0) {\n this.___isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.___isEmpty = false;\n super.___updateNotEmptyPath();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n override __mapProtoNameJsonToJson(data: number): number {\n return data;\n }\n\n protected override __checkTypeBoundaries(): string[] | undefined {\n // check for float min max boundaries\n\n if (this._value > Number.MAX_SAFE_INTEGER) {\n return [\"constraint.violation.range.float.max\", Number.MAX_SAFE_INTEGER.toString()];\n }\n if (this._value < Number.MIN_SAFE_INTEGER) {\n return [\"constraint.violation.range.float.min\", Number.MIN_SAFE_INTEGER.toString()];\n }\n return undefined;\n }\n\n protected override __checkConstraints(fieldConstraints: FieldConstraints): string[] | undefined {\n for (const [constraint, value] of Object.entries(fieldConstraints)) {\n // An float has always a value if (constraint === 'required') {}\n if (constraint === \"maximum\") {\n // By default, the minimum and maximum values are included in the range. \">\" is used to check.\n if (fieldConstraints.exclusive_maximum && this._value >= value) {\n return [\"constraint.violation.exclusive_maximum\", String(value), String(this._value)];\n }\n if (this._value > value) {\n return [\"constraint.violation.maximum\", String(value)];\n }\n }\n if (constraint === \"minimum\") {\n // By default, the minimum and maximum values are included in the range. \"<\" is used to check.\n if (fieldConstraints.exclusive_minimum && this._value <= value) {\n return [\"constraint.violation.exclusive_minimum\", String(value), String(this._value)];\n }\n if (this._value < value) {\n return [\"constraint.violation.minimum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"multiple_of\") {\n // Use the multiple_of keyword to specify that a number must be the multiple of another number\n // use this to define the step ??\n if (this._value % value !== 0) {\n return [\"constraint.violation.multiple_of\", String(value), String(this._value)];\n }\n }\n }\n\n return undefined;\n }\n\n override __toJson(): number {\n return this.__toLiteral();\n }\n\n override __toLiteral() {\n return this._value;\n }\n\n override valueOf(): number {\n return this._value;\n }\n\n override toString(): string {\n return this._value.toString();\n }\n\n public override __clear(withoutNotification = false) {\n // only notify when they are changes\n const shouldNotify = this._value !== 0;\n this._value = 0;\n if (shouldNotify && !withoutNotification) {\n this.__notifyFieldValueChange(false);\n }\n }\n}\n\nRegistry.register(\"float\", FLOAT);\n"]}
@@ -6,6 +6,10 @@ export class INT32 extends FieldNode {
6
6
  return this._value;
7
7
  }
8
8
  set value(value) {
9
+ // guard for API responses which sometimes send a null instead of a value
10
+ if (typeof value !== "number") {
11
+ value = 0;
12
+ }
9
13
  this._value = value;
10
14
  this.__isEmpty = false;
11
15
  this.__climbUpValidation();
@@ -18,6 +22,10 @@ export class INT32 extends FieldNode {
18
22
  this.__meta.typeName = "primitives.INT32";
19
23
  }
20
24
  __updateWithLiteral(v) {
25
+ // guard for API responses which sometimes send a null instead of a value
26
+ if (typeof v !== "number") {
27
+ v = 0;
28
+ }
21
29
  this._value = v;
22
30
  this.__isEmpty = false;
23
31
  this.__notifyFieldValueChange(false);
@@ -1 +1 @@
1
- {"version":3,"file":"INT32.js","sourceRoot":"","sources":["../../src/primitives/INT32.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldConstraints } from \"../FieldConstraints\";\nimport { FieldNode } from \"../FieldNode\";\nimport { OPEN_MODELS_OPTIONS } from \"../OPEN_MODELS_OPTIONS\";\nimport { Registry } from \"../Registry\";\n\nexport class INT32 extends FieldNode {\n get value(): number {\n return this._value;\n }\n\n set value(value: number) {\n this._value = value;\n this.__isEmpty = false;\n this.__climbUpValidation();\n this.__notifyFieldValueChange(true);\n }\n\n public _value: number;\n\n constructor(initData?: number, parent?: FieldNode, parentAttributeName?: string) {\n super(undefined, parent, parentAttributeName);\n this.__isPrimitive = true;\n this._value = Number.isInteger(initData) ? initData! : 0;\n this.__meta.typeName = \"primitives.INT32\";\n }\n\n override __updateWithLiteral(v: number) {\n this._value = v;\n this.__isEmpty = false;\n this.__notifyFieldValueChange(false);\n }\n\n protected override ___updateNotEmptyPath() {\n if (this._value === 0) {\n this.___isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.___isEmpty = false;\n super.___updateNotEmptyPath();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n override __mapProtoNameJsonToJson(data: number): number {\n return data;\n }\n\n protected override __checkTypeBoundaries(): string[] | undefined {\n // check for int32 min max boundaries\n\n if (this._value > 2147483647) {\n return [\"constraint.violation.range.int32.max\", \"2147483647\"];\n }\n if (this._value < -2147483648) {\n return [\"constraint.violation.range.int32.min\", \"-2147483648\"];\n }\n return undefined;\n }\n\n protected override __checkConstraints(fieldConstraints: FieldConstraints): string[] | undefined {\n for (const [constraint, value] of Object.entries(fieldConstraints)) {\n // An int32 has always a value if (constraint === 'required') {}\n if (constraint === \"maximum\") {\n // By default, the minimum and maximum values are included in the range. \">\" is used to check.\n if (fieldConstraints.exclusive_maximum && this._value >= value) {\n return [\"constraint.violation.exclusive_maximum\", String(value), String(this._value)];\n }\n if (this._value > value) {\n return [\"constraint.violation.maximum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"minimum\") {\n // By default, the minimum and maximum values are included in the range. \"<\" is used to check.\n if (fieldConstraints.exclusive_minimum && this._value <= value) {\n return [\"constraint.violation.exclusive_minimum\", String(value), String(this._value)];\n }\n if (this._value < value) {\n return [\"constraint.violation.minimum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"multiple_of\") {\n // Use the multiple_of keyword to specify that a number must be the multiple of another number\n // use this to define the step ??\n if (this._value % value !== 0) {\n return [\"constraint.violation.multiple_of\", String(value), String(this._value)];\n }\n }\n }\n\n return undefined;\n }\n\n override __toJson(): number {\n return this.__toLiteral();\n }\n\n override __toLiteral() {\n return this._value;\n }\n\n override valueOf(): number {\n return this._value;\n }\n\n override toString(): string {\n return this._value.toString();\n }\n\n public override __clear(withoutNotification = false) {\n // only notify when they are changes\n const shouldNotify = this._value !== 0;\n this._value = 0;\n if (shouldNotify && !withoutNotification) {\n this.__notifyFieldValueChange(false);\n }\n }\n}\n\nRegistry.register(\"int32\", INT32);\n"]}
1
+ {"version":3,"file":"INT32.js","sourceRoot":"","sources":["../../src/primitives/INT32.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,OAAO,KAAM,SAAQ,SAAS;IAClC,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,KAAK,CAAC,KAAa;QACrB,yEAAyE;QACzE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,KAAK,GAAG,CAAC,CAAC;QACZ,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAID,YAAY,QAAiB,EAAE,MAAkB,EAAE,mBAA4B;QAC7E,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;QAC9C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,kBAAkB,CAAC;IAC5C,CAAC;IAEQ,mBAAmB,CAAC,CAAS;QACpC,yEAAyE;QACzE,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,CAAC,GAAG,CAAC,CAAC;QACR,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAEkB,qBAAqB;QACtC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,mBAAmB,CAAC,iBAAiB,IAAI,mBAAmB,CAAC,eAAe,CAAC,CAAC;QACpG,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,KAAK,CAAC,qBAAqB,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;IAED,kDAAkD;IACzC,wBAAwB,CAAC,IAAY;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAEkB,qBAAqB;QACtC,qCAAqC;QAErC,IAAI,IAAI,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;YAC7B,OAAO,CAAC,sCAAsC,EAAE,YAAY,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,UAAU,EAAE,CAAC;YAC9B,OAAO,CAAC,sCAAsC,EAAE,aAAa,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEkB,kBAAkB,CAAC,gBAAkC;QACtE,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACnE,gEAAgE;YAChE,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,8FAA8F;gBAC9F,IAAI,gBAAgB,CAAC,iBAAiB,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;oBAC/D,OAAO,CAAC,wCAAwC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBACxF,CAAC;gBACD,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;oBACxB,OAAO,CAAC,8BAA8B,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC9E,CAAC;YACH,CAAC;YACD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,8FAA8F;gBAC9F,IAAI,gBAAgB,CAAC,iBAAiB,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;oBAC/D,OAAO,CAAC,wCAAwC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBACxF,CAAC;gBACD,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;oBACxB,OAAO,CAAC,8BAA8B,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC9E,CAAC;YACH,CAAC;YACD,IAAI,UAAU,KAAK,aAAa,EAAE,CAAC;gBACjC,8FAA8F;gBAC9F,iCAAiC;gBACjC,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,KAAK,CAAC,EAAE,CAAC;oBAC9B,OAAO,CAAC,kCAAkC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAClF,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEQ,QAAQ;QACf,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAEQ,WAAW;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEQ,OAAO;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEQ,QAAQ;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAEe,OAAO,CAAC,mBAAmB,GAAG,KAAK;QACjD,oCAAoC;QACpC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,YAAY,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;CACF;AAED,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC","sourcesContent":["import type { FieldConstraints } from \"../FieldConstraints\";\nimport { FieldNode } from \"../FieldNode\";\nimport { OPEN_MODELS_OPTIONS } from \"../OPEN_MODELS_OPTIONS\";\nimport { Registry } from \"../Registry\";\n\nexport class INT32 extends FieldNode {\n get value(): number {\n return this._value;\n }\n\n set value(value: number) {\n // guard for API responses which sometimes send a null instead of a value\n if (typeof value !== \"number\") {\n value = 0;\n }\n this._value = value;\n this.__isEmpty = false;\n this.__climbUpValidation();\n this.__notifyFieldValueChange(true);\n }\n\n public _value: number;\n\n constructor(initData?: number, parent?: FieldNode, parentAttributeName?: string) {\n super(undefined, parent, parentAttributeName);\n this.__isPrimitive = true;\n this._value = Number.isInteger(initData) ? initData! : 0;\n this.__meta.typeName = \"primitives.INT32\";\n }\n\n override __updateWithLiteral(v: number) {\n // guard for API responses which sometimes send a null instead of a value\n if (typeof v !== \"number\") {\n v = 0;\n }\n this._value = v;\n this.__isEmpty = false;\n this.__notifyFieldValueChange(false);\n }\n\n protected override ___updateNotEmptyPath() {\n if (this._value === 0) {\n this.___isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.___isEmpty = false;\n super.___updateNotEmptyPath();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n override __mapProtoNameJsonToJson(data: number): number {\n return data;\n }\n\n protected override __checkTypeBoundaries(): string[] | undefined {\n // check for int32 min max boundaries\n\n if (this._value > 2147483647) {\n return [\"constraint.violation.range.int32.max\", \"2147483647\"];\n }\n if (this._value < -2147483648) {\n return [\"constraint.violation.range.int32.min\", \"-2147483648\"];\n }\n return undefined;\n }\n\n protected override __checkConstraints(fieldConstraints: FieldConstraints): string[] | undefined {\n for (const [constraint, value] of Object.entries(fieldConstraints)) {\n // An int32 has always a value if (constraint === 'required') {}\n if (constraint === \"maximum\") {\n // By default, the minimum and maximum values are included in the range. \">\" is used to check.\n if (fieldConstraints.exclusive_maximum && this._value >= value) {\n return [\"constraint.violation.exclusive_maximum\", String(value), String(this._value)];\n }\n if (this._value > value) {\n return [\"constraint.violation.maximum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"minimum\") {\n // By default, the minimum and maximum values are included in the range. \"<\" is used to check.\n if (fieldConstraints.exclusive_minimum && this._value <= value) {\n return [\"constraint.violation.exclusive_minimum\", String(value), String(this._value)];\n }\n if (this._value < value) {\n return [\"constraint.violation.minimum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"multiple_of\") {\n // Use the multiple_of keyword to specify that a number must be the multiple of another number\n // use this to define the step ??\n if (this._value % value !== 0) {\n return [\"constraint.violation.multiple_of\", String(value), String(this._value)];\n }\n }\n }\n\n return undefined;\n }\n\n override __toJson(): number {\n return this.__toLiteral();\n }\n\n override __toLiteral() {\n return this._value;\n }\n\n override valueOf(): number {\n return this._value;\n }\n\n override toString(): string {\n return this._value.toString();\n }\n\n public override __clear(withoutNotification = false) {\n // only notify when they are changes\n const shouldNotify = this._value !== 0;\n this._value = 0;\n if (shouldNotify && !withoutNotification) {\n this.__notifyFieldValueChange(false);\n }\n }\n}\n\nRegistry.register(\"int32\", INT32);\n"]}
@@ -6,6 +6,10 @@ export class INT64 extends FieldNode {
6
6
  return this._value;
7
7
  }
8
8
  set value(value) {
9
+ // guard for API responses which sometimes send a null instead of a value
10
+ if (typeof value !== "bigint") {
11
+ value = 0n;
12
+ }
9
13
  this._value = value;
10
14
  this.__isEmpty = false;
11
15
  this.__climbUpValidation();
@@ -18,7 +22,13 @@ export class INT64 extends FieldNode {
18
22
  this.__meta.typeName = "primitives.INT64";
19
23
  }
20
24
  __updateWithLiteral(v) {
21
- this._value = BigInt(v);
25
+ // guard for API responses which sometimes send a null instead of a value
26
+ if (typeof v !== "string" && typeof v !== "number" && typeof v !== "bigint") {
27
+ this._value = 0n;
28
+ }
29
+ else {
30
+ this._value = BigInt(v);
31
+ }
22
32
  this.__isEmpty = false;
23
33
  this.__notifyFieldValueChange(false);
24
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"INT64.js","sourceRoot":"","sources":["../../src/primitives/INT64.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,OAAO,KAAM,SAAQ,SAAS;IAClC,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,KAAK,CAAC,KAAa;QACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAID,YAAY,QAAiB,EAAE,MAAkB,EAAE,mBAA4B;QAC7E,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;QAC9C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,kBAAkB,CAAC;IAC5C,CAAC;IAEQ,mBAAmB,CAAC,CAAS;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAEkB,qBAAqB;QACtC,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YACvB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,mBAAmB,CAAC,iBAAiB,IAAI,mBAAmB,CAAC,eAAe,CAAC,CAAC;QACpG,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,KAAK,CAAC,qBAAqB,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;IAED,kDAAkD;IACzC,wBAAwB,CAAC,IAAY;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAEkB,kBAAkB,CAAC,gBAAkC;QACtE,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACnE,gEAAgE;YAChE,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,8FAA8F;gBAC9F,IAAI,gBAAgB,CAAC,iBAAiB,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;oBAC/D,OAAO,CAAC,wCAAwC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBACxF,CAAC;gBACD,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;oBACxB,OAAO,CAAC,8BAA8B,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC9E,CAAC;YACH,CAAC;YACD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,8FAA8F;gBAC9F,IAAI,gBAAgB,CAAC,iBAAiB,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;oBAC/D,OAAO,CAAC,wCAAwC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBACxF,CAAC;gBACD,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;oBACxB,OAAO,CAAC,8BAA8B,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC9E,CAAC;YACH,CAAC;YACD,IAAI,UAAU,KAAK,aAAa,EAAE,CAAC;gBACjC,8FAA8F;gBAC9F,iCAAiC;gBACjC,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAA2C,CAAC,KAAK,EAAE,EAAE,CAAC;oBAC7E,OAAO,CAAC,kCAAkC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAClF,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEQ,QAAQ;QACf,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAEQ,WAAW;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAEQ,OAAO;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEQ,QAAQ;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAEe,OAAO,CAAC,mBAAmB,GAAG,KAAK;QACjD,oCAAoC;QACpC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,YAAY,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;CACF;AAED,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC","sourcesContent":["import type { FieldConstraints } from \"../FieldConstraints\";\nimport { FieldNode } from \"../FieldNode\";\nimport { OPEN_MODELS_OPTIONS } from \"../OPEN_MODELS_OPTIONS\";\nimport { Registry } from \"../Registry\";\n\nexport class INT64 extends FieldNode {\n get value(): bigint {\n return this._value;\n }\n\n set value(value: bigint) {\n this._value = value;\n this.__isEmpty = false;\n this.__climbUpValidation();\n this.__notifyFieldValueChange(true);\n }\n\n public _value: bigint;\n\n constructor(initData?: string, parent?: FieldNode, parentAttributeName?: string) {\n super(undefined, parent, parentAttributeName);\n this.__isPrimitive = true;\n this._value = BigInt(initData ?? \"0\");\n this.__meta.typeName = \"primitives.INT64\";\n }\n\n override __updateWithLiteral(v: string) {\n this._value = BigInt(v);\n this.__isEmpty = false;\n this.__notifyFieldValueChange(false);\n }\n\n protected override ___updateNotEmptyPath() {\n if (this._value === 0n) {\n this.___isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.___isEmpty = false;\n super.___updateNotEmptyPath();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n override __mapProtoNameJsonToJson(data: number): number {\n return data;\n }\n\n protected override __checkConstraints(fieldConstraints: FieldConstraints): string[] | undefined {\n for (const [constraint, value] of Object.entries(fieldConstraints)) {\n // An int64 has always a value if (constraint === 'required') {}\n if (constraint === \"maximum\") {\n // By default, the minimum and maximum values are included in the range. \">\" is used to check.\n if (fieldConstraints.exclusive_maximum && this._value >= value) {\n return [\"constraint.violation.exclusive_maximum\", String(value), String(this._value)];\n }\n if (this._value > value) {\n return [\"constraint.violation.maximum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"minimum\") {\n // By default, the minimum and maximum values are included in the range. \"<\" is used to check.\n if (fieldConstraints.exclusive_minimum && this._value <= value) {\n return [\"constraint.violation.exclusive_minimum\", String(value), String(this._value)];\n }\n if (this._value < value) {\n return [\"constraint.violation.minimum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"multiple_of\") {\n // Use the multiple_of keyword to specify that a number must be the multiple of another number\n // use this to define the step ??\n if (this._value % BigInt(value as string | number | bigint | boolean) !== 0n) {\n return [\"constraint.violation.multiple_of\", String(value), String(this._value)];\n }\n }\n }\n\n return undefined;\n }\n\n override __toJson(): string {\n return this.__toLiteral();\n }\n\n override __toLiteral() {\n return this._value.toString();\n }\n\n override valueOf(): bigint {\n return this._value;\n }\n\n override toString(): string {\n return this._value.toString();\n }\n\n public override __clear(withoutNotification = false) {\n // only notify when they are changes\n const shouldNotify = this._value !== 0n;\n this._value = 0n;\n if (shouldNotify && !withoutNotification) {\n this.__notifyFieldValueChange(false);\n }\n }\n}\n\nRegistry.register(\"int64\", INT64);\n"]}
1
+ {"version":3,"file":"INT64.js","sourceRoot":"","sources":["../../src/primitives/INT64.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldConstraints } from \"../FieldConstraints\";\nimport { FieldNode } from \"../FieldNode\";\nimport { OPEN_MODELS_OPTIONS } from \"../OPEN_MODELS_OPTIONS\";\nimport { Registry } from \"../Registry\";\n\nexport class INT64 extends FieldNode {\n get value(): bigint {\n return this._value;\n }\n\n set value(value: bigint) {\n // guard for API responses which sometimes send a null instead of a value\n if (typeof value !== \"bigint\") {\n value = 0n;\n }\n this._value = value;\n this.__isEmpty = false;\n this.__climbUpValidation();\n this.__notifyFieldValueChange(true);\n }\n\n public _value: bigint;\n\n constructor(initData?: string, parent?: FieldNode, parentAttributeName?: string) {\n super(undefined, parent, parentAttributeName);\n this.__isPrimitive = true;\n this._value = BigInt(initData ?? \"0\");\n this.__meta.typeName = \"primitives.INT64\";\n }\n\n override __updateWithLiteral(v: string) {\n // guard for API responses which sometimes send a null instead of a value\n if (typeof v !== \"string\" && typeof v !== \"number\" && typeof v !== \"bigint\") {\n this._value = 0n;\n } else {\n this._value = BigInt(v);\n }\n this.__isEmpty = false;\n this.__notifyFieldValueChange(false);\n }\n\n protected override ___updateNotEmptyPath() {\n if (this._value === 0n) {\n this.___isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.___isEmpty = false;\n super.___updateNotEmptyPath();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n override __mapProtoNameJsonToJson(data: number): number {\n return data;\n }\n\n protected override __checkConstraints(fieldConstraints: FieldConstraints): string[] | undefined {\n for (const [constraint, value] of Object.entries(fieldConstraints)) {\n // An int64 has always a value if (constraint === 'required') {}\n if (constraint === \"maximum\") {\n // By default, the minimum and maximum values are included in the range. \">\" is used to check.\n if (fieldConstraints.exclusive_maximum && this._value >= value) {\n return [\"constraint.violation.exclusive_maximum\", String(value), String(this._value)];\n }\n if (this._value > value) {\n return [\"constraint.violation.maximum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"minimum\") {\n // By default, the minimum and maximum values are included in the range. \"<\" is used to check.\n if (fieldConstraints.exclusive_minimum && this._value <= value) {\n return [\"constraint.violation.exclusive_minimum\", String(value), String(this._value)];\n }\n if (this._value < value) {\n return [\"constraint.violation.minimum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"multiple_of\") {\n // Use the multiple_of keyword to specify that a number must be the multiple of another number\n // use this to define the step ??\n if (this._value % BigInt(value as string | number | bigint | boolean) !== 0n) {\n return [\"constraint.violation.multiple_of\", String(value), String(this._value)];\n }\n }\n }\n\n return undefined;\n }\n\n override __toJson(): string {\n return this.__toLiteral();\n }\n\n override __toLiteral() {\n return this._value.toString();\n }\n\n override valueOf(): bigint {\n return this._value;\n }\n\n override toString(): string {\n return this._value.toString();\n }\n\n public override __clear(withoutNotification = false) {\n // only notify when they are changes\n const shouldNotify = this._value !== 0n;\n this._value = 0n;\n if (shouldNotify && !withoutNotification) {\n this.__notifyFieldValueChange(false);\n }\n }\n}\n\nRegistry.register(\"int64\", INT64);\n"]}
@@ -6,6 +6,10 @@ export class SINT32 extends FieldNode {
6
6
  return this._value;
7
7
  }
8
8
  set value(value) {
9
+ // guard for API responses which sometimes send a null instead of a value
10
+ if (typeof value !== "number") {
11
+ value = 0;
12
+ }
9
13
  this._value = value;
10
14
  this.__isEmpty = false;
11
15
  this.__climbUpValidation();
@@ -18,6 +22,10 @@ export class SINT32 extends FieldNode {
18
22
  this.__meta.typeName = "primitives.SINT32";
19
23
  }
20
24
  __updateWithLiteral(v) {
25
+ // guard for API responses which sometimes send a null instead of a value
26
+ if (typeof v !== "number") {
27
+ v = 0;
28
+ }
21
29
  this._value = v;
22
30
  this.__isEmpty = false;
23
31
  this.__notifyFieldValueChange(false);
@@ -1 +1 @@
1
- {"version":3,"file":"SINT32.js","sourceRoot":"","sources":["../../src/primitives/SINT32.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldConstraints } from \"../FieldConstraints\";\nimport { FieldNode } from \"../FieldNode\";\nimport { OPEN_MODELS_OPTIONS } from \"../OPEN_MODELS_OPTIONS\";\nimport { Registry } from \"../Registry\";\n\nexport class SINT32 extends FieldNode {\n get value(): number {\n return this._value;\n }\n\n set value(value: number) {\n this._value = value;\n this.__isEmpty = false;\n this.__climbUpValidation();\n this.__notifyFieldValueChange(true);\n }\n\n public _value: number;\n\n constructor(initData?: number, parent?: FieldNode, parentAttributeName?: string) {\n super(undefined, parent, parentAttributeName);\n this.__isPrimitive = true;\n this._value = Number.isInteger(initData) ? initData! : 0;\n this.__meta.typeName = \"primitives.SINT32\";\n }\n\n override __updateWithLiteral(v: number) {\n this._value = v;\n this.__isEmpty = false;\n this.__notifyFieldValueChange(false);\n }\n\n protected override ___updateNotEmptyPath() {\n if (this._value === 0) {\n this.___isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.___isEmpty = false;\n super.___updateNotEmptyPath();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n override __mapProtoNameJsonToJson(data: number): number {\n return data;\n }\n\n protected override __checkTypeBoundaries(): string[] | undefined {\n // check for sint32 min max boundaries\n\n if (this._value > 2147483647) {\n return [\"constraint.violation.range.sint32.max\", \"2147483647\"];\n }\n if (this._value < -2147483648) {\n return [\"constraint.violation.range.sint32.min\", \"-2147483648\"];\n }\n return undefined;\n }\n\n protected override __checkConstraints(fieldConstraints: FieldConstraints): string[] | undefined {\n for (const [constraint, value] of Object.entries(fieldConstraints)) {\n // An sint32 has always a value if (constraint === 'required') {}\n if (constraint === \"maximum\") {\n // By default, the minimum and maximum values are included in the range. \">\" is used to check.\n if (fieldConstraints.exclusive_maximum && this._value >= value) {\n return [\"constraint.violation.exclusive_maximum\", String(value), String(this._value)];\n }\n if (this._value > value) {\n return [\"constraint.violation.maximum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"minimum\") {\n // By default, the minimum and maximum values are included in the range. \"<\" is used to check.\n if (fieldConstraints.exclusive_minimum && this._value <= value) {\n return [\"constraint.violation.exclusive_minimum\", String(value), String(this._value)];\n }\n if (this._value < value) {\n return [\"constraint.violation.minimum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"multiple_of\") {\n // Use the multiple_of keyword to specify that a number must be the multiple of another number\n // use this to define the step ??\n if (this._value % value !== 0) {\n return [\"constraint.violation.multiple_of\", String(value), String(this._value)];\n }\n }\n }\n\n return undefined;\n }\n\n override __toJson(): number {\n return this.__toLiteral();\n }\n\n override __toLiteral() {\n return this._value;\n }\n\n override valueOf(): number {\n return this._value;\n }\n\n override toString(): string {\n return this._value.toString();\n }\n\n public override __clear(withoutNotification = false) {\n // only notify when they are changes\n const shouldNotify = this._value !== 0;\n this._value = 0;\n if (shouldNotify && !withoutNotification) {\n this.__notifyFieldValueChange(false);\n }\n }\n}\n\nRegistry.register(\"sint32\", SINT32);\n"]}
1
+ {"version":3,"file":"SINT32.js","sourceRoot":"","sources":["../../src/primitives/SINT32.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldConstraints } from \"../FieldConstraints\";\nimport { FieldNode } from \"../FieldNode\";\nimport { OPEN_MODELS_OPTIONS } from \"../OPEN_MODELS_OPTIONS\";\nimport { Registry } from \"../Registry\";\n\nexport class SINT32 extends FieldNode {\n get value(): number {\n return this._value;\n }\n\n set value(value: number) {\n // guard for API responses which sometimes send a null instead of a value\n if (typeof value !== \"number\") {\n value = 0;\n }\n this._value = value;\n this.__isEmpty = false;\n this.__climbUpValidation();\n this.__notifyFieldValueChange(true);\n }\n\n public _value: number;\n\n constructor(initData?: number, parent?: FieldNode, parentAttributeName?: string) {\n super(undefined, parent, parentAttributeName);\n this.__isPrimitive = true;\n this._value = Number.isInteger(initData) ? initData! : 0;\n this.__meta.typeName = \"primitives.SINT32\";\n }\n\n override __updateWithLiteral(v: number) {\n // guard for API responses which sometimes send a null instead of a value\n if (typeof v !== \"number\") {\n v = 0;\n }\n this._value = v;\n this.__isEmpty = false;\n this.__notifyFieldValueChange(false);\n }\n\n protected override ___updateNotEmptyPath() {\n if (this._value === 0) {\n this.___isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.___isEmpty = false;\n super.___updateNotEmptyPath();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n override __mapProtoNameJsonToJson(data: number): number {\n return data;\n }\n\n protected override __checkTypeBoundaries(): string[] | undefined {\n // check for sint32 min max boundaries\n\n if (this._value > 2147483647) {\n return [\"constraint.violation.range.sint32.max\", \"2147483647\"];\n }\n if (this._value < -2147483648) {\n return [\"constraint.violation.range.sint32.min\", \"-2147483648\"];\n }\n return undefined;\n }\n\n protected override __checkConstraints(fieldConstraints: FieldConstraints): string[] | undefined {\n for (const [constraint, value] of Object.entries(fieldConstraints)) {\n // An sint32 has always a value if (constraint === 'required') {}\n if (constraint === \"maximum\") {\n // By default, the minimum and maximum values are included in the range. \">\" is used to check.\n if (fieldConstraints.exclusive_maximum && this._value >= value) {\n return [\"constraint.violation.exclusive_maximum\", String(value), String(this._value)];\n }\n if (this._value > value) {\n return [\"constraint.violation.maximum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"minimum\") {\n // By default, the minimum and maximum values are included in the range. \"<\" is used to check.\n if (fieldConstraints.exclusive_minimum && this._value <= value) {\n return [\"constraint.violation.exclusive_minimum\", String(value), String(this._value)];\n }\n if (this._value < value) {\n return [\"constraint.violation.minimum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"multiple_of\") {\n // Use the multiple_of keyword to specify that a number must be the multiple of another number\n // use this to define the step ??\n if (this._value % value !== 0) {\n return [\"constraint.violation.multiple_of\", String(value), String(this._value)];\n }\n }\n }\n\n return undefined;\n }\n\n override __toJson(): number {\n return this.__toLiteral();\n }\n\n override __toLiteral() {\n return this._value;\n }\n\n override valueOf(): number {\n return this._value;\n }\n\n override toString(): string {\n return this._value.toString();\n }\n\n public override __clear(withoutNotification = false) {\n // only notify when they are changes\n const shouldNotify = this._value !== 0;\n this._value = 0;\n if (shouldNotify && !withoutNotification) {\n this.__notifyFieldValueChange(false);\n }\n }\n}\n\nRegistry.register(\"sint32\", SINT32);\n"]}
@@ -6,6 +6,10 @@ export class SINT64 extends FieldNode {
6
6
  return this._value;
7
7
  }
8
8
  set value(value) {
9
+ // guard for API responses which sometimes send a null instead of a value
10
+ if (typeof value !== "bigint") {
11
+ value = 0n;
12
+ }
9
13
  this._value = value;
10
14
  this.__isEmpty = false;
11
15
  this.__climbUpValidation();
@@ -18,7 +22,13 @@ export class SINT64 extends FieldNode {
18
22
  this.__meta.typeName = "primitives.SINT64";
19
23
  }
20
24
  __updateWithLiteral(v) {
21
- this._value = BigInt(v);
25
+ // guard for API responses which sometimes send a null instead of a value
26
+ if (typeof v !== "string" && typeof v !== "number" && typeof v !== "bigint") {
27
+ this._value = 0n;
28
+ }
29
+ else {
30
+ this._value = BigInt(v);
31
+ }
22
32
  this.__isEmpty = false;
23
33
  this.__notifyFieldValueChange(false);
24
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SINT64.js","sourceRoot":"","sources":["../../src/primitives/SINT64.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldConstraints } from \"../FieldConstraints\";\nimport { FieldNode } from \"../FieldNode\";\nimport { OPEN_MODELS_OPTIONS } from \"../OPEN_MODELS_OPTIONS\";\nimport { Registry } from \"../Registry\";\n\nexport class SINT64 extends FieldNode {\n get value(): bigint {\n return this._value;\n }\n\n set value(value: bigint) {\n this._value = value;\n this.__isEmpty = false;\n this.__climbUpValidation();\n this.__notifyFieldValueChange(true);\n }\n\n public _value: bigint;\n\n constructor(initData?: string, parent?: FieldNode, parentAttributeName?: string) {\n super(undefined, parent, parentAttributeName);\n this.__isPrimitive = true;\n this._value = BigInt(initData ?? \"0\");\n this.__meta.typeName = \"primitives.SINT64\";\n }\n\n override __updateWithLiteral(v: string) {\n this._value = BigInt(v);\n this.__isEmpty = false;\n this.__notifyFieldValueChange(false);\n }\n\n protected override ___updateNotEmptyPath() {\n if (this._value === 0n) {\n this.___isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.___isEmpty = false;\n super.___updateNotEmptyPath();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n override __mapProtoNameJsonToJson(data: number): number {\n return data;\n }\n\n protected override __checkConstraints(fieldConstraints: FieldConstraints): string[] | undefined {\n for (const [constraint, value] of Object.entries(fieldConstraints)) {\n // A sint64 always has a value if (constraint === 'required') {}\n if (constraint === \"maximum\") {\n // By default, the minimum and maximum values are included in the range. \">\" is used to check.\n if (fieldConstraints.exclusive_maximum && this._value >= value) {\n return [\"constraint.violation.exclusive_maximum\", String(value), String(this._value)];\n }\n if (this._value > value) {\n return [\"constraint.violation.maximum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"minimum\") {\n // By default, the minimum and maximum values are included in the range. \"<\" is used to check.\n if (fieldConstraints.exclusive_minimum && this._value <= value) {\n return [\"constraint.violation.exclusive_minimum\", String(value), String(this._value)];\n }\n if (this._value < value) {\n return [\"constraint.violation.minimum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"multiple_of\") {\n // Use the multiple_of keyword to specify that a number must be the multiple of another number\n // use this to define the step ??\n if (this._value % BigInt(value as string | number | bigint | boolean) !== 0n) {\n return [\"constraint.violation.multiple_of\", String(value), String(this._value)];\n }\n }\n }\n\n return undefined;\n }\n\n override __toJson(): string {\n return this.__toLiteral();\n }\n\n override __toLiteral() {\n return this._value.toString();\n }\n\n override valueOf(): bigint {\n return this._value;\n }\n\n override toString(): string {\n return this._value.toString();\n }\n\n public override __clear(withoutNotification = false) {\n // only notify when they are changes\n const shouldNotify = this._value !== 0n;\n this._value = 0n;\n if (shouldNotify && !withoutNotification) {\n this.__notifyFieldValueChange(false);\n }\n }\n}\n\nRegistry.register(\"sint64\", SINT64);\n"]}
1
+ {"version":3,"file":"SINT64.js","sourceRoot":"","sources":["../../src/primitives/SINT64.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldConstraints } from \"../FieldConstraints\";\nimport { FieldNode } from \"../FieldNode\";\nimport { OPEN_MODELS_OPTIONS } from \"../OPEN_MODELS_OPTIONS\";\nimport { Registry } from \"../Registry\";\n\nexport class SINT64 extends FieldNode {\n get value(): bigint {\n return this._value;\n }\n\n set value(value: bigint) {\n // guard for API responses which sometimes send a null instead of a value\n if (typeof value !== \"bigint\") {\n value = 0n;\n }\n this._value = value;\n this.__isEmpty = false;\n this.__climbUpValidation();\n this.__notifyFieldValueChange(true);\n }\n\n public _value: bigint;\n\n constructor(initData?: string, parent?: FieldNode, parentAttributeName?: string) {\n super(undefined, parent, parentAttributeName);\n this.__isPrimitive = true;\n this._value = BigInt(initData ?? \"0\");\n this.__meta.typeName = \"primitives.SINT64\";\n }\n\n override __updateWithLiteral(v: string) {\n // guard for API responses which sometimes send a null instead of a value\n if (typeof v !== \"string\" && typeof v !== \"number\" && typeof v !== \"bigint\") {\n this._value = 0n;\n } else {\n this._value = BigInt(v);\n }\n this.__isEmpty = false;\n this.__notifyFieldValueChange(false);\n }\n\n protected override ___updateNotEmptyPath() {\n if (this._value === 0n) {\n this.___isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.___isEmpty = false;\n super.___updateNotEmptyPath();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n override __mapProtoNameJsonToJson(data: number): number {\n return data;\n }\n\n protected override __checkConstraints(fieldConstraints: FieldConstraints): string[] | undefined {\n for (const [constraint, value] of Object.entries(fieldConstraints)) {\n // A sint64 always has a value if (constraint === 'required') {}\n if (constraint === \"maximum\") {\n // By default, the minimum and maximum values are included in the range. \">\" is used to check.\n if (fieldConstraints.exclusive_maximum && this._value >= value) {\n return [\"constraint.violation.exclusive_maximum\", String(value), String(this._value)];\n }\n if (this._value > value) {\n return [\"constraint.violation.maximum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"minimum\") {\n // By default, the minimum and maximum values are included in the range. \"<\" is used to check.\n if (fieldConstraints.exclusive_minimum && this._value <= value) {\n return [\"constraint.violation.exclusive_minimum\", String(value), String(this._value)];\n }\n if (this._value < value) {\n return [\"constraint.violation.minimum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"multiple_of\") {\n // Use the multiple_of keyword to specify that a number must be the multiple of another number\n // use this to define the step ??\n if (this._value % BigInt(value as string | number | bigint | boolean) !== 0n) {\n return [\"constraint.violation.multiple_of\", String(value), String(this._value)];\n }\n }\n }\n\n return undefined;\n }\n\n override __toJson(): string {\n return this.__toLiteral();\n }\n\n override __toLiteral() {\n return this._value.toString();\n }\n\n override valueOf(): bigint {\n return this._value;\n }\n\n override toString(): string {\n return this._value.toString();\n }\n\n public override __clear(withoutNotification = false) {\n // only notify when they are changes\n const shouldNotify = this._value !== 0n;\n this._value = 0n;\n if (shouldNotify && !withoutNotification) {\n this.__notifyFieldValueChange(false);\n }\n }\n}\n\nRegistry.register(\"sint64\", SINT64);\n"]}
@@ -6,6 +6,10 @@ export class STRING extends FieldNode {
6
6
  return this._value;
7
7
  }
8
8
  set value(value) {
9
+ // guard for API responses which sometimes send a null instead of an empty string
10
+ if (typeof value !== "string") {
11
+ value = "";
12
+ }
9
13
  this._value = value;
10
14
  if (this._value === "") {
11
15
  this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);
@@ -24,6 +28,10 @@ export class STRING extends FieldNode {
24
28
  this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);
25
29
  }
26
30
  __updateWithLiteral(v) {
31
+ // guard for API responses which sometimes send a null instead of an empty string
32
+ if (typeof v !== "string") {
33
+ v = "";
34
+ }
27
35
  this._value = v;
28
36
  if (this._value === "") {
29
37
  this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);
@@ -1 +1 @@
1
- {"version":3,"file":"STRING.js","sourceRoot":"","sources":["../../src/primitives/STRING.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldConstraints } from \"../FieldConstraints\";\nimport { FieldNode } from \"../FieldNode\";\nimport { OPEN_MODELS_OPTIONS } from \"../OPEN_MODELS_OPTIONS\";\nimport { Registry } from \"../Registry\";\n\nexport class STRING extends FieldNode {\n get value(): string {\n return this._value;\n }\n\n set value(value: string) {\n this._value = value;\n if (this._value === \"\") {\n this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.__isEmpty = false;\n }\n this.__climbUpValidation();\n this.__notifyFieldValueChange(true);\n }\n\n public _value: string;\n\n constructor(initData?: string, parent?: FieldNode, parentAttributeName?: string) {\n super(undefined, parent, parentAttributeName);\n this.__isPrimitive = true;\n this._value = initData ?? \"\";\n this.__meta.typeName = \"primitives.STRING\";\n this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n }\n\n override __updateWithLiteral(v: string) {\n this._value = v;\n if (this._value === \"\") {\n this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.__isEmpty = false;\n }\n this.__notifyFieldValueChange(false);\n }\n\n protected override ___updateNotEmptyPath() {\n if (this._value === \"\") {\n this.___isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.___isEmpty = false;\n super.___updateNotEmptyPath();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n override __mapProtoNameJsonToJson(data: string): string {\n return data;\n }\n\n protected override __checkConstraints(fieldConstraints: FieldConstraints): string[] | undefined {\n for (const [constraint, value] of Object.entries(fieldConstraints)) {\n if (constraint === \"required\") {\n if (this._value === \"\") {\n return [\"constraint.violation.required\"];\n }\n }\n if (constraint === \"max_length\") {\n // String length can be restricted using minLength and maxLength. \">\" is used to check.\n if (this._value.length > value) {\n return [\"constraint.violation.max_length\", String(value), this._value];\n }\n }\n if (constraint === \"min_length\") {\n // String length can be restricted using minLength and maxLength. \"<\" is used to check.\n if (this._value.length < value) {\n return [\"constraint.violation.min_length\", String(value), this._value];\n }\n }\n if (constraint === \"pattern\") {\n // The pattern keyword lets you define a regular expression template for the string value.\n\n const re = new RegExp(value as string);\n if (!this._value.match(re)) {\n return [\"constraint.violation.pattern\", String(value), this._value];\n }\n }\n }\n\n return undefined;\n }\n\n override __toJson(): string {\n return this.__toLiteral();\n }\n\n override __toLiteral() {\n return this._value;\n }\n\n override toString(): string {\n return this._value;\n }\n\n public override __clear(withoutNotification = false) {\n // only notify when they are changes\n const shouldNotify = this._value.length;\n this._value = \"\";\n this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n if (shouldNotify && !withoutNotification) {\n this.__notifyFieldValueChange(false);\n }\n }\n}\n\nRegistry.register(\"string\", STRING);\n"]}
1
+ {"version":3,"file":"STRING.js","sourceRoot":"","sources":["../../src/primitives/STRING.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldConstraints } from \"../FieldConstraints\";\nimport { FieldNode } from \"../FieldNode\";\nimport { OPEN_MODELS_OPTIONS } from \"../OPEN_MODELS_OPTIONS\";\nimport { Registry } from \"../Registry\";\n\nexport class STRING extends FieldNode {\n get value(): string {\n return this._value;\n }\n\n set value(value: string) {\n // guard for API responses which sometimes send a null instead of an empty string\n if (typeof value !== \"string\") {\n value = \"\";\n }\n\n this._value = value;\n if (this._value === \"\") {\n this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.__isEmpty = false;\n }\n this.__climbUpValidation();\n this.__notifyFieldValueChange(true);\n }\n\n public _value: string;\n\n constructor(initData?: string, parent?: FieldNode, parentAttributeName?: string) {\n super(undefined, parent, parentAttributeName);\n this.__isPrimitive = true;\n this._value = initData ?? \"\";\n this.__meta.typeName = \"primitives.STRING\";\n this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n }\n\n override __updateWithLiteral(v: string) {\n // guard for API responses which sometimes send a null instead of an empty string\n if (typeof v !== \"string\") {\n v = \"\";\n }\n this._value = v;\n if (this._value === \"\") {\n this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.__isEmpty = false;\n }\n this.__notifyFieldValueChange(false);\n }\n\n protected override ___updateNotEmptyPath() {\n if (this._value === \"\") {\n this.___isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.___isEmpty = false;\n super.___updateNotEmptyPath();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n override __mapProtoNameJsonToJson(data: string): string {\n return data;\n }\n\n protected override __checkConstraints(fieldConstraints: FieldConstraints): string[] | undefined {\n for (const [constraint, value] of Object.entries(fieldConstraints)) {\n if (constraint === \"required\") {\n if (this._value === \"\") {\n return [\"constraint.violation.required\"];\n }\n }\n if (constraint === \"max_length\") {\n // String length can be restricted using minLength and maxLength. \">\" is used to check.\n if (this._value.length > value) {\n return [\"constraint.violation.max_length\", String(value), this._value];\n }\n }\n if (constraint === \"min_length\") {\n // String length can be restricted using minLength and maxLength. \"<\" is used to check.\n if (this._value.length < value) {\n return [\"constraint.violation.min_length\", String(value), this._value];\n }\n }\n if (constraint === \"pattern\") {\n // The pattern keyword lets you define a regular expression template for the string value.\n\n const re = new RegExp(value as string);\n if (!this._value.match(re)) {\n return [\"constraint.violation.pattern\", String(value), this._value];\n }\n }\n }\n\n return undefined;\n }\n\n override __toJson(): string {\n return this.__toLiteral();\n }\n\n override __toLiteral() {\n return this._value;\n }\n\n override toString(): string {\n return this._value;\n }\n\n public override __clear(withoutNotification = false) {\n // only notify when they are changes\n const shouldNotify = this._value.length;\n this._value = \"\";\n this.__isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n if (shouldNotify && !withoutNotification) {\n this.__notifyFieldValueChange(false);\n }\n }\n}\n\nRegistry.register(\"string\", STRING);\n"]}
@@ -6,6 +6,10 @@ export class UINT32 extends FieldNode {
6
6
  return this._value;
7
7
  }
8
8
  set value(value) {
9
+ // guard for API responses which sometimes send a null instead of a value
10
+ if (typeof value !== "number") {
11
+ value = 0;
12
+ }
9
13
  this._value = value;
10
14
  this.__isEmpty = false;
11
15
  this.__climbUpValidation();
@@ -18,6 +22,10 @@ export class UINT32 extends FieldNode {
18
22
  this.__meta.typeName = "primitives.UINT32";
19
23
  }
20
24
  __updateWithLiteral(v) {
25
+ // guard for API responses which sometimes send a null instead of a value
26
+ if (typeof v !== "number") {
27
+ v = 0;
28
+ }
21
29
  this._value = v;
22
30
  this.__isEmpty = false;
23
31
  this.__notifyFieldValueChange(false);
@@ -1 +1 @@
1
- {"version":3,"file":"UINT32.js","sourceRoot":"","sources":["../../src/primitives/UINT32.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldConstraints } from \"../FieldConstraints\";\nimport { FieldNode } from \"../FieldNode\";\nimport { OPEN_MODELS_OPTIONS } from \"../OPEN_MODELS_OPTIONS\";\nimport { Registry } from \"../Registry\";\n\nexport class UINT32 extends FieldNode {\n get value(): number {\n return this._value;\n }\n\n set value(value: number) {\n this._value = value;\n this.__isEmpty = false;\n this.__climbUpValidation();\n this.__notifyFieldValueChange(true);\n }\n\n public _value: number;\n\n constructor(initData?: number, parent?: FieldNode, parentAttributeName?: string) {\n super(undefined, parent, parentAttributeName);\n this.__isPrimitive = true;\n this._value = Number.isInteger(initData) ? initData! : 0;\n this.__meta.typeName = \"primitives.UINT32\";\n }\n\n override __updateWithLiteral(v: number) {\n this._value = v;\n this.__isEmpty = false;\n this.__notifyFieldValueChange(false);\n }\n\n protected override ___updateNotEmptyPath() {\n if (this._value === 0) {\n this.___isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.___isEmpty = false;\n super.___updateNotEmptyPath();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n override __mapProtoNameJsonToJson(data: number): number {\n return data;\n }\n\n protected override __checkTypeBoundaries(): string[] | undefined {\n // check for uint32 min max boundaries\n\n if (this._value > 4294967295) {\n return [\"constraint.violation.range.uint32.max\", \"4294967295\"];\n }\n if (this._value < 0) {\n return [\"constraint.violation.range.uint32.min\", \"0\"];\n }\n return undefined;\n }\n\n protected override __checkConstraints(fieldConstraints: FieldConstraints): string[] | undefined {\n for (const [constraint, value] of Object.entries(fieldConstraints)) {\n // An uint32 has always a value if (constraint === 'required') {}\n if (constraint === \"maximum\") {\n // By default, the minimum and maximum values are included in the range. \">\" is used to check.\n if (fieldConstraints.exclusive_maximum && this._value >= value) {\n return [\"constraint.violation.exclusive_maximum\", String(value), String(this._value)];\n }\n if (this._value > value) {\n return [\"constraint.violation.maximum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"minimum\") {\n // By default, the minimum and maximum values are included in the range. \"<\" is used to check.\n if (fieldConstraints.exclusive_minimum && this._value <= value) {\n return [\"constraint.violation.exclusive_minimum\", String(value), String(this._value)];\n }\n if (this._value < value) {\n return [\"constraint.violation.minimum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"multiple_of\") {\n // Use the multiple_of keyword to specify that a number must be the multiple of another number\n // use this to define the step ??\n if (this._value % value !== 0) {\n return [\"constraint.violation.multiple_of\", String(value), String(this._value)];\n }\n }\n }\n\n return undefined;\n }\n\n override __toJson(): number {\n return this.__toLiteral();\n }\n\n override __toLiteral() {\n return this._value;\n }\n\n override valueOf(): number {\n return this._value;\n }\n\n override toString(): string {\n return this._value.toString();\n }\n\n public override __clear(withoutNotification = false) {\n // only notify when they are changes\n const shouldNotify = this._value !== 0;\n this._value = 0;\n if (shouldNotify && !withoutNotification) {\n this.__notifyFieldValueChange(false);\n }\n }\n}\n\nRegistry.register(\"uint32\", UINT32);\n"]}
1
+ {"version":3,"file":"UINT32.js","sourceRoot":"","sources":["../../src/primitives/UINT32.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldConstraints } from \"../FieldConstraints\";\nimport { FieldNode } from \"../FieldNode\";\nimport { OPEN_MODELS_OPTIONS } from \"../OPEN_MODELS_OPTIONS\";\nimport { Registry } from \"../Registry\";\n\nexport class UINT32 extends FieldNode {\n get value(): number {\n return this._value;\n }\n\n set value(value: number) {\n // guard for API responses which sometimes send a null instead of a value\n if (typeof value !== \"number\") {\n value = 0;\n }\n this._value = value;\n this.__isEmpty = false;\n this.__climbUpValidation();\n this.__notifyFieldValueChange(true);\n }\n\n public _value: number;\n\n constructor(initData?: number, parent?: FieldNode, parentAttributeName?: string) {\n super(undefined, parent, parentAttributeName);\n this.__isPrimitive = true;\n this._value = Number.isInteger(initData) ? initData! : 0;\n this.__meta.typeName = \"primitives.UINT32\";\n }\n\n override __updateWithLiteral(v: number) {\n // guard for API responses which sometimes send a null instead of a value\n if (typeof v !== \"number\") {\n v = 0;\n }\n this._value = v;\n this.__isEmpty = false;\n this.__notifyFieldValueChange(false);\n }\n\n protected override ___updateNotEmptyPath() {\n if (this._value === 0) {\n this.___isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.___isEmpty = false;\n super.___updateNotEmptyPath();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n override __mapProtoNameJsonToJson(data: number): number {\n return data;\n }\n\n protected override __checkTypeBoundaries(): string[] | undefined {\n // check for uint32 min max boundaries\n\n if (this._value > 4294967295) {\n return [\"constraint.violation.range.uint32.max\", \"4294967295\"];\n }\n if (this._value < 0) {\n return [\"constraint.violation.range.uint32.min\", \"0\"];\n }\n return undefined;\n }\n\n protected override __checkConstraints(fieldConstraints: FieldConstraints): string[] | undefined {\n for (const [constraint, value] of Object.entries(fieldConstraints)) {\n // An uint32 has always a value if (constraint === 'required') {}\n if (constraint === \"maximum\") {\n // By default, the minimum and maximum values are included in the range. \">\" is used to check.\n if (fieldConstraints.exclusive_maximum && this._value >= value) {\n return [\"constraint.violation.exclusive_maximum\", String(value), String(this._value)];\n }\n if (this._value > value) {\n return [\"constraint.violation.maximum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"minimum\") {\n // By default, the minimum and maximum values are included in the range. \"<\" is used to check.\n if (fieldConstraints.exclusive_minimum && this._value <= value) {\n return [\"constraint.violation.exclusive_minimum\", String(value), String(this._value)];\n }\n if (this._value < value) {\n return [\"constraint.violation.minimum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"multiple_of\") {\n // Use the multiple_of keyword to specify that a number must be the multiple of another number\n // use this to define the step ??\n if (this._value % value !== 0) {\n return [\"constraint.violation.multiple_of\", String(value), String(this._value)];\n }\n }\n }\n\n return undefined;\n }\n\n override __toJson(): number {\n return this.__toLiteral();\n }\n\n override __toLiteral() {\n return this._value;\n }\n\n override valueOf(): number {\n return this._value;\n }\n\n override toString(): string {\n return this._value.toString();\n }\n\n public override __clear(withoutNotification = false) {\n // only notify when they are changes\n const shouldNotify = this._value !== 0;\n this._value = 0;\n if (shouldNotify && !withoutNotification) {\n this.__notifyFieldValueChange(false);\n }\n }\n}\n\nRegistry.register(\"uint32\", UINT32);\n"]}
@@ -6,6 +6,10 @@ export class UINT64 extends FieldNode {
6
6
  return this._value;
7
7
  }
8
8
  set value(value) {
9
+ // guard for API responses which sometimes send a null instead of a value
10
+ if (typeof value !== "bigint") {
11
+ value = 0n;
12
+ }
9
13
  this._value = value;
10
14
  this.__isEmpty = false;
11
15
  this.__climbUpValidation();
@@ -18,7 +22,13 @@ export class UINT64 extends FieldNode {
18
22
  this.__meta.typeName = "primitives.UINT64";
19
23
  }
20
24
  __updateWithLiteral(v) {
21
- this._value = BigInt(v);
25
+ // guard for API responses which sometimes send a null instead of a value
26
+ if (typeof v !== "string" && typeof v !== "number" && typeof v !== "bigint") {
27
+ this._value = 0n;
28
+ }
29
+ else {
30
+ this._value = BigInt(v);
31
+ }
22
32
  this.__isEmpty = false;
23
33
  this.__notifyFieldValueChange(false);
24
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UINT64.js","sourceRoot":"","sources":["../../src/primitives/UINT64.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldConstraints } from \"../FieldConstraints\";\nimport { FieldNode } from \"../FieldNode\";\nimport { OPEN_MODELS_OPTIONS } from \"../OPEN_MODELS_OPTIONS\";\nimport { Registry } from \"../Registry\";\n\nexport class UINT64 extends FieldNode {\n get value(): bigint {\n return this._value;\n }\n\n set value(value: bigint) {\n this._value = value;\n this.__isEmpty = false;\n this.__climbUpValidation();\n this.__notifyFieldValueChange(true);\n }\n\n public _value: bigint;\n\n constructor(initData?: string, parent?: FieldNode, parentAttributeName?: string) {\n super(undefined, parent, parentAttributeName);\n this.__isPrimitive = true;\n this._value = BigInt(initData ?? \"0\");\n this.__meta.typeName = \"primitives.UINT64\";\n }\n\n override __updateWithLiteral(v: string) {\n this._value = BigInt(v);\n this.__isEmpty = false;\n this.__notifyFieldValueChange(false);\n }\n\n protected override ___updateNotEmptyPath() {\n if (this._value === 0n) {\n this.___isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.___isEmpty = false;\n super.___updateNotEmptyPath();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n override __mapProtoNameJsonToJson(data: number): number {\n return data;\n }\n\n protected override __checkTypeBoundaries(): string[] | undefined {\n if (this._value < 0n) {\n return [\"constraint.violation.range.uint64.min\", \"0\"];\n }\n return undefined;\n }\n\n protected override __checkConstraints(fieldConstraints: FieldConstraints): string[] | undefined {\n for (const [constraint, value] of Object.entries(fieldConstraints)) {\n // An uint64 has always a value if (constraint === 'required') {}\n if (constraint === \"maximum\") {\n // By default, the minimum and maximum values are included in the range. \">\" is used to check.\n if (fieldConstraints.exclusive_maximum && this._value >= value) {\n return [\"constraint.violation.exclusive_maximum\", String(value), String(this._value)];\n }\n if (this._value > value) {\n return [\"constraint.violation.maximum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"minimum\") {\n // By default, the minimum and maximum values are included in the range. \"<\" is used to check.\n if (fieldConstraints.exclusive_minimum && this._value <= value) {\n return [\"constraint.violation.exclusive_minimum\", String(value), String(this._value)];\n }\n if (this._value < value) {\n return [\"constraint.violation.minimum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"multiple_of\") {\n // Use the multiple_of keyword to specify that a number must be the multiple of another number\n // use this to define the step ??\n if (this._value % BigInt(value as string | number | bigint | boolean) !== 0n) {\n return [\"constraint.violation.multiple_of\", String(value), String(this._value)];\n }\n }\n }\n\n return undefined;\n }\n\n override __toJson(): string {\n return this.__toLiteral();\n }\n\n override __toLiteral() {\n return this._value.toString();\n }\n\n override valueOf(): bigint {\n return this._value;\n }\n\n override toString(): string {\n return this._value.toString();\n }\n\n public override __clear(withoutNotification = false) {\n // only notify when they are changes\n const shouldNotify = this._value !== 0n;\n this._value = 0n;\n if (shouldNotify && !withoutNotification) {\n this.__notifyFieldValueChange(false);\n }\n }\n}\n\nRegistry.register(\"uint64\", UINT64);\n"]}
1
+ {"version":3,"file":"UINT64.js","sourceRoot":"","sources":["../../src/primitives/UINT64.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldConstraints } from \"../FieldConstraints\";\nimport { FieldNode } from \"../FieldNode\";\nimport { OPEN_MODELS_OPTIONS } from \"../OPEN_MODELS_OPTIONS\";\nimport { Registry } from \"../Registry\";\n\nexport class UINT64 extends FieldNode {\n get value(): bigint {\n return this._value;\n }\n\n set value(value: bigint) {\n // guard for API responses which sometimes send a null instead of a value\n if (typeof value !== \"bigint\") {\n value = 0n;\n }\n this._value = value;\n this.__isEmpty = false;\n this.__climbUpValidation();\n this.__notifyFieldValueChange(true);\n }\n\n public _value: bigint;\n\n constructor(initData?: string, parent?: FieldNode, parentAttributeName?: string) {\n super(undefined, parent, parentAttributeName);\n this.__isPrimitive = true;\n this._value = BigInt(initData ?? \"0\");\n this.__meta.typeName = \"primitives.UINT64\";\n }\n\n override __updateWithLiteral(v: string) {\n // guard for API responses which sometimes send a null instead of a value\n if (typeof v !== \"string\" && typeof v !== \"number\" && typeof v !== \"bigint\") {\n this._value = 0n;\n } else {\n this._value = BigInt(v);\n }\n this.__isEmpty = false;\n this.__notifyFieldValueChange(false);\n }\n\n protected override ___updateNotEmptyPath() {\n if (this._value === 0n) {\n this.___isEmpty = !(OPEN_MODELS_OPTIONS.EmitDefaultValues || OPEN_MODELS_OPTIONS.EmitUnpopulated);\n } else {\n this.___isEmpty = false;\n super.___updateNotEmptyPath();\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n override __mapProtoNameJsonToJson(data: number): number {\n return data;\n }\n\n protected override __checkTypeBoundaries(): string[] | undefined {\n if (this._value < 0n) {\n return [\"constraint.violation.range.uint64.min\", \"0\"];\n }\n return undefined;\n }\n\n protected override __checkConstraints(fieldConstraints: FieldConstraints): string[] | undefined {\n for (const [constraint, value] of Object.entries(fieldConstraints)) {\n // An uint64 has always a value if (constraint === 'required') {}\n if (constraint === \"maximum\") {\n // By default, the minimum and maximum values are included in the range. \">\" is used to check.\n if (fieldConstraints.exclusive_maximum && this._value >= value) {\n return [\"constraint.violation.exclusive_maximum\", String(value), String(this._value)];\n }\n if (this._value > value) {\n return [\"constraint.violation.maximum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"minimum\") {\n // By default, the minimum and maximum values are included in the range. \"<\" is used to check.\n if (fieldConstraints.exclusive_minimum && this._value <= value) {\n return [\"constraint.violation.exclusive_minimum\", String(value), String(this._value)];\n }\n if (this._value < value) {\n return [\"constraint.violation.minimum\", String(value), String(this._value)];\n }\n }\n if (constraint === \"multiple_of\") {\n // Use the multiple_of keyword to specify that a number must be the multiple of another number\n // use this to define the step ??\n if (this._value % BigInt(value as string | number | bigint | boolean) !== 0n) {\n return [\"constraint.violation.multiple_of\", String(value), String(this._value)];\n }\n }\n }\n\n return undefined;\n }\n\n override __toJson(): string {\n return this.__toLiteral();\n }\n\n override __toLiteral() {\n return this._value.toString();\n }\n\n override valueOf(): bigint {\n return this._value;\n }\n\n override toString(): string {\n return this._value.toString();\n }\n\n public override __clear(withoutNotification = false) {\n // only notify when they are changes\n const shouldNotify = this._value !== 0n;\n this._value = 0n;\n if (shouldNotify && !withoutNotification) {\n this.__notifyFieldValueChange(false);\n }\n }\n}\n\nRegistry.register(\"uint64\", UINT64);\n"]}
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "url": "git+ssh://git@github.com/eclipse/eclipsefuro-web.git"
9
9
  },
10
10
  "author": "eclipse furo",
11
- "version": "1.20.2",
11
+ "version": "1.21.1",
12
12
  "type": "module",
13
13
  "main": "dist/index.js",
14
14
  "types": "dist/index.d.ts",
package/web-types.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
3
  "name": "@furo/open-models",
4
- "version": "1.20.2",
4
+ "version": "1.21.1",
5
5
  "description-markup": "markdown",
6
6
  "default-icon": "icon.svg",
7
7
  "contributions": {