wrekenfile-converter
Version:
Convert OpenAPI and Postman specs into Wrekenfiles, with chunking for vector database storage
183 lines • 10 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getMiniWrekenfilesForEndpoints = getMiniWrekenfilesForEndpoints;
exports.getMiniWrekenfilesForEndpointsV2 = getMiniWrekenfilesForEndpointsV2;
exports.getMiniWrekenfilesForMethods = getMiniWrekenfilesForMethods;
exports.getMiniWrekenfilesForMethodsV2 = getMiniWrekenfilesForMethodsV2;
exports.getMiniWrekenfilesForInterface = getMiniWrekenfilesForInterface;
exports.getMiniWrekenfileContent = getMiniWrekenfileContent;
exports.getMiniWrekenfileContentV2 = getMiniWrekenfileContentV2;
const fs_1 = __importDefault(require("fs"));
const js_yaml_1 = __importDefault(require("js-yaml"));
const v1 = __importStar(require("./v1"));
const v2 = __importStar(require("./v2"));
const wrekenfile_validator_1 = require("./v1/wrekenfile-validator");
const mini_wrekenfile_generator_1 = require("./v1/mini-wrekenfile-generator");
const mini_wrekenfile_generator_2 = require("./v2/mini-wrekenfile-generator");
/**
* Example usage of the Wrekenfile converters and mini-wrekenfile generator
* This shows how to use both v1 and v2 converters
*/
function exampleUsageV1() {
console.log('=== Wrekenfile v1 Examples ===');
// OpenAPI v3 example (v1)
const openapiContent = fs_1.default.readFileSync('./examples/plaid.yml', 'utf8');
const openapiSpec = js_yaml_1.default.load(openapiContent);
const wrekenfileYaml = v1.generateWrekenfile(openapiSpec, './examples');
console.log('OpenAPI v3 to Wrekenfile (v1):', wrekenfileYaml.slice(0, 200) + '...');
// Postman example (v1)
const postmanContent = fs_1.default.readFileSync('./examples/Swytchcode API Docs.postman_collection.json', 'utf8');
const postmanCollection = JSON.parse(postmanContent);
const wrekenfileFromPostman = v1.generateWrekenfileFromPostman(postmanCollection, {});
console.log('Postman to Wrekenfile (v1):', wrekenfileFromPostman.slice(0, 200) + '...');
// Mini Wrekenfiles (v1)
fs_1.default.writeFileSync('./Wrekenfile.yaml', wrekenfileYaml);
const miniFiles = (0, mini_wrekenfile_generator_1.generateMiniWrekenfiles)(wrekenfileYaml);
console.log('Mini Wrekenfiles count (v1):', miniFiles.length);
if (miniFiles.length > 0) {
console.log('First mini Wrekenfile (v1):', miniFiles[0].content.slice(0, 200) + '...');
}
}
function exampleUsageV2() {
console.log('=== Wrekenfile v2 Examples ===');
try {
// OpenAPI v3 example (v2)
const openapiContent = fs_1.default.readFileSync('./examples/3n.yaml', 'utf8');
const openapiSpec = js_yaml_1.default.load(openapiContent);
const wrekenfileYaml = v2.generateWrekenfile(openapiSpec, './examples');
console.log('OpenAPI v3 to Wrekenfile (v2):', wrekenfileYaml.slice(0, 200) + '...');
const parsed = js_yaml_1.default.load(wrekenfileYaml);
console.log(' Generated:', Object.keys(parsed.METHODS || {}).length, 'methods');
// OpenAPI v2 (Swagger) example (v2)
const openapiV2Content = fs_1.default.readFileSync('./examples/5n_v2.yaml', 'utf8');
const openapiV2Spec = js_yaml_1.default.load(openapiV2Content);
const wrekenfileV2Yaml = v2.generateWrekenfileV2(openapiV2Spec, './examples');
console.log('OpenAPI v2 to Wrekenfile (v2):', wrekenfileV2Yaml.slice(0, 200) + '...');
const parsedV2 = js_yaml_1.default.load(wrekenfileV2Yaml);
console.log(' Generated:', Object.keys(parsedV2.METHODS || {}).length, 'methods');
// Postman example (v2)
const postmanContent = fs_1.default.readFileSync('./examples/Nium APIpostman_collection.json', 'utf8');
const postmanCollection = JSON.parse(postmanContent);
const wrekenfileFromPostman = v2.generateWrekenfileFromPostman(postmanCollection, {});
console.log('Postman to Wrekenfile (v2):', wrekenfileFromPostman.slice(0, 200) + '...');
const parsedPostman = js_yaml_1.default.load(wrekenfileFromPostman);
console.log(' Generated:', Object.keys(parsedPostman.METHODS || {}).length, 'methods');
// Mini Wrekenfiles (v2) - supports both HTTP and SDK methods
fs_1.default.writeFileSync('./Wrekenfile_v2.yaml', wrekenfileYaml);
const miniFiles = (0, mini_wrekenfile_generator_2.generateMiniWrekenfiles)(wrekenfileYaml);
console.log('Mini Wrekenfiles count (v2):', miniFiles.length);
if (miniFiles.length > 0) {
const firstMini = miniFiles[0];
console.log('First mini Wrekenfile (v2):', firstMini.content.slice(0, 200) + '...');
console.log(' Metadata:', {
endpoint: firstMini.metadata.endpoint,
interface: firstMini.metadata.interface,
source: firstMini.metadata.source,
methods: firstMini.metadata.methods,
structs: firstMini.metadata.structs
});
}
// Validation
const validation = (0, wrekenfile_validator_1.validateWrekenfile)('./Wrekenfile_v2.yaml');
console.log('Validation result:', validation.isValid, validation.errors, validation.warnings);
}
catch (err) {
console.error('Error in v2 examples:', err.message);
if (err.code) {
console.error(' Error code:', err.code);
}
throw err;
}
}
function exampleUsage() {
exampleUsageV1();
console.log('\n');
exampleUsageV2();
}
// Example: Function to get mini Wrekenfiles for specific endpoints (v1)
function getMiniWrekenfilesForEndpoints(wrekenfileContent, targetEndpoints) {
const allMiniFiles = (0, mini_wrekenfile_generator_1.generateMiniWrekenfiles)(wrekenfileContent);
return allMiniFiles.filter((miniFile) => targetEndpoints.includes(miniFile.metadata.endpoint || ''));
}
// Example: Function to get mini Wrekenfiles for specific endpoints (v2)
function getMiniWrekenfilesForEndpointsV2(wrekenfileContent, targetEndpoints) {
const allMiniFiles = (0, mini_wrekenfile_generator_2.generateMiniWrekenfiles)(wrekenfileContent);
return allMiniFiles.filter((miniFile) => miniFile.metadata.endpoint && targetEndpoints.includes(miniFile.metadata.endpoint));
}
// Example: Function to get mini Wrekenfiles for specific methods (v1)
function getMiniWrekenfilesForMethods(wrekenfileContent, targetMethods) {
const allMiniFiles = (0, mini_wrekenfile_generator_1.generateMiniWrekenfiles)(wrekenfileContent);
return allMiniFiles.filter((miniFile) => miniFile.metadata.methods.some((method) => targetMethods.includes(method)));
}
// Example: Function to get mini Wrekenfiles for specific methods (v2)
function getMiniWrekenfilesForMethodsV2(wrekenfileContent, targetMethods) {
const allMiniFiles = (0, mini_wrekenfile_generator_2.generateMiniWrekenfiles)(wrekenfileContent);
return allMiniFiles.filter((miniFile) => miniFile.metadata.methods.some((method) => targetMethods.includes(method)));
}
// Example: Function to get mini Wrekenfiles for SDK interface (v2)
function getMiniWrekenfilesForInterface(wrekenfileContent, interfaceName, source) {
const allMiniFiles = (0, mini_wrekenfile_generator_2.generateMiniWrekenfiles)(wrekenfileContent);
return allMiniFiles.filter((miniFile) => miniFile.metadata.interface === interfaceName &&
(!source || miniFile.metadata.source === source));
}
// Example: Function to get mini Wrekenfile content as string for AI context (v1)
function getMiniWrekenfileContent(wrekenfileContent, endpoint) {
const allMiniFiles = (0, mini_wrekenfile_generator_1.generateMiniWrekenfiles)(wrekenfileContent);
const miniFile = allMiniFiles.find((file) => file.metadata.endpoint === endpoint);
return miniFile ? miniFile.content : null;
}
// Example: Function to get mini Wrekenfile content as string for AI context (v2)
function getMiniWrekenfileContentV2(wrekenfileContent, endpoint, interfaceName, source) {
const allMiniFiles = (0, mini_wrekenfile_generator_2.generateMiniWrekenfiles)(wrekenfileContent);
const miniFile = allMiniFiles.find((file) => {
if (endpoint && file.metadata.endpoint !== endpoint)
return false;
if (interfaceName && file.metadata.interface !== interfaceName)
return false;
if (source && file.metadata.source !== source)
return false;
return true;
});
return miniFile ? miniFile.content : null;
}
// Run example if this file is executed directly
if (require.main === module) {
exampleUsage();
}
//# sourceMappingURL=example-usage.js.map