{"version":3,"sources":["jsdelivr-header.js","/npm/@ordercloud/oc-codegen@0.0.1-26/lib/src/index.js"],"names":[],"mappings":"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","file":"/npm/@ordercloud/oc-codegen@0.0.1-26/lib/src/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@ordercloud/oc-codegen@0.0.1-26/lib/src/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\r\nvar __assign = (this && this.__assign) || function () {\r\n    __assign = Object.assign || function(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n                t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n    return __assign.apply(this, arguments);\r\n};\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    var desc = Object.getOwnPropertyDescriptor(m, k);\r\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n      desc = { enumerable: true, get: function() { return m[k]; } };\r\n    }\r\n    Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}));\r\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar swagger_parser_1 = __importDefault(require(\"swagger-parser\"));\r\nvar templateDataFormatter_1 = __importDefault(require(\"./formatters/templateDataFormatter\"));\r\nvar handlebars_1 = __importDefault(require(\"handlebars\"));\r\nvar fs_extra_1 = __importDefault(require(\"fs-extra\"));\r\nvar klaw_1 = __importDefault(require(\"klaw\"));\r\nvar path_1 = __importDefault(require(\"path\"));\r\n__exportStar(require(\"./models\"), exports);\r\nfunction generate(options) {\r\n    return __awaiter(this, void 0, void 0, function () {\r\n        var spec, hooks, templateData, handlebarsExtensions;\r\n        return __generator(this, function (_a) {\r\n            switch (_a.label) {\r\n                case 0:\r\n                    // Set default options\r\n                    if (!options.output) {\r\n                        options.output = process.cwd();\r\n                    }\r\n                    if (!options.inputSpec) {\r\n                        options.inputSpec = 'https://api.ordercloud.io/v1/openapi/v3';\r\n                    }\r\n                    if (options.hooks) {\r\n                        options.hooks = path_1.default.resolve(process.cwd(), options.hooks);\r\n                    }\r\n                    if (options.handlebarsExtensions) {\r\n                        options.handlebarsExtensions = path_1.default.resolve(process.cwd(), options.handlebarsExtensions);\r\n                    }\r\n                    return [4 /*yield*/, tryGetParsedSpec(options.inputSpec || 'https://api.ordercloud.io/v1/openapi/v3')];\r\n                case 1:\r\n                    spec = _a.sent();\r\n                    hooks = options.hooks ? require(options.hooks) : {};\r\n                    return [4 /*yield*/, templateDataFormatter_1.default.format(spec, hooks)];\r\n                case 2:\r\n                    templateData = _a.sent();\r\n                    // Output template data for debugging\r\n                    if (options.debug) {\r\n                        // tslint:disable-next-line: no-console\r\n                        return [2 /*return*/, console.log(JSON.stringify(templateData, null, 4))];\r\n                    }\r\n                    // Register handlebars extensions\r\n                    if (options.handlebarsExtensions) {\r\n                        handlebarsExtensions = require(options.handlebarsExtensions);\r\n                        handlebarsExtensions(handlebars_1.default);\r\n                    }\r\n                    // Pass template data to templates and write files\r\n                    return [4 /*yield*/, generateDirectoryStructure(templateData, options)];\r\n                case 3:\r\n                    // Pass template data to templates and write files\r\n                    _a.sent();\r\n                    return [2 /*return*/];\r\n            }\r\n        });\r\n    });\r\n}\r\n/**\r\n * @ignore\r\n * not part of public api, don't include in generated docs\r\n */\r\nfunction tryGetParsedSpec(inputSpec) {\r\n    return __awaiter(this, void 0, void 0, function () {\r\n        var MAX_RETRIES, index, err_1;\r\n        return __generator(this, function (_a) {\r\n            switch (_a.label) {\r\n                case 0:\r\n                    MAX_RETRIES = 3;\r\n                    index = 1;\r\n                    _a.label = 1;\r\n                case 1:\r\n                    if (!(index <= MAX_RETRIES)) return [3 /*break*/, 7];\r\n                    _a.label = 2;\r\n                case 2:\r\n                    _a.trys.push([2, 5, , 6]);\r\n                    return [4 /*yield*/, swagger_parser_1.default.parse(inputSpec)];\r\n                case 3: return [4 /*yield*/, _a.sent()];\r\n                case 4: return [2 /*return*/, (_a.sent())];\r\n                case 5:\r\n                    err_1 = _a.sent();\r\n                    if (index === MAX_RETRIES) {\r\n                        console.error(err_1);\r\n                        throw Error(\"Failed to parse spec after \".concat(MAX_RETRIES, \" tries.\\n Path to spec: \").concat(inputSpec));\r\n                    }\r\n                    return [3 /*break*/, 6];\r\n                case 6:\r\n                    index++;\r\n                    return [3 /*break*/, 1];\r\n                case 7: return [2 /*return*/];\r\n            }\r\n        });\r\n    });\r\n}\r\n/**\r\n * @ignore\r\n * not part of public api, don't include in generated docs\r\n */\r\nfunction generateDirectoryStructure(templateData, options) {\r\n    return __awaiter(this, void 0, void 0, function () {\r\n        var _a;\r\n        var _this = this;\r\n        return __generator(this, function (_b) {\r\n            switch (_b.label) {\r\n                case 0:\r\n                    if (!options.clean) return [3 /*break*/, 2];\r\n                    return [4 /*yield*/, fs_extra_1.default.emptyDir(options.output)];\r\n                case 1:\r\n                    _a = _b.sent();\r\n                    return [3 /*break*/, 4];\r\n                case 2: return [4 /*yield*/, fs_extra_1.default.ensureDir(options.output)];\r\n                case 3:\r\n                    _a = _b.sent();\r\n                    _b.label = 4;\r\n                case 4:\r\n                    _a;\r\n                    return [2 /*return*/, new Promise(function (resolve, reject) {\r\n                            var allPromises = [];\r\n                            var walker = (0, klaw_1.default)(options.templates);\r\n                            walker.on('data', function (file) { return __awaiter(_this, void 0, void 0, function () {\r\n                                var name_1, promises, promises, promises;\r\n                                var _this = this;\r\n                                return __generator(this, function (_a) {\r\n                                    try {\r\n                                        if (file.stats.isDirectory()) {\r\n                                            // we're only interested in processing files\r\n                                            return [2 /*return*/];\r\n                                        }\r\n                                        name_1 = path_1.default.basename(file.path);\r\n                                        if (name_1.includes('_OPERATION_')) {\r\n                                            promises = templateData.operations.map(function (operation) { return __awaiter(_this, void 0, void 0, function () {\r\n                                                var context, writeFilePath;\r\n                                                return __generator(this, function (_a) {\r\n                                                    context = __assign(__assign({}, templateData), { operation: operation });\r\n                                                    writeFilePath = file.path.replace('_OPERATION_', operation.id);\r\n                                                    return [2 /*return*/, generateFile(options.templates, options.output, context, file.path, writeFilePath)];\r\n                                                });\r\n                                            }); });\r\n                                            allPromises = __spreadArray(__spreadArray([], allPromises, true), promises, true);\r\n                                        }\r\n                                        else if (name_1.includes('_MODEL_')) {\r\n                                            promises = templateData.models.map(function (model) { return __awaiter(_this, void 0, void 0, function () {\r\n                                                var context, writeFilePath;\r\n                                                return __generator(this, function (_a) {\r\n                                                    context = __assign(__assign({}, templateData), { model: model });\r\n                                                    writeFilePath = file.path.replace('_MODEL_', model.name);\r\n                                                    return [2 /*return*/, generateFile(options.templates, options.output, context, file.path, writeFilePath)];\r\n                                                });\r\n                                            }); });\r\n                                            allPromises = __spreadArray(__spreadArray([], allPromises, true), promises, true);\r\n                                        }\r\n                                        else if (name_1.includes('_RESOURCE_')) {\r\n                                            promises = templateData.resources.map(function (resource) { return __awaiter(_this, void 0, void 0, function () {\r\n                                                var context, writeFilePath;\r\n                                                return __generator(this, function (_a) {\r\n                                                    context = __assign(__assign({}, templateData), { resource: resource });\r\n                                                    writeFilePath = file.path.replace('_RESOURCE_', resource.id);\r\n                                                    return [2 /*return*/, generateFile(options.templates, options.output, context, file.path, writeFilePath)];\r\n                                                });\r\n                                            }); });\r\n                                            allPromises = __spreadArray(__spreadArray([], allPromises, true), promises, true);\r\n                                        }\r\n                                        else {\r\n                                            // this file should only exist once\r\n                                            allPromises = __spreadArray(__spreadArray([], allPromises, true), [\r\n                                                generateFile(options.templates, options.output, templateData, file.path, file.path),\r\n                                            ], false);\r\n                                        }\r\n                                    }\r\n                                    catch (e) {\r\n                                        return [2 /*return*/, reject(e)];\r\n                                    }\r\n                                    return [2 /*return*/];\r\n                                });\r\n                            }); });\r\n                            walker.on('error', function (err) {\r\n                                return reject(err);\r\n                            });\r\n                            walker.on('end', function () { return __awaiter(_this, void 0, void 0, function () {\r\n                                var e_1;\r\n                                return __generator(this, function (_a) {\r\n                                    switch (_a.label) {\r\n                                        case 0:\r\n                                            _a.trys.push([0, 2, , 3]);\r\n                                            return [4 /*yield*/, Promise.all(allPromises)];\r\n                                        case 1:\r\n                                            _a.sent();\r\n                                            return [2 /*return*/, resolve()];\r\n                                        case 2:\r\n                                            e_1 = _a.sent();\r\n                                            return [2 /*return*/, reject(e_1)];\r\n                                        case 3: return [2 /*return*/];\r\n                                    }\r\n                                });\r\n                            }); });\r\n                        })];\r\n            }\r\n        });\r\n    });\r\n}\r\n/**\r\n * @ignore\r\n * not part of public api, don't include in generated docs\r\n */\r\nfunction generateFile(templatesFolder, outputFolder, context, readFilePath, writeFilePath) {\r\n    return __awaiter(this, void 0, void 0, function () {\r\n        var templatePath, generatedPath, templateData, template, generatedContent;\r\n        return __generator(this, function (_a) {\r\n            switch (_a.label) {\r\n                case 0:\r\n                    templatePath = path_1.default.relative(templatesFolder, writeFilePath.replace('.hbs', ''));\r\n                    generatedPath = path_1.default.resolve(outputFolder, templatePath);\r\n                    return [4 /*yield*/, fs_extra_1.default.readFile(readFilePath, 'utf-8').catch(function (e) {\r\n                            throw Error(\"Unable to read file \".concat(readFilePath, \"\\nMessage: \").concat(e.message));\r\n                        })];\r\n                case 1:\r\n                    templateData = _a.sent();\r\n                    template = handlebars_1.default.compile(templateData, { noEscape: true });\r\n                    generatedContent = template(context);\r\n                    return [4 /*yield*/, fs_extra_1.default.outputFile(generatedPath, generatedContent).catch(function (e) {\r\n                            throw Error(\"Unable to write file \".concat(generatedPath, \"\\nMessage: \").concat(e.message));\r\n                        })];\r\n                case 2:\r\n                    _a.sent();\r\n                    return [2 /*return*/];\r\n            }\r\n        });\r\n    });\r\n}\r\nexports.default = {\r\n    generate: generate,\r\n};\r\n"]}