@oak-digital/types-4-strapi-2 0.1.2 → 0.2.2

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 (41) hide show
  1. package/.editorconfig +9 -0
  2. package/.eslintrc.json +52 -0
  3. package/.prettierrc.json +7 -0
  4. package/README.md +67 -0
  5. package/lib/.prettierrc.json +7 -0
  6. package/lib/index.js +9 -4
  7. package/lib/interface/Attributes.d.ts +3 -3
  8. package/lib/interface/Attributes.js +34 -9
  9. package/lib/interface/BuiltinComponentInterface.d.ts +5 -0
  10. package/lib/interface/BuiltinComponentInterface.js +36 -0
  11. package/lib/interface/BuiltinInterface.d.ts +5 -0
  12. package/lib/interface/BuiltinInterface.js +33 -0
  13. package/lib/interface/ComponentInterface.d.ts +2 -1
  14. package/lib/interface/ComponentInterface.js +14 -3
  15. package/lib/interface/Interface.d.ts +4 -0
  16. package/lib/interface/Interface.js +4 -4
  17. package/lib/interface/InterfaceManager.d.ts +6 -0
  18. package/lib/interface/InterfaceManager.js +65 -15
  19. package/lib/interface/builtinInterfaces.d.ts +4 -0
  20. package/lib/interface/builtinInterfaces.js +73 -0
  21. package/lib/src/index.d.ts +1 -0
  22. package/lib/src/index.js +25 -0
  23. package/lib/src/interface/Attributes.d.ts +11 -0
  24. package/lib/src/interface/Attributes.js +148 -0
  25. package/lib/src/interface/BuiltinComponentInterface.d.ts +5 -0
  26. package/lib/src/interface/BuiltinComponentInterface.js +36 -0
  27. package/lib/src/interface/BuiltinInterface.d.ts +5 -0
  28. package/lib/src/interface/BuiltinInterface.js +33 -0
  29. package/lib/src/interface/ComponentInterface.d.ts +8 -0
  30. package/lib/src/interface/ComponentInterface.js +58 -0
  31. package/lib/src/interface/Interface.d.ts +31 -0
  32. package/lib/src/interface/Interface.js +112 -0
  33. package/lib/src/interface/InterfaceManager.d.ts +25 -0
  34. package/lib/src/interface/InterfaceManager.js +288 -0
  35. package/lib/src/interface/builtinInterfaces.d.ts +4 -0
  36. package/lib/src/interface/builtinInterfaces.js +81 -0
  37. package/lib/src/interface/schemaReader.d.ts +14 -0
  38. package/lib/src/interface/schemaReader.js +172 -0
  39. package/lib/src/utils/index.d.ts +3 -0
  40. package/lib/src/utils/index.js +67 -0
  41. package/package.json +8 -2
@@ -43,9 +43,11 @@ var fs_1 = require("fs");
43
43
  var promises_1 = require("fs/promises");
44
44
  var path_1 = require("path");
45
45
  var utils_1 = require("../utils");
46
+ var builtinInterfaces_1 = require("./builtinInterfaces");
46
47
  var ComponentInterface_1 = __importDefault(require("./ComponentInterface"));
47
48
  var Interface_1 = __importDefault(require("./Interface"));
48
49
  var schemaReader_1 = require("./schemaReader");
50
+ var prettier_1 = __importDefault(require("prettier"));
49
51
  var InterfaceManager = /** @class */ (function () {
50
52
  function InterfaceManager(outRoot, strapiSrcRoot, options) {
51
53
  if (options === void 0) { options = {}; }
@@ -54,6 +56,28 @@ var InterfaceManager = /** @class */ (function () {
54
56
  this.StrapiSrcRoot = strapiSrcRoot;
55
57
  this.Options = Object.assign({}, InterfaceManager.BaseOptions, options);
56
58
  }
59
+ InterfaceManager.prototype.loadPrettierConfig = function () {
60
+ return __awaiter(this, void 0, void 0, function () {
61
+ var defaultOptions, resolved;
62
+ return __generator(this, function (_a) {
63
+ switch (_a.label) {
64
+ case 0:
65
+ defaultOptions = {
66
+ parser: 'typescript',
67
+ };
68
+ if (!this.Options.prettierFile) {
69
+ this.PrettierOptions = defaultOptions;
70
+ return [2 /*return*/];
71
+ }
72
+ return [4 /*yield*/, prettier_1.default.resolveConfig(this.Options.prettierFile)];
73
+ case 1:
74
+ resolved = _a.sent();
75
+ this.PrettierOptions = Object.assign({}, defaultOptions, resolved);
76
+ return [2 /*return*/];
77
+ }
78
+ });
79
+ });
80
+ };
57
81
  InterfaceManager.prototype.createInterfaces = function () {
58
82
  return __awaiter(this, void 0, void 0, function () {
59
83
  var apiSchemasPromise, componentSchemasPromise, apiSchemas, componentSchemas;
@@ -69,7 +93,7 @@ var InterfaceManager = /** @class */ (function () {
69
93
  apiSchemas.forEach(function (schema) {
70
94
  var name = schema.name, attributes = schema.attributes;
71
95
  var strapiName = "api::".concat(name, ".").concat(name);
72
- var inter = new Interface_1.default(name, attributes, "./", _this.Options.prefix);
96
+ var inter = new Interface_1.default(name, attributes, './', _this.Options.prefix);
73
97
  _this.Interfaces[strapiName] = inter;
74
98
  });
75
99
  return [4 /*yield*/, componentSchemasPromise];
@@ -80,7 +104,7 @@ var InterfaceManager = /** @class */ (function () {
80
104
  category.schemas.forEach(function (schema) {
81
105
  var componentName = schema.name;
82
106
  var strapiName = "".concat(categoryName, ".").concat(schema.name);
83
- var componentPrefix = "".concat(_this.Options.componentPrefix).concat(_this.Options.useCategoryPrefix ? (0, utils_1.pascalCase)(categoryName) : "");
107
+ var componentPrefix = "".concat(_this.Options.componentPrefix).concat(_this.Options.useCategoryPrefix ? (0, utils_1.pascalCase)(categoryName) : '');
84
108
  var prefix = _this.Options.componentPrefixOverridesPrefix ? componentPrefix : _this.Options.prefix + componentPrefix;
85
109
  // TODO: make component interface
86
110
  var inter = new ComponentInterface_1.default(componentName, schema.attributes, "./".concat(categoryName), categoryName, prefix);
@@ -92,6 +116,16 @@ var InterfaceManager = /** @class */ (function () {
92
116
  });
93
117
  });
94
118
  };
119
+ InterfaceManager.prototype.createBuiltinInterfaces = function () {
120
+ var _this = this;
121
+ var outDir = './builtins';
122
+ var builtinInterfaces = [];
123
+ builtinInterfaces.push((0, builtinInterfaces_1.createMediaInterface)(outDir, this.Options.prefix));
124
+ builtinInterfaces.push((0, builtinInterfaces_1.createMediaFormatInterface)(outDir, this.Options.prefix));
125
+ builtinInterfaces.forEach(function (inter) {
126
+ _this.Interfaces[inter.getStrapiName()] = inter;
127
+ });
128
+ };
95
129
  // Inject dependencies into all interfaces
96
130
  InterfaceManager.prototype.injectDependencies = function () {
97
131
  var _this = this;
@@ -108,7 +142,7 @@ var InterfaceManager = /** @class */ (function () {
108
142
  };
109
143
  InterfaceManager.prototype.makeFolders = function () {
110
144
  return __awaiter(this, void 0, void 0, function () {
111
- var componentCategories;
145
+ var componentCategories, promises, componentCategoriesPromises, builtinsPath;
112
146
  var _this = this;
113
147
  return __generator(this, function (_a) {
114
148
  switch (_a.label) {
@@ -122,7 +156,9 @@ var InterfaceManager = /** @class */ (function () {
122
156
  case 2:
123
157
  _a.sent();
124
158
  _a.label = 3;
125
- case 3: return [4 /*yield*/, Promise.all(componentCategories.map(function (category) { return __awaiter(_this, void 0, void 0, function () {
159
+ case 3:
160
+ promises = [];
161
+ componentCategoriesPromises = componentCategories.map(function (category) { return __awaiter(_this, void 0, void 0, function () {
126
162
  var path;
127
163
  return __generator(this, function (_a) {
128
164
  switch (_a.label) {
@@ -137,7 +173,13 @@ var InterfaceManager = /** @class */ (function () {
137
173
  return [2 /*return*/];
138
174
  }
139
175
  });
140
- }); }))];
176
+ }); });
177
+ promises.push.apply(promises, componentCategoriesPromises);
178
+ builtinsPath = (0, path_1.join)(this.OutRoot, 'builtins');
179
+ if (!(0, fs_1.existsSync)(builtinsPath)) {
180
+ promises.push((0, promises_1.mkdir)((0, path_1.join)(this.OutRoot, 'builtins')));
181
+ }
182
+ return [4 /*yield*/, Promise.all(promises)];
141
183
  case 4:
142
184
  _a.sent();
143
185
  return [2 /*return*/];
@@ -153,14 +195,15 @@ var InterfaceManager = /** @class */ (function () {
153
195
  switch (_a.label) {
154
196
  case 0:
155
197
  writePromises = Object.keys(this.Interfaces).map(function (strapiName) { return __awaiter(_this, void 0, void 0, function () {
156
- var inter, fileData, filePath;
198
+ var inter, fileData, formattedFileData, filePath;
157
199
  return __generator(this, function (_a) {
158
200
  switch (_a.label) {
159
201
  case 0:
160
202
  inter = this.Interfaces[strapiName];
161
203
  fileData = inter.toString();
204
+ formattedFileData = prettier_1.default.format(fileData, this.PrettierOptions);
162
205
  filePath = (0, path_1.join)(this.OutRoot, inter.getRelativeRootPathFile());
163
- return [4 /*yield*/, (0, promises_1.writeFile)(filePath, fileData)];
206
+ return [4 /*yield*/, (0, promises_1.writeFile)(filePath, formattedFileData)];
164
207
  case 1:
165
208
  _a.sent();
166
209
  return [2 /*return*/];
@@ -177,7 +220,7 @@ var InterfaceManager = /** @class */ (function () {
177
220
  };
178
221
  InterfaceManager.prototype.writeIndexFile = function () {
179
222
  return __awaiter(this, void 0, void 0, function () {
180
- var strings, fileData, filePath;
223
+ var strings, fileData, formattedFileData, filePath;
181
224
  var _this = this;
182
225
  return __generator(this, function (_a) {
183
226
  switch (_a.label) {
@@ -186,9 +229,10 @@ var InterfaceManager = /** @class */ (function () {
186
229
  var inter = _this.Interfaces[strapiName];
187
230
  return "export * from '".concat(inter.getRelativeRootPath(), "'");
188
231
  });
189
- fileData = strings.join("\n");
190
- filePath = (0, path_1.join)(this.OutRoot, "index.ts");
191
- return [4 /*yield*/, (0, promises_1.writeFile)(filePath, fileData)];
232
+ fileData = strings.join('\n');
233
+ formattedFileData = prettier_1.default.format(fileData, this.PrettierOptions);
234
+ filePath = (0, path_1.join)(this.OutRoot, 'index.ts');
235
+ return [4 /*yield*/, (0, promises_1.writeFile)(filePath, formattedFileData)];
192
236
  case 1:
193
237
  _a.sent();
194
238
  return [2 /*return*/];
@@ -198,18 +242,21 @@ var InterfaceManager = /** @class */ (function () {
198
242
  };
199
243
  InterfaceManager.prototype.run = function () {
200
244
  return __awaiter(this, void 0, void 0, function () {
201
- var createInterfacesPromise, makeFoldersPromise, err_1;
245
+ var createInterfacesPromise, makeFoldersPromise, loadPrettierPromise, err_1;
202
246
  return __generator(this, function (_a) {
203
247
  switch (_a.label) {
204
248
  case 0:
205
249
  _a.trys.push([0, 4, , 5]);
206
250
  createInterfacesPromise = this.createInterfaces();
207
251
  makeFoldersPromise = this.makeFolders();
252
+ loadPrettierPromise = this.loadPrettierConfig();
253
+ this.createBuiltinInterfaces();
208
254
  return [4 /*yield*/, createInterfacesPromise];
209
255
  case 1:
210
256
  _a.sent();
257
+ // Create all interfaces before injecting
211
258
  this.injectDependencies();
212
- return [4 /*yield*/, makeFoldersPromise];
259
+ return [4 /*yield*/, Promise.all([makeFoldersPromise, loadPrettierPromise])];
213
260
  case 2:
214
261
  _a.sent();
215
262
  return [4 /*yield*/, Promise.all([this.writeInterfaces(), this.writeIndexFile()])];
@@ -226,10 +273,13 @@ var InterfaceManager = /** @class */ (function () {
226
273
  });
227
274
  };
228
275
  InterfaceManager.BaseOptions = {
229
- prefix: "I",
276
+ prefix: 'I',
230
277
  useCategoryPrefix: true,
231
- componentPrefix: "",
278
+ componentPrefix: '',
232
279
  componentPrefixOverridesPrefix: false,
280
+ builtinsPrefix: '',
281
+ builtinsPrefixOverridesPrefix: false,
282
+ prettierFile: null,
233
283
  };
234
284
  return InterfaceManager;
235
285
  }());
@@ -0,0 +1,4 @@
1
+ import BuiltinComponentInterface from "./BuiltinComponentInterface";
2
+ import BuiltinInterface from "./BuiltinInterface";
3
+ export declare function createMediaInterface(directory: string, prefix: string): BuiltinInterface;
4
+ export declare function createMediaFormatInterface(directory: string, prefix: string): BuiltinComponentInterface;
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createMediaFormatInterface = exports.createMediaInterface = void 0;
7
+ var BuiltinComponentInterface_1 = __importDefault(require("./BuiltinComponentInterface"));
8
+ var BuiltinInterface_1 = __importDefault(require("./BuiltinInterface"));
9
+ function createMediaInterface(directory, prefix) {
10
+ var stringFields = [
11
+ "name",
12
+ "alternativeText",
13
+ "caption",
14
+ "hash",
15
+ "ext",
16
+ "mime",
17
+ "url",
18
+ "previewUrl",
19
+ "provider",
20
+ ];
21
+ var numberFields = [
22
+ "width",
23
+ "height",
24
+ "size",
25
+ ];
26
+ var mediaFormat = {
27
+ type: "component",
28
+ repeatable: false,
29
+ component: "builtins::MediaFormat",
30
+ };
31
+ var mediaAttrs = {
32
+ formats: {
33
+ // types-4-strapi-2 specific
34
+ type: "nested",
35
+ fields: {
36
+ thumbnail: mediaFormat,
37
+ medium: mediaFormat,
38
+ small: mediaFormat,
39
+ },
40
+ },
41
+ };
42
+ stringFields.forEach(function (s) { return mediaAttrs[s] = { type: "string" }; });
43
+ numberFields.forEach(function (s) { return mediaAttrs[s] = { type: "integer" }; });
44
+ // const dataAttrs = {
45
+ // data: {
46
+ // type: "nested",
47
+ // fields: mediaAttrs,
48
+ // nullable: true,
49
+ // },
50
+ // };
51
+ return new BuiltinInterface_1.default("Media", mediaAttrs, directory, prefix);
52
+ }
53
+ exports.createMediaInterface = createMediaInterface;
54
+ function createMediaFormatInterface(directory, prefix) {
55
+ var stringFields = [
56
+ "name",
57
+ "hash",
58
+ "ext",
59
+ "mime",
60
+ "path",
61
+ "url",
62
+ ];
63
+ var numberFields = [
64
+ "width",
65
+ "height",
66
+ "size",
67
+ ];
68
+ var mediaAttrs = {};
69
+ stringFields.forEach(function (s) { return mediaAttrs[s] = { type: "string" }; });
70
+ numberFields.forEach(function (s) { return mediaAttrs[s] = { type: "integer" }; });
71
+ return new BuiltinComponentInterface_1.default("MediaFormat", mediaAttrs, directory, prefix);
72
+ }
73
+ exports.createMediaFormatInterface = createMediaFormatInterface;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var commander_1 = require("commander");
7
+ var InterfaceManager_1 = __importDefault(require("./interface/InterfaceManager"));
8
+ commander_1.program
9
+ .name('t4s');
10
+ commander_1.program
11
+ .option('-i, --in <dir>', 'The src directory for strapi', './src')
12
+ .option('-o, --out <dir>', 'The output directory to output the types to', './types')
13
+ .option('--component-prefix <prefix>', 'A prefix for components', '')
14
+ .option('--prettier <file>', 'The prettier config file to use for formatting typescript interfaces');
15
+ commander_1.program.parse();
16
+ var options = commander_1.program.opts();
17
+ console.log(options);
18
+ var input = options.in, out = options.out, componentPrefix = options.componentPrefix, prettierFile = options.prettier;
19
+ var manager = new InterfaceManager_1.default(out, input, {
20
+ componentPrefix: componentPrefix,
21
+ prettierFile: prettierFile,
22
+ });
23
+ manager.run().catch(function (err) {
24
+ console.error(err);
25
+ });
@@ -0,0 +1,11 @@
1
+ import { RelationNames } from './Interface';
2
+ export default class Attributes {
3
+ Attrs: Record<string, Record<string, any>>;
4
+ private RelationNames;
5
+ constructor(attr: Record<string, Record<string, any>>, relationNames: RelationNames);
6
+ isAttributeOptional(attr: any): boolean;
7
+ getDependencies(): any[];
8
+ attributeToString(attrName: string, attr: any): string;
9
+ toFieldsString(): string;
10
+ toString(): string;
11
+ }
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var Attributes = /** @class */ (function () {
4
+ function Attributes(attr, relationNames) {
5
+ this.RelationNames = {};
6
+ this.Attrs = attr;
7
+ this.RelationNames = relationNames;
8
+ }
9
+ Attributes.prototype.isAttributeOptional = function (attr) {
10
+ // If it is a component / relation / dynamiczone it is always optional due to population
11
+ switch (attr.type) {
12
+ case 'nested':
13
+ return attr.nullable === true;
14
+ case 'component':
15
+ case 'dynamiczone':
16
+ case 'relation':
17
+ return true;
18
+ default:
19
+ break;
20
+ }
21
+ return false;
22
+ };
23
+ Attributes.prototype.getDependencies = function () {
24
+ var dependencies = [];
25
+ for (var attrName in this.Attrs) {
26
+ var attr = this.Attrs[attrName];
27
+ var dependencyNames = [];
28
+ switch (attr.type) {
29
+ case 'nested':
30
+ var attrs = new Attributes(attr.fields, this.RelationNames);
31
+ dependencyNames.push.apply(dependencyNames, attrs.getDependencies());
32
+ break;
33
+ case 'relation':
34
+ dependencyNames.push(attr.target);
35
+ break;
36
+ case 'component':
37
+ dependencyNames.push(attr.component);
38
+ break;
39
+ case 'media':
40
+ dependencyNames.push('builtins::Media');
41
+ break;
42
+ default:
43
+ continue;
44
+ }
45
+ // // If the current dependency is the interface itself, do not report it as a dependency
46
+ // if (dependencyName === strapiName) {
47
+ // continue;
48
+ // }
49
+ dependencyNames.forEach(function (dependencyName) {
50
+ if (!dependencies.includes(dependencyName)) {
51
+ dependencies.push(dependencyName);
52
+ }
53
+ });
54
+ }
55
+ return dependencies;
56
+ };
57
+ Attributes.prototype.attributeToString = function (attrName, attr) {
58
+ var _a, _b;
59
+ var optionalString = this.isAttributeOptional(attr) ? '?' : '';
60
+ var str = " ".concat(attrName).concat(optionalString, ": ");
61
+ var isArray = false;
62
+ switch (attr.type) {
63
+ // types-4-strapi-2 specific, used for builtin types
64
+ case 'nested':
65
+ // Be careful with recursion
66
+ // console.log(attr);
67
+ var newAttrs = new Attributes(attr.fields, this.RelationNames);
68
+ str += newAttrs.toString();
69
+ break;
70
+ case 'relation':
71
+ var apiName = attr.target;
72
+ // console.log(this.RelationNames, apiName)
73
+ var dependencyName = this.RelationNames[apiName].name;
74
+ isArray = attr.relation.endsWith('ToMany');
75
+ str += dependencyName;
76
+ break;
77
+ case 'component':
78
+ var componentName = attr.component;
79
+ var relationNameObj = this.RelationNames[componentName];
80
+ var dependencyComponentName = relationNameObj.name;
81
+ isArray = (_a = attr.repeatable) !== null && _a !== void 0 ? _a : false;
82
+ str += dependencyComponentName;
83
+ break;
84
+ case 'media':
85
+ var mediaOptional = attr.required !== true ? '?' : '';
86
+ str += "{ data".concat(mediaOptional, ": ").concat(this.RelationNames['builtins::Media'].name, "; }");
87
+ isArray = (_b = attr.multiple) !== null && _b !== void 0 ? _b : false;
88
+ break;
89
+ case 'password':
90
+ return null;
91
+ case 'enumeration':
92
+ var hasDefault = 'default' in attr;
93
+ var enums = attr.enum.map(function (en) { return "\"".concat(en, "\""); });
94
+ enums.push('null');
95
+ var typeString = enums.join(' | ');
96
+ str += typeString;
97
+ break;
98
+ case 'string':
99
+ case 'text':
100
+ case 'richtext':
101
+ case 'email':
102
+ case 'uid':
103
+ str += 'string';
104
+ break;
105
+ case 'integer':
106
+ case 'biginteger':
107
+ case 'decimal':
108
+ case 'float':
109
+ str += 'number';
110
+ break;
111
+ case 'date':
112
+ case 'datetime':
113
+ case 'time':
114
+ str += 'Date';
115
+ break;
116
+ case 'boolean':
117
+ str += attr.type;
118
+ break;
119
+ case 'json':
120
+ default:
121
+ str += 'any';
122
+ break;
123
+ }
124
+ var isArrayString = isArray ? '[]' : '';
125
+ str += "".concat(isArrayString, ";");
126
+ return str;
127
+ };
128
+ Attributes.prototype.toFieldsString = function () {
129
+ var strings = [];
130
+ for (var attrName in this.Attrs) {
131
+ var attr = this.Attrs[attrName];
132
+ var attrString = this.attributeToString(attrName, attr);
133
+ if (attrString === null) {
134
+ continue;
135
+ }
136
+ strings.push(attrString);
137
+ }
138
+ return strings.map(function (s) { return "".concat(s, "\n"); }).join('');
139
+ };
140
+ Attributes.prototype.toString = function () {
141
+ var strings = ['{'];
142
+ strings.push(this.toFieldsString());
143
+ strings.push('}');
144
+ return strings.join('\n');
145
+ };
146
+ return Attributes;
147
+ }());
148
+ exports.default = Attributes;
@@ -0,0 +1,5 @@
1
+ import ComponentInterface from './ComponentInterface';
2
+ export default class BuiltinComponentInterface extends ComponentInterface {
3
+ constructor(baseName: string, attributes: any, relativeDirectoryPath: string, prefix?: string);
4
+ updateStrapiName(): void;
5
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __importDefault = (this && this.__importDefault) || function (mod) {
18
+ return (mod && mod.__esModule) ? mod : { "default": mod };
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ var ComponentInterface_1 = __importDefault(require("./ComponentInterface"));
22
+ var BuiltinComponentInterface = /** @class */ (function (_super) {
23
+ __extends(BuiltinComponentInterface, _super);
24
+ function BuiltinComponentInterface(baseName, attributes, relativeDirectoryPath, prefix) {
25
+ if (prefix === void 0) { prefix = ''; }
26
+ return _super.call(this, baseName, attributes, relativeDirectoryPath, 'builtins', prefix, {
27
+ hasId: false,
28
+ hasComponent: false,
29
+ }) || this;
30
+ }
31
+ BuiltinComponentInterface.prototype.updateStrapiName = function () {
32
+ this.StrapiName = "builtins::".concat(this.BaseName);
33
+ };
34
+ return BuiltinComponentInterface;
35
+ }(ComponentInterface_1.default));
36
+ exports.default = BuiltinComponentInterface;
@@ -0,0 +1,5 @@
1
+ import Interface from './Interface';
2
+ export default class BuiltinInterface extends Interface {
3
+ constructor(baseName: string, attributes: any, relativeDirectoryPath: string, prefix?: string);
4
+ updateStrapiName(): void;
5
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __importDefault = (this && this.__importDefault) || function (mod) {
18
+ return (mod && mod.__esModule) ? mod : { "default": mod };
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ var Interface_1 = __importDefault(require("./Interface"));
22
+ var BuiltinInterface = /** @class */ (function (_super) {
23
+ __extends(BuiltinInterface, _super);
24
+ function BuiltinInterface(baseName, attributes, relativeDirectoryPath, prefix) {
25
+ if (prefix === void 0) { prefix = ''; }
26
+ return _super.call(this, baseName, attributes, relativeDirectoryPath, prefix) || this;
27
+ }
28
+ BuiltinInterface.prototype.updateStrapiName = function () {
29
+ this.StrapiName = "builtins::".concat(this.BaseName);
30
+ };
31
+ return BuiltinInterface;
32
+ }(Interface_1.default));
33
+ exports.default = BuiltinInterface;
@@ -0,0 +1,8 @@
1
+ import Interface from './Interface';
2
+ export default class ComponentInterface extends Interface {
3
+ protected Category: string;
4
+ protected Options: Record<string, any>;
5
+ constructor(baseName: string, attributes: any, relativeDirectoryPath: string, category: string, prefix?: string, options?: Record<string, any>);
6
+ updateStrapiName(): void;
7
+ getInterfaceFieldsString(): string;
8
+ }
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __importDefault = (this && this.__importDefault) || function (mod) {
18
+ return (mod && mod.__esModule) ? mod : { "default": mod };
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ var Interface_1 = __importDefault(require("./Interface"));
22
+ var ComponentInterface = /** @class */ (function (_super) {
23
+ __extends(ComponentInterface, _super);
24
+ function ComponentInterface(baseName, attributes, relativeDirectoryPath, category, prefix, options) {
25
+ if (prefix === void 0) { prefix = ''; }
26
+ if (options === void 0) { options = {}; }
27
+ var _this = _super.call(this, baseName, attributes, relativeDirectoryPath, prefix) || this;
28
+ _this.Options = {
29
+ hasId: true,
30
+ hasComponent: true,
31
+ };
32
+ _this.Category = category;
33
+ // this.Attributes.id = {
34
+ // type: "number", // Components have a id field with a number
35
+ // required: true,
36
+ // };
37
+ _this.updateStrapiName();
38
+ Object.assign(_this.Options, options);
39
+ return _this;
40
+ }
41
+ ComponentInterface.prototype.updateStrapiName = function () {
42
+ this.StrapiName = "".concat(this.Category, ".").concat(this.getBaseName());
43
+ };
44
+ ComponentInterface.prototype.getInterfaceFieldsString = function () {
45
+ var attrs = this.getAttributes();
46
+ var str = '';
47
+ var _a = this.Options, hasId = _a.hasId, hasComponent = _a.hasComponent;
48
+ if (hasId) {
49
+ str += ' id: number;\n';
50
+ }
51
+ if (hasComponent) {
52
+ str += " __component: \"".concat(this.getStrapiName(), "\";\n");
53
+ }
54
+ return str + attrs.toFieldsString();
55
+ };
56
+ return ComponentInterface;
57
+ }(Interface_1.default));
58
+ exports.default = ComponentInterface;
@@ -0,0 +1,31 @@
1
+ import Attributes from './Attributes';
2
+ export declare type RelationNames = Record<string, {
3
+ name: string;
4
+ inter: Interface;
5
+ }>;
6
+ export default class Interface {
7
+ protected BaseName: string;
8
+ private Relations;
9
+ private RelationNames;
10
+ private RelationNamesCounter;
11
+ private NamePrefix;
12
+ protected Attributes: any;
13
+ private RelativeDirectoryPath;
14
+ protected StrapiName: string;
15
+ constructor(baseName: string, attributes: any, relativeDirectoryPath: string, prefix?: string);
16
+ protected updateStrapiName(): void;
17
+ getBaseName(): string;
18
+ getStrapiName(): string;
19
+ getDependencies(): any[];
20
+ getFullInterfaceName(): string;
21
+ getRelativeRootPath(): any;
22
+ getRelativeRootDir(): string;
23
+ getRelativeRootPathFile(): string;
24
+ setRelations(relations: Interface[]): void;
25
+ private getTsImports;
26
+ getAttributes(): Attributes;
27
+ attributesToString(): string;
28
+ getInerfaceString(): string;
29
+ getInterfaceFieldsString(): string;
30
+ toString(): string;
31
+ }