Emi Headers class generator
In the context of http requests, there is always request and response headers, which is a key pair definition. Modern javascript standard is using Headers class, and Emi generates the header classes, by extending that class, and adding extra functions.
Example schema:
- name: accept-language type: string- name: authroization type: string- name: cache-time type: int64Would generate the following code:
/** * SampleHeaders class * Auto-generated from EmiAction */export class SampleHeaders extends Headers { /** * * @returns { string | null } */ getAcceptLanguage () { return this.#getTyped('accept-language', 'string | null'); } /** * * @param { string | null } value */ setAcceptLanguage (value) { if (value !== null) { this.set('accept-language', value); } return this; } /** * * @returns { string | null } */ getAuthroization () { return this.#getTyped('authroization', 'string | null'); } /** * * @param { string | null } value */ setAuthroization (value) { if (value !== null) { this.set('authroization', value); } return this; } /** * * @returns { number | null } */ getCacheTime () { return this.#getTyped('cache-time', 'number | null'); } /** * * @param { number | null } value */ setCacheTime (value) { if (value !== null) { this.set('cache-time', value); } return this; } // the getters generated by us would be casting types before returning. // you still can use .get function to get the string value. // eslint-disable-next-line no-unused-private-class-members #getTyped(key, type) { const val = this.get(key); if (val == null) return null; const t = type.toLowerCase(); if (t.includes('number')) return Number(val); if (t.includes('bool')) return val === 'true'; return val; // string or any other fallback } /** * @returns {Record<string, string>} * Converts Headers to plain object */ toObject() { return Object.fromEntries(this.entries()); }}
function isPlausibleObject(v: any) { return false }