@cedarjs/internal 0.6.1-next.0 → 0.7.0
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/dist/ast.d.ts.map +1 -1
- package/dist/ast.js +28 -64
- package/dist/build/api.js +22 -56
- package/dist/cjs/ast.d.ts +26 -0
- package/dist/cjs/ast.d.ts.map +1 -0
- package/dist/cjs/ast.js +201 -0
- package/dist/cjs/build/api.d.ts +6 -0
- package/dist/cjs/build/api.d.ts.map +1 -0
- package/dist/cjs/build/api.js +109 -0
- package/dist/cjs/cliLogger.d.ts +11 -0
- package/dist/cjs/cliLogger.d.ts.map +1 -0
- package/dist/cjs/cliLogger.js +36 -0
- package/dist/cjs/dev.d.ts +2 -0
- package/dist/cjs/dev.d.ts.map +1 -0
- package/dist/cjs/dev.js +41 -0
- package/dist/cjs/files.d.ts +56 -0
- package/dist/cjs/files.d.ts.map +1 -0
- package/dist/cjs/files.js +230 -0
- package/dist/cjs/generate/clientPreset.d.ts +17 -0
- package/dist/cjs/generate/clientPreset.d.ts.map +1 -0
- package/dist/cjs/generate/clientPreset.js +85 -0
- package/dist/cjs/generate/generate.d.ts +10 -0
- package/dist/cjs/generate/generate.d.ts.map +1 -0
- package/dist/cjs/generate/generate.js +91 -0
- package/dist/cjs/generate/graphqlCodeGen.d.ts +16 -0
- package/dist/cjs/generate/graphqlCodeGen.d.ts.map +1 -0
- package/dist/cjs/generate/graphqlCodeGen.js +346 -0
- package/dist/cjs/generate/graphqlSchema.d.ts +8 -0
- package/dist/cjs/generate/graphqlSchema.d.ts.map +1 -0
- package/dist/cjs/generate/graphqlSchema.js +154 -0
- package/dist/cjs/generate/plugins/rw-typescript-resolvers/index.d.ts +7 -0
- package/dist/cjs/generate/plugins/rw-typescript-resolvers/index.d.ts.map +1 -0
- package/dist/cjs/generate/plugins/rw-typescript-resolvers/index.js +65 -0
- package/dist/cjs/generate/plugins/rw-typescript-resolvers/visitor.d.ts +9 -0
- package/dist/cjs/generate/plugins/rw-typescript-resolvers/visitor.d.ts.map +1 -0
- package/dist/cjs/generate/plugins/rw-typescript-resolvers/visitor.js +84 -0
- package/dist/cjs/generate/possibleTypes.d.ts +36 -0
- package/dist/cjs/generate/possibleTypes.d.ts.map +1 -0
- package/dist/cjs/generate/possibleTypes.js +106 -0
- package/dist/cjs/generate/templates/all-currentUser.d.ts.template +30 -0
- package/dist/cjs/generate/templates/api-globImports.d.ts.template +9 -0
- package/dist/cjs/generate/templates/api-globalContext.d.ts.template +7 -0
- package/dist/cjs/generate/templates/api-scenarios.d.ts.template +10 -0
- package/dist/cjs/generate/templates/api-test-globals.d.ts.template +5 -0
- package/dist/cjs/generate/templates/mirror-cell.d.ts.template +13 -0
- package/dist/cjs/generate/templates/mirror-directoryNamedModule.d.ts.template +5 -0
- package/dist/cjs/generate/templates/web-routerRoutes.d.ts.template +20 -0
- package/dist/cjs/generate/templates/web-routesPages.d.ts.template +13 -0
- package/dist/cjs/generate/templates/web-test-globals.d.ts.template +7 -0
- package/dist/cjs/generate/templates.d.ts +6 -0
- package/dist/cjs/generate/templates.d.ts.map +1 -0
- package/dist/cjs/generate/templates.js +68 -0
- package/dist/cjs/generate/trustedDocuments.d.ts +3 -0
- package/dist/cjs/generate/trustedDocuments.d.ts.map +1 -0
- package/dist/cjs/generate/trustedDocuments.js +95 -0
- package/dist/cjs/generate/typeDefinitions.d.ts +30 -0
- package/dist/cjs/generate/typeDefinitions.d.ts.map +1 -0
- package/dist/cjs/generate/typeDefinitions.js +369 -0
- package/dist/cjs/generate/types.d.ts +6 -0
- package/dist/cjs/generate/types.d.ts.map +1 -0
- package/dist/cjs/generate/types.js +16 -0
- package/dist/cjs/generate/watch.d.ts +3 -0
- package/dist/cjs/generate/watch.d.ts.map +1 -0
- package/dist/cjs/generate/watch.js +124 -0
- package/dist/cjs/gql.d.ts +14 -0
- package/dist/cjs/gql.d.ts.map +1 -0
- package/dist/cjs/gql.js +108 -0
- package/dist/cjs/index.d.ts +11 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +49 -0
- package/dist/cjs/jsx.d.ts +16 -0
- package/dist/cjs/jsx.d.ts.map +1 -0
- package/dist/cjs/jsx.js +101 -0
- package/dist/cjs/jsxAttributeValue.d.ts +2 -0
- package/dist/cjs/jsxAttributeValue.d.ts.map +1 -0
- package/dist/cjs/jsxAttributeValue.js +129 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/project.d.ts +8 -0
- package/dist/cjs/project.d.ts.map +1 -0
- package/dist/cjs/project.js +82 -0
- package/dist/cjs/routes.d.ts +42 -0
- package/dist/cjs/routes.d.ts.map +1 -0
- package/dist/cjs/routes.js +111 -0
- package/dist/cjs/ts2js.d.ts +40 -0
- package/dist/cjs/ts2js.d.ts.map +1 -0
- package/dist/cjs/ts2js.js +159 -0
- package/dist/cjs/validateSchema.d.ts +14 -0
- package/dist/cjs/validateSchema.d.ts.map +1 -0
- package/dist/cjs/validateSchema.js +194 -0
- package/dist/cliLogger.js +4 -28
- package/dist/dev.js +4 -38
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +46 -95
- package/dist/generate/clientPreset.js +17 -39
- package/dist/generate/generate.js +14 -39
- package/dist/generate/graphqlCodeGen.d.ts.map +1 -1
- package/dist/generate/graphqlCodeGen.js +49 -79
- package/dist/generate/graphqlSchema.d.ts.map +1 -1
- package/dist/generate/graphqlSchema.js +26 -59
- package/dist/generate/plugins/rw-typescript-resolvers/index.d.ts +4 -3
- package/dist/generate/plugins/rw-typescript-resolvers/index.d.ts.map +1 -1
- package/dist/generate/plugins/rw-typescript-resolvers/index.js +11 -35
- package/dist/generate/plugins/rw-typescript-resolvers/visitor.js +10 -31
- package/dist/generate/possibleTypes.js +19 -53
- package/dist/generate/templates.d.ts.map +1 -1
- package/dist/generate/templates.js +14 -42
- package/dist/generate/trustedDocuments.js +13 -48
- package/dist/generate/typeDefinitions.d.ts +2 -2
- package/dist/generate/typeDefinitions.d.ts.map +1 -1
- package/dist/generate/typeDefinitions.js +83 -123
- package/dist/generate/types.js +0 -16
- package/dist/generate/watch.js +55 -63
- package/dist/gql.js +16 -42
- package/dist/index.d.ts +8 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -47
- package/dist/jsx.d.ts.map +1 -1
- package/dist/jsx.js +7 -40
- package/dist/jsxAttributeValue.js +2 -26
- package/dist/project.js +21 -58
- package/dist/routes.d.ts +1 -1
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +12 -48
- package/dist/ts2js.d.ts +1 -1
- package/dist/ts2js.js +33 -73
- package/dist/validateSchema.js +19 -47
- package/package.json +91 -31
|
@@ -1,63 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var typeDefinitions_exports = {};
|
|
30
|
-
__export(typeDefinitions_exports, {
|
|
31
|
-
generateMirrorCell: () => generateMirrorCell,
|
|
32
|
-
generateMirrorCells: () => generateMirrorCells,
|
|
33
|
-
generateMirrorDirectoryNamedModule: () => generateMirrorDirectoryNamedModule,
|
|
34
|
-
generateMirrorDirectoryNamedModules: () => generateMirrorDirectoryNamedModules,
|
|
35
|
-
generateTypeDefCurrentUser: () => generateTypeDefCurrentUser,
|
|
36
|
-
generateTypeDefGlobImports: () => generateTypeDefGlobImports,
|
|
37
|
-
generateTypeDefGlobalContext: () => generateTypeDefGlobalContext,
|
|
38
|
-
generateTypeDefRouterPages: () => generateTypeDefRouterPages,
|
|
39
|
-
generateTypeDefRouterRoutes: () => generateTypeDefRouterRoutes,
|
|
40
|
-
generateTypeDefScenarios: () => generateTypeDefScenarios,
|
|
41
|
-
generateTypeDefTestMocks: () => generateTypeDefTestMocks,
|
|
42
|
-
generateTypeDefs: () => generateTypeDefs,
|
|
43
|
-
generateViteClientTypesDirective: () => generateViteClientTypesDirective,
|
|
44
|
-
mirrorPathForCell: () => mirrorPathForCell,
|
|
45
|
-
mirrorPathForDirectoryNamedModules: () => mirrorPathForDirectoryNamedModules
|
|
46
|
-
});
|
|
47
|
-
module.exports = __toCommonJS(typeDefinitions_exports);
|
|
48
|
-
var import_fs = __toESM(require("fs"));
|
|
49
|
-
var import_path = __toESM(require("path"));
|
|
50
|
-
var import_source_map = require("source-map");
|
|
51
|
-
var import_project_config = require("@cedarjs/project-config");
|
|
52
|
-
var import_ast = require("../ast");
|
|
53
|
-
var import_files = require("../files");
|
|
54
|
-
var import_gql = require("../gql");
|
|
55
|
-
var import_jsx = require("../jsx");
|
|
56
|
-
var import_graphqlCodeGen = require("./graphqlCodeGen");
|
|
57
|
-
var import_templates = require("./templates");
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { SourceMapGenerator } from "source-map";
|
|
4
|
+
import { getPaths, processPagesDir } from "@cedarjs/project-config";
|
|
5
|
+
import {
|
|
6
|
+
getCellGqlQuery,
|
|
7
|
+
fileToAst,
|
|
8
|
+
getDefaultExportLocation,
|
|
9
|
+
getNamedExports
|
|
10
|
+
} from "../ast.js";
|
|
11
|
+
import { findCells, findDirectoryNamedModules } from "../files.js";
|
|
12
|
+
import { parseGqlQueryToAst } from "../gql.js";
|
|
13
|
+
import { getJsxElements } from "../jsx.js";
|
|
14
|
+
import {
|
|
15
|
+
generateTypeDefGraphQLApi,
|
|
16
|
+
generateTypeDefGraphQLWeb
|
|
17
|
+
} from "./graphqlCodeGen.js";
|
|
18
|
+
import { writeTemplate } from "./templates.js";
|
|
58
19
|
const generateTypeDefs = async () => {
|
|
59
|
-
const { typeDefFiles: gqlApiTypeDefFiles, errors: apiErrors } = await
|
|
60
|
-
const { typeDefFiles: gqlWebTypeDefFiles, errors: webErrors } = await
|
|
20
|
+
const { typeDefFiles: gqlApiTypeDefFiles, errors: apiErrors } = await generateTypeDefGraphQLApi();
|
|
21
|
+
const { typeDefFiles: gqlWebTypeDefFiles, errors: webErrors } = await generateTypeDefGraphQLWeb();
|
|
61
22
|
return {
|
|
62
23
|
typeDefFiles: [
|
|
63
24
|
...generateMirrorDirectoryNamedModules(),
|
|
@@ -78,38 +39,38 @@ const generateTypeDefs = async () => {
|
|
|
78
39
|
};
|
|
79
40
|
};
|
|
80
41
|
const generateMirrorDirectoryNamedModules = () => {
|
|
81
|
-
const rwjsPaths =
|
|
82
|
-
return
|
|
42
|
+
const rwjsPaths = getPaths();
|
|
43
|
+
return findDirectoryNamedModules().map(
|
|
83
44
|
(p) => generateMirrorDirectoryNamedModule(p, rwjsPaths)
|
|
84
45
|
);
|
|
85
46
|
};
|
|
86
|
-
const mirrorPathForDirectoryNamedModules = (p, rwjsPaths =
|
|
47
|
+
const mirrorPathForDirectoryNamedModules = (p, rwjsPaths = getPaths()) => {
|
|
87
48
|
return [
|
|
88
|
-
|
|
49
|
+
path.join(
|
|
89
50
|
rwjsPaths.generated.types.mirror,
|
|
90
|
-
|
|
51
|
+
path.relative(rwjsPaths.base, path.dirname(p))
|
|
91
52
|
),
|
|
92
53
|
"index.d.ts"
|
|
93
54
|
];
|
|
94
55
|
};
|
|
95
|
-
const generateMirrorDirectoryNamedModule = (p, rwjsPaths =
|
|
56
|
+
const generateMirrorDirectoryNamedModule = (p, rwjsPaths = getPaths()) => {
|
|
96
57
|
const [mirrorDir, typeDef] = mirrorPathForDirectoryNamedModules(p, rwjsPaths);
|
|
97
|
-
|
|
98
|
-
const typeDefPath =
|
|
99
|
-
const { name } =
|
|
100
|
-
|
|
58
|
+
fs.mkdirSync(mirrorDir, { recursive: true });
|
|
59
|
+
const typeDefPath = path.join(mirrorDir, typeDef);
|
|
60
|
+
const { name } = path.parse(p);
|
|
61
|
+
writeTemplate(
|
|
101
62
|
"templates/mirror-directoryNamedModule.d.ts.template",
|
|
102
63
|
typeDefPath,
|
|
103
64
|
{ name }
|
|
104
65
|
);
|
|
105
66
|
if (p.startsWith(rwjsPaths.web.src)) {
|
|
106
67
|
try {
|
|
107
|
-
const fileContents =
|
|
108
|
-
const defaultExportLocation =
|
|
68
|
+
const fileContents = fileToAst(p);
|
|
69
|
+
const defaultExportLocation = getDefaultExportLocation(fileContents) ?? {
|
|
109
70
|
line: 1,
|
|
110
71
|
column: 0
|
|
111
72
|
};
|
|
112
|
-
const map = new
|
|
73
|
+
const map = new SourceMapGenerator({
|
|
113
74
|
file: "index.d.ts"
|
|
114
75
|
});
|
|
115
76
|
map.addMapping({
|
|
@@ -117,10 +78,10 @@ const generateMirrorDirectoryNamedModule = (p, rwjsPaths = (0, import_project_co
|
|
|
117
78
|
line: 4,
|
|
118
79
|
column: 0
|
|
119
80
|
},
|
|
120
|
-
source:
|
|
81
|
+
source: path.relative(path.dirname(typeDefPath), p),
|
|
121
82
|
original: defaultExportLocation
|
|
122
83
|
});
|
|
123
|
-
|
|
84
|
+
fs.writeFileSync(
|
|
124
85
|
`${typeDefPath}.map`,
|
|
125
86
|
JSON.stringify(map.toJSON(), void 0, 2)
|
|
126
87
|
);
|
|
@@ -135,47 +96,47 @@ const generateMirrorDirectoryNamedModule = (p, rwjsPaths = (0, import_project_co
|
|
|
135
96
|
return typeDefPath;
|
|
136
97
|
};
|
|
137
98
|
const generateMirrorCells = () => {
|
|
138
|
-
const rwjsPaths =
|
|
139
|
-
return
|
|
99
|
+
const rwjsPaths = getPaths();
|
|
100
|
+
return findCells().map((p) => generateMirrorCell(p, rwjsPaths));
|
|
140
101
|
};
|
|
141
|
-
const mirrorPathForCell = (p, rwjsPaths =
|
|
142
|
-
const mirrorDir =
|
|
102
|
+
const mirrorPathForCell = (p, rwjsPaths = getPaths()) => {
|
|
103
|
+
const mirrorDir = path.join(
|
|
143
104
|
rwjsPaths.generated.types.mirror,
|
|
144
|
-
|
|
105
|
+
path.relative(rwjsPaths.base, path.dirname(p))
|
|
145
106
|
);
|
|
146
|
-
|
|
107
|
+
fs.mkdirSync(mirrorDir, { recursive: true });
|
|
147
108
|
return [mirrorDir, "index.d.ts"];
|
|
148
109
|
};
|
|
149
|
-
const generateMirrorCell = (p, rwjsPaths =
|
|
110
|
+
const generateMirrorCell = (p, rwjsPaths = getPaths()) => {
|
|
150
111
|
const [mirrorDir, typeDef] = mirrorPathForCell(p, rwjsPaths);
|
|
151
|
-
|
|
152
|
-
const typeDefPath =
|
|
153
|
-
const { name } =
|
|
154
|
-
const fileContents =
|
|
155
|
-
const cellQuery =
|
|
112
|
+
fs.mkdirSync(mirrorDir, { recursive: true });
|
|
113
|
+
const typeDefPath = path.join(mirrorDir, typeDef);
|
|
114
|
+
const { name } = path.parse(p);
|
|
115
|
+
const fileContents = fileToAst(p);
|
|
116
|
+
const cellQuery = getCellGqlQuery(fileContents);
|
|
156
117
|
if (cellQuery) {
|
|
157
|
-
const gqlDoc =
|
|
158
|
-
|
|
118
|
+
const gqlDoc = parseGqlQueryToAst(cellQuery)[0];
|
|
119
|
+
writeTemplate("templates/mirror-cell.d.ts.template", typeDefPath, {
|
|
159
120
|
name,
|
|
160
121
|
queryResultType: `${gqlDoc?.name}`,
|
|
161
122
|
queryVariablesType: `${gqlDoc?.name}Variables`
|
|
162
123
|
});
|
|
163
124
|
} else {
|
|
164
|
-
|
|
125
|
+
writeTemplate("templates/mirror-cell.d.ts.template", typeDefPath, {
|
|
165
126
|
name,
|
|
166
127
|
queryResultType: "any",
|
|
167
128
|
queryVariablesType: "any"
|
|
168
129
|
});
|
|
169
130
|
}
|
|
170
131
|
try {
|
|
171
|
-
const exportedComponents =
|
|
132
|
+
const exportedComponents = getNamedExports(fileContents);
|
|
172
133
|
const successComponent = exportedComponents.find(
|
|
173
134
|
(x) => x.name === "Success"
|
|
174
135
|
);
|
|
175
136
|
if (successComponent === void 0) {
|
|
176
137
|
throw new Error("No Success component found");
|
|
177
138
|
}
|
|
178
|
-
const map = new
|
|
139
|
+
const map = new SourceMapGenerator({
|
|
179
140
|
file: "index.d.ts"
|
|
180
141
|
});
|
|
181
142
|
map.addMapping({
|
|
@@ -183,10 +144,10 @@ const generateMirrorCell = (p, rwjsPaths = (0, import_project_config.getPaths)()
|
|
|
183
144
|
line: 12,
|
|
184
145
|
column: 0
|
|
185
146
|
},
|
|
186
|
-
source:
|
|
147
|
+
source: path.relative(path.dirname(typeDefPath), p),
|
|
187
148
|
original: successComponent.location
|
|
188
149
|
});
|
|
189
|
-
|
|
150
|
+
fs.writeFileSync(
|
|
190
151
|
`${typeDefPath}.map`,
|
|
191
152
|
JSON.stringify(map.toJSON(), void 0, 2)
|
|
192
153
|
);
|
|
@@ -197,19 +158,19 @@ const generateMirrorCell = (p, rwjsPaths = (0, import_project_config.getPaths)()
|
|
|
197
158
|
return typeDefPath;
|
|
198
159
|
};
|
|
199
160
|
const writeTypeDefIncludeFile = (template, values = {}) => {
|
|
200
|
-
const rwjsPaths =
|
|
201
|
-
const typeDefPath =
|
|
161
|
+
const rwjsPaths = getPaths();
|
|
162
|
+
const typeDefPath = path.join(
|
|
202
163
|
rwjsPaths.generated.types.includes,
|
|
203
164
|
template.replace(".template", "")
|
|
204
165
|
);
|
|
205
|
-
const templateFilename =
|
|
206
|
-
|
|
166
|
+
const templateFilename = path.join("templates", template);
|
|
167
|
+
writeTemplate(templateFilename, typeDefPath, values);
|
|
207
168
|
return [typeDefPath];
|
|
208
169
|
};
|
|
209
170
|
const generateTypeDefRouterRoutes = () => {
|
|
210
|
-
const ast =
|
|
171
|
+
const ast = fileToAst(getPaths().web.routes);
|
|
211
172
|
let hasRootRoute = false;
|
|
212
|
-
const routes =
|
|
173
|
+
const routes = getJsxElements(ast, "Route").filter((x) => {
|
|
213
174
|
const isValidRoute = typeof x.props?.path !== "undefined" && typeof x.props?.name !== "undefined";
|
|
214
175
|
if (isValidRoute && x.props.path === "/") {
|
|
215
176
|
hasRootRoute = true;
|
|
@@ -217,11 +178,11 @@ const generateTypeDefRouterRoutes = () => {
|
|
|
217
178
|
return isValidRoute;
|
|
218
179
|
});
|
|
219
180
|
try {
|
|
220
|
-
const typeDefPath =
|
|
221
|
-
|
|
181
|
+
const typeDefPath = path.join(
|
|
182
|
+
getPaths().generated.types.includes,
|
|
222
183
|
"web-routerRoutes.d.ts"
|
|
223
184
|
);
|
|
224
|
-
const map = new
|
|
185
|
+
const map = new SourceMapGenerator({
|
|
225
186
|
file: "web-routerRoutes.d.ts"
|
|
226
187
|
});
|
|
227
188
|
const startLine = 7;
|
|
@@ -231,11 +192,11 @@ const generateTypeDefRouterRoutes = () => {
|
|
|
231
192
|
line: startLine + i,
|
|
232
193
|
column: 4
|
|
233
194
|
},
|
|
234
|
-
source:
|
|
195
|
+
source: path.relative(path.dirname(typeDefPath), getPaths().web.routes),
|
|
235
196
|
original: routes[i].location
|
|
236
197
|
});
|
|
237
198
|
}
|
|
238
|
-
|
|
199
|
+
fs.writeFileSync(
|
|
239
200
|
`${typeDefPath}.map`,
|
|
240
201
|
JSON.stringify(map.toJSON(), void 0, 2)
|
|
241
202
|
);
|
|
@@ -258,19 +219,19 @@ const generateTypeDefRouterRoutes = () => {
|
|
|
258
219
|
return writeTypeDefIncludeFile("web-routerRoutes.d.ts.template", { routes });
|
|
259
220
|
};
|
|
260
221
|
const generateTypeDefRouterPages = () => {
|
|
261
|
-
const pages =
|
|
222
|
+
const pages = processPagesDir();
|
|
262
223
|
try {
|
|
263
|
-
const typeDefPath =
|
|
264
|
-
|
|
224
|
+
const typeDefPath = path.join(
|
|
225
|
+
getPaths().generated.types.includes,
|
|
265
226
|
"web-routesPages.d.ts"
|
|
266
227
|
);
|
|
267
|
-
const map = new
|
|
228
|
+
const map = new SourceMapGenerator({
|
|
268
229
|
file: "web-routesPages.d.ts"
|
|
269
230
|
});
|
|
270
231
|
const startLine = pages.length + 5;
|
|
271
232
|
for (let i = 0; i < pages.length; i++) {
|
|
272
|
-
const fileContents =
|
|
273
|
-
const defaultExportLocation =
|
|
233
|
+
const fileContents = fileToAst(pages[i].path);
|
|
234
|
+
const defaultExportLocation = getDefaultExportLocation(fileContents) ?? {
|
|
274
235
|
line: 1,
|
|
275
236
|
column: 0
|
|
276
237
|
};
|
|
@@ -279,11 +240,11 @@ const generateTypeDefRouterPages = () => {
|
|
|
279
240
|
line: startLine + i,
|
|
280
241
|
column: 0
|
|
281
242
|
},
|
|
282
|
-
source:
|
|
243
|
+
source: path.relative(path.dirname(typeDefPath), pages[i].path),
|
|
283
244
|
original: defaultExportLocation
|
|
284
245
|
});
|
|
285
246
|
}
|
|
286
|
-
|
|
247
|
+
fs.writeFileSync(
|
|
287
248
|
`${typeDefPath}.map`,
|
|
288
249
|
JSON.stringify(map.toJSON(), void 0, 2)
|
|
289
250
|
);
|
|
@@ -315,12 +276,12 @@ const generateTypeDefGlobalContext = () => {
|
|
|
315
276
|
};
|
|
316
277
|
const generateViteClientTypesDirective = () => {
|
|
317
278
|
const viteClientDirective = `/// <reference types="vite/client" />`;
|
|
318
|
-
const redwoodProjectPaths =
|
|
319
|
-
const viteClientDirectivePath =
|
|
279
|
+
const redwoodProjectPaths = getPaths();
|
|
280
|
+
const viteClientDirectivePath = path.join(
|
|
320
281
|
redwoodProjectPaths.generated.types.includes,
|
|
321
282
|
"web-vite-client.d.ts"
|
|
322
283
|
);
|
|
323
|
-
|
|
284
|
+
fs.writeFileSync(viteClientDirectivePath, viteClientDirective);
|
|
324
285
|
return [viteClientDirectivePath];
|
|
325
286
|
};
|
|
326
287
|
function generateStubStorybookTypes() {
|
|
@@ -329,10 +290,10 @@ function generateStubStorybookTypes() {
|
|
|
329
290
|
export type StoryObj<T = any> = any
|
|
330
291
|
}
|
|
331
292
|
`;
|
|
332
|
-
const redwoodProjectPaths =
|
|
293
|
+
const redwoodProjectPaths = getPaths();
|
|
333
294
|
const packageJson = JSON.parse(
|
|
334
|
-
|
|
335
|
-
|
|
295
|
+
fs.readFileSync(
|
|
296
|
+
path.join(redwoodProjectPaths.base, "package.json"),
|
|
336
297
|
"utf-8"
|
|
337
298
|
)
|
|
338
299
|
);
|
|
@@ -342,15 +303,14 @@ function generateStubStorybookTypes() {
|
|
|
342
303
|
if (hasCliStorybookVite) {
|
|
343
304
|
return [];
|
|
344
305
|
}
|
|
345
|
-
const stubStorybookTypesFilePath =
|
|
306
|
+
const stubStorybookTypesFilePath = path.join(
|
|
346
307
|
redwoodProjectPaths.generated.types.includes,
|
|
347
308
|
"web-storybook.d.ts"
|
|
348
309
|
);
|
|
349
|
-
|
|
310
|
+
fs.writeFileSync(stubStorybookTypesFilePath, stubStorybookTypesFileContent);
|
|
350
311
|
return [stubStorybookTypesFilePath];
|
|
351
312
|
}
|
|
352
|
-
|
|
353
|
-
0 && (module.exports = {
|
|
313
|
+
export {
|
|
354
314
|
generateMirrorCell,
|
|
355
315
|
generateMirrorCells,
|
|
356
316
|
generateMirrorDirectoryNamedModule,
|
|
@@ -366,4 +326,4 @@ function generateStubStorybookTypes() {
|
|
|
366
326
|
generateViteClientTypesDirective,
|
|
367
327
|
mirrorPathForCell,
|
|
368
328
|
mirrorPathForDirectoryNamedModules
|
|
369
|
-
}
|
|
329
|
+
};
|
package/dist/generate/types.js
CHANGED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __copyProps = (to, from, except, desc) => {
|
|
7
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
-
for (let key of __getOwnPropNames(from))
|
|
9
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
-
}
|
|
12
|
-
return to;
|
|
13
|
-
};
|
|
14
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
-
var types_exports = {};
|
|
16
|
-
module.exports = __toCommonJS(types_exports);
|
package/dist/generate/watch.js
CHANGED
|
@@ -1,42 +1,34 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
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
|
-
|
|
32
|
-
var import_clientPreset = require("./clientPreset");
|
|
33
|
-
var import_generate = require("./generate");
|
|
34
|
-
var import_graphqlCodeGen = require("./graphqlCodeGen");
|
|
35
|
-
var import_graphqlSchema = require("./graphqlSchema");
|
|
36
|
-
var import_typeDefinitions = require("./typeDefinitions");
|
|
37
|
-
const ansis = require("ansis");
|
|
38
|
-
const rwjsPaths = (0, import_project_config.getPaths)();
|
|
39
|
-
const watcher = import_chokidar.default.watch("(web|api)/src/**/*.{ts,js,jsx,tsx}", {
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
import path from "path";
|
|
4
|
+
import ansis from "ansis";
|
|
5
|
+
import chokidar from "chokidar";
|
|
6
|
+
import { getPaths } from "@cedarjs/project-config";
|
|
7
|
+
import { cliLogger } from "../cliLogger.js";
|
|
8
|
+
import {
|
|
9
|
+
isCellFile,
|
|
10
|
+
isPageFile,
|
|
11
|
+
isDirectoryNamedModuleFile,
|
|
12
|
+
isGraphQLSchemaFile
|
|
13
|
+
} from "../files.js";
|
|
14
|
+
import { warningForDuplicateRoutes } from "../routes.js";
|
|
15
|
+
import { generateClientPreset } from "./clientPreset.js";
|
|
16
|
+
import { generate } from "./generate.js";
|
|
17
|
+
import {
|
|
18
|
+
generateTypeDefGraphQLApi,
|
|
19
|
+
generateTypeDefGraphQLWeb
|
|
20
|
+
} from "./graphqlCodeGen.js";
|
|
21
|
+
import { generateGraphQLSchema } from "./graphqlSchema.js";
|
|
22
|
+
import {
|
|
23
|
+
generateMirrorCell,
|
|
24
|
+
generateMirrorDirectoryNamedModule,
|
|
25
|
+
generateTypeDefRouterRoutes,
|
|
26
|
+
generateTypeDefRouterPages,
|
|
27
|
+
mirrorPathForDirectoryNamedModules,
|
|
28
|
+
mirrorPathForCell
|
|
29
|
+
} from "./typeDefinitions.js";
|
|
30
|
+
const rwjsPaths = getPaths();
|
|
31
|
+
const watcher = chokidar.watch("(web|api)/src/**/*.{ts,js,jsx,tsx}", {
|
|
40
32
|
persistent: true,
|
|
41
33
|
ignored: ["node_modules", ".redwood"],
|
|
42
34
|
ignoreInitial: true,
|
|
@@ -52,16 +44,16 @@ let routesWarningMessage = "";
|
|
|
52
44
|
process.stdin.on("data", async (data) => {
|
|
53
45
|
const str = data.toString().trim().toLowerCase();
|
|
54
46
|
if (str === "g" || str === "rs") {
|
|
55
|
-
|
|
56
|
-
await
|
|
47
|
+
cliLogger("Re-creating TypeScript definitions and GraphQL schemas");
|
|
48
|
+
await generate();
|
|
57
49
|
}
|
|
58
50
|
});
|
|
59
51
|
watcher.on("ready", async () => {
|
|
60
52
|
const start = Date.now();
|
|
61
|
-
|
|
62
|
-
const { files, errors } = await
|
|
63
|
-
|
|
64
|
-
|
|
53
|
+
cliLogger("Generating full TypeScript definitions and GraphQL schemas");
|
|
54
|
+
const { files, errors } = await generate();
|
|
55
|
+
cliLogger(`Done.`);
|
|
56
|
+
cliLogger.debug(`
|
|
65
57
|
Created ${files.length} in ${Date.now() - start} ms`);
|
|
66
58
|
if (errors.length > 0) {
|
|
67
59
|
for (const { message, error } of errors) {
|
|
@@ -70,52 +62,52 @@ Created ${files.length} in ${Date.now() - start} ms`);
|
|
|
70
62
|
console.log();
|
|
71
63
|
}
|
|
72
64
|
}
|
|
73
|
-
routesWarningMessage =
|
|
65
|
+
routesWarningMessage = warningForDuplicateRoutes();
|
|
74
66
|
if (routesWarningMessage) {
|
|
75
67
|
console.warn(routesWarningMessage);
|
|
76
68
|
}
|
|
77
69
|
}).on("all", async (eventName, p) => {
|
|
78
|
-
|
|
70
|
+
cliLogger.trace(
|
|
79
71
|
`File system change: ${ansis.magenta(eventName)} ${ansis.dim(p)}`
|
|
80
72
|
);
|
|
81
73
|
if (!["add", "change", "unlink"].includes(eventName)) {
|
|
82
74
|
return;
|
|
83
75
|
}
|
|
84
76
|
const eventTigger = eventName;
|
|
85
|
-
const absPath =
|
|
77
|
+
const absPath = path.join(rwjsPaths.base, p);
|
|
86
78
|
const start = Date.now();
|
|
87
|
-
const finished = (type) =>
|
|
79
|
+
const finished = (type) => cliLogger.debug(
|
|
88
80
|
action[eventTigger],
|
|
89
81
|
type + ":",
|
|
90
82
|
ansis.dim(p),
|
|
91
83
|
ansis.dim.italic(Date.now() - start + " ms")
|
|
92
84
|
);
|
|
93
|
-
if (absPath.includes("Cell") &&
|
|
94
|
-
await
|
|
95
|
-
await
|
|
85
|
+
if (absPath.includes("Cell") && isCellFile(absPath)) {
|
|
86
|
+
await generateTypeDefGraphQLWeb();
|
|
87
|
+
await generateClientPreset();
|
|
96
88
|
if (eventName === "unlink") {
|
|
97
|
-
|
|
89
|
+
fs.unlinkSync(mirrorPathForCell(absPath, rwjsPaths)[0]);
|
|
98
90
|
} else {
|
|
99
|
-
|
|
91
|
+
generateMirrorCell(absPath, rwjsPaths);
|
|
100
92
|
}
|
|
101
93
|
finished("Cell");
|
|
102
94
|
} else if (absPath === rwjsPaths.web.routes) {
|
|
103
|
-
|
|
104
|
-
routesWarningMessage =
|
|
95
|
+
generateTypeDefRouterRoutes();
|
|
96
|
+
routesWarningMessage = warningForDuplicateRoutes();
|
|
105
97
|
finished("Routes");
|
|
106
|
-
} else if (absPath.includes("Page") &&
|
|
107
|
-
|
|
98
|
+
} else if (absPath.includes("Page") && isPageFile(absPath)) {
|
|
99
|
+
generateTypeDefRouterPages();
|
|
108
100
|
finished("Page");
|
|
109
|
-
} else if (
|
|
101
|
+
} else if (isDirectoryNamedModuleFile(absPath)) {
|
|
110
102
|
if (eventName === "unlink") {
|
|
111
|
-
|
|
103
|
+
fs.unlinkSync(mirrorPathForDirectoryNamedModules(absPath, rwjsPaths)[0]);
|
|
112
104
|
} else {
|
|
113
|
-
|
|
105
|
+
generateMirrorDirectoryNamedModule(absPath, rwjsPaths);
|
|
114
106
|
}
|
|
115
107
|
finished("Directory named module");
|
|
116
|
-
} else if (
|
|
117
|
-
await
|
|
118
|
-
await
|
|
108
|
+
} else if (isGraphQLSchemaFile(absPath)) {
|
|
109
|
+
await generateGraphQLSchema();
|
|
110
|
+
await generateTypeDefGraphQLApi();
|
|
119
111
|
finished("GraphQL Schema");
|
|
120
112
|
}
|
|
121
113
|
if (routesWarningMessage) {
|
package/dist/gql.js
CHANGED
|
@@ -1,40 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var gql_exports = {};
|
|
20
|
-
__export(gql_exports, {
|
|
21
|
-
listQueryTypeFieldsInProject: () => listQueryTypeFieldsInProject,
|
|
22
|
-
parseDocumentAST: () => parseDocumentAST,
|
|
23
|
-
parseGqlQueryToAst: () => parseGqlQueryToAst
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(gql_exports);
|
|
26
|
-
var import_code_file_loader = require("@graphql-tools/code-file-loader");
|
|
27
|
-
var import_load = require("@graphql-tools/load");
|
|
28
|
-
var import_graphql = require("graphql");
|
|
29
|
-
var import_graphql_server = require("@cedarjs/graphql-server");
|
|
30
|
-
var import_project_config = require("@cedarjs/project-config");
|
|
1
|
+
import { CodeFileLoader } from "@graphql-tools/code-file-loader";
|
|
2
|
+
import { loadSchema } from "@graphql-tools/load";
|
|
3
|
+
import { Kind, parse, print, visit } from "graphql";
|
|
4
|
+
import { rootSchema } from "@cedarjs/graphql-server";
|
|
5
|
+
import { getPaths } from "@cedarjs/project-config";
|
|
31
6
|
const parseGqlQueryToAst = (gqlQuery) => {
|
|
32
|
-
const ast =
|
|
7
|
+
const ast = parse(gqlQuery);
|
|
33
8
|
return parseDocumentAST(ast);
|
|
34
9
|
};
|
|
35
10
|
const parseDocumentAST = (document) => {
|
|
36
11
|
const operations = [];
|
|
37
|
-
|
|
12
|
+
visit(document, {
|
|
38
13
|
OperationDefinition(node) {
|
|
39
14
|
const fields = [];
|
|
40
15
|
node.selectionSet.selections.forEach((field) => {
|
|
@@ -59,12 +34,12 @@ const getFields = (field) => {
|
|
|
59
34
|
const lookAtFieldNode = (node) => {
|
|
60
35
|
node.selectionSet?.selections.forEach((subField) => {
|
|
61
36
|
switch (subField.kind) {
|
|
62
|
-
case
|
|
37
|
+
case Kind.FIELD:
|
|
63
38
|
obj[field.name.value].push(getFields(subField));
|
|
64
39
|
break;
|
|
65
|
-
case
|
|
40
|
+
case Kind.FRAGMENT_SPREAD:
|
|
66
41
|
break;
|
|
67
|
-
case
|
|
42
|
+
case Kind.INLINE_FRAGMENT:
|
|
68
43
|
lookAtFieldNode(subField);
|
|
69
44
|
}
|
|
70
45
|
});
|
|
@@ -76,21 +51,21 @@ const getFields = (field) => {
|
|
|
76
51
|
const listQueryTypeFieldsInProject = async () => {
|
|
77
52
|
try {
|
|
78
53
|
const schemaPointerMap = {
|
|
79
|
-
[
|
|
54
|
+
[print(rootSchema.schema)]: {},
|
|
80
55
|
"graphql/**/*.sdl.{js,ts}": {},
|
|
81
56
|
"directives/**/*.{js,ts}": {},
|
|
82
57
|
"subscriptions/**/*.{js,ts}": {}
|
|
83
58
|
};
|
|
84
|
-
const mergedSchema = await
|
|
59
|
+
const mergedSchema = await loadSchema(schemaPointerMap, {
|
|
85
60
|
loaders: [
|
|
86
|
-
new
|
|
61
|
+
new CodeFileLoader({
|
|
87
62
|
noRequire: true,
|
|
88
63
|
pluckConfig: {
|
|
89
64
|
globalGqlIdentifierName: "gql"
|
|
90
65
|
}
|
|
91
66
|
})
|
|
92
67
|
],
|
|
93
|
-
cwd:
|
|
68
|
+
cwd: getPaths().api.src,
|
|
94
69
|
assumeValidSDL: true
|
|
95
70
|
});
|
|
96
71
|
const queryTypeFields = mergedSchema.getQueryType()?.getFields();
|
|
@@ -100,9 +75,8 @@ const listQueryTypeFieldsInProject = async () => {
|
|
|
100
75
|
return [];
|
|
101
76
|
}
|
|
102
77
|
};
|
|
103
|
-
|
|
104
|
-
0 && (module.exports = {
|
|
78
|
+
export {
|
|
105
79
|
listQueryTypeFieldsInProject,
|
|
106
80
|
parseDocumentAST,
|
|
107
81
|
parseGqlQueryToAst
|
|
108
|
-
}
|
|
82
|
+
};
|