stackpress
Version:
Incept is a content management framework.
93 lines (92 loc) • 5.22 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());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = generate;
const node_path_1 = __importDefault(require("node:path"));
function generate(directory, schema, server) {
return __awaiter(this, void 0, void 0, function* () {
const fs = server.loader.fs;
const pwd = directory.getPath();
const name = server.config.path('client.package', 'stackpress-client');
const exports = {};
const types = {};
Object.values(schema.model || {}).forEach(model => {
const name = model.name;
const actions = `${name}/actions`;
const admin = `${name}/admin`;
const components = `${name}/components`;
const events = `${name}/events`;
const tests = `${name}/tests`;
exports[`./${actions}`] = `./${actions}/index.js`;
exports[`./${actions}/*`] = `./${actions}/*.js`;
exports[`./${admin}/pages/*`] = `./${admin}/pages/*.js`;
exports[`./${admin}/views/*`] = `./${admin}/views/*.js`;
exports[`./${admin}/routes`] = `./${admin}/routes.js`;
exports[`./${components}/fields/*`] = `./${components}/fields/*.js`;
exports[`./${components}/filters/*`] = `./${components}/filters/*.js`;
exports[`./${components}/lists/*`] = `./${components}/lists/*.js`;
exports[`./${components}/spans/*`] = `./${components}/spans/*.js`;
exports[`./${components}/views/*`] = `./${components}/views/*.js`;
exports[`./${events}`] = `./${events}/index.js`;
exports[`./${events}/*`] = `./${events}/*.js`;
exports[`./${tests}`] = `./${tests}/index.js`;
exports[`./${tests}/*`] = `./${tests}/*.js`;
exports[`./${name}`] = `./${name}/index.js`;
exports[`./${name}/*`] = `./${name}/*.js`;
types[actions] = [`./${actions}/index.d.ts`];
types[`${actions}/*`] = [`./${actions}/*.d.ts`];
types[`${admin}/pages/*`] = [`./${admin}/pages/*.d.ts`];
types[`${admin}/views/*`] = [`./${admin}/views/*.d.ts`];
types[`${admin}/routes`] = [`./${admin}/routes.d.ts`];
types[`${components}/fields/*`] = [`./${components}/fields/*.d.ts`];
types[`${components}/filters/*`] = [`./${components}/filters/*.d.ts`];
types[`${components}/lists/*`] = [`./${components}/lists/*.d.ts`];
types[`${components}/spans/*`] = [`./${components}/spans/*.d.ts`];
types[`${components}/views/*`] = [`./${components}/views/*.d.ts`];
types[events] = [`./${events}/index.d.ts`];
types[`${events}/*`] = [`./${events}/*.d.ts`];
types[tests] = [`./${tests}/index.d.ts`];
types[`${tests}/*`] = [`./${tests}/*.d.ts`];
types[name] = [`./${name}/index.d.ts`];
types[`${name}/*`] = [`./${name}/*.d.ts`];
});
Object.values(schema.type || {}).forEach(fieldset => {
const name = fieldset.name;
const components = `${name}/components`;
exports[`./${components}/fields/*`] = `./${components}/fields/*.js`;
exports[`./${components}/lists/*`] = `./${components}/lists/*.js`;
exports[`./${components}/views/*`] = `./${components}/views/*.js`;
exports[`./${name}`] = `./${name}/index.js`;
exports[`./${name}/*`] = `./${name}/*.js`;
types[`${components}/fields/*`] = [`./${components}/fields/*.d.ts`];
types[`${components}/lists/*`] = [`./${components}/lists/*.d.ts`];
types[`${components}/views/*`] = [`./${components}/views/*.d.ts`];
types[name] = [`./${name}/index.d.ts`];
types[`${name}/*`] = [`./${name}/*.d.ts`];
});
if (!(yield fs.exists(pwd))) {
yield fs.mkdir(pwd, { recursive: true });
}
yield fs.writeFile(node_path_1.default.join(pwd, 'package.json'), JSON.stringify({
name,
type: 'module',
module: 'index.js',
exports: Object.assign({ '.': './index.js', './*': './*.js', './index.js': './index.js' }, exports),
"typesVersions": {
"*": Object.assign({ '.': ['./index.d.ts'], '*': ['./*.d.ts'], 'index.js': ['./index.d.ts'] }, types)
}
}, null, 2));
});
}
;