@memberjunction/codegen-lib 0.9.179 → 0.9.184
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.
- package/package.json +30 -30
- package/dist/graphql_client_codegen.d.ts +0 -4
- package/dist/graphql_client_codegen.js +0 -161
- package/dist/graphql_client_codegen.js.map +0 -1
- package/dist/react_client_codegen.d.ts +0 -4
- package/dist/react_client_codegen.js +0 -147
- package/dist/react_client_codegen.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
2
|
+
"name": "@memberjunction/codegen-lib",
|
|
3
|
+
"version": "0.9.184",
|
|
4
|
+
"description": "Library used by the CodeGen executable to generate code for the MemberJunction platform",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"/dist"
|
|
9
|
+
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"start": "ts-node-dev src/index.ts",
|
|
12
|
+
"build": "tsc",
|
|
13
|
+
"test": "echo \"Error: no test specified\" \u0026\u0026 exit 1"
|
|
14
|
+
},
|
|
15
|
+
"author": "MemberJunction.com",
|
|
16
|
+
"license": "ISC",
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"ts-node-dev": "^2.0.0",
|
|
19
|
+
"typescript": "^5.3.3"
|
|
20
|
+
},
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"@memberjunction/ai": "^0.9.165",
|
|
23
|
+
"@memberjunction/core": "^0.9.177",
|
|
24
|
+
"@memberjunction/core-entities": "^0.9.162",
|
|
25
|
+
"@memberjunction/global": "^0.9.158",
|
|
26
|
+
"@memberjunction/sqlserver-dataprovider": "^0.9.199",
|
|
27
|
+
"env-var": "^7.4.1",
|
|
28
|
+
"fs-extra": "^11.1.1",
|
|
29
|
+
"glob": "^10.3.10",
|
|
30
|
+
"typeorm": "^0.3.20"
|
|
31
|
+
}
|
|
32
32
|
}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { EntityInfo } from '@memberjunction/core';
|
|
2
|
-
export declare function generateGraphQLClientCode(entities: EntityInfo[], directory: string): boolean;
|
|
3
|
-
export declare function generateClientGraphQLFragmentString(entity: EntityInfo): string;
|
|
4
|
-
export declare function generateClientGraphQLDocumentString(entity: EntityInfo): string;
|
|
@@ -1,161 +0,0 @@
|
|
|
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.generateClientGraphQLDocumentString = exports.generateClientGraphQLFragmentString = exports.generateGraphQLClientCode = void 0;
|
|
7
|
-
const fs_1 = __importDefault(require("fs"));
|
|
8
|
-
const path_1 = __importDefault(require("path"));
|
|
9
|
-
function generateGraphQLClientCode(entities, directory) {
|
|
10
|
-
let graphQLOutput = '';
|
|
11
|
-
try {
|
|
12
|
-
for (let i = 0; i < entities.length; ++i) {
|
|
13
|
-
const entity = entities[i];
|
|
14
|
-
if (entity._hasIdField && entity.IncludeInAPI) {
|
|
15
|
-
graphQLOutput += generateClientGraphQLFragmentString(entity) + '\n\n';
|
|
16
|
-
graphQLOutput += generateClientGraphQLDocumentString(entity) + '\n\n';
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
fs_1.default.writeFileSync(path_1.default.join(directory, 'generated.graphql'), graphQLOutput);
|
|
20
|
-
return true;
|
|
21
|
-
}
|
|
22
|
-
catch (err) {
|
|
23
|
-
console.error(err);
|
|
24
|
-
return false;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
exports.generateGraphQLClientCode = generateGraphQLClientCode;
|
|
28
|
-
function generateClientGraphQLFragmentString(entity) {
|
|
29
|
-
let sOutput = '';
|
|
30
|
-
try {
|
|
31
|
-
sOutput = internalGenerateFragment(entity, '', true);
|
|
32
|
-
}
|
|
33
|
-
catch (err) {
|
|
34
|
-
console.error(err);
|
|
35
|
-
}
|
|
36
|
-
finally {
|
|
37
|
-
return sOutput;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
exports.generateClientGraphQLFragmentString = generateClientGraphQLFragmentString;
|
|
41
|
-
function internalGenerateFragment(entity, prefix, includeIdField) {
|
|
42
|
-
let sOutput = '';
|
|
43
|
-
try {
|
|
44
|
-
const fields = entity.Fields;
|
|
45
|
-
sOutput = generateFragmentHeader(prefix, entity);
|
|
46
|
-
// now generate the fields by looping through the fields collection from the database
|
|
47
|
-
for (let j = 0; j < fields.length; ++j) {
|
|
48
|
-
const f = fields[j];
|
|
49
|
-
if (f.Name.trim().toUpperCase() !== 'ID' || (f.Name.trim().toUpperCase() === 'ID' && includeIdField)) {
|
|
50
|
-
sOutput += generateFragmentField(f.Name);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
// This doesn't do anything yet, but keeping it in case we need to add relationship info to the fragments in the future
|
|
54
|
-
// for (let j:number = 0; j < entity.RelatedEntities.length; ++j) {
|
|
55
|
-
// const r: EntityRelationship = entity.RelatedEntities[j];
|
|
56
|
-
// // only include SCALARS in fragments so commenting this out.... sOutput += generateFragmentRelatedEntity(r.RelatedEntity)
|
|
57
|
-
// }
|
|
58
|
-
// finally, close it up with the footer
|
|
59
|
-
sOutput += generateFragmentFooter();
|
|
60
|
-
}
|
|
61
|
-
catch (err) {
|
|
62
|
-
console.error(err);
|
|
63
|
-
}
|
|
64
|
-
finally {
|
|
65
|
-
return sOutput;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
function generateFragmentHeader(prefix, entity) {
|
|
69
|
-
return `fragment ${prefix}${entity.ClassName}Scalars on ${entity.ClassName} {`;
|
|
70
|
-
}
|
|
71
|
-
function generateFragmentField(fieldName) {
|
|
72
|
-
return `\n ${fieldName}`;
|
|
73
|
-
}
|
|
74
|
-
// not needed now as we're only generating scalars for the GraphQL fragments
|
|
75
|
-
// function generateFragmentRelatedEntity(entityName: string): string {
|
|
76
|
-
// return `\n ${entityName}`;
|
|
77
|
-
// }
|
|
78
|
-
function generateFragmentFooter() {
|
|
79
|
-
return `
|
|
80
|
-
}`;
|
|
81
|
-
}
|
|
82
|
-
function generateClientGraphQLDocumentString(entity) {
|
|
83
|
-
let sOutput = '';
|
|
84
|
-
let relatedEntities = '';
|
|
85
|
-
let relatedEntitiesToPackWithAll = '';
|
|
86
|
-
try {
|
|
87
|
-
//////////////// BUILD UP RELATED ENTITIES STRING ///////////////////////
|
|
88
|
-
for (let j = 0; j < entity.RelatedEntities.length; ++j) {
|
|
89
|
-
const r = entity.RelatedEntities[j];
|
|
90
|
-
relatedEntities += `
|
|
91
|
-
${r.RelatedEntityCodeName} {
|
|
92
|
-
...${r.RelatedEntityBaseTableCodeName}Scalars
|
|
93
|
-
}`;
|
|
94
|
-
if (r.IncludeInParentAllQuery) {
|
|
95
|
-
relatedEntitiesToPackWithAll += `
|
|
96
|
-
${r.RelatedEntityCodeName} {
|
|
97
|
-
...${r.RelatedEntityBaseTableCodeName}Scalars
|
|
98
|
-
}`;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
///////////// All Entities have a Single Query //////////////////////////
|
|
102
|
-
sOutput += `
|
|
103
|
-
query Single${entity.BaseTableCodeName}($ID: Int!) {
|
|
104
|
-
${entity.BaseTableCodeName}(ID: $ID) {
|
|
105
|
-
...${entity.BaseTableCodeName}Scalars
|
|
106
|
-
}
|
|
107
|
-
}`;
|
|
108
|
-
///////////// All Entities have a Single FULL Query that includes Related Entities //////////////////////////
|
|
109
|
-
sOutput += `
|
|
110
|
-
query Single${entity.BaseTableCodeName}Full($ID: Int!) {
|
|
111
|
-
${entity.BaseTableCodeName}(ID: $ID) {
|
|
112
|
-
...${entity.BaseTableCodeName}Scalars${relatedEntities}
|
|
113
|
-
}
|
|
114
|
-
}`;
|
|
115
|
-
///////////// Some Entities have an AllRows query ///////////////////////
|
|
116
|
-
if (entity.AllowAllRowsAPI) {
|
|
117
|
-
sOutput += `
|
|
118
|
-
query All${entity.CodeName} {
|
|
119
|
-
All${entity.CodeName} {
|
|
120
|
-
...${entity.BaseTableCodeName}Scalars${relatedEntitiesToPackWithAll}
|
|
121
|
-
}
|
|
122
|
-
}`;
|
|
123
|
-
}
|
|
124
|
-
///////////// Some Entities have a Create Mutation //////////////////////////
|
|
125
|
-
if (entity.AllowCreateAPI) {
|
|
126
|
-
sOutput += `
|
|
127
|
-
mutation Create${entity.ClassName}($input: Create${entity.ClassName}Input!) {
|
|
128
|
-
Create${entity.ClassName}(input: $input) {
|
|
129
|
-
...${entity.ClassName}Scalars
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
`;
|
|
133
|
-
}
|
|
134
|
-
///////////// Some Entities have an Update Mutation //////////////////////////
|
|
135
|
-
if (entity.AllowUpdateAPI) {
|
|
136
|
-
sOutput += `
|
|
137
|
-
mutation Update${entity.ClassName}($input: Update${entity.ClassName}Input!) {
|
|
138
|
-
Update${entity.ClassName}(input: $input) {
|
|
139
|
-
...${entity.ClassName}Scalars
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
`;
|
|
143
|
-
}
|
|
144
|
-
///////////// Some Entities have a Delete Mutation //////////////////////////
|
|
145
|
-
if (entity.AllowDeleteAPI) {
|
|
146
|
-
sOutput += `
|
|
147
|
-
mutation Delete${entity.ClassName}($ID: Int!) {
|
|
148
|
-
Delete${entity.ClassName}(ID: $ID)
|
|
149
|
-
}
|
|
150
|
-
`;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
catch (err) {
|
|
154
|
-
console.error(err);
|
|
155
|
-
}
|
|
156
|
-
finally {
|
|
157
|
-
return sOutput;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
exports.generateClientGraphQLDocumentString = generateClientGraphQLDocumentString;
|
|
161
|
-
//# sourceMappingURL=graphql_client_codegen.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graphql_client_codegen.js","sourceRoot":"","sources":["../src/graphql_client_codegen.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { EntityInfo } from '@memberjunction/core';
|
|
2
|
-
export declare function generateReactCode(entities: EntityInfo[], directory: string): boolean;
|
|
3
|
-
export declare function generateSingleEntityReactFile(entity: EntityInfo): string;
|
|
4
|
-
export declare function generateReactEntityPagesFile(entities: EntityInfo[]): string;
|
|
@@ -1,147 +0,0 @@
|
|
|
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.generateReactEntityPagesFile = exports.generateSingleEntityReactFile = exports.generateReactCode = void 0;
|
|
7
|
-
const logging_1 = require("./logging");
|
|
8
|
-
const fs_1 = __importDefault(require("fs"));
|
|
9
|
-
const path_1 = __importDefault(require("path"));
|
|
10
|
-
function generateReactCode(entities, directory) {
|
|
11
|
-
try {
|
|
12
|
-
for (let i = 0; i < entities.length; ++i) {
|
|
13
|
-
const entity = entities[i];
|
|
14
|
-
if (entity._hasIdField && entity.IncludeInAPI)
|
|
15
|
-
fs_1.default.writeFileSync(path_1.default.join(directory, `${entity.ClassName}Page.tsx`), generateSingleEntityReactFile(entity));
|
|
16
|
-
}
|
|
17
|
-
const entityPagesOutput = generateReactEntityPagesFile(entities);
|
|
18
|
-
fs_1.default.writeFileSync(path_1.default.join(directory, 'EntityPages.ts'), entityPagesOutput);
|
|
19
|
-
return true;
|
|
20
|
-
}
|
|
21
|
-
catch (err) {
|
|
22
|
-
(0, logging_1.logError)(err);
|
|
23
|
-
return false;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
exports.generateReactCode = generateReactCode;
|
|
27
|
-
function generateSingleEntityReactFile(entity) {
|
|
28
|
-
let lCaseClassName = entity.ClassName.toLowerCase();
|
|
29
|
-
let sOutput = `import { useSingle${entity.ClassName}Query } from '../api';
|
|
30
|
-
import { SingleEntityPage } from '../components/organisms/SingleEntityPage';
|
|
31
|
-
import { DateTime } from 'luxon';
|
|
32
|
-
import { formatCurrency } from '../system/util';
|
|
33
|
-
import { ExternalUrl, Field, useSingleEntity, Email, EntityLink, EntityFieldDisplayName, BodyText } from '../components';
|
|
34
|
-
import { ${entity.ClassName} } from '../api';
|
|
35
|
-
|
|
36
|
-
export const ${entity.ClassName}Page = ({ RecordID }: { RecordID: number }) => {
|
|
37
|
-
return (
|
|
38
|
-
<SingleEntityPage
|
|
39
|
-
RecordID={RecordID}
|
|
40
|
-
EntityName="${entity.Name}"
|
|
41
|
-
queryHook={useSingle${entity.ClassName}Query}
|
|
42
|
-
Details={<${entity.ClassName}Details />}
|
|
43
|
-
/>
|
|
44
|
-
);
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
export const ${entity.ClassName}Details = () => {
|
|
48
|
-
const [${lCaseClassName}] = useSingleEntity<${entity.ClassName}>();
|
|
49
|
-
return (
|
|
50
|
-
<div>
|
|
51
|
-
${generateFormFields(entity)}
|
|
52
|
-
</div>
|
|
53
|
-
);
|
|
54
|
-
};
|
|
55
|
-
`;
|
|
56
|
-
return sOutput;
|
|
57
|
-
}
|
|
58
|
-
exports.generateSingleEntityReactFile = generateSingleEntityReactFile;
|
|
59
|
-
function generateFormFields(entity) {
|
|
60
|
-
let sOutput = '';
|
|
61
|
-
try {
|
|
62
|
-
for (let i = 0; i < entity.Fields.length; ++i) {
|
|
63
|
-
sOutput += (sOutput.length == 0 ? '' : '\n') +
|
|
64
|
-
generateSingleFieldOutput(entity, entity.Fields[i]);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
catch (err) {
|
|
68
|
-
console.error(err);
|
|
69
|
-
}
|
|
70
|
-
finally {
|
|
71
|
-
return sOutput;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
function generateSingleFieldOutput(entity, field) {
|
|
75
|
-
const type = field.Type.toLowerCase().trim();
|
|
76
|
-
const lCaseClassName = entity.ClassName.toLowerCase();
|
|
77
|
-
const label = `label={<EntityFieldDisplayName Entity="${entity.Name}" EntityField="${field.Name}" />}`;
|
|
78
|
-
let value = '';
|
|
79
|
-
if ((type === 'datetime' || field.Type === 'datetimeoffset'))
|
|
80
|
-
value = `${lCaseClassName}?.${field.Name} &&
|
|
81
|
-
DateTime.fromMillis(${lCaseClassName}.${field.Name}).toLocaleString(DateTime.DATETIME_SHORT)`;
|
|
82
|
-
else if (field.ExtendedType !== null && field.ExtendedType.toLowerCase().trim() == 'url') {
|
|
83
|
-
value = `<ExternalUrl>{${lCaseClassName}?.${field.Name}}</ExternalUrl>`;
|
|
84
|
-
}
|
|
85
|
-
else if (field.ExtendedType !== null && field.ExtendedType.toLowerCase().trim() == 'email') {
|
|
86
|
-
value = `<Email>{${lCaseClassName}?.${field.Name}}</Email>`;
|
|
87
|
-
}
|
|
88
|
-
else if (field.RelatedEntityID != null && field.RelatedEntityFieldName != null) {
|
|
89
|
-
value = `<EntityLink Entity="${entity.Name}" EntityField="${field.Name}">{${lCaseClassName}?.${field.Name}}</EntityLink>`;
|
|
90
|
-
}
|
|
91
|
-
else if (((type === 'nvarchar' || type === 'varchar') && field.Length == -1) ||
|
|
92
|
-
(type === 'text' || type === 'ntext')) {
|
|
93
|
-
// nvarchar max
|
|
94
|
-
value = `<BodyText>{${lCaseClassName}?.${field.Name}}</BodyText>`;
|
|
95
|
-
}
|
|
96
|
-
else if (type === 'money') {
|
|
97
|
-
value = `${lCaseClassName}?.${field.Name} !== undefined
|
|
98
|
-
? formatCurrency(Math.floor(${lCaseClassName}.${field.Name}), {
|
|
99
|
-
hideZeroCents: true,
|
|
100
|
-
}) : undefined`;
|
|
101
|
-
}
|
|
102
|
-
else
|
|
103
|
-
value = `${lCaseClassName}?.${field.Name}`;
|
|
104
|
-
return ` <Field ${label} value={${value}} />`;
|
|
105
|
-
}
|
|
106
|
-
function generateReactEntityPagesFile(entities) {
|
|
107
|
-
const importText = generateReactEntityPageImportText(entities);
|
|
108
|
-
const mapText = generateReactEntityPageMapText(entities);
|
|
109
|
-
return `import { FC } from 'react';
|
|
110
|
-
${importText}
|
|
111
|
-
export const EntityPages: Record<string, FC<{ RecordID: number }>> = {
|
|
112
|
-
${mapText}
|
|
113
|
-
};
|
|
114
|
-
`;
|
|
115
|
-
}
|
|
116
|
-
exports.generateReactEntityPagesFile = generateReactEntityPagesFile;
|
|
117
|
-
function generateReactEntityPageImportText(entities) {
|
|
118
|
-
let sOutput = '';
|
|
119
|
-
try {
|
|
120
|
-
for (let i = 0; i < entities.length; ++i) {
|
|
121
|
-
if (entities[i].IncludeInAPI && entities[i]._hasIdField)
|
|
122
|
-
sOutput += `import { ${entities[i].ClassName}Page } from './${entities[i].ClassName}Page';\n`;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
catch (err) {
|
|
126
|
-
console.error(err);
|
|
127
|
-
}
|
|
128
|
-
finally {
|
|
129
|
-
return sOutput;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
function generateReactEntityPageMapText(entities) {
|
|
133
|
-
let sOutput = '';
|
|
134
|
-
try {
|
|
135
|
-
for (let i = 0; i < entities.length; ++i) {
|
|
136
|
-
if (entities[i].IncludeInAPI && entities[i]._hasIdField)
|
|
137
|
-
sOutput += (sOutput.length == 0 ? '' : ',\n') + ` ${entities[i].CodeName}: ${entities[i].ClassName}Page`;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
catch (err) {
|
|
141
|
-
console.error(err);
|
|
142
|
-
}
|
|
143
|
-
finally {
|
|
144
|
-
return sOutput;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
//# sourceMappingURL=react_client_codegen.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"react_client_codegen.js","sourceRoot":"","sources":["../src/react_client_codegen.ts"],"names":[],"mappings":"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"}
|