@looker/sdk-codegen-scripts 21.5.39 → 21.5.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -286,6 +286,32 @@
286
286
  * @looker/sdk-codegen-utils bumped from 21.0.28 to 21.0.29
287
287
  * @looker/sdk-node bumped from 26.0.0 to 26.2.0
288
288
 
289
+ ### Dependencies
290
+
291
+ * The following workspace dependencies were updated
292
+ * dependencies
293
+ * @looker/sdk bumped from 26.4.0 to 26.6.0
294
+ * @looker/sdk-codegen bumped from 21.11.0 to 21.11.1
295
+ * @looker/sdk-codegen-utils bumped from 21.0.30 to 21.0.31
296
+ * @looker/sdk-node bumped from 26.4.0 to 26.6.0
297
+
298
+ ## [21.5.40](https://github.com/looker-open-source/sdk-codegen/compare/sdk-codegen-scripts-v21.5.39...sdk-codegen-scripts-v21.5.40) (2026-03-11)
299
+
300
+
301
+ ### Bug Fixes
302
+
303
+ * **codegen:** allow yarn gen to work with remote looker server ([#1645](https://github.com/looker-open-source/sdk-codegen/issues/1645)) ([53621ea](https://github.com/looker-open-source/sdk-codegen/commit/53621ea1e8b84cc5be2f6e61d07a0e10d8502563)), closes [#1644](https://github.com/looker-open-source/sdk-codegen/issues/1644)
304
+
305
+
306
+ ### Dependencies
307
+
308
+ * The following workspace dependencies were updated
309
+ * dependencies
310
+ * @looker/sdk bumped from 26.2.0 to 26.4.0
311
+ * @looker/sdk-codegen bumped from 21.10.4 to 21.11.0
312
+ * @looker/sdk-codegen-utils bumped from 21.0.29 to 21.0.30
313
+ * @looker/sdk-node bumped from 26.2.0 to 26.4.0
314
+
289
315
  ## [21.5.31](https://github.com/looker-open-source/sdk-codegen/compare/sdk-codegen-scripts-v21.5.30...sdk-codegen-scripts-v21.5.31) (2025-03-11)
290
316
 
291
317
 
@@ -107,13 +107,13 @@ export var authGetUrl = function () {
107
107
  throw err;
108
108
  }
109
109
  options = mergeOptions(props, (_options = options) !== null && _options !== void 0 ? _options : {});
110
- options = mergeOptions(options, {
110
+ token = yield login(options);
111
+ var authOptions = mergeOptions(options, {
111
112
  headers: {
112
113
  Authorization: "Bearer ".concat(token)
113
114
  }
114
115
  });
115
- token = yield login(options);
116
- content = yield getUrl(props, url, options);
116
+ content = yield getUrl(props, url, authOptions);
117
117
  if (token) {
118
118
  yield logout(props, token);
119
119
  }
@@ -157,15 +157,34 @@ export var fetchLookerVersion = function () {
157
157
  return _ref7.apply(this, arguments);
158
158
  };
159
159
  }();
160
+ export var LookerNotFoundError = 'Looker Not Found (404)';
161
+ export var updateAndResolveSpecUrl = (spec, props) => {
162
+ var fetchUrl = spec.specURL || 'missing spec url';
163
+ try {
164
+ var specUrlObj = new URL(fetchUrl);
165
+ var baseUrlObj = new URL(props.base_url);
166
+ if (specUrlObj.hostname === baseUrlObj.hostname && specUrlObj.port !== baseUrlObj.port) {
167
+ specUrlObj.port = baseUrlObj.port;
168
+ fetchUrl = specUrlObj.toString();
169
+ spec.specURL = fetchUrl;
170
+ }
171
+ } catch (e) {}
172
+ return fetchUrl;
173
+ };
160
174
  export var fetchSpec = function () {
161
175
  var _ref8 = _asyncToGenerator(function* (name, spec, props) {
162
176
  var fileName = swaggerFileName(name, spec.key);
163
177
  if (isFileSync(fileName)) return fileName;
178
+ var fetchUrl = updateAndResolveSpecUrl(spec, props);
164
179
  try {
165
- var content = yield authGetUrl(props, spec.specURL || 'missing spec url');
180
+ var content = yield authGetUrl(props, fetchUrl);
166
181
  createJsonFile(fileName, content);
167
182
  return fileName;
168
183
  } catch (err) {
184
+ if (err.message && err.message.includes(LookerNotFoundError)) {
185
+ warn("Skipping missing spec file: ".concat(fetchUrl, " (").concat(LookerNotFoundError, ")"));
186
+ return '';
187
+ }
169
188
  checkCertError(err);
170
189
  return quit(err);
171
190
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fetchSpec.js","names":["danger","log","warn","defaultTimeout","mergeOptions","sdkOk","NodeTransport","createJsonFile","fail","isFileSync","quit","readFileSync","convertSpec","transport","specTransport","props","options","agentTag","base_url","timeout","verify_ssl","loginUrl","concat","api_version","logoutUrl","supportedVersion","version","versions","undefined","found","Object","entries","supported_versions","find","_ref","value","specPath","swaggerFileName","name","specKey","openApiFileName","badAuth","content","text","JSON","stringify","indexOf","logout","_ref2","_asyncToGenerator","token","xp","request","headers","Authorization","_x","_x2","apply","arguments","login","_ref3","_props$client_id","_props$client_secret","creds","client_id","process","env","LOOKERSDK_CLIENT_ID","client_secret","LOOKERSDK_CLIENT_SECRET","url","response","accessToken","access_token","Error","_x3","checkCertError","err","message","match","getUrl","_ref4","ref","URL","protocol","pathname","_x4","_x5","_x6","authGetUrl","_ref5","failQuits","length","_options","authFailed","_x7","_x8","fetchLookerVersions","_ref6","_x9","_x10","fetchLookerVersion","_ref7","e","matches","looker_release_version","_x11","_x12","_x13","fetchSpec","_ref8","spec","fileName","key","specURL","_x14","_x15","_x16","logFetchSpec","_ref9","specFile","_x17","_x18","_x19","getVersionInfo","_ref10","lookerVersion","isDefault","status","console","error","_x20","logConvertSpec","_ref11","force","result","oaFile","_x21","_x22","_x23"],"sources":["../../src/fetchSpec.ts"],"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 { danger, log, warn } from '@looker/sdk-codegen-utils';\nimport type { IVersionInfo, SpecItem } from '@looker/sdk-codegen';\nimport type { ITransportSettings } from '@looker/sdk-rtl';\nimport { defaultTimeout, mergeOptions, sdkOk } from '@looker/sdk-rtl';\nimport { NodeTransport } from '@looker/sdk-node';\nimport {\n createJsonFile,\n fail,\n isFileSync,\n quit,\n readFileSync,\n} from './nodeUtils';\nimport type { ISDKConfigProps } from './sdkConfig';\nimport { convertSpec } from './convert';\n\nlet transport: NodeTransport;\n\n/**\n * Customize request transport properties for SDK codegen\n * @param props SDK configuration properties\n * @returns {NodeTransport} codegen-specific overrides\n * @constructor\n */\nexport const specTransport = (props: ISDKConfigProps) => {\n if (transport) return transport;\n const options: ITransportSettings = {\n agentTag: 'SDK Codegen',\n base_url: props.base_url,\n timeout: (props as unknown as any).timeout || defaultTimeout,\n verify_ssl: props.verify_ssl,\n };\n transport = new NodeTransport(options);\n return transport;\n};\n\nconst loginUrl = (props: ISDKConfigProps) =>\n `${props.base_url}/api/${props.api_version}/login`;\n\nconst logoutUrl = (props: ISDKConfigProps) =>\n `${props.base_url}/api/${props.api_version}/logout`;\n\nexport const supportedVersion = (version: string, versions: any) => {\n if (!('supported_versions' in versions)) {\n danger('Could not find supported versions');\n return undefined;\n }\n const found = Object.entries(versions.supported_versions).find(\n ([, value]) => (value as any).version === version\n );\n if (found) return found[1];\n return undefined;\n};\n\nexport const specPath = 'spec';\n\nexport const swaggerFileName = (name: string, specKey: string) =>\n `${specPath}/${name}.${specKey}.json`;\n\nexport const openApiFileName = (name: string, specKey: string) =>\n `${specPath}/${name}.${specKey}.oas.json`;\n\n/**\n * Is there an authentication error?\n * @param content response to check\n * @returns True if there's an authentication error\n */\nconst badAuth = (content: string | Record<string, unknown>) => {\n const text = typeof content === 'object' ? JSON.stringify(content) : content;\n return text.indexOf('Requires authentication') > 0;\n};\n\nexport const logout = async (props: ISDKConfigProps, token: string) => {\n const xp = specTransport(props);\n\n return sdkOk<string, Error>(\n xp.request<string, Error>(\n 'DELETE',\n logoutUrl(props),\n undefined,\n undefined,\n undefined,\n { headers: { Authorization: `Bearer ${token}` } }\n )\n );\n};\n\nexport const login = async (props: ISDKConfigProps) => {\n const xp = specTransport(props);\n const creds = {\n client_id: props.client_id ?? process.env.LOOKERSDK_CLIENT_ID,\n client_secret: props.client_secret ?? process.env.LOOKERSDK_CLIENT_SECRET,\n };\n const url = loginUrl(props);\n\n const response = await sdkOk<any, Error>(\n xp.request<any, Error>('POST', url, creds, undefined, undefined, props)\n );\n const accessToken = await response.access_token;\n\n if (accessToken) {\n return accessToken;\n } else {\n log(`Server Response: ${JSON.stringify(response)}`);\n throw new Error('Access token could not be retrieved.');\n }\n};\n\nconst checkCertError = (err: Error): boolean => {\n if (err.message && err.message.match(/self signed certificate/gi)) {\n warn(`\nNOTE! Certificate validation can be disabled with:\n NODE_TLS_REJECT_UNAUTHORIZED=\"0\" {original command}\n`);\n return true;\n }\n return false;\n};\n\n/**\n * gets either an http(s) url, or a file URL by reading directly if it's a file url\n * @param props SDK configuration props\n * @param url to fetch\n * @param options for transport call\n */\nexport const getUrl = async (\n props: ISDKConfigProps,\n url: string,\n options?: Partial<ITransportSettings>\n) => {\n const ref = new URL(url);\n\n if (ref.protocol === 'file:') {\n return readFileSync(ref.pathname);\n }\n const xp = specTransport(props);\n return await sdkOk<string, Error>(\n xp.request('GET', url, undefined, undefined, undefined, options)\n );\n};\n\nexport const authGetUrl = async (\n props: ISDKConfigProps,\n url: string,\n failQuits = true,\n options?: Partial<ITransportSettings>\n) => {\n let token = null;\n let content: any = null;\n try {\n // Try first without login. Most Looker instances don't require auth for spec retrieval\n content = await getUrl(props, url, options);\n } catch (err: any) {\n if (err.message.indexOf('ETIMEDOUT') > 0) {\n throw err;\n }\n // Whoops! Ok, try again with login\n options = mergeOptions(props, options ?? {});\n options = mergeOptions(options, {\n headers: { Authorization: `Bearer ${token}` },\n });\n token = await login(options as ISDKConfigProps);\n content = await getUrl(props, url, options);\n if (token) {\n await logout(props, token);\n }\n }\n\n if (badAuth(content)) {\n const authFailed = 'Authentication failed';\n if (failQuits) {\n return quit(authFailed);\n } else {\n throw new Error(authFailed);\n }\n }\n return content;\n};\n\nexport const fetchLookerVersions = async (\n props: ISDKConfigProps,\n options?: Partial<ITransportSettings>\n) => {\n return await authGetUrl(props, `${props.base_url}/versions`, false, options);\n};\n\nexport const fetchLookerVersion = async (\n props: ISDKConfigProps,\n versions?: any,\n options?: Partial<ITransportSettings>\n) => {\n if (!versions) {\n try {\n versions = await fetchLookerVersions(props, options);\n } catch (e: any) {\n warn(\n `Could not retrieve looker release version from \"${props.base_url}/versions\": ${e.message}`\n );\n return '';\n }\n }\n const matches = versions.looker_release_version.match(/^\\d+\\.\\d+/i);\n return matches[0];\n};\n\nexport const fetchSpec = async (\n name: string,\n spec: SpecItem,\n props: ISDKConfigProps\n) => {\n const fileName = swaggerFileName(name, spec.key);\n // No need to fetch if the file already exists\n // TODO make this a switch or remove caching?\n if (isFileSync(fileName)) return fileName;\n\n try {\n const content = await authGetUrl(props, spec.specURL || 'missing spec url');\n\n createJsonFile(fileName, content);\n\n return fileName;\n } catch (err: any) {\n checkCertError(err);\n return quit(err);\n }\n};\n\nexport const logFetchSpec = async (\n name: string,\n spec: SpecItem,\n props: ISDKConfigProps\n) => {\n const specFile = await fetchSpec(name, spec, props);\n if (!specFile) {\n return fail('fetchSpec', 'No specification file name returned');\n }\n return specFile;\n};\n\nexport const getVersionInfo = async (\n props: ISDKConfigProps\n): Promise<IVersionInfo | undefined> => {\n try {\n const lookerVersion = await fetchLookerVersion(props);\n return {\n spec: {\n key: props.api_version,\n version: props.api_version,\n isDefault: false,\n status: 'mocked',\n },\n lookerVersion,\n };\n } catch (e: any) {\n warn(\n `Could not retrieve version information. Is ${props.base_url} running?`\n );\n checkCertError(e);\n console.error({ e });\n }\n return undefined;\n};\n\n/**\n * Fetch (if needed) and convert a Swagger API specification to OpenAPI\n * @param name base name of the target file\n * @param spec specification derived\n * @param props SDK configuration properties to use\n * @param force true to force re-conversion of the spec\n * @returns {Promise<string>} name of converted OpenAPI file\n */\nexport const logConvertSpec = async (\n name: string,\n spec: SpecItem,\n props: ISDKConfigProps,\n force = false\n) => {\n // if openApiFile is resolved correctly, this value will be the file name\n let result = '';\n const oaFile = openApiFileName(name, spec.key);\n if (isFileSync(oaFile) && !force) return oaFile;\n\n const specFile = await logFetchSpec(name, spec, props);\n result = convertSpec(specFile, oaFile, force);\n if (!result) {\n return fail('logConvert', 'No file name returned for openAPI upgrade');\n }\n\n return result;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"fetchSpec.js","names":["danger","log","warn","defaultTimeout","mergeOptions","sdkOk","NodeTransport","createJsonFile","fail","isFileSync","quit","readFileSync","convertSpec","transport","specTransport","props","options","agentTag","base_url","timeout","verify_ssl","loginUrl","concat","api_version","logoutUrl","supportedVersion","version","versions","undefined","found","Object","entries","supported_versions","find","_ref","value","specPath","swaggerFileName","name","specKey","openApiFileName","badAuth","content","text","JSON","stringify","indexOf","logout","_ref2","_asyncToGenerator","token","xp","request","headers","Authorization","_x","_x2","apply","arguments","login","_ref3","_props$client_id","_props$client_secret","creds","client_id","process","env","LOOKERSDK_CLIENT_ID","client_secret","LOOKERSDK_CLIENT_SECRET","url","response","accessToken","access_token","Error","_x3","checkCertError","err","message","match","getUrl","_ref4","ref","URL","protocol","pathname","_x4","_x5","_x6","authGetUrl","_ref5","failQuits","length","_options","authOptions","authFailed","_x7","_x8","fetchLookerVersions","_ref6","_x9","_x10","fetchLookerVersion","_ref7","e","matches","looker_release_version","_x11","_x12","_x13","LookerNotFoundError","updateAndResolveSpecUrl","spec","fetchUrl","specURL","specUrlObj","baseUrlObj","hostname","port","toString","fetchSpec","_ref8","fileName","key","includes","_x14","_x15","_x16","logFetchSpec","_ref9","specFile","_x17","_x18","_x19","getVersionInfo","_ref10","lookerVersion","isDefault","status","console","error","_x20","logConvertSpec","_ref11","force","result","oaFile","_x21","_x22","_x23"],"sources":["../../src/fetchSpec.ts"],"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 { danger, log, warn } from '@looker/sdk-codegen-utils';\nimport type { IVersionInfo, SpecItem } from '@looker/sdk-codegen';\nimport type { ITransportSettings } from '@looker/sdk-rtl';\nimport { defaultTimeout, mergeOptions, sdkOk } from '@looker/sdk-rtl';\nimport { NodeTransport } from '@looker/sdk-node';\nimport {\n createJsonFile,\n fail,\n isFileSync,\n quit,\n readFileSync,\n} from './nodeUtils';\nimport type { ISDKConfigProps } from './sdkConfig';\nimport { convertSpec } from './convert';\n\nlet transport: NodeTransport;\n\n/**\n * Customize request transport properties for SDK codegen\n * @param props SDK configuration properties\n * @returns {NodeTransport} codegen-specific overrides\n * @constructor\n */\nexport const specTransport = (props: ISDKConfigProps) => {\n if (transport) return transport;\n const options: ITransportSettings = {\n agentTag: 'SDK Codegen',\n base_url: props.base_url,\n timeout: (props as unknown as any).timeout || defaultTimeout,\n verify_ssl: props.verify_ssl,\n };\n transport = new NodeTransport(options);\n return transport;\n};\n\nconst loginUrl = (props: ISDKConfigProps) =>\n `${props.base_url}/api/${props.api_version}/login`;\n\nconst logoutUrl = (props: ISDKConfigProps) =>\n `${props.base_url}/api/${props.api_version}/logout`;\n\nexport const supportedVersion = (version: string, versions: any) => {\n if (!('supported_versions' in versions)) {\n danger('Could not find supported versions');\n return undefined;\n }\n const found = Object.entries(versions.supported_versions).find(\n ([, value]) => (value as any).version === version\n );\n if (found) return found[1];\n return undefined;\n};\n\nexport const specPath = 'spec';\n\nexport const swaggerFileName = (name: string, specKey: string) =>\n `${specPath}/${name}.${specKey}.json`;\n\nexport const openApiFileName = (name: string, specKey: string) =>\n `${specPath}/${name}.${specKey}.oas.json`;\n\n/**\n * Is there an authentication error?\n * @param content response to check\n * @returns True if there's an authentication error\n */\nconst badAuth = (content: string | Record<string, unknown>) => {\n const text = typeof content === 'object' ? JSON.stringify(content) : content;\n return text.indexOf('Requires authentication') > 0;\n};\n\nexport const logout = async (props: ISDKConfigProps, token: string) => {\n const xp = specTransport(props);\n\n return sdkOk<string, Error>(\n xp.request<string, Error>(\n 'DELETE',\n logoutUrl(props),\n undefined,\n undefined,\n undefined,\n { headers: { Authorization: `Bearer ${token}` } }\n )\n );\n};\n\nexport const login = async (props: ISDKConfigProps) => {\n const xp = specTransport(props);\n const creds = {\n client_id: props.client_id ?? process.env.LOOKERSDK_CLIENT_ID,\n client_secret: props.client_secret ?? process.env.LOOKERSDK_CLIENT_SECRET,\n };\n const url = loginUrl(props);\n\n const response = await sdkOk<any, Error>(\n xp.request<any, Error>('POST', url, creds, undefined, undefined, props)\n );\n const accessToken = await response.access_token;\n\n if (accessToken) {\n return accessToken;\n } else {\n log(`Server Response: ${JSON.stringify(response)}`);\n throw new Error('Access token could not be retrieved.');\n }\n};\n\nconst checkCertError = (err: Error): boolean => {\n if (err.message && err.message.match(/self signed certificate/gi)) {\n warn(`\nNOTE! Certificate validation can be disabled with:\n NODE_TLS_REJECT_UNAUTHORIZED=\"0\" {original command}\n`);\n return true;\n }\n return false;\n};\n\n/**\n * gets either an http(s) url, or a file URL by reading directly if it's a file url\n * @param props SDK configuration props\n * @param url to fetch\n * @param options for transport call\n */\nexport const getUrl = async (\n props: ISDKConfigProps,\n url: string,\n options?: Partial<ITransportSettings>\n) => {\n const ref = new URL(url);\n\n if (ref.protocol === 'file:') {\n return readFileSync(ref.pathname);\n }\n const xp = specTransport(props);\n return await sdkOk<string, Error>(\n xp.request('GET', url, undefined, undefined, undefined, options)\n );\n};\n\nexport const authGetUrl = async (\n props: ISDKConfigProps,\n url: string,\n failQuits = true,\n options?: Partial<ITransportSettings>\n) => {\n let token = null;\n let content: any = null;\n try {\n // Try first without login. Most Looker instances don't require auth for spec retrieval\n content = await getUrl(props, url, options);\n } catch (err: any) {\n if (err.message.indexOf('ETIMEDOUT') > 0) {\n throw err;\n }\n // Whoops! Ok, try again with login\n options = mergeOptions(props, options ?? {});\n token = await login(options as ISDKConfigProps);\n // Add the token to the headers for the subsequent getUrl call\n const authOptions = mergeOptions(options, {\n headers: { Authorization: `Bearer ${token}` },\n });\n content = await getUrl(props, url, authOptions);\n if (token) {\n await logout(props, token);\n }\n }\n\n if (badAuth(content)) {\n const authFailed = 'Authentication failed';\n if (failQuits) {\n return quit(authFailed);\n } else {\n throw new Error(authFailed);\n }\n }\n return content;\n};\n\nexport const fetchLookerVersions = async (\n props: ISDKConfigProps,\n options?: Partial<ITransportSettings>\n) => {\n return await authGetUrl(props, `${props.base_url}/versions`, false, options);\n};\n\nexport const fetchLookerVersion = async (\n props: ISDKConfigProps,\n versions?: any,\n options?: Partial<ITransportSettings>\n) => {\n if (!versions) {\n try {\n versions = await fetchLookerVersions(props, options);\n } catch (e: any) {\n warn(\n `Could not retrieve looker release version from \"${props.base_url}/versions\": ${e.message}`\n );\n return '';\n }\n }\n const matches = versions.looker_release_version.match(/^\\d+\\.\\d+/i);\n return matches[0];\n};\n\nexport const LookerNotFoundError = 'Looker Not Found (404)';\n\nexport const updateAndResolveSpecUrl = (\n spec: SpecItem,\n props: ISDKConfigProps\n): string => {\n let fetchUrl = spec.specURL || 'missing spec url';\n try {\n const specUrlObj = new URL(fetchUrl);\n const baseUrlObj = new URL(props.base_url);\n if (\n specUrlObj.hostname === baseUrlObj.hostname &&\n specUrlObj.port !== baseUrlObj.port\n ) {\n specUrlObj.port = baseUrlObj.port;\n fetchUrl = specUrlObj.toString();\n spec.specURL = fetchUrl; // Update it on the spec object too\n }\n } catch (e) {\n // Ignore URL parsing errors, just fall back to original specURL\n }\n return fetchUrl;\n};\n\nexport const fetchSpec = async (\n name: string,\n spec: SpecItem,\n props: ISDKConfigProps\n) => {\n const fileName = swaggerFileName(name, spec.key);\n // No need to fetch if the file already exists\n // TODO make this a switch or remove caching?\n if (isFileSync(fileName)) return fileName;\n\n const fetchUrl = updateAndResolveSpecUrl(spec, props);\n\n try {\n const content = await authGetUrl(props, fetchUrl);\n\n createJsonFile(fileName, content);\n\n return fileName;\n } catch (err: any) {\n if (err.message && err.message.includes(LookerNotFoundError)) {\n warn(`Skipping missing spec file: ${fetchUrl} (${LookerNotFoundError})`);\n return '';\n }\n checkCertError(err);\n return quit(err);\n }\n};\n\nexport const logFetchSpec = async (\n name: string,\n spec: SpecItem,\n props: ISDKConfigProps\n) => {\n const specFile = await fetchSpec(name, spec, props);\n if (!specFile) {\n return fail('fetchSpec', 'No specification file name returned');\n }\n return specFile;\n};\n\nexport const getVersionInfo = async (\n props: ISDKConfigProps\n): Promise<IVersionInfo | undefined> => {\n try {\n const lookerVersion = await fetchLookerVersion(props);\n return {\n spec: {\n key: props.api_version,\n version: props.api_version,\n isDefault: false,\n status: 'mocked',\n },\n lookerVersion,\n };\n } catch (e: any) {\n warn(\n `Could not retrieve version information. Is ${props.base_url} running?`\n );\n checkCertError(e);\n console.error({ e });\n }\n return undefined;\n};\n\n/**\n * Fetch (if needed) and convert a Swagger API specification to OpenAPI\n * @param name base name of the target file\n * @param spec specification derived\n * @param props SDK configuration properties to use\n * @param force true to force re-conversion of the spec\n * @returns {Promise<string>} name of converted OpenAPI file\n */\nexport const logConvertSpec = async (\n name: string,\n spec: SpecItem,\n props: ISDKConfigProps,\n force = false\n) => {\n // if openApiFile is resolved correctly, this value will be the file name\n let result = '';\n const oaFile = openApiFileName(name, spec.key);\n if (isFileSync(oaFile) && !force) return oaFile;\n\n const specFile = await logFetchSpec(name, spec, props);\n result = convertSpec(specFile, oaFile, force);\n if (!result) {\n return fail('logConvert', 'No file name returned for openAPI upgrade');\n }\n\n return result;\n};\n"],"mappings":"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"}
package/lib/esm/utils.js CHANGED
@@ -6,10 +6,10 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
6
6
  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); } }
7
7
  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); }); }; }
8
8
  import { ApiModel, codeGenerators, findGenerator, getSpecsFromVersions, upgradeSpecObject } from '@looker/sdk-codegen';
9
- import { log } from '@looker/sdk-codegen-utils';
9
+ import { log, warn } from '@looker/sdk-codegen-utils';
10
10
  import { createJsonFile, readFileSync } from './nodeUtils';
11
11
  import { SDKConfig } from './sdkConfig';
12
- import { authGetUrl, fetchLookerVersion, fetchLookerVersions, openApiFileName, specPath, swaggerFileName } from './fetchSpec';
12
+ import { authGetUrl, fetchLookerVersion, fetchLookerVersions, LookerNotFoundError, openApiFileName, specPath, swaggerFileName, updateAndResolveSpecUrl } from './fetchSpec';
13
13
  export var apiVersions = props => {
14
14
  var _props$api_versions;
15
15
  var versions = (_props$api_versions = props.api_versions) !== null && _props$api_versions !== void 0 ? _props$api_versions : '3.1,4.0';
@@ -142,10 +142,20 @@ export var loadSpecs = function () {
142
142
  var _ref3 = _asyncToGenerator(function* (spec) {
143
143
  if (!fetch) return undefined;
144
144
  if (!spec.specURL) return undefined;
145
+ var fetchUrl = updateAndResolveSpecUrl(spec, config.props);
145
146
  var p = _objectSpread(_objectSpread({}, config.props), {}, {
146
147
  api_version: spec.version
147
148
  });
148
- var source = yield authGetUrl(p, spec.specURL);
149
+ var source;
150
+ try {
151
+ source = yield authGetUrl(p, fetchUrl);
152
+ } catch (err) {
153
+ if (err.message && err.message.includes(LookerNotFoundError)) {
154
+ warn("Skipping missing spec file: ".concat(fetchUrl, " (").concat(LookerNotFoundError, ")"));
155
+ return undefined;
156
+ }
157
+ throw err;
158
+ }
149
159
  if (typeof source === 'string') source = JSON.parse(source);
150
160
  var upgrade = upgradeSpecObject(source);
151
161
  spec.api = ApiModel.fromJson(upgrade);
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["ApiModel","codeGenerators","findGenerator","getSpecsFromVersions","upgradeSpecObject","log","createJsonFile","readFileSync","SDKConfig","authGetUrl","fetchLookerVersion","fetchLookerVersions","openApiFileName","specPath","swaggerFileName","apiVersions","props","_props$api_versions","versions","api_versions","split","generatorHelp","process","exit","doArgs","args","noStreams","hooks","langs","length","toString","toLowerCase","i","arg","content","JSON","parse","values","filter","v","trim","forEach","gen","push","language","Error","concat","languages","l","factory","undefined","map","value","index","all","indexOf","loadConfig","config","name","Object","entries","prepGen","_ref","_asyncToGenerator","lookerVersions","lookerVersion","stringify","_unused","supported_versions","version","status","full_version","swagger_url","base_url","apis","lastApi","useHooks","_x","apply","arguments","loadSpecs","_ref2","fetch","specFetch","_ref3","spec","specURL","p","_objectSpread","api_version","source","upgrade","api","fromJson","test","swagger","oas","swaggerName","key","oaName","_x3","specs","keys","_x2"],"sources":["../../src/utils.ts"],"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 } from '@looker/sdk-codegen';\nimport {\n ApiModel,\n codeGenerators,\n findGenerator,\n getSpecsFromVersions,\n upgradeSpecObject,\n} from '@looker/sdk-codegen';\nimport { log } from '@looker/sdk-codegen-utils';\nimport { createJsonFile, readFileSync } from './nodeUtils';\nimport type { ISDKConfigProps } from './sdkConfig';\nimport { SDKConfig } from './sdkConfig';\nimport {\n authGetUrl,\n fetchLookerVersion,\n fetchLookerVersions,\n openApiFileName,\n specPath,\n swaggerFileName,\n} from './fetchSpec';\n\nexport const apiVersions = (props: any) => {\n const versions = props.api_versions ?? '3.1,4.0';\n return versions.split(',');\n};\n\nexport interface IGenProps {\n /** Languages to generate */\n languages: string[];\n /** name of first INI config section, used for package name */\n name: string;\n /** SDK config properties from the first section */\n props: ISDKConfigProps;\n /** api specifications */\n lookerVersions: ILookerVersions;\n /** Release version */\n lookerVersion: string;\n /** Api version collection */\n apis: string[];\n /** Last API version */\n lastApi: string;\n /** Skip generating streams files? */\n noStreams: boolean;\n /** True to generate hooks and slices (only for TypeScript) */\n useHooks: boolean;\n}\n\nconst generatorHelp = () => {\n log(\n `sdkGen [languages...] [-v|--versions <versions file>] [-n|--nostreams] [-h|--help]\n languages...: zero or more language specifiers separated by space or comma. Defaults to all supported languages.\n -v|--versions: location of a JSON versions file in ILookerVersions format to read for getting specs\n -n|--nostreams: skip generation of a language SDK 'streams' files (if it supports streaming)\n -ho|--hooks: generate hooks and mocks for the TypeScript SDK\n -h|--help: display this output\n\n examples:\n # Generates all supported SDKs\n yarn gen\n\n # Generates TypeScript and Python SDKs\n yarn gen ts,py\n\n # reads specs from './versions.json' and generates TypeScript and Python SDKs\n yarn gen ts -v ./versions.json py\n`\n );\n process.exit(0);\n};\n\n/**\n * Process command-line switches for versions payload and languages\n * @param args\n */\nexport const doArgs = (args: string[]) => {\n let versions: ILookerVersions | undefined;\n let noStreams = false;\n let hooks = false;\n\n const langs: string[] = [];\n if (args.length > 0 && args.toString().toLowerCase() !== 'all') {\n let i = 0;\n while (i < args.length) {\n const arg = args[i].toLowerCase();\n switch (arg) {\n case '-v':\n case '--versions':\n {\n i++;\n const content = readFileSync(args[i]);\n versions = JSON.parse(content);\n }\n break;\n case '-h':\n case '--help':\n generatorHelp();\n break;\n case '-n':\n case '--nostreams':\n noStreams = true;\n break;\n case '-ho':\n case '--hooks':\n hooks = true;\n break;\n default:\n {\n const values = arg.split(',').filter(v => v.trim());\n if (values[0] !== 'all') {\n values.forEach(v => {\n const gen = findGenerator(v.trim());\n if (gen) {\n // Valid language match\n langs.push(gen.language);\n } else {\n throw new Error(`\"${v}\" is not a valid option`);\n }\n });\n }\n }\n break;\n }\n i++;\n }\n }\n\n // Default languages to all\n const languages = (\n langs.length > 0\n ? langs\n : codeGenerators.filter(l => l.factory !== undefined).map(l => l.language)\n ).filter((value, index, all) => all.indexOf(value) === index);\n\n return { languages, versions, noStreams, hooks };\n};\n\n/**\n * Load the default configuration settings from looker.ini\n */\nexport const loadConfig = () => {\n const config = SDKConfig();\n const [name, props] = Object.entries(config)[0];\n return { name, props };\n};\n\n/**\n * Prepare the generator configuration from all configuration options and return the config\n * @param args command-line style arguments to parse.\n */\nexport const prepGen = async (args: string[]): Promise<IGenProps> => {\n const { languages, versions, noStreams, hooks } = doArgs(args);\n const { name, props } = loadConfig();\n let lookerVersions;\n let lookerVersion = '';\n try {\n if (versions) {\n lookerVersions = versions;\n } else {\n lookerVersions = await fetchLookerVersions(props);\n createJsonFile(\n `${specPath}/versions.json`,\n JSON.stringify(lookerVersions, null, 2)\n );\n }\n lookerVersion = await fetchLookerVersion(props, lookerVersions);\n } catch {\n // Looker server is not required, so default values for the generator\n lookerVersions = {\n supported_versions: [\n {\n version: '4.0',\n status: 'stable',\n full_version: '',\n swagger_url: `https://${props.base_url}/api/4.0/swagger.json`,\n },\n ],\n };\n lookerVersion = '';\n }\n // Iterate through all specified API versions\n const apis = apiVersions(props);\n const lastApi = apis[apis.length - 1];\n\n return {\n name,\n props,\n languages,\n lookerVersions: lookerVersions as ILookerVersions,\n lookerVersion,\n apis,\n lastApi,\n noStreams,\n useHooks: hooks,\n };\n};\n\n/**\n * Load and save specifications from the versions file\n * @param config generation configuration properties\n * @param fetch false to skip fetching the spec, true to fetch. Defaults to true\n */\nexport const loadSpecs = async (config: IGenProps, fetch = true) => {\n const specFetch = async (spec: SpecItem) => {\n if (!fetch) return undefined;\n if (!spec.specURL) return undefined;\n const p = { ...config.props, api_version: spec.version };\n let source = await authGetUrl(p, spec.specURL);\n if (typeof source === 'string') source = JSON.parse(source);\n const upgrade = upgradeSpecObject(source);\n spec.api = ApiModel.fromJson(upgrade);\n if (/^http[s]?:\\/\\//i.test(spec.specURL)) {\n const swagger = JSON.stringify(source, null, 2);\n const oas = JSON.stringify(upgrade, null, 2);\n const swaggerName = swaggerFileName(config.name, spec.key);\n const oaName = openApiFileName(config.name, spec.key);\n createJsonFile(swaggerName, swagger);\n createJsonFile(oaName, oas);\n log(`fetched and saved ${swaggerName} and converted it to ${oaName}`);\n }\n return spec.api;\n };\n\n const specs = await getSpecsFromVersions(config.lookerVersions, specFetch);\n // NOTE: Reaching in and updating the api versions list from established spec keys\n config.apis = Object.keys(specs);\n\n return specs;\n};\n"],"mappings":";;;;;;;AA2BA,SACEA,QAAQ,EACRC,cAAc,EACdC,aAAa,EACbC,oBAAoB,EACpBC,iBAAiB,QACZ,qBAAqB;AAC5B,SAASC,GAAG,QAAQ,2BAA2B;AAC/C,SAASC,cAAc,EAAEC,YAAY,QAAQ,aAAa;AAE1D,SAASC,SAAS,QAAQ,aAAa;AACvC,SACEC,UAAU,EACVC,kBAAkB,EAClBC,mBAAmB,EACnBC,eAAe,EACfC,QAAQ,EACRC,eAAe,QACV,aAAa;AAEpB,OAAO,IAAMC,WAAW,GAAIC,KAAU,IAAK;EAAA,IAAAC,mBAAA;EACzC,IAAMC,QAAQ,IAAAD,mBAAA,GAAGD,KAAK,CAACG,YAAY,cAAAF,mBAAA,cAAAA,mBAAA,GAAI,SAAS;EAChD,OAAOC,QAAQ,CAACE,KAAK,CAAC,GAAG,CAAC;AAC5B,CAAC;AAuBD,IAAMC,aAAa,GAAGA,CAAA,KAAM;EAC1BhB,GAAG,8vBAkBH,CAAC;EACDiB,OAAO,CAACC,IAAI,CAAC,CAAC,CAAC;AACjB,CAAC;AAMD,OAAO,IAAMC,MAAM,GAAIC,IAAc,IAAK;EACxC,IAAIP,QAAqC;EACzC,IAAIQ,SAAS,GAAG,KAAK;EACrB,IAAIC,KAAK,GAAG,KAAK;EAEjB,IAAMC,KAAe,GAAG,EAAE;EAC1B,IAAIH,IAAI,CAACI,MAAM,GAAG,CAAC,IAAIJ,IAAI,CAACK,QAAQ,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC,KAAK,KAAK,EAAE;IAC9D,IAAIC,CAAC,GAAG,CAAC;IACT,OAAOA,CAAC,GAAGP,IAAI,CAACI,MAAM,EAAE;MACtB,IAAMI,GAAG,GAAGR,IAAI,CAACO,CAAC,CAAC,CAACD,WAAW,CAAC,CAAC;MACjC,QAAQE,GAAG;QACT,KAAK,IAAI;QACT,KAAK,YAAY;UACf;YACED,CAAC,EAAE;YACH,IAAME,OAAO,GAAG3B,YAAY,CAACkB,IAAI,CAACO,CAAC,CAAC,CAAC;YACrCd,QAAQ,GAAGiB,IAAI,CAACC,KAAK,CAACF,OAAO,CAAC;UAChC;UACA;QACF,KAAK,IAAI;QACT,KAAK,QAAQ;UACXb,aAAa,CAAC,CAAC;UACf;QACF,KAAK,IAAI;QACT,KAAK,aAAa;UAChBK,SAAS,GAAG,IAAI;UAChB;QACF,KAAK,KAAK;QACV,KAAK,SAAS;UACZC,KAAK,GAAG,IAAI;UACZ;QACF;UACE;YACE,IAAMU,MAAM,GAAGJ,GAAG,CAACb,KAAK,CAAC,GAAG,CAAC,CAACkB,MAAM,CAACC,CAAC,IAAIA,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC;YACnD,IAAIH,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE;cACvBA,MAAM,CAACI,OAAO,CAACF,CAAC,IAAI;gBAClB,IAAMG,GAAG,GAAGxC,aAAa,CAACqC,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC;gBACnC,IAAIE,GAAG,EAAE;kBAEPd,KAAK,CAACe,IAAI,CAACD,GAAG,CAACE,QAAQ,CAAC;gBAC1B,CAAC,MAAM;kBACL,MAAM,IAAIC,KAAK,MAAAC,MAAA,CAAKP,CAAC,6BAAyB,CAAC;gBACjD;cACF,CAAC,CAAC;YACJ;UACF;UACA;MACJ;MACAP,CAAC,EAAE;IACL;EACF;EAGA,IAAMe,SAAS,GAAG,CAChBnB,KAAK,CAACC,MAAM,GAAG,CAAC,GACZD,KAAK,GACL3B,cAAc,CAACqC,MAAM,CAACU,CAAC,IAAIA,CAAC,CAACC,OAAO,KAAKC,SAAS,CAAC,CAACC,GAAG,CAACH,CAAC,IAAIA,CAAC,CAACJ,QAAQ,CAAC,EAC5EN,MAAM,CAAC,CAACc,KAAK,EAAEC,KAAK,EAAEC,GAAG,KAAKA,GAAG,CAACC,OAAO,CAACH,KAAK,CAAC,KAAKC,KAAK,CAAC;EAE7D,OAAO;IAAEN,SAAS;IAAE7B,QAAQ;IAAEQ,SAAS;IAAEC;EAAM,CAAC;AAClD,CAAC;AAKD,OAAO,IAAM6B,UAAU,GAAGA,CAAA,KAAM;EAC9B,IAAMC,MAAM,GAAGjD,SAAS,CAAC,CAAC;EAC1B,IAAM,CAACkD,IAAI,EAAE1C,KAAK,CAAC,GAAG2C,MAAM,CAACC,OAAO,CAACH,MAAM,CAAC,CAAC,CAAC,CAAC;EAC/C,OAAO;IAAEC,IAAI;IAAE1C;EAAM,CAAC;AACxB,CAAC;AAMD,OAAO,IAAM6C,OAAO;EAAA,IAAAC,IAAA,GAAAC,iBAAA,CAAG,WAAOtC,IAAc,EAAyB;IACnE,IAAM;MAAEsB,SAAS;MAAE7B,QAAQ;MAAEQ,SAAS;MAAEC;IAAM,CAAC,GAAGH,MAAM,CAACC,IAAI,CAAC;IAC9D,IAAM;MAAEiC,IAAI;MAAE1C;IAAM,CAAC,GAAGwC,UAAU,CAAC,CAAC;IACpC,IAAIQ,cAAc;IAClB,IAAIC,aAAa,GAAG,EAAE;IACtB,IAAI;MACF,IAAI/C,QAAQ,EAAE;QACZ8C,cAAc,GAAG9C,QAAQ;MAC3B,CAAC,MAAM;QACL8C,cAAc,SAASrD,mBAAmB,CAACK,KAAK,CAAC;QACjDV,cAAc,IAAAwC,MAAA,CACTjC,QAAQ,qBACXsB,IAAI,CAAC+B,SAAS,CAACF,cAAc,EAAE,IAAI,EAAE,CAAC,CACxC,CAAC;MACH;MACAC,aAAa,SAASvD,kBAAkB,CAACM,KAAK,EAAEgD,cAAc,CAAC;IACjE,CAAC,CAAC,OAAAG,OAAA,EAAM;MAENH,cAAc,GAAG;QACfI,kBAAkB,EAAE,CAClB;UACEC,OAAO,EAAE,KAAK;UACdC,MAAM,EAAE,QAAQ;UAChBC,YAAY,EAAE,EAAE;UAChBC,WAAW,aAAA1B,MAAA,CAAa9B,KAAK,CAACyD,QAAQ;QACxC,CAAC;MAEL,CAAC;MACDR,aAAa,GAAG,EAAE;IACpB;IAEA,IAAMS,IAAI,GAAG3D,WAAW,CAACC,KAAK,CAAC;IAC/B,IAAM2D,OAAO,GAAGD,IAAI,CAACA,IAAI,CAAC7C,MAAM,GAAG,CAAC,CAAC;IAErC,OAAO;MACL6B,IAAI;MACJ1C,KAAK;MACL+B,SAAS;MACTiB,cAAc,EAAEA,cAAiC;MACjDC,aAAa;MACbS,IAAI;MACJC,OAAO;MACPjD,SAAS;MACTkD,QAAQ,EAAEjD;IACZ,CAAC;EACH,CAAC;EAAA,gBA7CYkC,OAAOA,CAAAgB,EAAA;IAAA,OAAAf,IAAA,CAAAgB,KAAA,OAAAC,SAAA;EAAA;AAAA,GA6CnB;AAOD,OAAO,IAAMC,SAAS;EAAA,IAAAC,KAAA,GAAAlB,iBAAA,CAAG,WAAON,MAAiB,EAAmB;IAAA,IAAjByB,KAAK,GAAAH,SAAA,CAAAlD,MAAA,QAAAkD,SAAA,QAAA7B,SAAA,GAAA6B,SAAA,MAAG,IAAI;IAC7D,IAAMI,SAAS;MAAA,IAAAC,KAAA,GAAArB,iBAAA,CAAG,WAAOsB,IAAc,EAAK;QAC1C,IAAI,CAACH,KAAK,EAAE,OAAOhC,SAAS;QAC5B,IAAI,CAACmC,IAAI,CAACC,OAAO,EAAE,OAAOpC,SAAS;QACnC,IAAMqC,CAAC,GAAAC,aAAA,CAAAA,aAAA,KAAQ/B,MAAM,CAACzC,KAAK;UAAEyE,WAAW,EAAEJ,IAAI,CAAChB;QAAO,EAAE;QACxD,IAAIqB,MAAM,SAASjF,UAAU,CAAC8E,CAAC,EAAEF,IAAI,CAACC,OAAO,CAAC;QAC9C,IAAI,OAAOI,MAAM,KAAK,QAAQ,EAAEA,MAAM,GAAGvD,IAAI,CAACC,KAAK,CAACsD,MAAM,CAAC;QAC3D,IAAMC,OAAO,GAAGvF,iBAAiB,CAACsF,MAAM,CAAC;QACzCL,IAAI,CAACO,GAAG,GAAG5F,QAAQ,CAAC6F,QAAQ,CAACF,OAAO,CAAC;QACrC,IAAI,iBAAiB,CAACG,IAAI,CAACT,IAAI,CAACC,OAAO,CAAC,EAAE;UACxC,IAAMS,OAAO,GAAG5D,IAAI,CAAC+B,SAAS,CAACwB,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;UAC/C,IAAMM,GAAG,GAAG7D,IAAI,CAAC+B,SAAS,CAACyB,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;UAC5C,IAAMM,WAAW,GAAGnF,eAAe,CAAC2C,MAAM,CAACC,IAAI,EAAE2B,IAAI,CAACa,GAAG,CAAC;UAC1D,IAAMC,MAAM,GAAGvF,eAAe,CAAC6C,MAAM,CAACC,IAAI,EAAE2B,IAAI,CAACa,GAAG,CAAC;UACrD5F,cAAc,CAAC2F,WAAW,EAAEF,OAAO,CAAC;UACpCzF,cAAc,CAAC6F,MAAM,EAAEH,GAAG,CAAC;UAC3B3F,GAAG,sBAAAyC,MAAA,CAAsBmD,WAAW,2BAAAnD,MAAA,CAAwBqD,MAAM,CAAE,CAAC;QACvE;QACA,OAAOd,IAAI,CAACO,GAAG;MACjB,CAAC;MAAA,gBAlBKT,SAASA,CAAAiB,GAAA;QAAA,OAAAhB,KAAA,CAAAN,KAAA,OAAAC,SAAA;MAAA;IAAA,GAkBd;IAED,IAAMsB,KAAK,SAASlG,oBAAoB,CAACsD,MAAM,CAACO,cAAc,EAAEmB,SAAS,CAAC;IAE1E1B,MAAM,CAACiB,IAAI,GAAGf,MAAM,CAAC2C,IAAI,CAACD,KAAK,CAAC;IAEhC,OAAOA,KAAK;EACd,CAAC;EAAA,gBA1BYrB,SAASA,CAAAuB,GAAA;IAAA,OAAAtB,KAAA,CAAAH,KAAA,OAAAC,SAAA;EAAA;AAAA,GA0BrB"}
1
+ {"version":3,"file":"utils.js","names":["ApiModel","codeGenerators","findGenerator","getSpecsFromVersions","upgradeSpecObject","log","warn","createJsonFile","readFileSync","SDKConfig","authGetUrl","fetchLookerVersion","fetchLookerVersions","LookerNotFoundError","openApiFileName","specPath","swaggerFileName","updateAndResolveSpecUrl","apiVersions","props","_props$api_versions","versions","api_versions","split","generatorHelp","process","exit","doArgs","args","noStreams","hooks","langs","length","toString","toLowerCase","i","arg","content","JSON","parse","values","filter","v","trim","forEach","gen","push","language","Error","concat","languages","l","factory","undefined","map","value","index","all","indexOf","loadConfig","config","name","Object","entries","prepGen","_ref","_asyncToGenerator","lookerVersions","lookerVersion","stringify","_unused","supported_versions","version","status","full_version","swagger_url","base_url","apis","lastApi","useHooks","_x","apply","arguments","loadSpecs","_ref2","fetch","specFetch","_ref3","spec","specURL","fetchUrl","p","_objectSpread","api_version","source","err","message","includes","upgrade","api","fromJson","test","swagger","oas","swaggerName","key","oaName","_x3","specs","keys","_x2"],"sources":["../../src/utils.ts"],"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 } from '@looker/sdk-codegen';\nimport {\n ApiModel,\n codeGenerators,\n findGenerator,\n getSpecsFromVersions,\n upgradeSpecObject,\n} from '@looker/sdk-codegen';\nimport { log, warn } from '@looker/sdk-codegen-utils';\nimport { createJsonFile, readFileSync } from './nodeUtils';\nimport type { ISDKConfigProps } from './sdkConfig';\nimport { SDKConfig } from './sdkConfig';\nimport {\n authGetUrl,\n fetchLookerVersion,\n fetchLookerVersions,\n LookerNotFoundError,\n openApiFileName,\n specPath,\n swaggerFileName,\n updateAndResolveSpecUrl,\n} from './fetchSpec';\n\nexport const apiVersions = (props: any) => {\n const versions = props.api_versions ?? '3.1,4.0';\n return versions.split(',');\n};\n\nexport interface IGenProps {\n /** Languages to generate */\n languages: string[];\n /** name of first INI config section, used for package name */\n name: string;\n /** SDK config properties from the first section */\n props: ISDKConfigProps;\n /** api specifications */\n lookerVersions: ILookerVersions;\n /** Release version */\n lookerVersion: string;\n /** Api version collection */\n apis: string[];\n /** Last API version */\n lastApi: string;\n /** Skip generating streams files? */\n noStreams: boolean;\n /** True to generate hooks and slices (only for TypeScript) */\n useHooks: boolean;\n}\n\nconst generatorHelp = () => {\n log(\n `sdkGen [languages...] [-v|--versions <versions file>] [-n|--nostreams] [-h|--help]\n languages...: zero or more language specifiers separated by space or comma. Defaults to all supported languages.\n -v|--versions: location of a JSON versions file in ILookerVersions format to read for getting specs\n -n|--nostreams: skip generation of a language SDK 'streams' files (if it supports streaming)\n -ho|--hooks: generate hooks and mocks for the TypeScript SDK\n -h|--help: display this output\n\n examples:\n # Generates all supported SDKs\n yarn gen\n\n # Generates TypeScript and Python SDKs\n yarn gen ts,py\n\n # reads specs from './versions.json' and generates TypeScript and Python SDKs\n yarn gen ts -v ./versions.json py\n`\n );\n process.exit(0);\n};\n\n/**\n * Process command-line switches for versions payload and languages\n * @param args\n */\nexport const doArgs = (args: string[]) => {\n let versions: ILookerVersions | undefined;\n let noStreams = false;\n let hooks = false;\n\n const langs: string[] = [];\n if (args.length > 0 && args.toString().toLowerCase() !== 'all') {\n let i = 0;\n while (i < args.length) {\n const arg = args[i].toLowerCase();\n switch (arg) {\n case '-v':\n case '--versions':\n {\n i++;\n const content = readFileSync(args[i]);\n versions = JSON.parse(content);\n }\n break;\n case '-h':\n case '--help':\n generatorHelp();\n break;\n case '-n':\n case '--nostreams':\n noStreams = true;\n break;\n case '-ho':\n case '--hooks':\n hooks = true;\n break;\n default:\n {\n const values = arg.split(',').filter(v => v.trim());\n if (values[0] !== 'all') {\n values.forEach(v => {\n const gen = findGenerator(v.trim());\n if (gen) {\n // Valid language match\n langs.push(gen.language);\n } else {\n throw new Error(`\"${v}\" is not a valid option`);\n }\n });\n }\n }\n break;\n }\n i++;\n }\n }\n\n // Default languages to all\n const languages = (\n langs.length > 0\n ? langs\n : codeGenerators.filter(l => l.factory !== undefined).map(l => l.language)\n ).filter((value, index, all) => all.indexOf(value) === index);\n\n return { languages, versions, noStreams, hooks };\n};\n\n/**\n * Load the default configuration settings from looker.ini\n */\nexport const loadConfig = () => {\n const config = SDKConfig();\n const [name, props] = Object.entries(config)[0];\n return { name, props };\n};\n\n/**\n * Prepare the generator configuration from all configuration options and return the config\n * @param args command-line style arguments to parse.\n */\nexport const prepGen = async (args: string[]): Promise<IGenProps> => {\n const { languages, versions, noStreams, hooks } = doArgs(args);\n const { name, props } = loadConfig();\n let lookerVersions;\n let lookerVersion = '';\n try {\n if (versions) {\n lookerVersions = versions;\n } else {\n lookerVersions = await fetchLookerVersions(props);\n createJsonFile(\n `${specPath}/versions.json`,\n JSON.stringify(lookerVersions, null, 2)\n );\n }\n lookerVersion = await fetchLookerVersion(props, lookerVersions);\n } catch {\n // Looker server is not required, so default values for the generator\n lookerVersions = {\n supported_versions: [\n {\n version: '4.0',\n status: 'stable',\n full_version: '',\n swagger_url: `https://${props.base_url}/api/4.0/swagger.json`,\n },\n ],\n };\n lookerVersion = '';\n }\n // Iterate through all specified API versions\n const apis = apiVersions(props);\n const lastApi = apis[apis.length - 1];\n\n return {\n name,\n props,\n languages,\n lookerVersions: lookerVersions as ILookerVersions,\n lookerVersion,\n apis,\n lastApi,\n noStreams,\n useHooks: hooks,\n };\n};\n\n/**\n * Load and save specifications from the versions file\n * @param config generation configuration properties\n * @param fetch false to skip fetching the spec, true to fetch. Defaults to true\n */\nexport const loadSpecs = async (config: IGenProps, fetch = true) => {\n const specFetch = async (spec: SpecItem) => {\n if (!fetch) return undefined;\n if (!spec.specURL) return undefined;\n\n const fetchUrl = updateAndResolveSpecUrl(spec, config.props);\n\n const p = { ...config.props, api_version: spec.version };\n let source;\n try {\n source = await authGetUrl(p, fetchUrl);\n } catch (err: any) {\n if (err.message && err.message.includes(LookerNotFoundError)) {\n warn(\n `Skipping missing spec file: ${fetchUrl} (${LookerNotFoundError})`\n );\n return undefined;\n }\n throw err;\n }\n if (typeof source === 'string') source = JSON.parse(source);\n const upgrade = upgradeSpecObject(source);\n spec.api = ApiModel.fromJson(upgrade);\n if (/^http[s]?:\\/\\//i.test(spec.specURL)) {\n const swagger = JSON.stringify(source, null, 2);\n const oas = JSON.stringify(upgrade, null, 2);\n const swaggerName = swaggerFileName(config.name, spec.key);\n const oaName = openApiFileName(config.name, spec.key);\n createJsonFile(swaggerName, swagger);\n createJsonFile(oaName, oas);\n log(`fetched and saved ${swaggerName} and converted it to ${oaName}`);\n }\n return spec.api;\n };\n\n const specs = await getSpecsFromVersions(config.lookerVersions, specFetch);\n // NOTE: Reaching in and updating the api versions list from established spec keys\n config.apis = Object.keys(specs);\n\n return specs;\n};\n"],"mappings":"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"}
@@ -13,6 +13,8 @@ export declare const getUrl: (props: ISDKConfigProps, url: string, options?: Par
13
13
  export declare const authGetUrl: (props: ISDKConfigProps, url: string, failQuits?: boolean, options?: Partial<ITransportSettings>) => Promise<any>;
14
14
  export declare const fetchLookerVersions: (props: ISDKConfigProps, options?: Partial<ITransportSettings>) => Promise<any>;
15
15
  export declare const fetchLookerVersion: (props: ISDKConfigProps, versions?: any, options?: Partial<ITransportSettings>) => Promise<any>;
16
+ export declare const LookerNotFoundError = "Looker Not Found (404)";
17
+ export declare const updateAndResolveSpecUrl: (spec: SpecItem, props: ISDKConfigProps) => string;
16
18
  export declare const fetchSpec: (name: string, spec: SpecItem, props: ISDKConfigProps) => Promise<string>;
17
19
  export declare const logFetchSpec: (name: string, spec: SpecItem, props: ISDKConfigProps) => Promise<string>;
18
20
  export declare const getVersionInfo: (props: ISDKConfigProps) => Promise<IVersionInfo | undefined>;
package/lib/fetchSpec.js CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.swaggerFileName = exports.supportedVersion = exports.specTransport = exports.specPath = exports.openApiFileName = exports.logout = exports.login = exports.logFetchSpec = exports.logConvertSpec = exports.getVersionInfo = exports.getUrl = exports.fetchSpec = exports.fetchLookerVersions = exports.fetchLookerVersion = exports.authGetUrl = void 0;
6
+ exports.updateAndResolveSpecUrl = exports.swaggerFileName = exports.supportedVersion = exports.specTransport = exports.specPath = exports.openApiFileName = exports.logout = exports.login = exports.logFetchSpec = exports.logConvertSpec = exports.getVersionInfo = exports.getUrl = exports.fetchSpec = exports.fetchLookerVersions = exports.fetchLookerVersion = exports.authGetUrl = exports.LookerNotFoundError = void 0;
7
7
  var _sdkCodegenUtils = require("@looker/sdk-codegen-utils");
8
8
  var _sdkRtl = require("@looker/sdk-rtl");
9
9
  var _sdkNode = require("@looker/sdk-node");
@@ -117,13 +117,13 @@ var authGetUrl = exports.authGetUrl = function () {
117
117
  throw err;
118
118
  }
119
119
  options = (0, _sdkRtl.mergeOptions)(props, (_options = options) !== null && _options !== void 0 ? _options : {});
120
- options = (0, _sdkRtl.mergeOptions)(options, {
120
+ token = yield login(options);
121
+ var authOptions = (0, _sdkRtl.mergeOptions)(options, {
121
122
  headers: {
122
123
  Authorization: "Bearer ".concat(token)
123
124
  }
124
125
  });
125
- token = yield login(options);
126
- content = yield getUrl(props, url, options);
126
+ content = yield getUrl(props, url, authOptions);
127
127
  if (token) {
128
128
  yield logout(props, token);
129
129
  }
@@ -167,15 +167,35 @@ var fetchLookerVersion = exports.fetchLookerVersion = function () {
167
167
  return _ref7.apply(this, arguments);
168
168
  };
169
169
  }();
170
+ var LookerNotFoundError = exports.LookerNotFoundError = 'Looker Not Found (404)';
171
+ var updateAndResolveSpecUrl = (spec, props) => {
172
+ var fetchUrl = spec.specURL || 'missing spec url';
173
+ try {
174
+ var specUrlObj = new URL(fetchUrl);
175
+ var baseUrlObj = new URL(props.base_url);
176
+ if (specUrlObj.hostname === baseUrlObj.hostname && specUrlObj.port !== baseUrlObj.port) {
177
+ specUrlObj.port = baseUrlObj.port;
178
+ fetchUrl = specUrlObj.toString();
179
+ spec.specURL = fetchUrl;
180
+ }
181
+ } catch (e) {}
182
+ return fetchUrl;
183
+ };
184
+ exports.updateAndResolveSpecUrl = updateAndResolveSpecUrl;
170
185
  var fetchSpec = exports.fetchSpec = function () {
171
186
  var _ref8 = _asyncToGenerator(function* (name, spec, props) {
172
187
  var fileName = swaggerFileName(name, spec.key);
173
188
  if ((0, _nodeUtils.isFileSync)(fileName)) return fileName;
189
+ var fetchUrl = updateAndResolveSpecUrl(spec, props);
174
190
  try {
175
- var content = yield authGetUrl(props, spec.specURL || 'missing spec url');
191
+ var content = yield authGetUrl(props, fetchUrl);
176
192
  (0, _nodeUtils.createJsonFile)(fileName, content);
177
193
  return fileName;
178
194
  } catch (err) {
195
+ if (err.message && err.message.includes(LookerNotFoundError)) {
196
+ (0, _sdkCodegenUtils.warn)("Skipping missing spec file: ".concat(fetchUrl, " (").concat(LookerNotFoundError, ")"));
197
+ return '';
198
+ }
179
199
  checkCertError(err);
180
200
  return (0, _nodeUtils.quit)(err);
181
201
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fetchSpec.js","names":["_sdkCodegenUtils","require","_sdkRtl","_sdkNode","_nodeUtils","_convert","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","transport","specTransport","props","options","agentTag","base_url","timeout","defaultTimeout","verify_ssl","NodeTransport","exports","loginUrl","concat","api_version","logoutUrl","supportedVersion","version","versions","danger","found","Object","entries","supported_versions","find","_ref","specPath","swaggerFileName","name","specKey","openApiFileName","badAuth","content","text","JSON","stringify","indexOf","logout","_ref2","token","xp","sdkOk","request","headers","Authorization","_x","_x2","login","_ref3","_props$client_id","_props$client_secret","creds","client_id","process","env","LOOKERSDK_CLIENT_ID","client_secret","LOOKERSDK_CLIENT_SECRET","url","response","accessToken","access_token","log","Error","_x3","checkCertError","message","match","warn","getUrl","_ref4","ref","URL","protocol","readFileSync","pathname","_x4","_x5","_x6","authGetUrl","_ref5","failQuits","length","_options","mergeOptions","authFailed","quit","_x7","_x8","fetchLookerVersions","_ref6","_x9","_x10","fetchLookerVersion","_ref7","e","matches","looker_release_version","_x11","_x12","_x13","fetchSpec","_ref8","spec","fileName","isFileSync","specURL","createJsonFile","_x14","_x15","_x16","logFetchSpec","_ref9","specFile","fail","_x17","_x18","_x19","getVersionInfo","_ref10","lookerVersion","isDefault","status","console","_x20","logConvertSpec","_ref11","force","result","oaFile","convertSpec","_x21","_x22","_x23"],"sources":["../src/fetchSpec.ts"],"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 { danger, log, warn } from '@looker/sdk-codegen-utils';\nimport type { IVersionInfo, SpecItem } from '@looker/sdk-codegen';\nimport type { ITransportSettings } from '@looker/sdk-rtl';\nimport { defaultTimeout, mergeOptions, sdkOk } from '@looker/sdk-rtl';\nimport { NodeTransport } from '@looker/sdk-node';\nimport {\n createJsonFile,\n fail,\n isFileSync,\n quit,\n readFileSync,\n} from './nodeUtils';\nimport type { ISDKConfigProps } from './sdkConfig';\nimport { convertSpec } from './convert';\n\nlet transport: NodeTransport;\n\n/**\n * Customize request transport properties for SDK codegen\n * @param props SDK configuration properties\n * @returns {NodeTransport} codegen-specific overrides\n * @constructor\n */\nexport const specTransport = (props: ISDKConfigProps) => {\n if (transport) return transport;\n const options: ITransportSettings = {\n agentTag: 'SDK Codegen',\n base_url: props.base_url,\n timeout: (props as unknown as any).timeout || defaultTimeout,\n verify_ssl: props.verify_ssl,\n };\n transport = new NodeTransport(options);\n return transport;\n};\n\nconst loginUrl = (props: ISDKConfigProps) =>\n `${props.base_url}/api/${props.api_version}/login`;\n\nconst logoutUrl = (props: ISDKConfigProps) =>\n `${props.base_url}/api/${props.api_version}/logout`;\n\nexport const supportedVersion = (version: string, versions: any) => {\n if (!('supported_versions' in versions)) {\n danger('Could not find supported versions');\n return undefined;\n }\n const found = Object.entries(versions.supported_versions).find(\n ([, value]) => (value as any).version === version\n );\n if (found) return found[1];\n return undefined;\n};\n\nexport const specPath = 'spec';\n\nexport const swaggerFileName = (name: string, specKey: string) =>\n `${specPath}/${name}.${specKey}.json`;\n\nexport const openApiFileName = (name: string, specKey: string) =>\n `${specPath}/${name}.${specKey}.oas.json`;\n\n/**\n * Is there an authentication error?\n * @param content response to check\n * @returns True if there's an authentication error\n */\nconst badAuth = (content: string | Record<string, unknown>) => {\n const text = typeof content === 'object' ? JSON.stringify(content) : content;\n return text.indexOf('Requires authentication') > 0;\n};\n\nexport const logout = async (props: ISDKConfigProps, token: string) => {\n const xp = specTransport(props);\n\n return sdkOk<string, Error>(\n xp.request<string, Error>(\n 'DELETE',\n logoutUrl(props),\n undefined,\n undefined,\n undefined,\n { headers: { Authorization: `Bearer ${token}` } }\n )\n );\n};\n\nexport const login = async (props: ISDKConfigProps) => {\n const xp = specTransport(props);\n const creds = {\n client_id: props.client_id ?? process.env.LOOKERSDK_CLIENT_ID,\n client_secret: props.client_secret ?? process.env.LOOKERSDK_CLIENT_SECRET,\n };\n const url = loginUrl(props);\n\n const response = await sdkOk<any, Error>(\n xp.request<any, Error>('POST', url, creds, undefined, undefined, props)\n );\n const accessToken = await response.access_token;\n\n if (accessToken) {\n return accessToken;\n } else {\n log(`Server Response: ${JSON.stringify(response)}`);\n throw new Error('Access token could not be retrieved.');\n }\n};\n\nconst checkCertError = (err: Error): boolean => {\n if (err.message && err.message.match(/self signed certificate/gi)) {\n warn(`\nNOTE! Certificate validation can be disabled with:\n NODE_TLS_REJECT_UNAUTHORIZED=\"0\" {original command}\n`);\n return true;\n }\n return false;\n};\n\n/**\n * gets either an http(s) url, or a file URL by reading directly if it's a file url\n * @param props SDK configuration props\n * @param url to fetch\n * @param options for transport call\n */\nexport const getUrl = async (\n props: ISDKConfigProps,\n url: string,\n options?: Partial<ITransportSettings>\n) => {\n const ref = new URL(url);\n\n if (ref.protocol === 'file:') {\n return readFileSync(ref.pathname);\n }\n const xp = specTransport(props);\n return await sdkOk<string, Error>(\n xp.request('GET', url, undefined, undefined, undefined, options)\n );\n};\n\nexport const authGetUrl = async (\n props: ISDKConfigProps,\n url: string,\n failQuits = true,\n options?: Partial<ITransportSettings>\n) => {\n let token = null;\n let content: any = null;\n try {\n // Try first without login. Most Looker instances don't require auth for spec retrieval\n content = await getUrl(props, url, options);\n } catch (err: any) {\n if (err.message.indexOf('ETIMEDOUT') > 0) {\n throw err;\n }\n // Whoops! Ok, try again with login\n options = mergeOptions(props, options ?? {});\n options = mergeOptions(options, {\n headers: { Authorization: `Bearer ${token}` },\n });\n token = await login(options as ISDKConfigProps);\n content = await getUrl(props, url, options);\n if (token) {\n await logout(props, token);\n }\n }\n\n if (badAuth(content)) {\n const authFailed = 'Authentication failed';\n if (failQuits) {\n return quit(authFailed);\n } else {\n throw new Error(authFailed);\n }\n }\n return content;\n};\n\nexport const fetchLookerVersions = async (\n props: ISDKConfigProps,\n options?: Partial<ITransportSettings>\n) => {\n return await authGetUrl(props, `${props.base_url}/versions`, false, options);\n};\n\nexport const fetchLookerVersion = async (\n props: ISDKConfigProps,\n versions?: any,\n options?: Partial<ITransportSettings>\n) => {\n if (!versions) {\n try {\n versions = await fetchLookerVersions(props, options);\n } catch (e: any) {\n warn(\n `Could not retrieve looker release version from \"${props.base_url}/versions\": ${e.message}`\n );\n return '';\n }\n }\n const matches = versions.looker_release_version.match(/^\\d+\\.\\d+/i);\n return matches[0];\n};\n\nexport const fetchSpec = async (\n name: string,\n spec: SpecItem,\n props: ISDKConfigProps\n) => {\n const fileName = swaggerFileName(name, spec.key);\n // No need to fetch if the file already exists\n // TODO make this a switch or remove caching?\n if (isFileSync(fileName)) return fileName;\n\n try {\n const content = await authGetUrl(props, spec.specURL || 'missing spec url');\n\n createJsonFile(fileName, content);\n\n return fileName;\n } catch (err: any) {\n checkCertError(err);\n return quit(err);\n }\n};\n\nexport const logFetchSpec = async (\n name: string,\n spec: SpecItem,\n props: ISDKConfigProps\n) => {\n const specFile = await fetchSpec(name, spec, props);\n if (!specFile) {\n return fail('fetchSpec', 'No specification file name returned');\n }\n return specFile;\n};\n\nexport const getVersionInfo = async (\n props: ISDKConfigProps\n): Promise<IVersionInfo | undefined> => {\n try {\n const lookerVersion = await fetchLookerVersion(props);\n return {\n spec: {\n key: props.api_version,\n version: props.api_version,\n isDefault: false,\n status: 'mocked',\n },\n lookerVersion,\n };\n } catch (e: any) {\n warn(\n `Could not retrieve version information. Is ${props.base_url} running?`\n );\n checkCertError(e);\n console.error({ e });\n }\n return undefined;\n};\n\n/**\n * Fetch (if needed) and convert a Swagger API specification to OpenAPI\n * @param name base name of the target file\n * @param spec specification derived\n * @param props SDK configuration properties to use\n * @param force true to force re-conversion of the spec\n * @returns {Promise<string>} name of converted OpenAPI file\n */\nexport const logConvertSpec = async (\n name: string,\n spec: SpecItem,\n props: ISDKConfigProps,\n force = false\n) => {\n // if openApiFile is resolved correctly, this value will be the file name\n let result = '';\n const oaFile = openApiFileName(name, spec.key);\n if (isFileSync(oaFile) && !force) return oaFile;\n\n const specFile = await logFetchSpec(name, spec, props);\n result = convertSpec(specFile, oaFile, force);\n if (!result) {\n return fail('logConvert', 'No file name returned for openAPI upgrade');\n }\n\n return result;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"fetchSpec.js","names":["_sdkCodegenUtils","require","_sdkRtl","_sdkNode","_nodeUtils","_convert","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","transport","specTransport","props","options","agentTag","base_url","timeout","defaultTimeout","verify_ssl","NodeTransport","exports","loginUrl","concat","api_version","logoutUrl","supportedVersion","version","versions","danger","found","Object","entries","supported_versions","find","_ref","specPath","swaggerFileName","name","specKey","openApiFileName","badAuth","content","text","JSON","stringify","indexOf","logout","_ref2","token","xp","sdkOk","request","headers","Authorization","_x","_x2","login","_ref3","_props$client_id","_props$client_secret","creds","client_id","process","env","LOOKERSDK_CLIENT_ID","client_secret","LOOKERSDK_CLIENT_SECRET","url","response","accessToken","access_token","log","Error","_x3","checkCertError","message","match","warn","getUrl","_ref4","ref","URL","protocol","readFileSync","pathname","_x4","_x5","_x6","authGetUrl","_ref5","failQuits","length","_options","mergeOptions","authOptions","authFailed","quit","_x7","_x8","fetchLookerVersions","_ref6","_x9","_x10","fetchLookerVersion","_ref7","e","matches","looker_release_version","_x11","_x12","_x13","LookerNotFoundError","updateAndResolveSpecUrl","spec","fetchUrl","specURL","specUrlObj","baseUrlObj","hostname","port","toString","fetchSpec","_ref8","fileName","isFileSync","createJsonFile","includes","_x14","_x15","_x16","logFetchSpec","_ref9","specFile","fail","_x17","_x18","_x19","getVersionInfo","_ref10","lookerVersion","isDefault","status","console","_x20","logConvertSpec","_ref11","force","result","oaFile","convertSpec","_x21","_x22","_x23"],"sources":["../src/fetchSpec.ts"],"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 { danger, log, warn } from '@looker/sdk-codegen-utils';\nimport type { IVersionInfo, SpecItem } from '@looker/sdk-codegen';\nimport type { ITransportSettings } from '@looker/sdk-rtl';\nimport { defaultTimeout, mergeOptions, sdkOk } from '@looker/sdk-rtl';\nimport { NodeTransport } from '@looker/sdk-node';\nimport {\n createJsonFile,\n fail,\n isFileSync,\n quit,\n readFileSync,\n} from './nodeUtils';\nimport type { ISDKConfigProps } from './sdkConfig';\nimport { convertSpec } from './convert';\n\nlet transport: NodeTransport;\n\n/**\n * Customize request transport properties for SDK codegen\n * @param props SDK configuration properties\n * @returns {NodeTransport} codegen-specific overrides\n * @constructor\n */\nexport const specTransport = (props: ISDKConfigProps) => {\n if (transport) return transport;\n const options: ITransportSettings = {\n agentTag: 'SDK Codegen',\n base_url: props.base_url,\n timeout: (props as unknown as any).timeout || defaultTimeout,\n verify_ssl: props.verify_ssl,\n };\n transport = new NodeTransport(options);\n return transport;\n};\n\nconst loginUrl = (props: ISDKConfigProps) =>\n `${props.base_url}/api/${props.api_version}/login`;\n\nconst logoutUrl = (props: ISDKConfigProps) =>\n `${props.base_url}/api/${props.api_version}/logout`;\n\nexport const supportedVersion = (version: string, versions: any) => {\n if (!('supported_versions' in versions)) {\n danger('Could not find supported versions');\n return undefined;\n }\n const found = Object.entries(versions.supported_versions).find(\n ([, value]) => (value as any).version === version\n );\n if (found) return found[1];\n return undefined;\n};\n\nexport const specPath = 'spec';\n\nexport const swaggerFileName = (name: string, specKey: string) =>\n `${specPath}/${name}.${specKey}.json`;\n\nexport const openApiFileName = (name: string, specKey: string) =>\n `${specPath}/${name}.${specKey}.oas.json`;\n\n/**\n * Is there an authentication error?\n * @param content response to check\n * @returns True if there's an authentication error\n */\nconst badAuth = (content: string | Record<string, unknown>) => {\n const text = typeof content === 'object' ? JSON.stringify(content) : content;\n return text.indexOf('Requires authentication') > 0;\n};\n\nexport const logout = async (props: ISDKConfigProps, token: string) => {\n const xp = specTransport(props);\n\n return sdkOk<string, Error>(\n xp.request<string, Error>(\n 'DELETE',\n logoutUrl(props),\n undefined,\n undefined,\n undefined,\n { headers: { Authorization: `Bearer ${token}` } }\n )\n );\n};\n\nexport const login = async (props: ISDKConfigProps) => {\n const xp = specTransport(props);\n const creds = {\n client_id: props.client_id ?? process.env.LOOKERSDK_CLIENT_ID,\n client_secret: props.client_secret ?? process.env.LOOKERSDK_CLIENT_SECRET,\n };\n const url = loginUrl(props);\n\n const response = await sdkOk<any, Error>(\n xp.request<any, Error>('POST', url, creds, undefined, undefined, props)\n );\n const accessToken = await response.access_token;\n\n if (accessToken) {\n return accessToken;\n } else {\n log(`Server Response: ${JSON.stringify(response)}`);\n throw new Error('Access token could not be retrieved.');\n }\n};\n\nconst checkCertError = (err: Error): boolean => {\n if (err.message && err.message.match(/self signed certificate/gi)) {\n warn(`\nNOTE! Certificate validation can be disabled with:\n NODE_TLS_REJECT_UNAUTHORIZED=\"0\" {original command}\n`);\n return true;\n }\n return false;\n};\n\n/**\n * gets either an http(s) url, or a file URL by reading directly if it's a file url\n * @param props SDK configuration props\n * @param url to fetch\n * @param options for transport call\n */\nexport const getUrl = async (\n props: ISDKConfigProps,\n url: string,\n options?: Partial<ITransportSettings>\n) => {\n const ref = new URL(url);\n\n if (ref.protocol === 'file:') {\n return readFileSync(ref.pathname);\n }\n const xp = specTransport(props);\n return await sdkOk<string, Error>(\n xp.request('GET', url, undefined, undefined, undefined, options)\n );\n};\n\nexport const authGetUrl = async (\n props: ISDKConfigProps,\n url: string,\n failQuits = true,\n options?: Partial<ITransportSettings>\n) => {\n let token = null;\n let content: any = null;\n try {\n // Try first without login. Most Looker instances don't require auth for spec retrieval\n content = await getUrl(props, url, options);\n } catch (err: any) {\n if (err.message.indexOf('ETIMEDOUT') > 0) {\n throw err;\n }\n // Whoops! Ok, try again with login\n options = mergeOptions(props, options ?? {});\n token = await login(options as ISDKConfigProps);\n // Add the token to the headers for the subsequent getUrl call\n const authOptions = mergeOptions(options, {\n headers: { Authorization: `Bearer ${token}` },\n });\n content = await getUrl(props, url, authOptions);\n if (token) {\n await logout(props, token);\n }\n }\n\n if (badAuth(content)) {\n const authFailed = 'Authentication failed';\n if (failQuits) {\n return quit(authFailed);\n } else {\n throw new Error(authFailed);\n }\n }\n return content;\n};\n\nexport const fetchLookerVersions = async (\n props: ISDKConfigProps,\n options?: Partial<ITransportSettings>\n) => {\n return await authGetUrl(props, `${props.base_url}/versions`, false, options);\n};\n\nexport const fetchLookerVersion = async (\n props: ISDKConfigProps,\n versions?: any,\n options?: Partial<ITransportSettings>\n) => {\n if (!versions) {\n try {\n versions = await fetchLookerVersions(props, options);\n } catch (e: any) {\n warn(\n `Could not retrieve looker release version from \"${props.base_url}/versions\": ${e.message}`\n );\n return '';\n }\n }\n const matches = versions.looker_release_version.match(/^\\d+\\.\\d+/i);\n return matches[0];\n};\n\nexport const LookerNotFoundError = 'Looker Not Found (404)';\n\nexport const updateAndResolveSpecUrl = (\n spec: SpecItem,\n props: ISDKConfigProps\n): string => {\n let fetchUrl = spec.specURL || 'missing spec url';\n try {\n const specUrlObj = new URL(fetchUrl);\n const baseUrlObj = new URL(props.base_url);\n if (\n specUrlObj.hostname === baseUrlObj.hostname &&\n specUrlObj.port !== baseUrlObj.port\n ) {\n specUrlObj.port = baseUrlObj.port;\n fetchUrl = specUrlObj.toString();\n spec.specURL = fetchUrl; // Update it on the spec object too\n }\n } catch (e) {\n // Ignore URL parsing errors, just fall back to original specURL\n }\n return fetchUrl;\n};\n\nexport const fetchSpec = async (\n name: string,\n spec: SpecItem,\n props: ISDKConfigProps\n) => {\n const fileName = swaggerFileName(name, spec.key);\n // No need to fetch if the file already exists\n // TODO make this a switch or remove caching?\n if (isFileSync(fileName)) return fileName;\n\n const fetchUrl = updateAndResolveSpecUrl(spec, props);\n\n try {\n const content = await authGetUrl(props, fetchUrl);\n\n createJsonFile(fileName, content);\n\n return fileName;\n } catch (err: any) {\n if (err.message && err.message.includes(LookerNotFoundError)) {\n warn(`Skipping missing spec file: ${fetchUrl} (${LookerNotFoundError})`);\n return '';\n }\n checkCertError(err);\n return quit(err);\n }\n};\n\nexport const logFetchSpec = async (\n name: string,\n spec: SpecItem,\n props: ISDKConfigProps\n) => {\n const specFile = await fetchSpec(name, spec, props);\n if (!specFile) {\n return fail('fetchSpec', 'No specification file name returned');\n }\n return specFile;\n};\n\nexport const getVersionInfo = async (\n props: ISDKConfigProps\n): Promise<IVersionInfo | undefined> => {\n try {\n const lookerVersion = await fetchLookerVersion(props);\n return {\n spec: {\n key: props.api_version,\n version: props.api_version,\n isDefault: false,\n status: 'mocked',\n },\n lookerVersion,\n };\n } catch (e: any) {\n warn(\n `Could not retrieve version information. Is ${props.base_url} running?`\n );\n checkCertError(e);\n console.error({ e });\n }\n return undefined;\n};\n\n/**\n * Fetch (if needed) and convert a Swagger API specification to OpenAPI\n * @param name base name of the target file\n * @param spec specification derived\n * @param props SDK configuration properties to use\n * @param force true to force re-conversion of the spec\n * @returns {Promise<string>} name of converted OpenAPI file\n */\nexport const logConvertSpec = async (\n name: string,\n spec: SpecItem,\n props: ISDKConfigProps,\n force = false\n) => {\n // if openApiFile is resolved correctly, this value will be the file name\n let result = '';\n const oaFile = openApiFileName(name, spec.key);\n if (isFileSync(oaFile) && !force) return oaFile;\n\n const specFile = await logFetchSpec(name, spec, props);\n result = convertSpec(specFile, oaFile, force);\n if (!result) {\n return fail('logConvert', 'No file name returned for openAPI upgrade');\n }\n\n return result;\n};\n"],"mappings":"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"}
package/lib/utils.js CHANGED
@@ -151,10 +151,20 @@ var loadSpecs = exports.loadSpecs = function () {
151
151
  var _ref3 = _asyncToGenerator(function* (spec) {
152
152
  if (!fetch) return undefined;
153
153
  if (!spec.specURL) return undefined;
154
+ var fetchUrl = (0, _fetchSpec.updateAndResolveSpecUrl)(spec, config.props);
154
155
  var p = _objectSpread(_objectSpread({}, config.props), {}, {
155
156
  api_version: spec.version
156
157
  });
157
- var source = yield (0, _fetchSpec.authGetUrl)(p, spec.specURL);
158
+ var source;
159
+ try {
160
+ source = yield (0, _fetchSpec.authGetUrl)(p, fetchUrl);
161
+ } catch (err) {
162
+ if (err.message && err.message.includes(_fetchSpec.LookerNotFoundError)) {
163
+ (0, _sdkCodegenUtils.warn)("Skipping missing spec file: ".concat(fetchUrl, " (").concat(_fetchSpec.LookerNotFoundError, ")"));
164
+ return undefined;
165
+ }
166
+ throw err;
167
+ }
158
168
  if (typeof source === 'string') source = JSON.parse(source);
159
169
  var upgrade = (0, _sdkCodegen.upgradeSpecObject)(source);
160
170
  spec.api = _sdkCodegen.ApiModel.fromJson(upgrade);
package/lib/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["_sdkCodegen","require","_sdkCodegenUtils","_nodeUtils","_sdkConfig","_fetchSpec","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","String","Symbol","toPrimitive","call","TypeError","Number","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","info","error","done","Promise","then","_asyncToGenerator","fn","self","args","err","undefined","apiVersions","props","_props$api_versions","versions","api_versions","split","exports","generatorHelp","log","process","exit","doArgs","noStreams","hooks","langs","toString","toLowerCase","content","readFileSync","JSON","parse","values","v","trim","findGenerator","language","Error","concat","languages","codeGenerators","l","factory","map","index","all","indexOf","loadConfig","config","SDKConfig","name","entries","prepGen","_ref","lookerVersions","lookerVersion","fetchLookerVersions","createJsonFile","specPath","stringify","fetchLookerVersion","_unused","supported_versions","version","status","full_version","swagger_url","base_url","apis","lastApi","useHooks","_x","loadSpecs","_ref2","fetch","specFetch","_ref3","spec","specURL","p","api_version","source","authGetUrl","upgrade","upgradeSpecObject","api","ApiModel","fromJson","test","swagger","oas","swaggerName","swaggerFileName","oaName","openApiFileName","_x3","specs","getSpecsFromVersions","_x2"],"sources":["../src/utils.ts"],"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 } from '@looker/sdk-codegen';\nimport {\n ApiModel,\n codeGenerators,\n findGenerator,\n getSpecsFromVersions,\n upgradeSpecObject,\n} from '@looker/sdk-codegen';\nimport { log } from '@looker/sdk-codegen-utils';\nimport { createJsonFile, readFileSync } from './nodeUtils';\nimport type { ISDKConfigProps } from './sdkConfig';\nimport { SDKConfig } from './sdkConfig';\nimport {\n authGetUrl,\n fetchLookerVersion,\n fetchLookerVersions,\n openApiFileName,\n specPath,\n swaggerFileName,\n} from './fetchSpec';\n\nexport const apiVersions = (props: any) => {\n const versions = props.api_versions ?? '3.1,4.0';\n return versions.split(',');\n};\n\nexport interface IGenProps {\n /** Languages to generate */\n languages: string[];\n /** name of first INI config section, used for package name */\n name: string;\n /** SDK config properties from the first section */\n props: ISDKConfigProps;\n /** api specifications */\n lookerVersions: ILookerVersions;\n /** Release version */\n lookerVersion: string;\n /** Api version collection */\n apis: string[];\n /** Last API version */\n lastApi: string;\n /** Skip generating streams files? */\n noStreams: boolean;\n /** True to generate hooks and slices (only for TypeScript) */\n useHooks: boolean;\n}\n\nconst generatorHelp = () => {\n log(\n `sdkGen [languages...] [-v|--versions <versions file>] [-n|--nostreams] [-h|--help]\n languages...: zero or more language specifiers separated by space or comma. Defaults to all supported languages.\n -v|--versions: location of a JSON versions file in ILookerVersions format to read for getting specs\n -n|--nostreams: skip generation of a language SDK 'streams' files (if it supports streaming)\n -ho|--hooks: generate hooks and mocks for the TypeScript SDK\n -h|--help: display this output\n\n examples:\n # Generates all supported SDKs\n yarn gen\n\n # Generates TypeScript and Python SDKs\n yarn gen ts,py\n\n # reads specs from './versions.json' and generates TypeScript and Python SDKs\n yarn gen ts -v ./versions.json py\n`\n );\n process.exit(0);\n};\n\n/**\n * Process command-line switches for versions payload and languages\n * @param args\n */\nexport const doArgs = (args: string[]) => {\n let versions: ILookerVersions | undefined;\n let noStreams = false;\n let hooks = false;\n\n const langs: string[] = [];\n if (args.length > 0 && args.toString().toLowerCase() !== 'all') {\n let i = 0;\n while (i < args.length) {\n const arg = args[i].toLowerCase();\n switch (arg) {\n case '-v':\n case '--versions':\n {\n i++;\n const content = readFileSync(args[i]);\n versions = JSON.parse(content);\n }\n break;\n case '-h':\n case '--help':\n generatorHelp();\n break;\n case '-n':\n case '--nostreams':\n noStreams = true;\n break;\n case '-ho':\n case '--hooks':\n hooks = true;\n break;\n default:\n {\n const values = arg.split(',').filter(v => v.trim());\n if (values[0] !== 'all') {\n values.forEach(v => {\n const gen = findGenerator(v.trim());\n if (gen) {\n // Valid language match\n langs.push(gen.language);\n } else {\n throw new Error(`\"${v}\" is not a valid option`);\n }\n });\n }\n }\n break;\n }\n i++;\n }\n }\n\n // Default languages to all\n const languages = (\n langs.length > 0\n ? langs\n : codeGenerators.filter(l => l.factory !== undefined).map(l => l.language)\n ).filter((value, index, all) => all.indexOf(value) === index);\n\n return { languages, versions, noStreams, hooks };\n};\n\n/**\n * Load the default configuration settings from looker.ini\n */\nexport const loadConfig = () => {\n const config = SDKConfig();\n const [name, props] = Object.entries(config)[0];\n return { name, props };\n};\n\n/**\n * Prepare the generator configuration from all configuration options and return the config\n * @param args command-line style arguments to parse.\n */\nexport const prepGen = async (args: string[]): Promise<IGenProps> => {\n const { languages, versions, noStreams, hooks } = doArgs(args);\n const { name, props } = loadConfig();\n let lookerVersions;\n let lookerVersion = '';\n try {\n if (versions) {\n lookerVersions = versions;\n } else {\n lookerVersions = await fetchLookerVersions(props);\n createJsonFile(\n `${specPath}/versions.json`,\n JSON.stringify(lookerVersions, null, 2)\n );\n }\n lookerVersion = await fetchLookerVersion(props, lookerVersions);\n } catch {\n // Looker server is not required, so default values for the generator\n lookerVersions = {\n supported_versions: [\n {\n version: '4.0',\n status: 'stable',\n full_version: '',\n swagger_url: `https://${props.base_url}/api/4.0/swagger.json`,\n },\n ],\n };\n lookerVersion = '';\n }\n // Iterate through all specified API versions\n const apis = apiVersions(props);\n const lastApi = apis[apis.length - 1];\n\n return {\n name,\n props,\n languages,\n lookerVersions: lookerVersions as ILookerVersions,\n lookerVersion,\n apis,\n lastApi,\n noStreams,\n useHooks: hooks,\n };\n};\n\n/**\n * Load and save specifications from the versions file\n * @param config generation configuration properties\n * @param fetch false to skip fetching the spec, true to fetch. Defaults to true\n */\nexport const loadSpecs = async (config: IGenProps, fetch = true) => {\n const specFetch = async (spec: SpecItem) => {\n if (!fetch) return undefined;\n if (!spec.specURL) return undefined;\n const p = { ...config.props, api_version: spec.version };\n let source = await authGetUrl(p, spec.specURL);\n if (typeof source === 'string') source = JSON.parse(source);\n const upgrade = upgradeSpecObject(source);\n spec.api = ApiModel.fromJson(upgrade);\n if (/^http[s]?:\\/\\//i.test(spec.specURL)) {\n const swagger = JSON.stringify(source, null, 2);\n const oas = JSON.stringify(upgrade, null, 2);\n const swaggerName = swaggerFileName(config.name, spec.key);\n const oaName = openApiFileName(config.name, spec.key);\n createJsonFile(swaggerName, swagger);\n createJsonFile(oaName, oas);\n log(`fetched and saved ${swaggerName} and converted it to ${oaName}`);\n }\n return spec.api;\n };\n\n const specs = await getSpecsFromVersions(config.lookerVersions, specFetch);\n // NOTE: Reaching in and updating the api versions list from established spec keys\n config.apis = Object.keys(specs);\n\n return specs;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","names":["_sdkCodegen","require","_sdkCodegenUtils","_nodeUtils","_sdkConfig","_fetchSpec","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","String","Symbol","toPrimitive","call","TypeError","Number","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","info","error","done","Promise","then","_asyncToGenerator","fn","self","args","err","undefined","apiVersions","props","_props$api_versions","versions","api_versions","split","exports","generatorHelp","log","process","exit","doArgs","noStreams","hooks","langs","toString","toLowerCase","content","readFileSync","JSON","parse","values","v","trim","findGenerator","language","Error","concat","languages","codeGenerators","l","factory","map","index","all","indexOf","loadConfig","config","SDKConfig","name","entries","prepGen","_ref","lookerVersions","lookerVersion","fetchLookerVersions","createJsonFile","specPath","stringify","fetchLookerVersion","_unused","supported_versions","version","status","full_version","swagger_url","base_url","apis","lastApi","useHooks","_x","loadSpecs","_ref2","fetch","specFetch","_ref3","spec","specURL","fetchUrl","updateAndResolveSpecUrl","p","api_version","source","authGetUrl","message","includes","LookerNotFoundError","warn","upgrade","upgradeSpecObject","api","ApiModel","fromJson","test","swagger","oas","swaggerName","swaggerFileName","oaName","openApiFileName","_x3","specs","getSpecsFromVersions","_x2"],"sources":["../src/utils.ts"],"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 } from '@looker/sdk-codegen';\nimport {\n ApiModel,\n codeGenerators,\n findGenerator,\n getSpecsFromVersions,\n upgradeSpecObject,\n} from '@looker/sdk-codegen';\nimport { log, warn } from '@looker/sdk-codegen-utils';\nimport { createJsonFile, readFileSync } from './nodeUtils';\nimport type { ISDKConfigProps } from './sdkConfig';\nimport { SDKConfig } from './sdkConfig';\nimport {\n authGetUrl,\n fetchLookerVersion,\n fetchLookerVersions,\n LookerNotFoundError,\n openApiFileName,\n specPath,\n swaggerFileName,\n updateAndResolveSpecUrl,\n} from './fetchSpec';\n\nexport const apiVersions = (props: any) => {\n const versions = props.api_versions ?? '3.1,4.0';\n return versions.split(',');\n};\n\nexport interface IGenProps {\n /** Languages to generate */\n languages: string[];\n /** name of first INI config section, used for package name */\n name: string;\n /** SDK config properties from the first section */\n props: ISDKConfigProps;\n /** api specifications */\n lookerVersions: ILookerVersions;\n /** Release version */\n lookerVersion: string;\n /** Api version collection */\n apis: string[];\n /** Last API version */\n lastApi: string;\n /** Skip generating streams files? */\n noStreams: boolean;\n /** True to generate hooks and slices (only for TypeScript) */\n useHooks: boolean;\n}\n\nconst generatorHelp = () => {\n log(\n `sdkGen [languages...] [-v|--versions <versions file>] [-n|--nostreams] [-h|--help]\n languages...: zero or more language specifiers separated by space or comma. Defaults to all supported languages.\n -v|--versions: location of a JSON versions file in ILookerVersions format to read for getting specs\n -n|--nostreams: skip generation of a language SDK 'streams' files (if it supports streaming)\n -ho|--hooks: generate hooks and mocks for the TypeScript SDK\n -h|--help: display this output\n\n examples:\n # Generates all supported SDKs\n yarn gen\n\n # Generates TypeScript and Python SDKs\n yarn gen ts,py\n\n # reads specs from './versions.json' and generates TypeScript and Python SDKs\n yarn gen ts -v ./versions.json py\n`\n );\n process.exit(0);\n};\n\n/**\n * Process command-line switches for versions payload and languages\n * @param args\n */\nexport const doArgs = (args: string[]) => {\n let versions: ILookerVersions | undefined;\n let noStreams = false;\n let hooks = false;\n\n const langs: string[] = [];\n if (args.length > 0 && args.toString().toLowerCase() !== 'all') {\n let i = 0;\n while (i < args.length) {\n const arg = args[i].toLowerCase();\n switch (arg) {\n case '-v':\n case '--versions':\n {\n i++;\n const content = readFileSync(args[i]);\n versions = JSON.parse(content);\n }\n break;\n case '-h':\n case '--help':\n generatorHelp();\n break;\n case '-n':\n case '--nostreams':\n noStreams = true;\n break;\n case '-ho':\n case '--hooks':\n hooks = true;\n break;\n default:\n {\n const values = arg.split(',').filter(v => v.trim());\n if (values[0] !== 'all') {\n values.forEach(v => {\n const gen = findGenerator(v.trim());\n if (gen) {\n // Valid language match\n langs.push(gen.language);\n } else {\n throw new Error(`\"${v}\" is not a valid option`);\n }\n });\n }\n }\n break;\n }\n i++;\n }\n }\n\n // Default languages to all\n const languages = (\n langs.length > 0\n ? langs\n : codeGenerators.filter(l => l.factory !== undefined).map(l => l.language)\n ).filter((value, index, all) => all.indexOf(value) === index);\n\n return { languages, versions, noStreams, hooks };\n};\n\n/**\n * Load the default configuration settings from looker.ini\n */\nexport const loadConfig = () => {\n const config = SDKConfig();\n const [name, props] = Object.entries(config)[0];\n return { name, props };\n};\n\n/**\n * Prepare the generator configuration from all configuration options and return the config\n * @param args command-line style arguments to parse.\n */\nexport const prepGen = async (args: string[]): Promise<IGenProps> => {\n const { languages, versions, noStreams, hooks } = doArgs(args);\n const { name, props } = loadConfig();\n let lookerVersions;\n let lookerVersion = '';\n try {\n if (versions) {\n lookerVersions = versions;\n } else {\n lookerVersions = await fetchLookerVersions(props);\n createJsonFile(\n `${specPath}/versions.json`,\n JSON.stringify(lookerVersions, null, 2)\n );\n }\n lookerVersion = await fetchLookerVersion(props, lookerVersions);\n } catch {\n // Looker server is not required, so default values for the generator\n lookerVersions = {\n supported_versions: [\n {\n version: '4.0',\n status: 'stable',\n full_version: '',\n swagger_url: `https://${props.base_url}/api/4.0/swagger.json`,\n },\n ],\n };\n lookerVersion = '';\n }\n // Iterate through all specified API versions\n const apis = apiVersions(props);\n const lastApi = apis[apis.length - 1];\n\n return {\n name,\n props,\n languages,\n lookerVersions: lookerVersions as ILookerVersions,\n lookerVersion,\n apis,\n lastApi,\n noStreams,\n useHooks: hooks,\n };\n};\n\n/**\n * Load and save specifications from the versions file\n * @param config generation configuration properties\n * @param fetch false to skip fetching the spec, true to fetch. Defaults to true\n */\nexport const loadSpecs = async (config: IGenProps, fetch = true) => {\n const specFetch = async (spec: SpecItem) => {\n if (!fetch) return undefined;\n if (!spec.specURL) return undefined;\n\n const fetchUrl = updateAndResolveSpecUrl(spec, config.props);\n\n const p = { ...config.props, api_version: spec.version };\n let source;\n try {\n source = await authGetUrl(p, fetchUrl);\n } catch (err: any) {\n if (err.message && err.message.includes(LookerNotFoundError)) {\n warn(\n `Skipping missing spec file: ${fetchUrl} (${LookerNotFoundError})`\n );\n return undefined;\n }\n throw err;\n }\n if (typeof source === 'string') source = JSON.parse(source);\n const upgrade = upgradeSpecObject(source);\n spec.api = ApiModel.fromJson(upgrade);\n if (/^http[s]?:\\/\\//i.test(spec.specURL)) {\n const swagger = JSON.stringify(source, null, 2);\n const oas = JSON.stringify(upgrade, null, 2);\n const swaggerName = swaggerFileName(config.name, spec.key);\n const oaName = openApiFileName(config.name, spec.key);\n createJsonFile(swaggerName, swagger);\n createJsonFile(oaName, oas);\n log(`fetched and saved ${swaggerName} and converted it to ${oaName}`);\n }\n return spec.api;\n };\n\n const specs = await getSpecsFromVersions(config.lookerVersions, specFetch);\n // NOTE: Reaching in and updating the api versions list from established spec keys\n config.apis = Object.keys(specs);\n\n return specs;\n};\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@looker/sdk-codegen-scripts",
3
- "version": "21.5.39",
3
+ "version": "21.5.41",
4
4
  "description": "Looker SDK Codegen scripts",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
@@ -27,12 +27,12 @@
27
27
  "watch:cjs": "yarn lerna exec --scope @looker/sdk-codegen-scripts --stream 'BABEL_ENV=build_cjs babel src --root-mode upward --out-dir lib --source-maps --extensions .ts,.tsx --no-comments --watch'"
28
28
  },
29
29
  "dependencies": {
30
- "@looker/sdk": "26.2.0",
31
- "@looker/sdk-codegen": "21.10.4",
32
- "@looker/sdk-codegen-utils": "21.0.29",
33
- "@looker/sdk-node": "26.2.0",
30
+ "@looker/sdk": "26.6.0",
31
+ "@looker/sdk-codegen": "21.11.1",
32
+ "@looker/sdk-codegen-utils": "21.0.31",
33
+ "@looker/sdk-node": "26.6.0",
34
34
  "@looker/sdk-rtl": "21.6.4",
35
- "config": "^3.3.1",
35
+ "config": "^3.3.10",
36
36
  "cross-env": "^7.0.2"
37
37
  },
38
38
  "devDependencies": {
@@ -49,5 +49,5 @@
49
49
  "prettier": "2.8.8",
50
50
  "swagger2openapi": "7.0.8"
51
51
  },
52
- "gitHead": "f4ddaec4b892946cca2e077a42fcbcb49b356dc2"
52
+ "gitHead": "89328082961f387605dae0e36dd523ca62d2249c"
53
53
  }