@looker/sdk-codegen-scripts 21.5.38 → 21.5.40
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 +26 -0
- package/lib/esm/fetchSpec.js +23 -4
- package/lib/esm/fetchSpec.js.map +1 -1
- package/lib/esm/utils.js +13 -3
- package/lib/esm/utils.js.map +1 -1
- package/lib/fetchSpec.d.ts +2 -0
- package/lib/fetchSpec.js +25 -5
- package/lib/fetchSpec.js.map +1 -1
- package/lib/utils.js +11 -1
- package/lib/utils.js.map +1 -1
- package/package.json +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -277,6 +277,32 @@
|
|
|
277
277
|
* @looker/sdk-codegen-utils bumped from 21.0.27 to 21.0.28
|
|
278
278
|
* @looker/sdk-node bumped from 25.20.0 to 26.0.0
|
|
279
279
|
|
|
280
|
+
### Dependencies
|
|
281
|
+
|
|
282
|
+
* The following workspace dependencies were updated
|
|
283
|
+
* dependencies
|
|
284
|
+
* @looker/sdk bumped from 26.0.0 to 26.2.0
|
|
285
|
+
* @looker/sdk-codegen bumped from 21.10.3 to 21.10.4
|
|
286
|
+
* @looker/sdk-codegen-utils bumped from 21.0.28 to 21.0.29
|
|
287
|
+
* @looker/sdk-node bumped from 26.0.0 to 26.2.0
|
|
288
|
+
|
|
289
|
+
## [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)
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
### Bug Fixes
|
|
293
|
+
|
|
294
|
+
* **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)
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
### Dependencies
|
|
298
|
+
|
|
299
|
+
* The following workspace dependencies were updated
|
|
300
|
+
* dependencies
|
|
301
|
+
* @looker/sdk bumped from 26.2.0 to 26.4.0
|
|
302
|
+
* @looker/sdk-codegen bumped from 21.10.4 to 21.11.0
|
|
303
|
+
* @looker/sdk-codegen-utils bumped from 21.0.29 to 21.0.30
|
|
304
|
+
* @looker/sdk-node bumped from 26.2.0 to 26.4.0
|
|
305
|
+
|
|
280
306
|
## [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)
|
|
281
307
|
|
|
282
308
|
|
package/lib/esm/fetchSpec.js
CHANGED
|
@@ -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
|
-
|
|
110
|
+
token = yield login(options);
|
|
111
|
+
var authOptions = mergeOptions(options, {
|
|
111
112
|
headers: {
|
|
112
113
|
Authorization: "Bearer ".concat(token)
|
|
113
114
|
}
|
|
114
115
|
});
|
|
115
|
-
|
|
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,
|
|
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
|
}
|
package/lib/esm/fetchSpec.js.map
CHANGED
|
@@ -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
|
|
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);
|
package/lib/esm/utils.js.map
CHANGED
|
@@ -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":"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"}
|
|
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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"}
|
package/lib/fetchSpec.d.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
}
|
package/lib/fetchSpec.js.map
CHANGED
|
@@ -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
|
|
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.
|
|
3
|
+
"version": "21.5.40",
|
|
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.
|
|
31
|
-
"@looker/sdk-codegen": "21.
|
|
32
|
-
"@looker/sdk-codegen-utils": "21.0.
|
|
33
|
-
"@looker/sdk-node": "26.
|
|
30
|
+
"@looker/sdk": "26.4.0",
|
|
31
|
+
"@looker/sdk-codegen": "21.11.0",
|
|
32
|
+
"@looker/sdk-codegen-utils": "21.0.30",
|
|
33
|
+
"@looker/sdk-node": "26.4.0",
|
|
34
34
|
"@looker/sdk-rtl": "21.6.4",
|
|
35
|
-
"config": "^3.3.
|
|
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": "
|
|
52
|
+
"gitHead": "4ad57362107ab0ed2c865876921136b8b7d77db4"
|
|
53
53
|
}
|