@looker/sdk-codegen-scripts 21.5.9 → 21.5.10

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.
Files changed (59) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/lib/convert.js.map +1 -1
  3. package/lib/declarationMiner.js.map +1 -1
  4. package/lib/esm/convert.js +13 -20
  5. package/lib/esm/convert.js.map +1 -1
  6. package/lib/esm/declarationMiner.js +12 -22
  7. package/lib/esm/declarationMiner.js.map +1 -1
  8. package/lib/esm/exampleMiner.js +28 -51
  9. package/lib/esm/exampleMiner.js.map +1 -1
  10. package/lib/esm/fetchSpec.js +39 -60
  11. package/lib/esm/fetchSpec.js.map +1 -1
  12. package/lib/esm/index.js +8 -93
  13. package/lib/esm/index.js.map +1 -1
  14. package/lib/esm/languages.js +9 -17
  15. package/lib/esm/languages.js.map +1 -1
  16. package/lib/esm/legacy.js +6 -8
  17. package/lib/esm/legacy.js.map +1 -1
  18. package/lib/esm/legacyGenerator.js +12 -19
  19. package/lib/esm/legacyGenerator.js.map +1 -1
  20. package/lib/esm/nodeUtils.js +19 -39
  21. package/lib/esm/nodeUtils.js.map +1 -1
  22. package/lib/esm/prettify.js +2 -11
  23. package/lib/esm/prettify.js.map +1 -1
  24. package/lib/esm/reformatter.js +41 -50
  25. package/lib/esm/reformatter.js.map +1 -1
  26. package/lib/esm/sdkConfig.js +9 -19
  27. package/lib/esm/sdkConfig.js.map +1 -1
  28. package/lib/esm/sdkGen.js +33 -43
  29. package/lib/esm/sdkGen.js.map +1 -1
  30. package/lib/esm/sdkGenerator.js +16 -31
  31. package/lib/esm/sdkGenerator.js.map +1 -1
  32. package/lib/esm/specConvert.js +16 -20
  33. package/lib/esm/specConvert.js.map +1 -1
  34. package/lib/esm/testUtils/index.js +2 -27
  35. package/lib/esm/testUtils/index.js.map +1 -1
  36. package/lib/esm/testUtils/mocks.js +1 -8
  37. package/lib/esm/testUtils/mocks.js.map +1 -1
  38. package/lib/esm/testUtils/testUtils.js +11 -24
  39. package/lib/esm/testUtils/testUtils.js.map +1 -1
  40. package/lib/esm/utils.js +27 -38
  41. package/lib/esm/utils.js.map +1 -1
  42. package/lib/esm/yamlToJson.js +4 -8
  43. package/lib/esm/yamlToJson.js.map +1 -1
  44. package/lib/exampleMiner.js +1 -1
  45. package/lib/exampleMiner.js.map +1 -1
  46. package/lib/fetchSpec.js.map +1 -1
  47. package/lib/languages.js.map +1 -1
  48. package/lib/legacy.js.map +1 -1
  49. package/lib/legacyGenerator.js.map +1 -1
  50. package/lib/nodeUtils.js.map +1 -1
  51. package/lib/reformatter.js.map +1 -1
  52. package/lib/sdkConfig.js.map +1 -1
  53. package/lib/sdkGen.js.map +1 -1
  54. package/lib/sdkGenerator.js.map +1 -1
  55. package/lib/specConvert.js.map +1 -1
  56. package/lib/testUtils/testUtils.js.map +1 -1
  57. package/lib/utils.js.map +1 -1
  58. package/lib/yamlToJson.js.map +1 -1
  59. package/package.json +4 -4
@@ -1,25 +1,17 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.FilesFormatter = void 0;
7
- var path = _interopRequireWildcard(require("path"));
8
- var fs = _interopRequireWildcard(require("fs"));
9
- var _sdkCodegenUtils = require("@looker/sdk-codegen-utils");
10
- var _nodeUtils = require("./nodeUtils");
11
- var _prettify = require("./prettify");
12
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
1
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
2
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
16
3
  function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
4
+ import * as path from 'path';
5
+ import * as fs from 'fs';
6
+ import { danger, success, warn } from '@looker/sdk-codegen-utils';
7
+ import { isFileSync, readFileSync, run, utf8Encoding } from './nodeUtils';
8
+ import { prettify } from './prettify';
17
9
  var writeFile = (fileName, content) => {
18
- fs.writeFileSync(fileName, content, _nodeUtils.utf8Encoding);
10
+ fs.writeFileSync(fileName, content, utf8Encoding);
19
11
  };
20
12
  var noFormatter = (language, files) => {
21
13
  var list = files.join('\n ');
22
- return (0, _sdkCodegenUtils.warn)("There is no ".concat(language, " formatter. Skipped reformatting of:\n ").concat(list));
14
+ return warn("There is no ".concat(language, " formatter. Skipped reformatting of:\n ").concat(list));
23
15
  };
24
16
  var fullPath = weirdPath => path.resolve(weirdPath);
25
17
  class BaseFormatter {
@@ -32,10 +24,10 @@ class BaseFormatter {
32
24
  return noFormatter(this.language, files);
33
25
  }
34
26
  skipping() {
35
- return (0, _sdkCodegenUtils.warn)("Version information was not retrieved. Skipping ".concat(this.language, " SDK version updating."));
27
+ return warn("Version information was not retrieved. Skipping ".concat(this.language, " SDK version updating."));
36
28
  }
37
29
  reformatted(files) {
38
- return (0, _sdkCodegenUtils.success)("Reformatted ".concat(this.language, " files:\n ").concat(files.join(this.fileSep)));
30
+ return success("Reformatted ".concat(this.language, " files:\n ").concat(files.join(this.fileSep)));
39
31
  }
40
32
  }
41
33
  class PythonFormatter extends BaseFormatter {
@@ -44,28 +36,28 @@ class PythonFormatter extends BaseFormatter {
44
36
  _defineProperty(this, "instructions", 'To reformat Python files, please install pipenv: https://docs.pipenv.org/en/latest/install/#installing-pipenv');
45
37
  }
46
38
  reformat(files) {
47
- var pipEnvExists = (0, _nodeUtils.run)('command', ['-v', 'pipenv'], this.instructions, true);
39
+ var pipEnvExists = run('command', ['-v', 'pipenv'], this.instructions, true);
48
40
  if (pipEnvExists.includes('pipenv')) {
49
41
  var list = files.join(' ');
50
- (0, _nodeUtils.run)('pipenv', ['run', 'black', list], 'Python reformat', true);
51
- return (0, _sdkCodegenUtils.success)(files);
42
+ run('pipenv', ['run', 'black', list], 'Python reformat', true);
43
+ return success(files);
52
44
  } else {
53
- return (0, _sdkCodegenUtils.danger)(this.instructions);
45
+ return danger(this.instructions);
54
46
  }
55
47
  }
56
48
  versionStamp(gen) {
57
49
  if (gen.versions && gen.versions.lookerVersion) {
58
50
  var stampFile = fullPath(gen.fileName('sdk/constants'));
59
- if (!(0, _nodeUtils.isFileSync)(stampFile)) {
60
- (0, _sdkCodegenUtils.warn)("".concat(stampFile, " was not found. Skipping version update."));
51
+ if (!isFileSync(stampFile)) {
52
+ warn("".concat(stampFile, " was not found. Skipping version update."));
61
53
  }
62
- var content = (0, _nodeUtils.readFileSync)(stampFile);
54
+ var content = readFileSync(stampFile);
63
55
  var sdkVersionPattern = /sdk_version = ['"].*['"]/i;
64
56
  var envPattern = /environment_prefix = ['"].*['"]/i;
65
57
  content = content.replace(sdkVersionPattern, "sdk_version = \"".concat(gen.versions.lookerVersion, "\""));
66
58
  content = content.replace(envPattern, "environment_prefix = \"".concat(gen.environmentPrefix, "\""));
67
59
  writeFile(stampFile, content);
68
- return (0, _sdkCodegenUtils.success)("updated ".concat(stampFile, " to ").concat(gen.versions.lookerVersion));
60
+ return success("updated ".concat(stampFile, " to ").concat(gen.versions.lookerVersion));
69
61
  }
70
62
  return this.skipping();
71
63
  }
@@ -78,10 +70,10 @@ class TypescriptFormatter extends BaseFormatter {
78
70
  files.forEach(f => {
79
71
  this.reformatFile(f);
80
72
  });
81
- return (0, _sdkCodegenUtils.success)(files);
73
+ return success(files);
82
74
  }
83
75
  reformatFile(fileName) {
84
- var source = (0, _prettify.prettify)((0, _nodeUtils.readFileSync)(fileName));
76
+ var source = prettify(readFileSync(fileName));
85
77
  if (source) {
86
78
  writeFile(fileName, source);
87
79
  }
@@ -90,16 +82,16 @@ class TypescriptFormatter extends BaseFormatter {
90
82
  versionStamp(gen) {
91
83
  if (gen.versions && gen.versions.lookerVersion) {
92
84
  var stampFile = fullPath(gen.fileName('../../sdk/src/constants'));
93
- if (!(0, _nodeUtils.isFileSync)(stampFile)) {
94
- (0, _sdkCodegenUtils.warn)("".concat(stampFile, " was not found. Skipping version update."));
85
+ if (!isFileSync(stampFile)) {
86
+ warn("".concat(stampFile, " was not found. Skipping version update."));
95
87
  }
96
- var content = (0, _nodeUtils.readFileSync)(stampFile);
88
+ var content = readFileSync(stampFile);
97
89
  var sdkVersionPattern = /sdkVersion = ['"].*['"]/i;
98
90
  var envPattern = /environmentPrefix = ['"].*['"]/i;
99
91
  content = content.replace(sdkVersionPattern, "sdkVersion = '".concat(gen.versions.lookerVersion, "'"));
100
92
  content = content.replace(envPattern, "environmentPrefix = '".concat(gen.environmentPrefix, "'"));
101
93
  writeFile(stampFile, content);
102
- return (0, _sdkCodegenUtils.success)("updated ".concat(stampFile, " to ").concat(gen.versions.lookerVersion));
94
+ return success("updated ".concat(stampFile, " to ").concat(gen.versions.lookerVersion));
103
95
  }
104
96
  return this.skipping();
105
97
  }
@@ -111,10 +103,10 @@ class KotlinFormatter extends BaseFormatter {
111
103
  versionStamp(gen) {
112
104
  if (gen.versions && gen.versions.lookerVersion) {
113
105
  var stampFile = fullPath(gen.fileName('sdk/Constants'));
114
- if (!(0, _nodeUtils.isFileSync)(stampFile)) {
115
- (0, _sdkCodegenUtils.warn)("".concat(stampFile, " was not found. Skipping version update."));
106
+ if (!isFileSync(stampFile)) {
107
+ warn("".concat(stampFile, " was not found. Skipping version update."));
116
108
  }
117
- var content = (0, _nodeUtils.readFileSync)(stampFile);
109
+ var content = readFileSync(stampFile);
118
110
  var lookerPattern = /\bLOOKER_VERSION = ['"].*['"]/i;
119
111
  var apiPattern = /\bAPI_VERSION = ['"].*['"]/i;
120
112
  var envPattern = /\bENVIRONMENT_PREFIX = ['"].*['"]/i;
@@ -122,7 +114,7 @@ class KotlinFormatter extends BaseFormatter {
122
114
  content = content.replace(apiPattern, "API_VERSION = \"".concat(gen.versions.spec.version, "\""));
123
115
  content = content.replace(envPattern, "ENVIRONMENT_PREFIX = \"".concat(gen.environmentPrefix, "\""));
124
116
  writeFile(stampFile, content);
125
- return (0, _sdkCodegenUtils.success)("updated ".concat(stampFile, " to ").concat(gen.versions.spec.version, ".").concat(gen.versions.lookerVersion));
117
+ return success("updated ".concat(stampFile, " to ").concat(gen.versions.spec.version, ".").concat(gen.versions.lookerVersion));
126
118
  }
127
119
  return this.skipping();
128
120
  }
@@ -134,10 +126,10 @@ class SwiftFormatter extends BaseFormatter {
134
126
  versionStamp(gen) {
135
127
  if (gen.versions && gen.versions.lookerVersion) {
136
128
  var stampFile = fullPath(gen.fileName('rtl/constants'));
137
- if (!(0, _nodeUtils.isFileSync)(stampFile)) {
138
- (0, _sdkCodegenUtils.warn)("".concat(stampFile, " was not found. Skipping version update."));
129
+ if (!isFileSync(stampFile)) {
130
+ warn("".concat(stampFile, " was not found. Skipping version update."));
139
131
  }
140
- var content = (0, _nodeUtils.readFileSync)(stampFile);
132
+ var content = readFileSync(stampFile);
141
133
  var lookerPattern = /lookerVersion = ['"].*['"]/i;
142
134
  var apiPattern = /apiVersion = ['"].*['"]/i;
143
135
  var envPattern = /environmentPrefix = ['"].*['"]/i;
@@ -145,7 +137,7 @@ class SwiftFormatter extends BaseFormatter {
145
137
  content = content.replace(apiPattern, "apiVersion = \"".concat(gen.versions.spec.version, "\""));
146
138
  content = content.replace(envPattern, "environmentPrefix = \"".concat(gen.environmentPrefix, "\""));
147
139
  writeFile(stampFile, content);
148
- return (0, _sdkCodegenUtils.success)("updated ".concat(stampFile, " to ").concat(gen.versions.spec.version, ".").concat(gen.versions.lookerVersion));
140
+ return success("updated ".concat(stampFile, " to ").concat(gen.versions.spec.version, ".").concat(gen.versions.lookerVersion));
149
141
  }
150
142
  return this.skipping();
151
143
  }
@@ -157,10 +149,10 @@ class CsharpFormatter extends BaseFormatter {
157
149
  versionStamp(gen) {
158
150
  if (gen.versions && gen.versions.lookerVersion) {
159
151
  var stampFile = fullPath(gen.fileName('rtl/Constants'));
160
- if (!(0, _nodeUtils.isFileSync)(stampFile)) {
161
- (0, _sdkCodegenUtils.warn)("".concat(stampFile, " was not found. Skipping version update."));
152
+ if (!isFileSync(stampFile)) {
153
+ warn("".concat(stampFile, " was not found. Skipping version update."));
162
154
  }
163
- var content = (0, _nodeUtils.readFileSync)(stampFile);
155
+ var content = readFileSync(stampFile);
164
156
  var lookerPattern = /LookerVersion = ['"].*['"]/i;
165
157
  var apiPattern = /ApiVersion = ['"].*['"]/i;
166
158
  var envPattern = /EnvironmentPrefix = ['"].*['"]/i;
@@ -168,7 +160,7 @@ class CsharpFormatter extends BaseFormatter {
168
160
  content = content.replace(apiPattern, "ApiVersion = \"".concat(gen.versions.spec.version, "\""));
169
161
  content = content.replace(envPattern, "EnvironmentPrefix = \"".concat(gen.environmentPrefix, "\""));
170
162
  writeFile(stampFile, content);
171
- return (0, _sdkCodegenUtils.success)("updated ".concat(stampFile, " to ").concat(gen.versions.spec.version, ".").concat(gen.versions.lookerVersion));
163
+ return success("updated ".concat(stampFile, " to ").concat(gen.versions.spec.version, ".").concat(gen.versions.lookerVersion));
172
164
  }
173
165
  return this.skipping();
174
166
  }
@@ -179,17 +171,17 @@ class GoFormatter extends BaseFormatter {
179
171
  _defineProperty(this, "instructions", 'To reformat Go files, please install gofmt: https://go.dev/blog/gofmt');
180
172
  }
181
173
  reformat(files) {
182
- var gofmtExists = (0, _nodeUtils.run)('command', ['-v', 'gofmt'], this.instructions, true);
174
+ var gofmtExists = run('command', ['-v', 'gofmt'], this.instructions, true);
183
175
  if (gofmtExists.includes('gofmt')) {
184
176
  var list = files.join(' ');
185
- (0, _nodeUtils.run)('gofmt', ['-w', list], 'Go reformat', true);
186
- return (0, _sdkCodegenUtils.success)(files);
177
+ run('gofmt', ['-w', list], 'Go reformat', true);
178
+ return success(files);
187
179
  } else {
188
- return (0, _sdkCodegenUtils.danger)(this.instructions);
180
+ return danger(this.instructions);
189
181
  }
190
182
  }
191
183
  versionStamp() {
192
- return (0, _sdkCodegenUtils.warn)('Skipping SDK version updating - not implemented for Go.');
184
+ return warn('Skipping SDK version updating - not implemented for Go.');
193
185
  }
194
186
  }
195
187
  var fileFormatters = {
@@ -200,7 +192,7 @@ var fileFormatters = {
200
192
  '.ts': new TypescriptFormatter(),
201
193
  '.go': new GoFormatter()
202
194
  };
203
- class FilesFormatter {
195
+ export class FilesFormatter {
204
196
  constructor() {
205
197
  _defineProperty(this, "files", {});
206
198
  }
@@ -229,5 +221,4 @@ class FilesFormatter {
229
221
  return formatter.versionStamp(gen);
230
222
  }
231
223
  }
232
- exports.FilesFormatter = FilesFormatter;
233
224
  //# sourceMappingURL=reformatter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reformatter.js","names":["path","_interopRequireWildcard","require","fs","_sdkCodegenUtils","_nodeUtils","_prettify","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_defineProperty","value","_toPropertyKey","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","writeFile","fileName","content","writeFileSync","utf8Encoding","noFormatter","language","files","list","join","warn","concat","fullPath","weirdPath","resolve","BaseFormatter","constructor","fileSep","arguments","length","reformat","skipping","reformatted","success","PythonFormatter","pipEnvExists","run","instructions","includes","danger","versionStamp","gen","versions","lookerVersion","stampFile","isFileSync","readFileSync","sdkVersionPattern","envPattern","replace","environmentPrefix","TypescriptFormatter","forEach","f","reformatFile","source","prettify","KotlinFormatter","lookerPattern","apiPattern","spec","version","SwiftFormatter","CsharpFormatter","GoFormatter","gofmtExists","fileFormatters","FilesFormatter","addFile","extname","push","clear","entries","_ref","formatter","fileExtension","exports"],"sources":["../../src/reformatter.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 * as path from 'path'\nimport * as fs from 'fs'\nimport { danger, success, warn } from '@looker/sdk-codegen-utils'\nimport type { ICodeGen } from '@looker/sdk-codegen'\nimport { isFileSync, readFileSync, run, utf8Encoding } from './nodeUtils'\nimport { prettify } from './prettify'\n\nexport interface IReformat {\n fileSep: string\n language: string\n reformat(files: string[]): string\n versionStamp(gen: ICodeGen): string\n skipping(): string\n reformatted(files: string[]): string\n}\n\n/**\n * wrapper function for writing reformatted files with utf-8 encoding synchronously\n * @param {string} fileName name of file to write\n * @param {string} content content to write\n */\nconst writeFile = (fileName: string, content: string) => {\n fs.writeFileSync(fileName, content, utf8Encoding)\n}\n\nconst noFormatter = (language: string, files: string[]) => {\n const list = files.join('\\n ')\n return warn(\n `There is no ${language} formatter. Skipped reformatting of:\\n ${list}`\n )\n}\n\nconst fullPath = (weirdPath: string) => path.resolve(weirdPath)\n\nabstract class BaseFormatter implements IReformat {\n constructor(public language: string, public fileSep = ` \\n`) {}\n reformat(files: string[]): string {\n return noFormatter(this.language, files)\n }\n\n abstract versionStamp(gen: ICodeGen): string\n\n skipping() {\n return warn(\n `Version information was not retrieved. Skipping ${this.language} SDK version updating.`\n )\n }\n\n reformatted(files: string[]) {\n return success(\n `Reformatted ${this.language} files:\\n ${files.join(this.fileSep)}`\n )\n }\n}\n\nclass PythonFormatter extends BaseFormatter {\n constructor() {\n super('Python')\n }\n\n instructions =\n 'To reformat Python files, please install pipenv: https://docs.pipenv.org/en/latest/install/#installing-pipenv'\n\n reformat(files: string[]): string {\n const pipEnvExists = run(\n 'command',\n ['-v', 'pipenv'],\n this.instructions,\n true\n )\n if (pipEnvExists.includes('pipenv')) {\n const list = files.join(' ')\n // pipenv check completed without error\n run('pipenv', ['run', 'black', list], 'Python reformat', true)\n return success(files)\n } else {\n return danger(this.instructions)\n }\n }\n\n versionStamp(gen: ICodeGen) {\n if (gen.versions && gen.versions.lookerVersion) {\n const stampFile = fullPath(gen.fileName('sdk/constants'))\n if (!isFileSync(stampFile)) {\n warn(`${stampFile} was not found. Skipping version update.`)\n }\n let content = readFileSync(stampFile)\n const sdkVersionPattern = /sdk_version = ['\"].*['\"]/i\n const envPattern = /environment_prefix = ['\"].*['\"]/i\n content = content.replace(\n sdkVersionPattern,\n `sdk_version = \"${gen.versions.lookerVersion}\"`\n )\n content = content.replace(\n envPattern,\n `environment_prefix = \"${gen.environmentPrefix}\"`\n )\n writeFile(stampFile, content)\n return success(`updated ${stampFile} to ${gen.versions.lookerVersion}`)\n }\n\n return this.skipping()\n }\n}\n\nclass TypescriptFormatter extends BaseFormatter {\n constructor() {\n super('TypeScript')\n }\n\n reformat(files: string[]): string {\n files.forEach((f) => {\n this.reformatFile(f)\n })\n return success(files)\n }\n\n reformatFile(fileName: string) {\n const source = prettify(readFileSync(fileName))\n if (source) {\n writeFile(fileName, source)\n }\n return fileName\n }\n\n versionStamp(gen: ICodeGen) {\n if (gen.versions && gen.versions.lookerVersion) {\n const stampFile = fullPath(gen.fileName('../../sdk/src/constants'))\n if (!isFileSync(stampFile)) {\n warn(`${stampFile} was not found. Skipping version update.`)\n }\n let content = readFileSync(stampFile)\n const sdkVersionPattern = /sdkVersion = ['\"].*['\"]/i\n const envPattern = /environmentPrefix = ['\"].*['\"]/i\n content = content.replace(\n sdkVersionPattern,\n `sdkVersion = '${gen.versions.lookerVersion}'`\n )\n content = content.replace(\n envPattern,\n `environmentPrefix = '${gen.environmentPrefix}'`\n )\n writeFile(stampFile, content)\n return success(`updated ${stampFile} to ${gen.versions.lookerVersion}`)\n }\n\n return this.skipping()\n }\n}\n\nclass KotlinFormatter extends BaseFormatter {\n // TODO Kotlin formatter\n constructor() {\n super('Kotlin')\n }\n\n versionStamp(gen: ICodeGen) {\n if (gen.versions && gen.versions.lookerVersion) {\n const stampFile = fullPath(gen.fileName('sdk/Constants'))\n if (!isFileSync(stampFile)) {\n warn(`${stampFile} was not found. Skipping version update.`)\n }\n let content = readFileSync(stampFile)\n const lookerPattern = /\\bLOOKER_VERSION = ['\"].*['\"]/i\n const apiPattern = /\\bAPI_VERSION = ['\"].*['\"]/i\n const envPattern = /\\bENVIRONMENT_PREFIX = ['\"].*['\"]/i\n content = content.replace(\n lookerPattern,\n `LOOKER_VERSION = \"${gen.versions.lookerVersion}\"`\n )\n content = content.replace(\n apiPattern,\n `API_VERSION = \"${gen.versions.spec.version}\"`\n )\n content = content.replace(\n envPattern,\n `ENVIRONMENT_PREFIX = \"${gen.environmentPrefix}\"`\n )\n writeFile(stampFile, content)\n return success(\n `updated ${stampFile} to ${gen.versions.spec.version}.${gen.versions.lookerVersion}`\n )\n }\n return this.skipping()\n }\n}\n\nclass SwiftFormatter extends BaseFormatter {\n // TODO Swift formatter\n constructor() {\n super('Swift')\n }\n\n versionStamp(gen: ICodeGen) {\n if (gen.versions && gen.versions.lookerVersion) {\n const stampFile = fullPath(gen.fileName('rtl/constants'))\n if (!isFileSync(stampFile)) {\n warn(`${stampFile} was not found. Skipping version update.`)\n }\n let content = readFileSync(stampFile)\n const lookerPattern = /lookerVersion = ['\"].*['\"]/i\n const apiPattern = /apiVersion = ['\"].*['\"]/i\n const envPattern = /environmentPrefix = ['\"].*['\"]/i\n content = content.replace(\n lookerPattern,\n `lookerVersion = \"${gen.versions.lookerVersion}\"`\n )\n content = content.replace(\n apiPattern,\n `apiVersion = \"${gen.versions.spec.version}\"`\n )\n content = content.replace(\n envPattern,\n `environmentPrefix = \"${gen.environmentPrefix}\"`\n )\n writeFile(stampFile, content)\n return success(\n `updated ${stampFile} to ${gen.versions.spec.version}.${gen.versions.lookerVersion}`\n )\n }\n return this.skipping()\n }\n}\n\nclass CsharpFormatter extends BaseFormatter {\n // TODO C# formatter https://github.com/dotnet/format\n constructor() {\n super('C#')\n }\n\n versionStamp(gen: ICodeGen) {\n if (gen.versions && gen.versions.lookerVersion) {\n const stampFile = fullPath(gen.fileName('rtl/Constants'))\n if (!isFileSync(stampFile)) {\n warn(`${stampFile} was not found. Skipping version update.`)\n }\n let content = readFileSync(stampFile)\n const lookerPattern = /LookerVersion = ['\"].*['\"]/i\n const apiPattern = /ApiVersion = ['\"].*['\"]/i\n const envPattern = /EnvironmentPrefix = ['\"].*['\"]/i\n content = content.replace(\n lookerPattern,\n `LookerVersion = \"${gen.versions.lookerVersion}\"`\n )\n content = content.replace(\n apiPattern,\n `ApiVersion = \"${gen.versions.spec.version}\"`\n )\n content = content.replace(\n envPattern,\n `EnvironmentPrefix = \"${gen.environmentPrefix}\"`\n )\n writeFile(stampFile, content)\n return success(\n `updated ${stampFile} to ${gen.versions.spec.version}.${gen.versions.lookerVersion}`\n )\n }\n return this.skipping()\n }\n}\n\nclass GoFormatter extends BaseFormatter {\n // TODO Go formatter\n constructor() {\n super('Go')\n }\n\n instructions =\n 'To reformat Go files, please install gofmt: https://go.dev/blog/gofmt'\n\n reformat(files: string[]): string {\n const gofmtExists = run('command', ['-v', 'gofmt'], this.instructions, true)\n if (gofmtExists.includes('gofmt')) {\n const list = files.join(' ')\n // gofmt check completed without error\n run('gofmt', ['-w', list], 'Go reformat', true)\n return success(files)\n } else {\n return danger(this.instructions)\n }\n }\n\n versionStamp() {\n return warn('Skipping SDK version updating - not implemented for Go.')\n }\n}\n\ntype IFormatFiles = { [key: string]: string[] }\n\ntype IFormatters = { [key: string]: IReformat }\n\nconst fileFormatters: IFormatters = {\n '.cs': new CsharpFormatter(),\n '.kt': new KotlinFormatter(),\n '.py': new PythonFormatter(),\n '.swift': new SwiftFormatter(),\n '.ts': new TypescriptFormatter(),\n '.go': new GoFormatter(),\n}\n\nexport class FilesFormatter {\n files: IFormatFiles = {}\n\n addFile(fileName: string) {\n const key = path.extname(fileName)\n if (key in this.files) {\n this.files[key].push(fileName)\n } else {\n this.files[key] = [fileName]\n }\n }\n\n clear() {\n this.files = {}\n }\n\n reformat(files?: string[]) {\n if (files) files.forEach((f) => this.addFile(f))\n Object.entries(this.files).forEach(([key, list]) => {\n if (key in fileFormatters) {\n fileFormatters[key].reformat(list)\n }\n })\n }\n\n versionStamp(gen: ICodeGen) {\n const formatter = fileFormatters[gen.fileExtension]\n return formatter.versionStamp(gen)\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"reformatter.js","names":["path","fs","danger","success","warn","isFileSync","readFileSync","run","utf8Encoding","prettify","writeFile","fileName","content","writeFileSync","noFormatter","language","files","list","join","concat","fullPath","weirdPath","resolve","BaseFormatter","constructor","fileSep","arguments","length","undefined","reformat","skipping","reformatted","PythonFormatter","_defineProperty","pipEnvExists","instructions","includes","versionStamp","gen","versions","lookerVersion","stampFile","sdkVersionPattern","envPattern","replace","environmentPrefix","TypescriptFormatter","forEach","f","reformatFile","source","KotlinFormatter","lookerPattern","apiPattern","spec","version","SwiftFormatter","CsharpFormatter","GoFormatter","gofmtExists","fileFormatters","FilesFormatter","addFile","key","extname","push","clear","Object","entries","_ref","formatter","fileExtension"],"sources":["../../src/reformatter.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 * as path from 'path'\nimport * as fs from 'fs'\nimport { danger, success, warn } from '@looker/sdk-codegen-utils'\nimport type { ICodeGen } from '@looker/sdk-codegen'\nimport { isFileSync, readFileSync, run, utf8Encoding } from './nodeUtils'\nimport { prettify } from './prettify'\n\nexport interface IReformat {\n fileSep: string\n language: string\n reformat(files: string[]): string\n versionStamp(gen: ICodeGen): string\n skipping(): string\n reformatted(files: string[]): string\n}\n\n/**\n * wrapper function for writing reformatted files with utf-8 encoding synchronously\n * @param {string} fileName name of file to write\n * @param {string} content content to write\n */\nconst writeFile = (fileName: string, content: string) => {\n fs.writeFileSync(fileName, content, utf8Encoding)\n}\n\nconst noFormatter = (language: string, files: string[]) => {\n const list = files.join('\\n ')\n return warn(\n `There is no ${language} formatter. Skipped reformatting of:\\n ${list}`\n )\n}\n\nconst fullPath = (weirdPath: string) => path.resolve(weirdPath)\n\nabstract class BaseFormatter implements IReformat {\n constructor(public language: string, public fileSep = ` \\n`) {}\n reformat(files: string[]): string {\n return noFormatter(this.language, files)\n }\n\n abstract versionStamp(gen: ICodeGen): string\n\n skipping() {\n return warn(\n `Version information was not retrieved. Skipping ${this.language} SDK version updating.`\n )\n }\n\n reformatted(files: string[]) {\n return success(\n `Reformatted ${this.language} files:\\n ${files.join(this.fileSep)}`\n )\n }\n}\n\nclass PythonFormatter extends BaseFormatter {\n constructor() {\n super('Python')\n }\n\n instructions =\n 'To reformat Python files, please install pipenv: https://docs.pipenv.org/en/latest/install/#installing-pipenv'\n\n reformat(files: string[]): string {\n const pipEnvExists = run(\n 'command',\n ['-v', 'pipenv'],\n this.instructions,\n true\n )\n if (pipEnvExists.includes('pipenv')) {\n const list = files.join(' ')\n // pipenv check completed without error\n run('pipenv', ['run', 'black', list], 'Python reformat', true)\n return success(files)\n } else {\n return danger(this.instructions)\n }\n }\n\n versionStamp(gen: ICodeGen) {\n if (gen.versions && gen.versions.lookerVersion) {\n const stampFile = fullPath(gen.fileName('sdk/constants'))\n if (!isFileSync(stampFile)) {\n warn(`${stampFile} was not found. Skipping version update.`)\n }\n let content = readFileSync(stampFile)\n const sdkVersionPattern = /sdk_version = ['\"].*['\"]/i\n const envPattern = /environment_prefix = ['\"].*['\"]/i\n content = content.replace(\n sdkVersionPattern,\n `sdk_version = \"${gen.versions.lookerVersion}\"`\n )\n content = content.replace(\n envPattern,\n `environment_prefix = \"${gen.environmentPrefix}\"`\n )\n writeFile(stampFile, content)\n return success(`updated ${stampFile} to ${gen.versions.lookerVersion}`)\n }\n\n return this.skipping()\n }\n}\n\nclass TypescriptFormatter extends BaseFormatter {\n constructor() {\n super('TypeScript')\n }\n\n reformat(files: string[]): string {\n files.forEach((f) => {\n this.reformatFile(f)\n })\n return success(files)\n }\n\n reformatFile(fileName: string) {\n const source = prettify(readFileSync(fileName))\n if (source) {\n writeFile(fileName, source)\n }\n return fileName\n }\n\n versionStamp(gen: ICodeGen) {\n if (gen.versions && gen.versions.lookerVersion) {\n const stampFile = fullPath(gen.fileName('../../sdk/src/constants'))\n if (!isFileSync(stampFile)) {\n warn(`${stampFile} was not found. Skipping version update.`)\n }\n let content = readFileSync(stampFile)\n const sdkVersionPattern = /sdkVersion = ['\"].*['\"]/i\n const envPattern = /environmentPrefix = ['\"].*['\"]/i\n content = content.replace(\n sdkVersionPattern,\n `sdkVersion = '${gen.versions.lookerVersion}'`\n )\n content = content.replace(\n envPattern,\n `environmentPrefix = '${gen.environmentPrefix}'`\n )\n writeFile(stampFile, content)\n return success(`updated ${stampFile} to ${gen.versions.lookerVersion}`)\n }\n\n return this.skipping()\n }\n}\n\nclass KotlinFormatter extends BaseFormatter {\n // TODO Kotlin formatter\n constructor() {\n super('Kotlin')\n }\n\n versionStamp(gen: ICodeGen) {\n if (gen.versions && gen.versions.lookerVersion) {\n const stampFile = fullPath(gen.fileName('sdk/Constants'))\n if (!isFileSync(stampFile)) {\n warn(`${stampFile} was not found. Skipping version update.`)\n }\n let content = readFileSync(stampFile)\n const lookerPattern = /\\bLOOKER_VERSION = ['\"].*['\"]/i\n const apiPattern = /\\bAPI_VERSION = ['\"].*['\"]/i\n const envPattern = /\\bENVIRONMENT_PREFIX = ['\"].*['\"]/i\n content = content.replace(\n lookerPattern,\n `LOOKER_VERSION = \"${gen.versions.lookerVersion}\"`\n )\n content = content.replace(\n apiPattern,\n `API_VERSION = \"${gen.versions.spec.version}\"`\n )\n content = content.replace(\n envPattern,\n `ENVIRONMENT_PREFIX = \"${gen.environmentPrefix}\"`\n )\n writeFile(stampFile, content)\n return success(\n `updated ${stampFile} to ${gen.versions.spec.version}.${gen.versions.lookerVersion}`\n )\n }\n return this.skipping()\n }\n}\n\nclass SwiftFormatter extends BaseFormatter {\n // TODO Swift formatter\n constructor() {\n super('Swift')\n }\n\n versionStamp(gen: ICodeGen) {\n if (gen.versions && gen.versions.lookerVersion) {\n const stampFile = fullPath(gen.fileName('rtl/constants'))\n if (!isFileSync(stampFile)) {\n warn(`${stampFile} was not found. Skipping version update.`)\n }\n let content = readFileSync(stampFile)\n const lookerPattern = /lookerVersion = ['\"].*['\"]/i\n const apiPattern = /apiVersion = ['\"].*['\"]/i\n const envPattern = /environmentPrefix = ['\"].*['\"]/i\n content = content.replace(\n lookerPattern,\n `lookerVersion = \"${gen.versions.lookerVersion}\"`\n )\n content = content.replace(\n apiPattern,\n `apiVersion = \"${gen.versions.spec.version}\"`\n )\n content = content.replace(\n envPattern,\n `environmentPrefix = \"${gen.environmentPrefix}\"`\n )\n writeFile(stampFile, content)\n return success(\n `updated ${stampFile} to ${gen.versions.spec.version}.${gen.versions.lookerVersion}`\n )\n }\n return this.skipping()\n }\n}\n\nclass CsharpFormatter extends BaseFormatter {\n // TODO C# formatter https://github.com/dotnet/format\n constructor() {\n super('C#')\n }\n\n versionStamp(gen: ICodeGen) {\n if (gen.versions && gen.versions.lookerVersion) {\n const stampFile = fullPath(gen.fileName('rtl/Constants'))\n if (!isFileSync(stampFile)) {\n warn(`${stampFile} was not found. Skipping version update.`)\n }\n let content = readFileSync(stampFile)\n const lookerPattern = /LookerVersion = ['\"].*['\"]/i\n const apiPattern = /ApiVersion = ['\"].*['\"]/i\n const envPattern = /EnvironmentPrefix = ['\"].*['\"]/i\n content = content.replace(\n lookerPattern,\n `LookerVersion = \"${gen.versions.lookerVersion}\"`\n )\n content = content.replace(\n apiPattern,\n `ApiVersion = \"${gen.versions.spec.version}\"`\n )\n content = content.replace(\n envPattern,\n `EnvironmentPrefix = \"${gen.environmentPrefix}\"`\n )\n writeFile(stampFile, content)\n return success(\n `updated ${stampFile} to ${gen.versions.spec.version}.${gen.versions.lookerVersion}`\n )\n }\n return this.skipping()\n }\n}\n\nclass GoFormatter extends BaseFormatter {\n // TODO Go formatter\n constructor() {\n super('Go')\n }\n\n instructions =\n 'To reformat Go files, please install gofmt: https://go.dev/blog/gofmt'\n\n reformat(files: string[]): string {\n const gofmtExists = run('command', ['-v', 'gofmt'], this.instructions, true)\n if (gofmtExists.includes('gofmt')) {\n const list = files.join(' ')\n // gofmt check completed without error\n run('gofmt', ['-w', list], 'Go reformat', true)\n return success(files)\n } else {\n return danger(this.instructions)\n }\n }\n\n versionStamp() {\n return warn('Skipping SDK version updating - not implemented for Go.')\n }\n}\n\ntype IFormatFiles = { [key: string]: string[] }\n\ntype IFormatters = { [key: string]: IReformat }\n\nconst fileFormatters: IFormatters = {\n '.cs': new CsharpFormatter(),\n '.kt': new KotlinFormatter(),\n '.py': new PythonFormatter(),\n '.swift': new SwiftFormatter(),\n '.ts': new TypescriptFormatter(),\n '.go': new GoFormatter(),\n}\n\nexport class FilesFormatter {\n files: IFormatFiles = {}\n\n addFile(fileName: string) {\n const key = path.extname(fileName)\n if (key in this.files) {\n this.files[key].push(fileName)\n } else {\n this.files[key] = [fileName]\n }\n }\n\n clear() {\n this.files = {}\n }\n\n reformat(files?: string[]) {\n if (files) files.forEach((f) => this.addFile(f))\n Object.entries(this.files).forEach(([key, list]) => {\n if (key in fileFormatters) {\n fileFormatters[key].reformat(list)\n }\n })\n }\n\n versionStamp(gen: ICodeGen) {\n const formatter = fileFormatters[gen.fileExtension]\n return formatter.versionStamp(gen)\n }\n}\n"],"mappings":"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"}
@@ -1,37 +1,28 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.SDKConfig = void 0;
7
- var fs = _interopRequireWildcard(require("fs"));
8
- var _dotenv = _interopRequireDefault(require("dotenv"));
9
- var _sdkRtl = require("@looker/sdk-rtl");
10
- var _sdkNode = require("@looker/sdk-node");
11
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
- var SDKConfig = function SDKConfig() {
1
+ import * as fs from 'fs';
2
+ import dotenv from 'dotenv';
3
+ import { boolDefault } from '@looker/sdk-rtl';
4
+ import { readIniConfig } from '@looker/sdk-node';
5
+ export var SDKConfig = function SDKConfig() {
15
6
  var fileName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : './looker.ini';
16
7
  var envPrefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'LOOKERSDK';
17
8
  var sectionName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'Looker';
18
- _dotenv.default.config();
9
+ dotenv.config();
19
10
  if (process.env.DOT_ENV_FILE) {
20
11
  var name = process.env.DOT_ENV_FILE;
21
- var vals = _dotenv.default.parse(fs.readFileSync(name, 'utf-8'));
12
+ var vals = dotenv.parse(fs.readFileSync(name, 'utf-8'));
22
13
  Object.entries(vals).forEach(_ref => {
23
14
  var [key, val] = _ref;
24
15
  if (val) process.env[key] = val;
25
16
  });
26
17
  }
27
- var section = (0, _sdkNode.readIniConfig)(fileName, envPrefix, sectionName);
18
+ var section = readIniConfig(fileName, envPrefix, sectionName);
28
19
  var config = {
29
20
  api_version: section.api_version,
30
21
  api_versions: section.api_versions,
31
22
  base_url: section.base_url,
32
23
  client_id: section.client_id,
33
24
  client_secret: section.client_secret,
34
- verify_ssl: (0, _sdkRtl.boolDefault)(section.verify_ssl, true)
25
+ verify_ssl: boolDefault(section.verify_ssl, true)
35
26
  };
36
27
  if (!config.base_url) {
37
28
  throw Error('Fatal error: base_url is not configured. Exiting.');
@@ -40,5 +31,4 @@ var SDKConfig = function SDKConfig() {
40
31
  [sectionName]: config
41
32
  };
42
33
  };
43
- exports.SDKConfig = SDKConfig;
44
34
  //# sourceMappingURL=sdkConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdkConfig.js","names":["fs","_interopRequireWildcard","require","_dotenv","_interopRequireDefault","_sdkRtl","_sdkNode","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","SDKConfig","fileName","arguments","length","undefined","envPrefix","sectionName","dotenv","config","process","env","DOT_ENV_FILE","name","vals","parse","readFileSync","entries","forEach","_ref","val","section","readIniConfig","api_version","api_versions","base_url","client_id","client_secret","verify_ssl","boolDefault","Error","exports"],"sources":["../../src/sdkConfig.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 * as fs from 'fs'\nimport dotenv from 'dotenv'\nimport { boolDefault } from '@looker/sdk-rtl'\nimport { readIniConfig } from '@looker/sdk-node'\n\nexport interface ISDKConfigProps {\n api_version: string\n api_versions: string\n base_url: string\n client_id: string\n client_secret: string\n verify_ssl: boolean\n}\n\nexport interface ISDKConfigSection {\n [key: string]: ISDKConfigProps\n}\n\nexport const SDKConfig = (\n fileName = './looker.ini',\n envPrefix = 'LOOKERSDK',\n sectionName = 'Looker'\n): ISDKConfigSection => {\n dotenv.config()\n if (process.env.DOT_ENV_FILE) {\n // Load custom env file\n const name = process.env.DOT_ENV_FILE\n const vals = dotenv.parse(fs.readFileSync(name, 'utf-8'))\n Object.entries(vals).forEach(([key, val]) => {\n if (val) process.env[key] = val\n })\n }\n\n const section = readIniConfig(fileName, envPrefix, sectionName)\n const config: ISDKConfigProps = {\n api_version: section.api_version,\n api_versions: section.api_versions,\n base_url: section.base_url,\n client_id: section.client_id,\n client_secret: section.client_secret,\n verify_ssl: boolDefault(section.verify_ssl, true),\n }\n\n if (!config.base_url) {\n throw Error('Fatal error: base_url is not configured. Exiting.')\n }\n return { [sectionName]: config }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"sdkConfig.js","names":["fs","dotenv","boolDefault","readIniConfig","SDKConfig","fileName","arguments","length","undefined","envPrefix","sectionName","config","process","env","DOT_ENV_FILE","name","vals","parse","readFileSync","Object","entries","forEach","_ref","key","val","section","api_version","api_versions","base_url","client_id","client_secret","verify_ssl","Error"],"sources":["../../src/sdkConfig.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 * as fs from 'fs'\nimport dotenv from 'dotenv'\nimport { boolDefault } from '@looker/sdk-rtl'\nimport { readIniConfig } from '@looker/sdk-node'\n\nexport interface ISDKConfigProps {\n api_version: string\n api_versions: string\n base_url: string\n client_id: string\n client_secret: string\n verify_ssl: boolean\n}\n\nexport interface ISDKConfigSection {\n [key: string]: ISDKConfigProps\n}\n\nexport const SDKConfig = (\n fileName = './looker.ini',\n envPrefix = 'LOOKERSDK',\n sectionName = 'Looker'\n): ISDKConfigSection => {\n dotenv.config()\n if (process.env.DOT_ENV_FILE) {\n // Load custom env file\n const name = process.env.DOT_ENV_FILE\n const vals = dotenv.parse(fs.readFileSync(name, 'utf-8'))\n Object.entries(vals).forEach(([key, val]) => {\n if (val) process.env[key] = val\n })\n }\n\n const section = readIniConfig(fileName, envPrefix, sectionName)\n const config: ISDKConfigProps = {\n api_version: section.api_version,\n api_versions: section.api_versions,\n base_url: section.base_url,\n client_id: section.client_id,\n client_secret: section.client_secret,\n verify_ssl: boolDefault(section.verify_ssl, true),\n }\n\n if (!config.base_url) {\n throw Error('Fatal error: base_url is not configured. Exiting.')\n }\n return { [sectionName]: config }\n}\n"],"mappings":"AA0BA,OAAO,KAAKA,EAAE,MAAM,IAAI;AACxB,OAAOC,MAAM,MAAM,QAAQ;AAC3B,SAASC,WAAW,QAAQ,iBAAiB;AAC7C,SAASC,aAAa,QAAQ,kBAAkB;AAehD,OAAO,IAAMC,SAAS,GAAG,SAAZA,SAASA,CAAA,EAIE;EAAA,IAHtBC,QAAQ,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,cAAc;EAAA,IACzBG,SAAS,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,WAAW;EAAA,IACvBI,WAAW,GAAAJ,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,QAAQ;EAEtBL,MAAM,CAACU,MAAM,CAAC,CAAC;EACf,IAAIC,OAAO,CAACC,GAAG,CAACC,YAAY,EAAE;IAE5B,IAAMC,IAAI,GAAGH,OAAO,CAACC,GAAG,CAACC,YAAY;IACrC,IAAME,IAAI,GAAGf,MAAM,CAACgB,KAAK,CAACjB,EAAE,CAACkB,YAAY,CAACH,IAAI,EAAE,OAAO,CAAC,CAAC;IACzDI,MAAM,CAACC,OAAO,CAACJ,IAAI,CAAC,CAACK,OAAO,CAACC,IAAA,IAAgB;MAAA,IAAf,CAACC,GAAG,EAAEC,GAAG,CAAC,GAAAF,IAAA;MACtC,IAAIE,GAAG,EAAEZ,OAAO,CAACC,GAAG,CAACU,GAAG,CAAC,GAAGC,GAAG;IACjC,CAAC,CAAC;EACJ;EAEA,IAAMC,OAAO,GAAGtB,aAAa,CAACE,QAAQ,EAAEI,SAAS,EAAEC,WAAW,CAAC;EAC/D,IAAMC,MAAuB,GAAG;IAC9Be,WAAW,EAAED,OAAO,CAACC,WAAW;IAChCC,YAAY,EAAEF,OAAO,CAACE,YAAY;IAClCC,QAAQ,EAAEH,OAAO,CAACG,QAAQ;IAC1BC,SAAS,EAAEJ,OAAO,CAACI,SAAS;IAC5BC,aAAa,EAAEL,OAAO,CAACK,aAAa;IACpCC,UAAU,EAAE7B,WAAW,CAACuB,OAAO,CAACM,UAAU,EAAE,IAAI;EAClD,CAAC;EAED,IAAI,CAACpB,MAAM,CAACiB,QAAQ,EAAE;IACpB,MAAMI,KAAK,CAAC,mDAAmD,CAAC;EAClE;EACA,OAAO;IAAE,CAACtB,WAAW,GAAGC;EAAO,CAAC;AAClC,CAAC"}
package/lib/esm/sdkGen.js CHANGED
@@ -1,39 +1,29 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.writeCodeFile = void 0;
7
- var fs = _interopRequireWildcard(require("fs"));
8
- var _path = _interopRequireDefault(require("path"));
9
- var _sdkCodegenUtils = require("@looker/sdk-codegen-utils");
10
- var _sdkGenerator = require("./sdkGenerator");
11
- var _reformatter = require("./reformatter");
12
- var _nodeUtils = require("./nodeUtils");
13
- var _languages = require("./languages");
14
- var _utils = require("./utils");
15
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
18
1
  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); } }
19
2
  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); }); }; }
20
- var formatter = new _reformatter.FilesFormatter();
21
- var writeCodeFile = (fileName, content) => {
22
- var filePath = _path.default.dirname(fileName);
23
- if (!(0, _nodeUtils.isDirSync)(filePath)) fs.mkdirSync(filePath, {
3
+ import * as fs from 'fs';
4
+ import path from 'path';
5
+ import { danger, log, warn } from '@looker/sdk-codegen-utils';
6
+ import { FunctionGenerator, InterfaceGenerator, MethodGenerator, StreamGenerator, TypeGenerator } from './sdkGenerator';
7
+ import { FilesFormatter } from './reformatter';
8
+ import { isDirSync, quit } from './nodeUtils';
9
+ import { getGenerator } from './languages';
10
+ import { loadSpecs, prepGen } from './utils';
11
+ var formatter = new FilesFormatter();
12
+ export var writeCodeFile = (fileName, content) => {
13
+ var filePath = path.dirname(fileName);
14
+ if (!isDirSync(filePath)) fs.mkdirSync(filePath, {
24
15
  recursive: true
25
16
  });
26
17
  fs.writeFileSync(fileName, content);
27
18
  formatter.addFile(fileName);
28
19
  return fileName;
29
20
  };
30
- exports.writeCodeFile = writeCodeFile;
31
21
  _asyncToGenerator(function* () {
32
22
  var config;
33
23
  try {
34
- config = yield (0, _utils.prepGen)(process.argv.slice(2));
24
+ config = yield prepGen(process.argv.slice(2));
35
25
  } catch (e) {
36
- (0, _nodeUtils.quit)(e);
26
+ quit(e);
37
27
  }
38
28
  if (!config) return;
39
29
  var {
@@ -43,9 +33,9 @@ _asyncToGenerator(function* () {
43
33
  lastApi,
44
34
  noStreams
45
35
  } = config;
46
- var specs = yield (0, _utils.loadSpecs)(config);
36
+ var specs = yield loadSpecs(config);
47
37
  var apis = config.apis;
48
- (0, _sdkCodegenUtils.log)("generating ".concat(languages.join(','), " SDKs for APIs ").concat(apis));
38
+ log("generating ".concat(languages.join(','), " SDKs for APIs ").concat(apis));
49
39
  try {
50
40
  for (var language of languages) {
51
41
  for (var api of apis) {
@@ -56,47 +46,47 @@ _asyncToGenerator(function* () {
56
46
  };
57
47
  var apiModel = spec.api;
58
48
  if (!apiModel) {
59
- (0, _sdkCodegenUtils.danger)("Could not fetch or compile apiModel for ".concat(api, " ").concat(spec.specURL));
49
+ danger("Could not fetch or compile apiModel for ".concat(api, " ").concat(spec.specURL));
60
50
  continue;
61
51
  }
62
- var gen = (0, _languages.getGenerator)(language, apiModel, versions);
52
+ var gen = getGenerator(language, apiModel, versions);
63
53
  if (!gen) {
64
- (0, _sdkCodegenUtils.danger)("".concat(language, " does not have a code generator defined"));
54
+ danger("".concat(language, " does not have a code generator defined"));
65
55
  continue;
66
56
  }
67
57
  if (api !== lastApi && !gen.supportsMultiApi()) {
68
- (0, _sdkCodegenUtils.danger)("skipping API ".concat(api, " for ").concat(language, " because it doesn't support multiple API versions"));
58
+ danger("skipping API ".concat(api, " for ").concat(language, " because it doesn't support multiple API versions"));
69
59
  continue;
70
60
  }
71
- (0, _sdkCodegenUtils.log)("generating ".concat(language, " from ").concat(props.base_url, " ").concat(api, " ..."));
72
- (0, _sdkCodegenUtils.log)("generating ".concat(api, " methods ..."));
61
+ log("generating ".concat(language, " from ").concat(props.base_url, " ").concat(api, " ..."));
62
+ log("generating ".concat(api, " methods ..."));
73
63
  if (gen.useFunctions) {
74
- (0, _sdkCodegenUtils.log)("generating ".concat(api, " functions ..."));
75
- var s = new _sdkGenerator.FunctionGenerator(apiModel, gen);
64
+ log("generating ".concat(api, " functions ..."));
65
+ var s = new FunctionGenerator(apiModel, gen);
76
66
  var _output = s.render(gen.indentStr, noStreams);
77
67
  writeCodeFile(gen.sdkFileName("funcs"), _output);
78
68
  }
79
69
  if (gen.useInterfaces) {
80
- (0, _sdkCodegenUtils.log)("generating ".concat(api, " interfaces ..."));
81
- var _s = new _sdkGenerator.InterfaceGenerator(apiModel, gen);
70
+ log("generating ".concat(api, " interfaces ..."));
71
+ var _s = new InterfaceGenerator(apiModel, gen);
82
72
  var _output2 = _s.render(gen.indentStr, noStreams);
83
73
  writeCodeFile(gen.sdkFileName("methodsInterface"), _output2);
84
74
  }
85
- var sdk = new _sdkGenerator.MethodGenerator(apiModel, gen);
75
+ var sdk = new MethodGenerator(apiModel, gen);
86
76
  var output = sdk.render(gen.indentStr, noStreams);
87
77
  writeCodeFile(gen.sdkFileName("methods"), output);
88
78
  if (gen.willItStream) {
89
79
  if (noStreams) {
90
- (0, _sdkCodegenUtils.warn)("SKIPPING ".concat(api, " streaming methods ..."));
80
+ warn("SKIPPING ".concat(api, " streaming methods ..."));
91
81
  } else {
92
- (0, _sdkCodegenUtils.log)("generating ".concat(api, " streaming methods ..."));
93
- var _s2 = new _sdkGenerator.StreamGenerator(apiModel, gen);
82
+ log("generating ".concat(api, " streaming methods ..."));
83
+ var _s2 = new StreamGenerator(apiModel, gen);
94
84
  var _output3 = _s2.render(gen.indentStr, noStreams);
95
85
  writeCodeFile(gen.sdkFileName("streams"), _output3);
96
86
  }
97
87
  }
98
- (0, _sdkCodegenUtils.log)("generating ".concat(api, " models ..."));
99
- var types = new _sdkGenerator.TypeGenerator(apiModel, gen);
88
+ log("generating ".concat(api, " models ..."));
89
+ var types = new TypeGenerator(apiModel, gen);
100
90
  output = types.render('', noStreams);
101
91
  writeCodeFile(gen.sdkFileName("models"), output);
102
92
  if (api === lastApi) {
@@ -106,7 +96,7 @@ _asyncToGenerator(function* () {
106
96
  }
107
97
  formatter.reformat();
108
98
  } catch (e) {
109
- (0, _nodeUtils.quit)(e);
99
+ quit(e);
110
100
  }
111
101
  })();
112
102
  //# sourceMappingURL=sdkGen.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdkGen.js","names":["fs","_interopRequireWildcard","require","_path","_interopRequireDefault","_sdkCodegenUtils","_sdkGenerator","_reformatter","_nodeUtils","_languages","_utils","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","formatter","FilesFormatter","writeCodeFile","fileName","content","filePath","path","dirname","isDirSync","mkdirSync","recursive","writeFileSync","addFile","exports","config","prepGen","process","argv","slice","e","quit","props","languages","lookerVersion","lastApi","noStreams","specs","loadSpecs","apis","log","concat","join","language","api","spec","versions","apiModel","danger","specURL","getGenerator","supportsMultiApi","base_url","useFunctions","s","FunctionGenerator","output","render","indentStr","sdkFileName","useInterfaces","InterfaceGenerator","sdk","MethodGenerator","willItStream","warn","StreamGenerator","types","TypeGenerator","versionStamp","reformat"],"sources":["../../src/sdkGen.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 * as fs from 'fs'\nimport path from 'path'\nimport { danger, log, warn } from '@looker/sdk-codegen-utils'\nimport type { IVersionInfo } from '@looker/sdk-codegen'\nimport {\n FunctionGenerator,\n InterfaceGenerator,\n MethodGenerator,\n StreamGenerator,\n TypeGenerator,\n} from './sdkGenerator'\nimport { FilesFormatter } from './reformatter'\nimport { isDirSync, quit } from './nodeUtils'\nimport { getGenerator } from './languages'\nimport { loadSpecs, prepGen } from './utils'\n\nconst formatter = new FilesFormatter()\n\n/**\n * Writes the source code file and registers it with the file reformatter for processing\n * @param fileName name of source file\n * @param content contents to (over) write into source file\n * @returns the name of the file written\n */\nexport const writeCodeFile = (fileName: string, content: string): string => {\n const filePath = path.dirname(fileName)\n if (!isDirSync(filePath)) fs.mkdirSync(filePath, { recursive: true })\n\n fs.writeFileSync(fileName, content)\n formatter.addFile(fileName)\n return fileName\n}\n;(async () => {\n let config\n try {\n config = await prepGen(process.argv.slice(2))\n } catch (e: any) {\n quit(e)\n }\n if (!config) return\n const { props, languages, lookerVersion, lastApi, noStreams } = config\n\n // load the specifications and create the unique keys in case of spec API version overlap\n const specs = await loadSpecs(config)\n const apis = config.apis\n log(`generating ${languages.join(',')} SDKs for APIs ${apis}`)\n\n try {\n for (const language of languages) {\n for (const api of apis) {\n const spec = specs[api]\n const versions: IVersionInfo = {\n spec,\n lookerVersion,\n }\n const apiModel = spec.api\n if (!apiModel) {\n danger(\n `Could not fetch or compile apiModel for ${api} ${spec.specURL}`\n )\n continue\n }\n const gen = getGenerator(language, apiModel, versions)\n if (!gen) {\n danger(`${language} does not have a code generator defined`)\n continue\n }\n if (api !== lastApi && !gen.supportsMultiApi()) {\n danger(\n `skipping API ${api} for ${language} because it doesn't support multiple API versions`\n )\n continue\n }\n log(`generating ${language} from ${props.base_url} ${api} ...`)\n log(`generating ${api} methods ...`)\n\n if (gen.useFunctions) {\n log(`generating ${api} functions ...`)\n const s = new FunctionGenerator(apiModel, gen)\n const output = s.render(gen.indentStr, noStreams)\n writeCodeFile(gen.sdkFileName(`funcs`), output)\n }\n\n if (gen.useInterfaces) {\n log(`generating ${api} interfaces ...`)\n const s = new InterfaceGenerator(apiModel, gen)\n const output = s.render(gen.indentStr, noStreams)\n writeCodeFile(gen.sdkFileName(`methodsInterface`), output)\n }\n\n // Generate standard method declarations\n const sdk = new MethodGenerator(apiModel, gen)\n let output = sdk.render(gen.indentStr, noStreams)\n writeCodeFile(gen.sdkFileName(`methods`), output)\n\n if (gen.willItStream) {\n if (noStreams) {\n warn(`SKIPPING ${api} streaming methods ...`)\n } else {\n // Generate streaming method declarations\n log(`generating ${api} streaming methods ...`)\n const s = new StreamGenerator(apiModel, gen)\n const output = s.render(gen.indentStr, noStreams)\n writeCodeFile(gen.sdkFileName(`streams`), output)\n }\n }\n\n log(`generating ${api} models ...`)\n const types = new TypeGenerator(apiModel, gen)\n output = types.render('', noStreams)\n writeCodeFile(gen.sdkFileName(`models`), output)\n if (api === lastApi) {\n formatter.versionStamp(gen)\n }\n }\n }\n // finally, reformat all the files that have been generated\n formatter.reformat()\n } catch (e: any) {\n quit(e)\n }\n})()\n"],"mappings":"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"}
1
+ {"version":3,"file":"sdkGen.js","names":["fs","path","danger","log","warn","FunctionGenerator","InterfaceGenerator","MethodGenerator","StreamGenerator","TypeGenerator","FilesFormatter","isDirSync","quit","getGenerator","loadSpecs","prepGen","formatter","writeCodeFile","fileName","content","filePath","dirname","mkdirSync","recursive","writeFileSync","addFile","_asyncToGenerator","config","process","argv","slice","e","props","languages","lookerVersion","lastApi","noStreams","specs","apis","concat","join","language","api","spec","versions","apiModel","specURL","gen","supportsMultiApi","base_url","useFunctions","s","output","render","indentStr","sdkFileName","useInterfaces","sdk","willItStream","types","versionStamp","reformat"],"sources":["../../src/sdkGen.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 * as fs from 'fs'\nimport path from 'path'\nimport { danger, log, warn } from '@looker/sdk-codegen-utils'\nimport type { IVersionInfo } from '@looker/sdk-codegen'\nimport {\n FunctionGenerator,\n InterfaceGenerator,\n MethodGenerator,\n StreamGenerator,\n TypeGenerator,\n} from './sdkGenerator'\nimport { FilesFormatter } from './reformatter'\nimport { isDirSync, quit } from './nodeUtils'\nimport { getGenerator } from './languages'\nimport { loadSpecs, prepGen } from './utils'\n\nconst formatter = new FilesFormatter()\n\n/**\n * Writes the source code file and registers it with the file reformatter for processing\n * @param fileName name of source file\n * @param content contents to (over) write into source file\n * @returns the name of the file written\n */\nexport const writeCodeFile = (fileName: string, content: string): string => {\n const filePath = path.dirname(fileName)\n if (!isDirSync(filePath)) fs.mkdirSync(filePath, { recursive: true })\n\n fs.writeFileSync(fileName, content)\n formatter.addFile(fileName)\n return fileName\n}\n;(async () => {\n let config\n try {\n config = await prepGen(process.argv.slice(2))\n } catch (e: any) {\n quit(e)\n }\n if (!config) return\n const { props, languages, lookerVersion, lastApi, noStreams } = config\n\n // load the specifications and create the unique keys in case of spec API version overlap\n const specs = await loadSpecs(config)\n const apis = config.apis\n log(`generating ${languages.join(',')} SDKs for APIs ${apis}`)\n\n try {\n for (const language of languages) {\n for (const api of apis) {\n const spec = specs[api]\n const versions: IVersionInfo = {\n spec,\n lookerVersion,\n }\n const apiModel = spec.api\n if (!apiModel) {\n danger(\n `Could not fetch or compile apiModel for ${api} ${spec.specURL}`\n )\n continue\n }\n const gen = getGenerator(language, apiModel, versions)\n if (!gen) {\n danger(`${language} does not have a code generator defined`)\n continue\n }\n if (api !== lastApi && !gen.supportsMultiApi()) {\n danger(\n `skipping API ${api} for ${language} because it doesn't support multiple API versions`\n )\n continue\n }\n log(`generating ${language} from ${props.base_url} ${api} ...`)\n log(`generating ${api} methods ...`)\n\n if (gen.useFunctions) {\n log(`generating ${api} functions ...`)\n const s = new FunctionGenerator(apiModel, gen)\n const output = s.render(gen.indentStr, noStreams)\n writeCodeFile(gen.sdkFileName(`funcs`), output)\n }\n\n if (gen.useInterfaces) {\n log(`generating ${api} interfaces ...`)\n const s = new InterfaceGenerator(apiModel, gen)\n const output = s.render(gen.indentStr, noStreams)\n writeCodeFile(gen.sdkFileName(`methodsInterface`), output)\n }\n\n // Generate standard method declarations\n const sdk = new MethodGenerator(apiModel, gen)\n let output = sdk.render(gen.indentStr, noStreams)\n writeCodeFile(gen.sdkFileName(`methods`), output)\n\n if (gen.willItStream) {\n if (noStreams) {\n warn(`SKIPPING ${api} streaming methods ...`)\n } else {\n // Generate streaming method declarations\n log(`generating ${api} streaming methods ...`)\n const s = new StreamGenerator(apiModel, gen)\n const output = s.render(gen.indentStr, noStreams)\n writeCodeFile(gen.sdkFileName(`streams`), output)\n }\n }\n\n log(`generating ${api} models ...`)\n const types = new TypeGenerator(apiModel, gen)\n output = types.render('', noStreams)\n writeCodeFile(gen.sdkFileName(`models`), output)\n if (api === lastApi) {\n formatter.versionStamp(gen)\n }\n }\n }\n // finally, reformat all the files that have been generated\n formatter.reformat()\n } catch (e: any) {\n quit(e)\n }\n})()\n"],"mappings":"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"}