angular-odata
Version:
Client side OData typescript library for Angular
64 lines • 3.37 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.apigen = apigen;
const core_1 = require("@angular-devkit/core");
const schematics_1 = require("@angular-devkit/schematics");
const workspace_1 = require("@schematics/angular/utility/workspace");
const parse_name_1 = require("@schematics/angular/utility/parse-name");
const parser_1 = require("./metadata/parser");
const utils_1 = require("./utils");
const package_1 = require("./angular/package");
const utils = {
toTypescriptType: utils_1.toTypescriptType,
};
function apigen(options) {
return (tree, context) => __awaiter(this, void 0, void 0, function* () {
var _a;
const workspace = yield (0, workspace_1.getWorkspace)(tree);
if (!options.project) {
options.project = (_a = workspace.projects.keys().next().value) !== null && _a !== void 0 ? _a : "";
}
const project = workspace.projects.get(options.project);
if (!project) {
throw new schematics_1.SchematicsException(`Invalid project name: ${options.project}`);
}
if (options.path === undefined) {
options.path = yield (0, workspace_1.createDefaultPath)(tree, options.project);
}
const parsedPath = (0, parse_name_1.parseName)(options.path, options.name);
options.name = parsedPath.name;
options.path = parsedPath.path;
const modulePath = options.path + '/' + core_1.strings.dasherize(options.name);
return fetch(options.metadata)
.then((resp) => resp.text())
.then((data) => new parser_1.ODataMetadataParser(data).metadata())
.then((meta) => {
options.creation = new Date();
options.serviceRootUrl = options.metadata.substring(0, options.metadata.length - 9);
options.version = meta.Version;
const pkg = new package_1.Package(options, meta);
pkg.resolveImports();
return (0, schematics_1.chain)(pkg.sources()
.map((s) => (0, schematics_1.apply)(s.template(), [
(0, schematics_1.template)(Object.assign(Object.assign(Object.assign({
name: s.name(),
fileName: s.fileName(),
fullName: s.fullName(),
imports: s.imports(),
}, s.variables()), core_1.strings), utils)),
(0, schematics_1.move)((0, core_1.normalize)(`${modulePath}/${s.directory()}`)),
]))
.reduce((rules, s) => [...rules, (0, schematics_1.mergeWith)(s, schematics_1.MergeStrategy.Overwrite)], []));
});
});
}
//# sourceMappingURL=index.js.map