@looker/run-it 0.9.25 → 0.9.28

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. package/CHANGELOG.md +54 -1
  2. package/lib/RunIt.d.ts +0 -2
  3. package/lib/RunIt.js +1 -4
  4. package/lib/RunIt.js.map +1 -1
  5. package/lib/components/ConfigForm/ConfigForm.d.ts +1 -2
  6. package/lib/components/ConfigForm/ConfigForm.js +34 -44
  7. package/lib/components/ConfigForm/ConfigForm.js.map +1 -1
  8. package/lib/components/ConfigForm/index.d.ts +1 -1
  9. package/lib/components/ConfigForm/index.js +4 -4
  10. package/lib/components/ConfigForm/index.js.map +1 -1
  11. package/lib/components/ConfigForm/utils.d.ts +11 -0
  12. package/lib/components/ConfigForm/utils.js +81 -0
  13. package/lib/components/ConfigForm/utils.js.map +1 -0
  14. package/lib/components/LoginForm/LoginForm.d.ts +1 -0
  15. package/lib/components/LoginForm/LoginForm.js +5 -3
  16. package/lib/components/LoginForm/LoginForm.js.map +1 -1
  17. package/lib/components/RequestForm/RequestForm.d.ts +0 -2
  18. package/lib/components/RequestForm/RequestForm.js.map +1 -1
  19. package/lib/esm/RunIt.js +2 -5
  20. package/lib/esm/RunIt.js.map +1 -1
  21. package/lib/esm/components/ConfigForm/ConfigForm.js +29 -39
  22. package/lib/esm/components/ConfigForm/ConfigForm.js.map +1 -1
  23. package/lib/esm/components/ConfigForm/index.js +1 -1
  24. package/lib/esm/components/ConfigForm/index.js.map +1 -1
  25. package/lib/esm/components/ConfigForm/utils.js +61 -0
  26. package/lib/esm/components/ConfigForm/utils.js.map +1 -0
  27. package/lib/esm/components/LoginForm/LoginForm.js +3 -2
  28. package/lib/esm/components/LoginForm/LoginForm.js.map +1 -1
  29. package/lib/esm/components/RequestForm/RequestForm.js.map +1 -1
  30. package/lib/esm/index.js +0 -1
  31. package/lib/esm/index.js.map +1 -1
  32. package/lib/index.d.ts +0 -1
  33. package/lib/index.js +0 -13
  34. package/lib/index.js.map +1 -1
  35. package/package.json +7 -7
  36. package/lib/components/ConfigForm/configUtils.d.ts +0 -39
  37. package/lib/components/ConfigForm/configUtils.js +0 -234
  38. package/lib/components/ConfigForm/configUtils.js.map +0 -1
  39. package/lib/esm/components/ConfigForm/configUtils.js +0 -198
  40. package/lib/esm/components/ConfigForm/configUtils.js.map +0 -1
  41. package/lib/esm/scenes/OAuthScene/OAuthScene.js +0 -61
  42. package/lib/esm/scenes/OAuthScene/OAuthScene.js.map +0 -1
  43. package/lib/esm/scenes/OAuthScene/index.js +0 -2
  44. package/lib/esm/scenes/OAuthScene/index.js.map +0 -1
  45. package/lib/esm/scenes/index.js +0 -2
  46. package/lib/esm/scenes/index.js.map +0 -1
  47. package/lib/scenes/OAuthScene/OAuthScene.d.ts +0 -2
  48. package/lib/scenes/OAuthScene/OAuthScene.js +0 -78
  49. package/lib/scenes/OAuthScene/OAuthScene.js.map +0 -1
  50. package/lib/scenes/OAuthScene/index.d.ts +0 -1
  51. package/lib/scenes/OAuthScene/index.js +0 -14
  52. package/lib/scenes/OAuthScene/index.js.map +0 -1
  53. package/lib/scenes/index.d.ts +0 -1
  54. package/lib/scenes/index.js +0 -14
  55. package/lib/scenes/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/RequestForm/RequestForm.tsx"],"names":["React","Button","Form","ButtonTransparent","Tooltip","Fieldset","MessageBar","LoginForm","createSimpleItem","createComplexItem","showDataChangeWarning","updateNullableProp","FormItem","RequestForm","inputs","httpMethod","handleSubmit","requestContent","setRequestContent","needsAuth","hasConfig","handleConfig","setHasConfig","validationMessage","setValidationMessage","isExtension","handleBoolChange","e","target","name","checked","handleNumberChange","value","parseFloat","undefined","newState","handleDateChange","date","handleChange","handleComplexChange","safeSetMessage","handleClear","preventDefault","map","input","type"],"mappings":"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","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { BaseSyntheticEvent, FC, Dispatch } from 'react'\nimport React from 'react'\nimport {\n Button,\n Form,\n ButtonTransparent,\n Tooltip,\n Fieldset,\n MessageBar,\n} from '@looker/components'\nimport type { RunItHttpMethod, RunItInput, RunItValues } from '../../RunIt'\nimport { LoginForm } from '../LoginForm'\nimport type { RunItSetter } from '../..'\nimport {\n createSimpleItem,\n createComplexItem,\n showDataChangeWarning,\n updateNullableProp,\n} from './formUtils'\nimport { FormItem } from './FormItem'\n\n/** Properties required by RequestForm */\ninterface RequestFormProps {\n /** Request inputs to the endpoint */\n inputs: RunItInput[]\n /** A callback for submitting the form */\n handleSubmit: (e: BaseSyntheticEvent) => void\n /** HTTP method used for this REST request */\n httpMethod: RunItHttpMethod\n /** A collection type react state to store path, query and body parameters as entered by the user */\n requestContent: RunItValues\n /** A set state callback fn for populating requestContent on interaction with the request form */\n setRequestContent: Dispatch<RunItValues>\n /** Is authentication required? */\n needsAuth: boolean\n /** Does RunIt have the configuration values it needs? */\n hasConfig: boolean\n /** Handle config button click */\n handleConfig: (e: BaseSyntheticEvent) => void\n /** Hook to refresh specifications */\n setVersionsUrl: RunItSetter\n /** A set state callback which if present allows for editing, setting or clearing OAuth configuration parameters */\n setHasConfig?: Dispatch<boolean>\n /** Validation message to display */\n validationMessage?: string\n /** Validation message setter */\n setValidationMessage?: Dispatch<string>\n /** Is RunIt being used in a Looker extension? */\n isExtension?: boolean\n}\n\n/**\n * Dynamically generates a REST request form and its form elements corresponding to parameters from an array of RunIt\n * inputs\n */\nexport const RequestForm: FC<RequestFormProps> = ({\n inputs,\n httpMethod,\n handleSubmit,\n requestContent,\n setRequestContent,\n needsAuth,\n hasConfig,\n handleConfig,\n setHasConfig,\n validationMessage,\n setValidationMessage,\n isExtension = false,\n}) => {\n const handleBoolChange = (e: BaseSyntheticEvent) => {\n setRequestContent({ ...requestContent, [e.target.name]: e.target.checked })\n }\n\n const handleNumberChange = (e: BaseSyntheticEvent) => {\n const value = e.target.value ? parseFloat(e.target.value) : undefined\n const newState = updateNullableProp(requestContent, e.target.name, value)\n setRequestContent(newState)\n }\n\n const handleDateChange = (name: string, date?: Date) => {\n const newState = updateNullableProp(requestContent, name, date)\n setRequestContent(newState)\n }\n\n const handleChange = (e: BaseSyntheticEvent) => {\n const newState = updateNullableProp(\n requestContent,\n e.target.name,\n e.target.value\n )\n setRequestContent(newState)\n }\n\n const handleComplexChange = (name: string, value: string) => {\n setRequestContent({ ...requestContent, [name]: value })\n }\n\n const safeSetMessage = (value: string) =>\n setValidationMessage && setValidationMessage(value)\n\n const handleClear = (e: BaseSyntheticEvent) => {\n e.preventDefault()\n setRequestContent({})\n safeSetMessage('')\n }\n\n return (\n <Form onSubmit={handleSubmit}>\n {validationMessage && (\n <MessageBar\n intent={'critical'}\n onPrimaryClick={() => safeSetMessage('')}\n visible={validationMessage !== ''}\n >\n {validationMessage}\n </MessageBar>\n )}\n <Fieldset>\n {inputs.map((input) =>\n typeof input.type === 'string'\n ? createSimpleItem(\n input,\n handleChange,\n handleNumberChange,\n handleBoolChange,\n handleDateChange,\n requestContent\n )\n : createComplexItem(input, handleComplexChange, requestContent)\n )}\n {httpMethod !== 'GET' && showDataChangeWarning()}\n <FormItem id=\"buttonbar\">\n <>\n {hasConfig ? (\n needsAuth ? (\n <LoginForm requestContent={requestContent} />\n ) : (\n <Tooltip content=\"Run the API request\">\n <Button type=\"submit\">Run</Button>\n </Tooltip>\n )\n ) : (\n !isExtension &&\n setHasConfig && (\n <Tooltip content=\"Configure your OAuth server to Run requests\">\n <Button onClick={handleConfig}>Configure</Button>\n </Tooltip>\n )\n )}\n <Tooltip content=\"Clear entered values\">\n <ButtonTransparent type=\"button\" onClick={handleClear}>\n Clear\n </ButtonTransparent>\n </Tooltip>\n </>\n </FormItem>\n </Fieldset>\n </Form>\n )\n}\n"],"file":"RequestForm.js"}
1
+ {"version":3,"sources":["../../../../src/components/RequestForm/RequestForm.tsx"],"names":["React","Button","Form","ButtonTransparent","Tooltip","Fieldset","MessageBar","LoginForm","createSimpleItem","createComplexItem","showDataChangeWarning","updateNullableProp","FormItem","RequestForm","inputs","httpMethod","handleSubmit","requestContent","setRequestContent","needsAuth","hasConfig","handleConfig","setHasConfig","validationMessage","setValidationMessage","isExtension","handleBoolChange","e","target","name","checked","handleNumberChange","value","parseFloat","undefined","newState","handleDateChange","date","handleChange","handleComplexChange","safeSetMessage","handleClear","preventDefault","map","input","type"],"mappings":";;;;;;AA2BA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SACEC,MADF,EAEEC,IAFF,EAGEC,iBAHF,EAIEC,OAJF,EAKEC,QALF,EAMEC,UANF,QAOO,oBAPP;AASA,SAASC,SAAT,QAA0B,cAA1B;AACA,SACEC,gBADF,EAEEC,iBAFF,EAGEC,qBAHF,EAIEC,kBAJF,QAKO,aALP;AAMA,SAASC,QAAT,QAAyB,YAAzB;AAkCA,OAAO,IAAMC,WAAiC,GAAG,QAa3C;AAAA,MAb4C;AAChDC,IAAAA,MADgD;AAEhDC,IAAAA,UAFgD;AAGhDC,IAAAA,YAHgD;AAIhDC,IAAAA,cAJgD;AAKhDC,IAAAA,iBALgD;AAMhDC,IAAAA,SANgD;AAOhDC,IAAAA,SAPgD;AAQhDC,IAAAA,YARgD;AAShDC,IAAAA,YATgD;AAUhDC,IAAAA,iBAVgD;AAWhDC,IAAAA,oBAXgD;AAYhDC,IAAAA,WAAW,GAAG;AAZkC,GAa5C;;AACJ,MAAMC,gBAAgB,GAAIC,CAAD,IAA2B;AAClDT,IAAAA,iBAAiB,iCAAMD,cAAN;AAAsB,OAACU,CAAC,CAACC,MAAF,CAASC,IAAV,GAAiBF,CAAC,CAACC,MAAF,CAASE;AAAhD,OAAjB;AACD,GAFD;;AAIA,MAAMC,kBAAkB,GAAIJ,CAAD,IAA2B;AACpD,QAAMK,KAAK,GAAGL,CAAC,CAACC,MAAF,CAASI,KAAT,GAAiBC,UAAU,CAACN,CAAC,CAACC,MAAF,CAASI,KAAV,CAA3B,GAA8CE,SAA5D;AACA,QAAMC,QAAQ,GAAGxB,kBAAkB,CAACM,cAAD,EAAiBU,CAAC,CAACC,MAAF,CAASC,IAA1B,EAAgCG,KAAhC,CAAnC;AACAd,IAAAA,iBAAiB,CAACiB,QAAD,CAAjB;AACD,GAJD;;AAMA,MAAMC,gBAAgB,GAAG,CAACP,IAAD,EAAeQ,IAAf,KAA+B;AACtD,QAAMF,QAAQ,GAAGxB,kBAAkB,CAACM,cAAD,EAAiBY,IAAjB,EAAuBQ,IAAvB,CAAnC;AACAnB,IAAAA,iBAAiB,CAACiB,QAAD,CAAjB;AACD,GAHD;;AAKA,MAAMG,YAAY,GAAIX,CAAD,IAA2B;AAC9C,QAAMQ,QAAQ,GAAGxB,kBAAkB,CACjCM,cADiC,EAEjCU,CAAC,CAACC,MAAF,CAASC,IAFwB,EAGjCF,CAAC,CAACC,MAAF,CAASI,KAHwB,CAAnC;AAKAd,IAAAA,iBAAiB,CAACiB,QAAD,CAAjB;AACD,GAPD;;AASA,MAAMI,mBAAmB,GAAG,CAACV,IAAD,EAAeG,KAAf,KAAiC;AAC3Dd,IAAAA,iBAAiB,iCAAMD,cAAN;AAAsB,OAACY,IAAD,GAAQG;AAA9B,OAAjB;AACD,GAFD;;AAIA,MAAMQ,cAAc,GAAIR,KAAD,IACrBR,oBAAoB,IAAIA,oBAAoB,CAACQ,KAAD,CAD9C;;AAGA,MAAMS,WAAW,GAAId,CAAD,IAA2B;AAC7CA,IAAAA,CAAC,CAACe,cAAF;AACAxB,IAAAA,iBAAiB,CAAC,EAAD,CAAjB;AACAsB,IAAAA,cAAc,CAAC,EAAD,CAAd;AACD,GAJD;;AAMA,SACE,oBAAC,IAAD;AAAM,IAAA,QAAQ,EAAExB;AAAhB,KACGO,iBAAiB,IAChB,oBAAC,UAAD;AACE,IAAA,MAAM,EAAE,UADV;AAEE,IAAA,cAAc,EAAE,MAAMiB,cAAc,CAAC,EAAD,CAFtC;AAGE,IAAA,OAAO,EAAEjB,iBAAiB,KAAK;AAHjC,KAKGA,iBALH,CAFJ,EAUE,oBAAC,QAAD,QACGT,MAAM,CAAC6B,GAAP,CAAYC,KAAD,IACV,OAAOA,KAAK,CAACC,IAAb,KAAsB,QAAtB,GACIrC,gBAAgB,CACdoC,KADc,EAEdN,YAFc,EAGdP,kBAHc,EAIdL,gBAJc,EAKdU,gBALc,EAMdnB,cANc,CADpB,GASIR,iBAAiB,CAACmC,KAAD,EAAQL,mBAAR,EAA6BtB,cAA7B,CAVtB,CADH,EAaGF,UAAU,KAAK,KAAf,IAAwBL,qBAAqB,EAbhD,EAcE,oBAAC,QAAD;AAAU,IAAA,EAAE,EAAC;AAAb,KACE,0CACGU,SAAS,GACRD,SAAS,GACP,oBAAC,SAAD;AAAW,IAAA,cAAc,EAAEF;AAA3B,IADO,GAGP,oBAAC,OAAD;AAAS,IAAA,OAAO,EAAC;AAAjB,KACE,oBAAC,MAAD;AAAQ,IAAA,IAAI,EAAC;AAAb,WADF,CAJM,GASR,CAACQ,WAAD,IACAH,YADA,IAEE,oBAAC,OAAD;AAAS,IAAA,OAAO,EAAC;AAAjB,KACE,oBAAC,MAAD;AAAQ,IAAA,OAAO,EAAED;AAAjB,iBADF,CAZN,EAiBE,oBAAC,OAAD;AAAS,IAAA,OAAO,EAAC;AAAjB,KACE,oBAAC,iBAAD;AAAmB,IAAA,IAAI,EAAC,QAAxB;AAAiC,IAAA,OAAO,EAAEoB;AAA1C,aADF,CAjBF,CADF,CAdF,CAVF,CADF;AAqDD,CAxGM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { BaseSyntheticEvent, FC, Dispatch } from 'react'\nimport React from 'react'\nimport {\n Button,\n Form,\n ButtonTransparent,\n Tooltip,\n Fieldset,\n MessageBar,\n} from '@looker/components'\nimport type { RunItHttpMethod, RunItInput, RunItValues } from '../../RunIt'\nimport { LoginForm } from '../LoginForm'\nimport {\n createSimpleItem,\n createComplexItem,\n showDataChangeWarning,\n updateNullableProp,\n} from './formUtils'\nimport { FormItem } from './FormItem'\n\n/** Properties required by RequestForm */\ninterface RequestFormProps {\n /** Request inputs to the endpoint */\n inputs: RunItInput[]\n /** A callback for submitting the form */\n handleSubmit: (e: BaseSyntheticEvent) => void\n /** HTTP method used for this REST request */\n httpMethod: RunItHttpMethod\n /** A collection type react state to store path, query and body parameters as entered by the user */\n requestContent: RunItValues\n /** A set state callback fn for populating requestContent on interaction with the request form */\n setRequestContent: Dispatch<RunItValues>\n /** Is authentication required? */\n needsAuth: boolean\n /** Does RunIt have the configuration values it needs? */\n hasConfig: boolean\n /** Handle config button click */\n handleConfig: (e: BaseSyntheticEvent) => void\n /** A set state callback which if present allows for editing, setting or clearing OAuth configuration parameters */\n setHasConfig?: Dispatch<boolean>\n /** Validation message to display */\n validationMessage?: string\n /** Validation message setter */\n setValidationMessage?: Dispatch<string>\n /** Is RunIt being used in a Looker extension? */\n isExtension?: boolean\n}\n\n/**\n * Dynamically generates a REST request form and its form elements corresponding to parameters from an array of RunIt\n * inputs\n */\nexport const RequestForm: FC<RequestFormProps> = ({\n inputs,\n httpMethod,\n handleSubmit,\n requestContent,\n setRequestContent,\n needsAuth,\n hasConfig,\n handleConfig,\n setHasConfig,\n validationMessage,\n setValidationMessage,\n isExtension = false,\n}) => {\n const handleBoolChange = (e: BaseSyntheticEvent) => {\n setRequestContent({ ...requestContent, [e.target.name]: e.target.checked })\n }\n\n const handleNumberChange = (e: BaseSyntheticEvent) => {\n const value = e.target.value ? parseFloat(e.target.value) : undefined\n const newState = updateNullableProp(requestContent, e.target.name, value)\n setRequestContent(newState)\n }\n\n const handleDateChange = (name: string, date?: Date) => {\n const newState = updateNullableProp(requestContent, name, date)\n setRequestContent(newState)\n }\n\n const handleChange = (e: BaseSyntheticEvent) => {\n const newState = updateNullableProp(\n requestContent,\n e.target.name,\n e.target.value\n )\n setRequestContent(newState)\n }\n\n const handleComplexChange = (name: string, value: string) => {\n setRequestContent({ ...requestContent, [name]: value })\n }\n\n const safeSetMessage = (value: string) =>\n setValidationMessage && setValidationMessage(value)\n\n const handleClear = (e: BaseSyntheticEvent) => {\n e.preventDefault()\n setRequestContent({})\n safeSetMessage('')\n }\n\n return (\n <Form onSubmit={handleSubmit}>\n {validationMessage && (\n <MessageBar\n intent={'critical'}\n onPrimaryClick={() => safeSetMessage('')}\n visible={validationMessage !== ''}\n >\n {validationMessage}\n </MessageBar>\n )}\n <Fieldset>\n {inputs.map((input) =>\n typeof input.type === 'string'\n ? createSimpleItem(\n input,\n handleChange,\n handleNumberChange,\n handleBoolChange,\n handleDateChange,\n requestContent\n )\n : createComplexItem(input, handleComplexChange, requestContent)\n )}\n {httpMethod !== 'GET' && showDataChangeWarning()}\n <FormItem id=\"buttonbar\">\n <>\n {hasConfig ? (\n needsAuth ? (\n <LoginForm requestContent={requestContent} />\n ) : (\n <Tooltip content=\"Run the API request\">\n <Button type=\"submit\">Run</Button>\n </Tooltip>\n )\n ) : (\n !isExtension &&\n setHasConfig && (\n <Tooltip content=\"Configure your OAuth server to Run requests\">\n <Button onClick={handleConfig}>Configure</Button>\n </Tooltip>\n )\n )}\n <Tooltip content=\"Clear entered values\">\n <ButtonTransparent type=\"button\" onClick={handleClear}>\n Clear\n </ButtonTransparent>\n </Tooltip>\n </>\n </FormItem>\n </Fieldset>\n </Form>\n )\n}\n"],"file":"RequestForm.js"}
package/lib/esm/index.js CHANGED
@@ -2,5 +2,4 @@ export * from './RunIt';
2
2
  export * from './RunItProvider';
3
3
  export * from './utils';
4
4
  export * from './components';
5
- export * from './scenes';
6
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":"AA0BA,cAAc,SAAd;AACA,cAAc,iBAAd;AACA,cAAc,SAAd;AACA,cAAc,cAAd;AACA,cAAc,UAAd","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nexport * from './RunIt'\nexport * from './RunItProvider'\nexport * from './utils'\nexport * from './components'\nexport * from './scenes'\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":"AA0BA,cAAc,SAAd;AACA,cAAc,iBAAd;AACA,cAAc,SAAd;AACA,cAAc,cAAd","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nexport * from './RunIt'\nexport * from './RunItProvider'\nexport * from './utils'\nexport * from './components'\n"],"file":"index.js"}
package/lib/index.d.ts CHANGED
@@ -2,4 +2,3 @@ export * from './RunIt';
2
2
  export * from './RunItProvider';
3
3
  export * from './utils';
4
4
  export * from './components';
5
- export * from './scenes';
package/lib/index.js CHANGED
@@ -55,17 +55,4 @@ Object.keys(_components).forEach(function (key) {
55
55
  }
56
56
  });
57
57
  });
58
-
59
- var _scenes = require("./scenes");
60
-
61
- Object.keys(_scenes).forEach(function (key) {
62
- if (key === "default" || key === "__esModule") return;
63
- if (key in exports && exports[key] === _scenes[key]) return;
64
- Object.defineProperty(exports, key, {
65
- enumerable: true,
66
- get: function get() {
67
- return _scenes[key];
68
- }
69
- });
70
- });
71
58
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AA0BA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nexport * from './RunIt'\nexport * from './RunItProvider'\nexport * from './utils'\nexport * from './components'\nexport * from './scenes'\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AA0BA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nexport * from './RunIt'\nexport * from './RunItProvider'\nexport * from './utils'\nexport * from './components'\n"],"file":"index.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@looker/run-it",
3
- "version": "0.9.25",
3
+ "version": "0.9.28",
4
4
  "description": "A dynamic REST request input form and response visualizer",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/esm/index.js",
@@ -51,16 +51,16 @@
51
51
  "webpack-dev-server": "^3.11.2"
52
52
  },
53
53
  "dependencies": {
54
- "@looker/code-editor": "^0.1.16",
54
+ "@looker/code-editor": "^0.1.18",
55
55
  "@looker/components": "^2.8.1",
56
56
  "@looker/components-date": "^2.4.1",
57
57
  "@looker/design-tokens": "^2.7.1",
58
- "@looker/extension-utils": "^0.1.2",
58
+ "@looker/extension-utils": "^0.1.5",
59
59
  "@looker/icons": "^1.5.3",
60
- "@looker/sdk": "^21.20.0",
61
- "@looker/sdk-codegen": "^21.3.0",
60
+ "@looker/sdk": "^22.2.0",
61
+ "@looker/sdk-codegen": "^21.4.0",
62
62
  "@looker/sdk-codegen-utils": "^21.0.11",
63
- "@looker/sdk-rtl": "^21.3.0",
63
+ "@looker/sdk-rtl": "^21.3.2",
64
64
  "@styled-icons/material": "^10.28.0",
65
65
  "@styled-icons/material-outlined": "^10.28.0",
66
66
  "@styled-icons/material-rounded": "^10.28.0",
@@ -73,5 +73,5 @@
73
73
  "react-is": "^16.13.1",
74
74
  "styled-components": "^5.2.1"
75
75
  },
76
- "gitHead": "cde39cf1f69fd047f218670dc63daee2c1d32e92"
76
+ "gitHead": "a2263422a52940fdc3d5d8c3f0a9de210cb1f24b"
77
77
  }
@@ -1,39 +0,0 @@
1
- import type { ILookerVersions, SpecItem, SpecList } from '@looker/sdk-codegen';
2
- import { ApiModel } from '@looker/sdk-codegen';
3
- import type { RunItValues } from '../..';
4
- export declare type StorageLocation = 'session' | 'local';
5
- export declare const RunItConfigKey = "RunItConfig";
6
- export declare const RunItFormKey = "RunItForm";
7
- export declare const RunItNoConfig: {
8
- base_url: string;
9
- looker_url: string;
10
- };
11
- export interface IStorageValue {
12
- location: StorageLocation;
13
- value: string;
14
- }
15
- export declare type ApiSpecFetcher = (version: string, name: string) => Promise<string | RunItValues>;
16
- export declare type ParsedSpec = ApiModel | undefined;
17
- export interface RunItConfigurator {
18
- getStorage: (key: string, defaultValue?: string) => IStorageValue;
19
- setStorage(key: string, value: string, location: 'local' | 'session'): string;
20
- removeStorage(key: string): void;
21
- }
22
- export interface ILoadedSpecs {
23
- baseUrl: string;
24
- webUrl: string;
25
- headless: boolean;
26
- specs: SpecList;
27
- fetchResult: string;
28
- }
29
- export interface IAPIXConfig extends ILookerVersions {
30
- headless?: boolean;
31
- }
32
- export declare const validateUrl: (url: string) => string;
33
- export declare const getUrl: (url: string) => Promise<string | RunItValues>;
34
- export declare const fullify: (uri: string, baseUrl: string) => string;
35
- export declare const funFetch: (version: string, name: string) => Promise<string>;
36
- export declare const specUrlFetch: (url: string) => Promise<ParsedSpec>;
37
- export declare const loadSpecsFromVersions: (url: string, content?: string | Record<string, unknown>, defer?: boolean) => Promise<ILoadedSpecs>;
38
- export declare const sdkSpecFetch: (spec: SpecItem, fetcher: ApiSpecFetcher) => Promise<ParsedSpec>;
39
- export declare const fallbackFetch: (spec: SpecItem, fetcher: ApiSpecFetcher) => Promise<ParsedSpec>;
@@ -1,234 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.fallbackFetch = exports.sdkSpecFetch = exports.loadSpecsFromVersions = exports.specUrlFetch = exports.funFetch = exports.fullify = exports.getUrl = exports.validateUrl = exports.RunItNoConfig = exports.RunItFormKey = exports.RunItConfigKey = void 0;
7
-
8
- var _sdkCodegen = require("@looker/sdk-codegen");
9
-
10
- var _sdkRtl = require("@looker/sdk-rtl");
11
-
12
- var _sdk = require("@looker/sdk");
13
-
14
- var _extensionUtils = require("@looker/extension-utils");
15
-
16
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
17
-
18
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
19
-
20
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
21
-
22
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
23
-
24
- function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
25
-
26
- var RunItConfigKey = 'RunItConfig';
27
- exports.RunItConfigKey = RunItConfigKey;
28
- var RunItFormKey = 'RunItForm';
29
- exports.RunItFormKey = RunItFormKey;
30
- var RunItNoConfig = {
31
- base_url: '',
32
- looker_url: ''
33
- };
34
- exports.RunItNoConfig = RunItNoConfig;
35
-
36
- var validateUrl = url => {
37
- try {
38
- var result = new URL(url);
39
- if (url.endsWith(':')) return url;
40
- return result.origin;
41
- } catch (_unused) {
42
- return '';
43
- }
44
- };
45
-
46
- exports.validateUrl = validateUrl;
47
-
48
- var makeApi = content => {
49
- var json;
50
-
51
- if (typeof content === 'string') {
52
- json = JSON.parse(content);
53
- } else {
54
- json = content;
55
- }
56
-
57
- json = (0, _sdkCodegen.upgradeSpecObject)(json);
58
- return _sdkCodegen.ApiModel.fromJson(json);
59
- };
60
-
61
- var getUrl = function () {
62
- var _ref = _asyncToGenerator(function* (url) {
63
- var settings = _objectSpread(_objectSpread({}, (0, _sdkRtl.DefaultSettings)()), {
64
- base_url: url,
65
- verify_ssl: false
66
- });
67
-
68
- var xp = new _sdkRtl.BrowserTransport(settings);
69
- var response = yield xp.rawRequest('GET', url);
70
- return response.body;
71
- });
72
-
73
- return function getUrl(_x) {
74
- return _ref.apply(this, arguments);
75
- };
76
- }();
77
-
78
- exports.getUrl = getUrl;
79
-
80
- var fullify = (uri, baseUrl) => {
81
- if (uri.match(/^https?:/)) {
82
- return uri;
83
- }
84
-
85
- var url = new URL(uri, baseUrl);
86
- return url.toString();
87
- };
88
-
89
- exports.fullify = fullify;
90
-
91
- var apiSpecBits = spec => {
92
- var _spec$specURL;
93
-
94
- return ((_spec$specURL = spec.specURL) === null || _spec$specURL === void 0 ? void 0 : _spec$specURL.split('/').slice(-2)) || [];
95
- };
96
-
97
- var funFetch = (version, name) => {
98
- var sdk = (0, _extensionUtils.getEnvAdaptor)().sdk;
99
- return sdk.ok((0, _sdk.api_spec)(sdk, version, name));
100
- };
101
-
102
- exports.funFetch = funFetch;
103
-
104
- var specUrlFetch = function () {
105
- var _ref2 = _asyncToGenerator(function* (url) {
106
- try {
107
- var content = yield getUrl(url);
108
- return makeApi(content);
109
- } catch (error) {
110
- return undefined;
111
- }
112
- });
113
-
114
- return function specUrlFetch(_x2) {
115
- return _ref2.apply(this, arguments);
116
- };
117
- }();
118
-
119
- exports.specUrlFetch = specUrlFetch;
120
-
121
- var loadSpecsFromVersions = function () {
122
- var _ref3 = _asyncToGenerator(function* (url) {
123
- var content = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
124
- var defer = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
125
- var fetchResult = '';
126
- var specs = {};
127
- var baseUrl = '';
128
- var webUrl = '';
129
- var headless = false;
130
-
131
- try {
132
- if (!content) {
133
- content = yield getUrl(url);
134
- }
135
-
136
- var versions = typeof content === 'string' ? JSON.parse(content) : content;
137
- var origin = window.location.origin;
138
- baseUrl = versions.api_server_url;
139
- webUrl = versions.web_server_url;
140
-
141
- if (versions.headless !== undefined) {
142
- headless = versions.headless;
143
- }
144
-
145
- var fetchSpec = function () {
146
- var _ref4 = _asyncToGenerator(function* (spec) {
147
- if (spec.specURL) {
148
- spec.specURL = fullify(spec.specURL, origin);
149
-
150
- if (!defer) {
151
- spec.api = yield fallbackFetch(spec, funFetch);
152
- }
153
- }
154
-
155
- return spec.api;
156
- });
157
-
158
- return function fetchSpec(_x4) {
159
- return _ref4.apply(this, arguments);
160
- };
161
- }();
162
-
163
- specs = yield (0, _sdkCodegen.getSpecsFromVersions)(versions, fetchSpec);
164
- } catch (e) {
165
- fetchResult = e.message;
166
- }
167
-
168
- return {
169
- baseUrl,
170
- webUrl,
171
- specs,
172
- headless,
173
- fetchResult: fetchResult
174
- };
175
- });
176
-
177
- return function loadSpecsFromVersions(_x3) {
178
- return _ref3.apply(this, arguments);
179
- };
180
- }();
181
-
182
- exports.loadSpecsFromVersions = loadSpecsFromVersions;
183
-
184
- var sdkSpecFetch = function () {
185
- var _ref5 = _asyncToGenerator(function* (spec, fetcher) {
186
- if (spec.api) return spec.api;
187
- if (!spec.specURL) return undefined;
188
- var [version, name] = apiSpecBits(spec);
189
- var content = yield fetcher(version, name);
190
- return makeApi(content);
191
- });
192
-
193
- return function sdkSpecFetch(_x5, _x6) {
194
- return _ref5.apply(this, arguments);
195
- };
196
- }();
197
-
198
- exports.sdkSpecFetch = sdkSpecFetch;
199
-
200
- var fallbackFetch = function () {
201
- var _ref6 = _asyncToGenerator(function* (spec, fetcher) {
202
- if (spec.api) return spec.api;
203
- if (!spec.specURL) return undefined;
204
- var api;
205
-
206
- try {
207
- api = yield specUrlFetch(spec.specURL);
208
- } catch (error) {
209
- console.error({
210
- error
211
- });
212
- }
213
-
214
- if (!api) {
215
- var sdk = (0, _extensionUtils.getEnvAdaptor)().sdk;
216
- var authed = sdk.authSession.isAuthenticated();
217
-
218
- if (!authed) {
219
- yield sdk.authSession.login();
220
- }
221
-
222
- api = yield sdkSpecFetch(spec, fetcher);
223
- }
224
-
225
- return api;
226
- });
227
-
228
- return function fallbackFetch(_x7, _x8) {
229
- return _ref6.apply(this, arguments);
230
- };
231
- }();
232
-
233
- exports.fallbackFetch = fallbackFetch;
234
- //# sourceMappingURL=configUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/ConfigForm/configUtils.ts"],"names":["RunItConfigKey","RunItFormKey","RunItNoConfig","base_url","looker_url","validateUrl","url","result","URL","endsWith","origin","makeApi","content","json","JSON","parse","ApiModel","fromJson","getUrl","settings","verify_ssl","xp","BrowserTransport","response","rawRequest","body","fullify","uri","baseUrl","match","toString","apiSpecBits","spec","specURL","split","slice","funFetch","version","name","sdk","ok","specUrlFetch","error","undefined","loadSpecsFromVersions","defer","fetchResult","specs","webUrl","headless","versions","window","location","api_server_url","web_server_url","fetchSpec","api","fallbackFetch","e","message","sdkSpecFetch","fetcher","console","authed","authSession","isAuthenticated","login"],"mappings":"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","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { ILookerVersions, SpecItem, SpecList } from '@looker/sdk-codegen'\nimport {\n ApiModel,\n getSpecsFromVersions,\n upgradeSpecObject,\n} from '@looker/sdk-codegen'\nimport { BrowserTransport, DefaultSettings } from '@looker/sdk-rtl'\nimport { api_spec } from '@looker/sdk'\nimport { getEnvAdaptor } from '@looker/extension-utils'\n\nimport type { RunItValues } from '../..'\n\nexport type StorageLocation = 'session' | 'local'\nexport const RunItConfigKey = 'RunItConfig'\nexport const RunItFormKey = 'RunItForm'\nexport const RunItNoConfig = { base_url: '', looker_url: '' }\n\n/** Object returned from storage service */\nexport interface IStorageValue {\n /** Location of the stored object */\n location: StorageLocation\n /** Stored string representation of the value (usually JSON) */\n value: string\n}\n\n/** function to retrieve a spec based on version and name */\nexport type ApiSpecFetcher = (\n version: string,\n name: string\n) => Promise<string | RunItValues>\n\n/** Either the spec is parsed or it's undefined */\nexport type ParsedSpec = ApiModel | undefined\n\n/** service abstraction for extension and browser based usage */\nexport interface RunItConfigurator {\n getStorage: (key: string, defaultValue?: string) => IStorageValue\n setStorage(key: string, value: string, location: 'local' | 'session'): string\n removeStorage(key: string): void\n}\n\n/** Processed specifications */\nexport interface ILoadedSpecs {\n /** API server url */\n baseUrl: string\n /** Web server url */\n webUrl: string\n /** should APIX run headless? */\n headless: boolean\n /** loaded specifications */\n specs: SpecList\n /** communication errors */\n fetchResult: string\n}\n\n/** Extends versions payload with headless toggle for API Explorer */\nexport interface IAPIXConfig extends ILookerVersions {\n headless?: boolean\n}\n\n/**\n * Validates URL and standardizes it\n * @param url to validate\n * @returns the standardized url.origin if it's valid, or an empty string if it's not\n */\nexport const validateUrl = (url: string): string => {\n try {\n const result = new URL(url)\n if (url.endsWith(':')) return url\n return result.origin\n } catch {\n return ''\n }\n}\n\n/**\n * Convert content into an ApiModel\n * @param content to convert\n */\nconst makeApi = (content: string | RunItValues) => {\n let json\n if (typeof content === 'string') {\n json = JSON.parse(content)\n } else {\n json = content\n }\n json = upgradeSpecObject(json)\n return ApiModel.fromJson(json)\n}\n\n/**\n * Use the browser transport to GET a url\n * @param url to fetch\n */\nexport const getUrl = async (url: string): Promise<string | RunItValues> => {\n const settings = {\n ...DefaultSettings(),\n ...{ base_url: url, verify_ssl: false },\n }\n const xp = new BrowserTransport(settings)\n const response = await xp.rawRequest('GET', url)\n return response.body\n}\n\n/**\n * Ensure the URI is a full URL\n * @param uri possible relative path\n * @param baseUrl base url for qualifying full path\n */\nexport const fullify = (uri: string, baseUrl: string): string => {\n if (uri.match(/^https?:/)) {\n return uri\n }\n const url = new URL(uri, baseUrl)\n return url.toString()\n}\n/**\n * parse spec url into version and name for api_spec cccall\n * @param spec to parse\n */\nconst apiSpecBits = (spec: SpecItem): string[] =>\n spec.specURL?.split('/').slice(-2) || []\n\n/**\n * Use the functional api_spec fetch\n * @param version to retrieve\n * @param name to retrieve\n */\nexport const funFetch = (version: string, name: string): Promise<string> => {\n const sdk = getEnvAdaptor().sdk\n return sdk.ok(api_spec(sdk, version, name))\n}\n\n/**\n * try to fetch a spec by URL, trap any errors and return undefined\n * @param url to convert to an API spec\n */\nexport const specUrlFetch = async (url: string): Promise<ParsedSpec> => {\n try {\n const content = await getUrl(url)\n return makeApi(content)\n } catch (error) {\n return undefined\n }\n}\n\n/**\n * Load versions payload and retrieve all supported specs\n *\n * The versions payload should match the structure of Looker's /versions endpoint\n *\n * @param url that has an unauthenticated versions payload. For Looker, this is <LookerHostName>/versions\n * @param content content of versions payload that may already be assigned\n * @param defer true to defer fetching and parsing the spec. Defaults to true.\n */\nexport const loadSpecsFromVersions = async (\n url: string,\n content: string | Record<string, unknown> = '',\n defer = true\n): Promise<ILoadedSpecs> => {\n let fetchResult = ''\n let specs: SpecList = {}\n let baseUrl = ''\n let webUrl = ''\n let headless = false\n try {\n if (!content) {\n content = await getUrl(url)\n }\n const versions = (\n typeof content === 'string' ? JSON.parse(content) : content\n ) as IAPIXConfig\n const origin = (window as any).location.origin\n baseUrl = versions.api_server_url\n webUrl = versions.web_server_url\n if (versions.headless !== undefined) {\n headless = versions.headless\n }\n const fetchSpec = async (spec: SpecItem) => {\n if (spec.specURL) {\n spec.specURL = fullify(spec.specURL, origin)\n if (!defer) {\n spec.api = await fallbackFetch(spec, funFetch)\n }\n }\n return spec.api\n }\n specs = await getSpecsFromVersions(versions, fetchSpec)\n } catch (e: any) {\n fetchResult = e.message\n }\n\n return {\n baseUrl,\n webUrl,\n specs,\n headless,\n fetchResult: fetchResult,\n }\n}\n\n/**\n * fetch and compile an API specification to an ApiModel if it's not already available\n *\n * **NOTE**: This uses Looker API 4.0 to fetch the specification so fetch works with CORS\n *\n * @param spec to fetch and compile\n * @param fetcher function to retrieve API spec content\n */\nexport const sdkSpecFetch = async (\n spec: SpecItem,\n fetcher: ApiSpecFetcher\n): Promise<ParsedSpec> => {\n if (spec.api) return spec.api\n if (!spec.specURL) return undefined\n const [version, name] = apiSpecBits(spec)\n const content = await fetcher(version, name)\n return makeApi(content)\n}\n\n/** Attempt to retrieve spec by URL, then api_spec SDK call\n *\n * @param spec to fetch\n * @param fetcher function to retrieve and parse spec\n */\nexport const fallbackFetch = async (\n spec: SpecItem,\n fetcher: ApiSpecFetcher\n): Promise<ParsedSpec> => {\n if (spec.api) return spec.api\n if (!spec.specURL) return undefined\n let api: ParsedSpec\n try {\n api = await specUrlFetch(spec.specURL)\n } catch (error) {\n console.error({ error })\n }\n if (!api) {\n const sdk = getEnvAdaptor().sdk\n const authed = sdk.authSession.isAuthenticated()\n if (!authed) {\n await sdk.authSession.login()\n }\n api = await sdkSpecFetch(spec, fetcher)\n }\n return api\n}\n"],"file":"configUtils.js"}
@@ -1,198 +0,0 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
2
-
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
4
-
5
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
-
7
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
8
-
9
- function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
10
-
11
- import { ApiModel, getSpecsFromVersions, upgradeSpecObject } from '@looker/sdk-codegen';
12
- import { BrowserTransport, DefaultSettings } from '@looker/sdk-rtl';
13
- import { api_spec } from '@looker/sdk';
14
- import { getEnvAdaptor } from '@looker/extension-utils';
15
- export var RunItConfigKey = 'RunItConfig';
16
- export var RunItFormKey = 'RunItForm';
17
- export var RunItNoConfig = {
18
- base_url: '',
19
- looker_url: ''
20
- };
21
- export var validateUrl = url => {
22
- try {
23
- var result = new URL(url);
24
- if (url.endsWith(':')) return url;
25
- return result.origin;
26
- } catch (_unused) {
27
- return '';
28
- }
29
- };
30
-
31
- var makeApi = content => {
32
- var json;
33
-
34
- if (typeof content === 'string') {
35
- json = JSON.parse(content);
36
- } else {
37
- json = content;
38
- }
39
-
40
- json = upgradeSpecObject(json);
41
- return ApiModel.fromJson(json);
42
- };
43
-
44
- export var getUrl = function () {
45
- var _ref = _asyncToGenerator(function* (url) {
46
- var settings = _objectSpread(_objectSpread({}, DefaultSettings()), {
47
- base_url: url,
48
- verify_ssl: false
49
- });
50
-
51
- var xp = new BrowserTransport(settings);
52
- var response = yield xp.rawRequest('GET', url);
53
- return response.body;
54
- });
55
-
56
- return function getUrl(_x) {
57
- return _ref.apply(this, arguments);
58
- };
59
- }();
60
- export var fullify = (uri, baseUrl) => {
61
- if (uri.match(/^https?:/)) {
62
- return uri;
63
- }
64
-
65
- var url = new URL(uri, baseUrl);
66
- return url.toString();
67
- };
68
-
69
- var apiSpecBits = spec => {
70
- var _spec$specURL;
71
-
72
- return ((_spec$specURL = spec.specURL) === null || _spec$specURL === void 0 ? void 0 : _spec$specURL.split('/').slice(-2)) || [];
73
- };
74
-
75
- export var funFetch = (version, name) => {
76
- var sdk = getEnvAdaptor().sdk;
77
- return sdk.ok(api_spec(sdk, version, name));
78
- };
79
- export var specUrlFetch = function () {
80
- var _ref2 = _asyncToGenerator(function* (url) {
81
- try {
82
- var content = yield getUrl(url);
83
- return makeApi(content);
84
- } catch (error) {
85
- return undefined;
86
- }
87
- });
88
-
89
- return function specUrlFetch(_x2) {
90
- return _ref2.apply(this, arguments);
91
- };
92
- }();
93
- export var loadSpecsFromVersions = function () {
94
- var _ref3 = _asyncToGenerator(function* (url) {
95
- var content = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
96
- var defer = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
97
- var fetchResult = '';
98
- var specs = {};
99
- var baseUrl = '';
100
- var webUrl = '';
101
- var headless = false;
102
-
103
- try {
104
- if (!content) {
105
- content = yield getUrl(url);
106
- }
107
-
108
- var versions = typeof content === 'string' ? JSON.parse(content) : content;
109
- var origin = window.location.origin;
110
- baseUrl = versions.api_server_url;
111
- webUrl = versions.web_server_url;
112
-
113
- if (versions.headless !== undefined) {
114
- headless = versions.headless;
115
- }
116
-
117
- var fetchSpec = function () {
118
- var _ref4 = _asyncToGenerator(function* (spec) {
119
- if (spec.specURL) {
120
- spec.specURL = fullify(spec.specURL, origin);
121
-
122
- if (!defer) {
123
- spec.api = yield fallbackFetch(spec, funFetch);
124
- }
125
- }
126
-
127
- return spec.api;
128
- });
129
-
130
- return function fetchSpec(_x4) {
131
- return _ref4.apply(this, arguments);
132
- };
133
- }();
134
-
135
- specs = yield getSpecsFromVersions(versions, fetchSpec);
136
- } catch (e) {
137
- fetchResult = e.message;
138
- }
139
-
140
- return {
141
- baseUrl,
142
- webUrl,
143
- specs,
144
- headless,
145
- fetchResult: fetchResult
146
- };
147
- });
148
-
149
- return function loadSpecsFromVersions(_x3) {
150
- return _ref3.apply(this, arguments);
151
- };
152
- }();
153
- export var sdkSpecFetch = function () {
154
- var _ref5 = _asyncToGenerator(function* (spec, fetcher) {
155
- if (spec.api) return spec.api;
156
- if (!spec.specURL) return undefined;
157
- var [version, name] = apiSpecBits(spec);
158
- var content = yield fetcher(version, name);
159
- return makeApi(content);
160
- });
161
-
162
- return function sdkSpecFetch(_x5, _x6) {
163
- return _ref5.apply(this, arguments);
164
- };
165
- }();
166
- export var fallbackFetch = function () {
167
- var _ref6 = _asyncToGenerator(function* (spec, fetcher) {
168
- if (spec.api) return spec.api;
169
- if (!spec.specURL) return undefined;
170
- var api;
171
-
172
- try {
173
- api = yield specUrlFetch(spec.specURL);
174
- } catch (error) {
175
- console.error({
176
- error
177
- });
178
- }
179
-
180
- if (!api) {
181
- var sdk = getEnvAdaptor().sdk;
182
- var authed = sdk.authSession.isAuthenticated();
183
-
184
- if (!authed) {
185
- yield sdk.authSession.login();
186
- }
187
-
188
- api = yield sdkSpecFetch(spec, fetcher);
189
- }
190
-
191
- return api;
192
- });
193
-
194
- return function fallbackFetch(_x7, _x8) {
195
- return _ref6.apply(this, arguments);
196
- };
197
- }();
198
- //# sourceMappingURL=configUtils.js.map