@common-stack/rollup-vite-utils 6.0.6-alpha.38 → 6.0.6-alpha.45

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 (47) hide show
  1. package/lib/default-config.json.cjs +2 -2
  2. package/lib/default-config.json.js +2 -2
  3. package/lib/index.cjs +1 -1
  4. package/lib/index.js +1 -1
  5. package/lib/interfaces/types.cjs +6 -0
  6. package/lib/interfaces/types.cjs.map +1 -0
  7. package/lib/interfaces/types.d.ts +37 -24
  8. package/lib/interfaces/types.js +6 -0
  9. package/lib/interfaces/types.js.map +1 -0
  10. package/lib/utils/withErrorHandleUtil.cjs +3 -7
  11. package/lib/utils/withErrorHandleUtil.cjs.map +1 -1
  12. package/lib/utils/withErrorHandleUtil.js +3 -7
  13. package/lib/utils/withErrorHandleUtil.js.map +1 -1
  14. package/lib/vite-wrappers/generators/clientLoaderGenerator.cjs +131 -0
  15. package/lib/vite-wrappers/generators/clientLoaderGenerator.cjs.map +1 -0
  16. package/lib/vite-wrappers/generators/clientLoaderGenerator.d.ts +17 -0
  17. package/lib/vite-wrappers/generators/clientLoaderGenerator.js +131 -0
  18. package/lib/vite-wrappers/generators/clientLoaderGenerator.js.map +1 -0
  19. package/lib/vite-wrappers/generators/generateHasConfiguration.cjs +23 -0
  20. package/lib/vite-wrappers/generators/generateHasConfiguration.cjs.map +1 -0
  21. package/lib/vite-wrappers/generators/generateHasConfiguration.d.ts +19 -0
  22. package/lib/vite-wrappers/generators/generateHasConfiguration.js +23 -0
  23. package/lib/vite-wrappers/generators/generateHasConfiguration.js.map +1 -0
  24. package/lib/vite-wrappers/generators/generateHasPermission.cjs +29 -0
  25. package/lib/vite-wrappers/generators/generateHasPermission.cjs.map +1 -0
  26. package/lib/vite-wrappers/generators/generateHasPermission.d.ts +9 -0
  27. package/lib/vite-wrappers/generators/generateHasPermission.js +29 -0
  28. package/lib/vite-wrappers/generators/generateHasPermission.js.map +1 -0
  29. package/lib/vite-wrappers/generators/generateHasPermission.test.d.ts +1 -0
  30. package/lib/vite-wrappers/{loaderGenerator.cjs → generators/loaderGenerator.cjs} +27 -129
  31. package/lib/vite-wrappers/generators/loaderGenerator.cjs.map +1 -0
  32. package/lib/vite-wrappers/{loaderGenerator.d.ts → generators/loaderGenerator.d.ts} +3 -19
  33. package/lib/vite-wrappers/{loaderGenerator.js → generators/loaderGenerator.js} +26 -128
  34. package/lib/vite-wrappers/generators/loaderGenerator.js.map +1 -0
  35. package/lib/vite-wrappers/generators/loaderGenerator.test.d.ts +1 -0
  36. package/lib/vite-wrappers/json-wrappers.cjs +5 -6
  37. package/lib/vite-wrappers/json-wrappers.cjs.map +1 -1
  38. package/lib/vite-wrappers/json-wrappers.js +5 -6
  39. package/lib/vite-wrappers/json-wrappers.js.map +1 -1
  40. package/lib/vite-wrappers/wrapperComponent.cjs +17 -48
  41. package/lib/vite-wrappers/wrapperComponent.cjs.map +1 -1
  42. package/lib/vite-wrappers/wrapperComponent.js +17 -48
  43. package/lib/vite-wrappers/wrapperComponent.js.map +1 -1
  44. package/package.json +2 -2
  45. package/lib/vite-wrappers/loaderGenerator.cjs.map +0 -1
  46. package/lib/vite-wrappers/loaderGenerator.js.map +0 -1
  47. /package/lib/vite-wrappers/{loaderGenerator.test.d.ts → generators/clientLoaderGenerator.test.d.ts} +0 -0
@@ -0,0 +1,29 @@
1
+ 'use strict';/**
2
+ * Generates the permission-check logic for loaders, filtering permissions based on authority keys.
3
+ *
4
+ * @param options - The options containing the authority and extraPermissions to check.
5
+ * @param isClient - A flag to specify if it's for client-side loading (default: false).
6
+ * @returns The permission-check logic string.
7
+ */
8
+ function generateHasPermission(options, isClient = false) {
9
+ const hasLoader = isClient ? options.hasClientLoader : options.hasLoader;
10
+ let generates = '';
11
+ if (options.authority?.length > 0 || options.extraPermissions?.length > 0) {
12
+ generates = `
13
+ if (permissions !== null) {
14
+ const permissionKeys = ${JSON.stringify(options.authority)} || [];
15
+ let extraPermissions = ${JSON.stringify(options.extraPermissions)} || [];
16
+ extraPermissions = permissionKeys.concat(extraPermissions);
17
+ permissions = {
18
+ resolveConfiguration: pick(permissions?.resolveConfiguration, extraPermissions)
19
+ };
20
+ `;
21
+ if (hasLoader) {
22
+ generates += `
23
+ hasPermissions = permissionKeys.some(key => ['Allow'].includes(get(permissions.resolveConfiguration, key)));
24
+ `;
25
+ }
26
+ generates += `}`;
27
+ }
28
+ return generates;
29
+ }exports.generateHasPermission=generateHasPermission;//# sourceMappingURL=generateHasPermission.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateHasPermission.cjs","sources":["../../../src/vite-wrappers/generators/generateHasPermission.ts"],"sourcesContent":[null],"names":[],"mappings":"aAEA;;;;;;AAMG;SACa,qBAAqB,CAAC,OAAiB,EAAE,WAAoB,KAAK,EAAA;AAC9E,IAAA,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;IACzE,IAAI,SAAS,GAAG,EAAE,CAAC;AACnB,IAAA,IAAI,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,gBAAgB,EAAE,MAAM,GAAG,CAAC,EAAE;AACvE,QAAA,SAAS,GAAG,CAAA;;AAEiB,mCAAA,EAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;AACjC,mCAAA,EAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;;;;;SAKpE,CAAC;QACF,IAAI,SAAS,EAAE;AACX,YAAA,SAAS,IAAI,CAAA;;aAEZ,CAAC;SACL;QACD,SAAS,IAAI,GAAG,CAAC;KACpB;AACD,IAAA,OAAO,SAAS,CAAC;AACrB"}
@@ -0,0 +1,9 @@
1
+ import { IOptions } from '../../interfaces/types';
2
+ /**
3
+ * Generates the permission-check logic for loaders, filtering permissions based on authority keys.
4
+ *
5
+ * @param options - The options containing the authority and extraPermissions to check.
6
+ * @param isClient - A flag to specify if it's for client-side loading (default: false).
7
+ * @returns The permission-check logic string.
8
+ */
9
+ export declare function generateHasPermission(options: IOptions, isClient?: boolean): string;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Generates the permission-check logic for loaders, filtering permissions based on authority keys.
3
+ *
4
+ * @param options - The options containing the authority and extraPermissions to check.
5
+ * @param isClient - A flag to specify if it's for client-side loading (default: false).
6
+ * @returns The permission-check logic string.
7
+ */
8
+ function generateHasPermission(options, isClient = false) {
9
+ const hasLoader = isClient ? options.hasClientLoader : options.hasLoader;
10
+ let generates = '';
11
+ if (options.authority?.length > 0 || options.extraPermissions?.length > 0) {
12
+ generates = `
13
+ if (permissions !== null) {
14
+ const permissionKeys = ${JSON.stringify(options.authority)} || [];
15
+ let extraPermissions = ${JSON.stringify(options.extraPermissions)} || [];
16
+ extraPermissions = permissionKeys.concat(extraPermissions);
17
+ permissions = {
18
+ resolveConfiguration: pick(permissions?.resolveConfiguration, extraPermissions)
19
+ };
20
+ `;
21
+ if (hasLoader) {
22
+ generates += `
23
+ hasPermissions = permissionKeys.some(key => ['Allow'].includes(get(permissions.resolveConfiguration, key)));
24
+ `;
25
+ }
26
+ generates += `}`;
27
+ }
28
+ return generates;
29
+ }export{generateHasPermission};//# sourceMappingURL=generateHasPermission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateHasPermission.js","sources":["../../../src/vite-wrappers/generators/generateHasPermission.ts"],"sourcesContent":[null],"names":[],"mappings":"AAEA;;;;;;AAMG;SACa,qBAAqB,CAAC,OAAiB,EAAE,WAAoB,KAAK,EAAA;AAC9E,IAAA,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;IACzE,IAAI,SAAS,GAAG,EAAE,CAAC;AACnB,IAAA,IAAI,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,gBAAgB,EAAE,MAAM,GAAG,CAAC,EAAE;AACvE,QAAA,SAAS,GAAG,CAAA;;AAEiB,mCAAA,EAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;AACjC,mCAAA,EAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;;;;;SAKpE,CAAC;QACF,IAAI,SAAS,EAAE;AACX,YAAA,SAAS,IAAI,CAAA;;aAEZ,CAAC;SACL;QACD,SAAS,IAAI,GAAG,CAAC;KACpB;AACD,IAAA,OAAO,SAAS,CAAC;AACrB"}
@@ -1,4 +1,4 @@
1
- 'use strict';var lodashEs=require('lodash-es');// Utility to generate a key for the query, converting its format for use in client-side and server-side loaders
1
+ 'use strict';var lodashEs=require('lodash-es'),generateHasPermission=require('./generateHasPermission.cjs'),generateHasConfiguration=require('./generateHasConfiguration.cjs');// Utility to generate a key for the query, converting its format for use in client-side and server-side loaders
2
2
  const generateDeferKey = (key) => lodashEs.camelCase(key.replace('Get', '')).replace('Document', 'Query');
3
3
  /**
4
4
  * Generates the server-side loader function for handling GraphQL queries.
@@ -12,11 +12,11 @@ const generateServerLoader = ({ queries }) => {
12
12
  return '';
13
13
  }
14
14
  return `
15
- export const defaultServerLoader = async ({ context, params }) => {
15
+ export const defaultServerLoader = async ({ context, params, _dataContext = {} }) => {
16
16
  const { apolloClient: client } = context;
17
17
  const queries = ${Object.entries(queries).reduce((acc, [key, value], index) => {
18
18
  const formattedValue = value.includes('queryParamsGenerator_')
19
- ? `queryGeneratorFunc(params).${value.split('queryParamsGenerator_')[1]}`
19
+ ? `queryGeneratorFunc({...params, _dataContext}).${value.split('queryParamsGenerator_')[1]}`
20
20
  : value;
21
21
  return `${acc}${key}:${formattedValue}${index + 1 === Object.keys(queries).length ? '}' : ','}`;
22
22
  }, '{')};
@@ -72,11 +72,16 @@ ${deferredAssignments}
72
72
  function generateReturnStatement(options, hasMiddleware) {
73
73
  const { loaderReturnInfo, isResourceRoute, queries, hasLoader } = options;
74
74
  const hasQueries = Object.keys(queries ?? {}).length > 0;
75
- const responseKey = isResourceRoute
76
- ? 'json'
77
- : loaderReturnInfo?.keys?.length > 0 || hasQueries
78
- ? 'defer'
79
- : loaderReturnInfo?.returnType || '';
75
+ let responseKey = '';
76
+ if (isResourceRoute) {
77
+ responseKey = 'json';
78
+ }
79
+ else if (loaderReturnInfo?.keys?.length > 0 || hasQueries) {
80
+ responseKey = 'defer';
81
+ }
82
+ else {
83
+ responseKey = loaderReturnInfo?.returnType || '';
84
+ }
80
85
  const defaultLoaderData = hasQueries ? 'defaultLoaderData' : '{}';
81
86
  const middlewareData = hasMiddleware ? '{ permissions, dataContext: rest, configurations }' : '{}';
82
87
  const respondOptions = loaderReturnInfo?.hasOptions ? 'respondOptions' : '';
@@ -104,48 +109,20 @@ function generateMiddlewarePushes(options) {
104
109
  ?.map((_, index) => `middlewareStack.push({ name: "middleware${index + 1}", func: middleware${index + 1} });`)
105
110
  .join('\n');
106
111
  }
107
- /**
108
- * Generates the permission-check logic for loaders, filtering permissions based on authority keys.
109
- *
110
- * @param options - The options containing the authority and extraPermissions to check.
111
- * @param isClient - A flag to specify if it's for client-side loading (default: false).
112
- * @returns The permission-check logic string.
113
- */
114
- function generateHasPermission(options, isClient = false) {
115
- const hasLoader = isClient ? options.hasClientLoader : options.hasLoader;
116
- let generates = '';
117
- if (options.authority?.length > 0 || options.extraPermissions?.length > 0) {
118
- generates = `
119
- if (permissions !== null) {
120
- const permissionKeys = ${JSON.stringify(options.authority)} || [];
121
- let extraPermissions = ${JSON.stringify(options.extraPermissions)} || [];
122
- extraPermissions = permissionKeys.concat(extraPermissions);
123
- permissions = {
124
- resolveConfiguration: pick(permissions?.resolveConfiguration, extraPermissions)
125
- };
126
- `;
127
- if (hasLoader) {
128
- generates += `
129
- hasPermissions = permissionKeys.some(key => ['Allow'].includes(get(permissions.resolveConfiguration, key)));
130
- `;
131
- }
132
- generates += `}`;
133
- }
134
- return generates;
135
- }
136
112
  /**
137
113
  * Generates the export functions for loaders and actions based on the provided options.
138
114
  * Handles middleware and permission checks if present.
139
115
  *
140
- * @param sourceExport - The source export string to append additional exports.
141
116
  * @param options - The configuration options including middleware, queries, etc.
142
117
  * @param hasMiddleware - A flag indicating if middleware exists.
143
118
  * @param hasQueries - A flag indicating if GraphQL queries are present.
144
119
  * @returns The updated export string.
145
120
  */
146
- function generateLoaderExports(sourceExport = '', options, hasMiddleware = false, hasQueries = false) {
121
+ function generateLoaderExports(options, hasMiddleware = false, hasQueries = false) {
122
+ let loaderExport = '';
123
+ // Generate server-side loader if queries are present
147
124
  if (hasQueries) {
148
- sourceExport += generateServerLoader(options);
125
+ loaderExport += generateServerLoader(options);
149
126
  }
150
127
  const getMiddlewareOptions = () => {
151
128
  if (options.requireAuth) {
@@ -155,7 +132,7 @@ function generateLoaderExports(sourceExport = '', options, hasMiddleware = false
155
132
  return '{}';
156
133
  };
157
134
  const { resourceUri, configurations } = options;
158
- sourceExport += `
135
+ loaderExport += `
159
136
  export async function loader(params) {
160
137
  ${hasMiddleware ? 'const middlewareStack = [];' : ''}
161
138
  const middlewareOptions = ${getMiddlewareOptions()}
@@ -164,8 +141,8 @@ function generateLoaderExports(sourceExport = '', options, hasMiddleware = false
164
141
  ${options.authority?.length > 0 || options.extraPermissions?.length > 0
165
142
  ? 'middlewareStack.push({ name: "lifecycle", func: lifecycleMiddleware });\n'
166
143
  : ''}
167
- ${options.authority?.length > 0 ? 'middlewareStack.push({ name: "permission", func: permissionMiddleware });\n' : ''}
168
- ${options.resourceUri ? 'middlewareStack.push({ name: "configurations", func: configurationMiddleware });\n' : ''}
144
+ ${options.authority?.length > 0 || options.extraPermissions?.length > 0 ? 'middlewareStack.push({ name: "permission", func: permissionMiddleware });\n' : ''}
145
+ ${options.configurations.length > 0 ? 'middlewareStack.push({ name: "configurations", func: configurationMiddleware });\n' : ''}
169
146
  const paramsFromOptions = ${options.resourceUri
170
147
  ? `{ resourceUri: '${resourceUri}', configurations: ${JSON.stringify(configurations ?? [])} }\n`
171
148
  : '{}'};
@@ -178,9 +155,12 @@ function generateLoaderExports(sourceExport = '', options, hasMiddleware = false
178
155
  : ''}
179
156
  let hasPermissions = true;
180
157
  let loaderErrors = [];
181
- ${generateHasPermission(options)}
158
+ ${generateHasPermission.generateHasPermission(options)}
159
+ ${generateHasConfiguration.generateConfigurationLogic(options)}
160
+ const paramsWithMiddlewareData = ${hasMiddleware ? `{ ...params, _dataContext: middlewareData }` : '{ ...params }'};
161
+
182
162
  const defaultLoaderResult = ${hasQueries
183
- ? `hasPermissions ? await withErrorHandler(defaultServerLoader, params) : { data: {}, errors: [] };\n
163
+ ? `hasPermissions ? await withErrorHandler(defaultServerLoader, paramsWithMiddlewareData) : { data: {}, errors: [] };\n
184
164
  loaderErrors = defaultLoaderResult.errors`
185
165
  : '{ data: {}, errors: [] }'};
186
166
  const defaultLoaderData = defaultLoaderResult.data;
@@ -196,91 +176,9 @@ function generateLoaderExports(sourceExport = '', options, hasMiddleware = false
196
176
  ? `let loaderData = hasPermissions && await withErrorHandler(loaderFunc, params) || { data: [], errors: [] };\n
197
177
  loaderErrors = loaderData?.errors;\n`
198
178
  : ''}
199
-
200
179
 
201
180
  ${generateLoaderReturnLogic(options)}
202
181
  ${generateReturnStatement(options, hasMiddleware)}
203
182
  }`;
204
- return sourceExport;
205
- }
206
- /**
207
- * Generates the client-side loader logic for fetching data on the client-side, including caching mechanisms.
208
- *
209
- * @param queries - The GraphQL queries to fetch on the client-side.
210
- * @returns The generated client loader function string.
211
- */
212
- const generateClientLoader = ({ queries }) => {
213
- if (Object.keys(queries ?? {}).length === 0) {
214
- return '';
215
- }
216
- return `
217
- const defaultClientLoader = async ({params, serverLoader})=>{
218
- const client = window.__CLIENT_SERVICE__?.apolloClient;
219
- const container = window.__CLIENT_SERVICE__?.container
220
-
221
- try {
222
- const getKey = (documentName:string)=> camelCase(documentName).replace('Document','')
223
-
224
-
225
- const queries = ${Object.entries(queries).reduce((acc, [key, value], index) => {
226
- const formattedValue = value.includes('queryParamsGenerator_')
227
- ? `queryGeneratorFunc(params).${value.split('queryParamsGenerator_')[1]}`
228
- : value;
229
- return `${acc}${key}:${formattedValue}${index + 1 === Object.keys(queries).length ? '}' : ','}`;
230
- }, '{')};
231
-
232
- const queryKeys: string[] = [${Object.keys(queries)
233
- .map((key) => lodashEs.camelCase(key.replace('Get', '')).replace('Document', 'Query'))
234
- .map((key) => `'${key}'`)}]
235
- let shouldCallServerLoader = false;
236
- let response = {};
237
- let cachedData, cacheKey;
238
- ${Object.keys(queries)
239
- .map((queryDoc, index) => `
240
- cachedData = client.cache.readQuery({
241
- query: ${queryDoc},
242
- variables: queries['${queryDoc}'],
243
- });
244
- cacheKey = getKey('${queryDoc}');
245
- if(!cachedData){
246
- shouldCallServerLoader = true;
247
- }
248
- if(cachedData && cachedData[cacheKey]){
249
- response[queryKeys[${index}]] = Promise.resolve(cachedData[cacheKey]);
250
- }
251
- `)
252
- .join('')}
253
- if(!shouldCallServerLoader) return response;
254
- const serverData = await serverLoader();
255
-
256
- if(serverData?.errors?.length){
257
- const store = container.get(ClientTypes.ReduxStore)
258
-
259
- serverData?.errors?.map((error)=>{
260
- store.dispatch(error)
261
- })
262
- }
263
-
264
- let queryKey;
265
- ${Object.keys(queries)
266
- .map((queryDoc, index) => `
267
- queryKey = queryKeys[${index}];
268
- if(!serverData[queryKey].then){
269
- return;
270
- }
271
- serverData[queryKey].then(({ data }) => {
272
- client.cache.writeQuery({
273
- query: ${queryDoc},
274
- variables: queries['${queryDoc}'],
275
- data,
276
- })
277
- })
278
- `)
279
- .join('')}
280
- return serverData;
281
-
282
- }catch(err){
283
- console.error('Error in defaultClientLoader',err);
284
- }
285
- }`;
286
- };exports.generateClientLoader=generateClientLoader;exports.generateHasPermission=generateHasPermission;exports.generateLoaderExports=generateLoaderExports;exports.generateReturnStatement=generateReturnStatement;exports.generateServerLoader=generateServerLoader;//# sourceMappingURL=loaderGenerator.cjs.map
183
+ return loaderExport;
184
+ }exports.generateLoaderExports=generateLoaderExports;exports.generateReturnStatement=generateReturnStatement;exports.generateServerLoader=generateServerLoader;//# sourceMappingURL=loaderGenerator.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loaderGenerator.cjs","sources":["../../../src/vite-wrappers/generators/loaderGenerator.ts"],"sourcesContent":[null],"names":["camelCase","generateHasPermission","generateConfigurationLogic"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { IOptions } from '../interfaces/types';
1
+ import { IOptions } from '../../interfaces/types';
2
2
  /**
3
3
  * Internal function to update the options with default loader configurations.
4
4
  * Adds a loaderReturnInfo object to the options, which will be used to handle deferred data loading.
@@ -6,7 +6,7 @@ import { IOptions } from '../interfaces/types';
6
6
  * @param options - The options object which will be modified to include loader-related configurations.
7
7
  * @returns The updated options object.
8
8
  */
9
- export declare function internalOptions(options: any): any;
9
+ export declare function internalOptions(options: IOptions): IOptions;
10
10
  /**
11
11
  * Generates the server-side loader function for handling GraphQL queries.
12
12
  * It creates the default server loader for fetching data based on provided queries in the options.
@@ -32,29 +32,13 @@ export declare const generateServerLoader: ({ queries }: Pick<IOptions, "queries
32
32
  * @returns The return statement string for the loader function.
33
33
  */
34
34
  export declare function generateReturnStatement(options: IOptions, hasMiddleware: boolean): string;
35
- /**
36
- * Generates the permission-check logic for loaders, filtering permissions based on authority keys.
37
- *
38
- * @param options - The options containing the authority and extraPermissions to check.
39
- * @param isClient - A flag to specify if it's for client-side loading (default: false).
40
- * @returns The permission-check logic string.
41
- */
42
- export declare function generateHasPermission(options: IOptions, isClient?: boolean): string;
43
35
  /**
44
36
  * Generates the export functions for loaders and actions based on the provided options.
45
37
  * Handles middleware and permission checks if present.
46
38
  *
47
- * @param sourceExport - The source export string to append additional exports.
48
39
  * @param options - The configuration options including middleware, queries, etc.
49
40
  * @param hasMiddleware - A flag indicating if middleware exists.
50
41
  * @param hasQueries - A flag indicating if GraphQL queries are present.
51
42
  * @returns The updated export string.
52
43
  */
53
- export declare function generateLoaderExports(sourceExport: string, options: IOptions, hasMiddleware?: boolean, hasQueries?: boolean): string;
54
- /**
55
- * Generates the client-side loader logic for fetching data on the client-side, including caching mechanisms.
56
- *
57
- * @param queries - The GraphQL queries to fetch on the client-side.
58
- * @returns The generated client loader function string.
59
- */
60
- export declare const generateClientLoader: ({ queries }: Pick<IOptions, "queries">) => string;
44
+ export declare function generateLoaderExports(options: IOptions, hasMiddleware?: boolean, hasQueries?: boolean): string;
@@ -1,4 +1,4 @@
1
- import {camelCase}from'lodash-es';// Utility to generate a key for the query, converting its format for use in client-side and server-side loaders
1
+ import {camelCase}from'lodash-es';import {generateHasPermission}from'./generateHasPermission.js';import {generateConfigurationLogic}from'./generateHasConfiguration.js';// Utility to generate a key for the query, converting its format for use in client-side and server-side loaders
2
2
  const generateDeferKey = (key) => camelCase(key.replace('Get', '')).replace('Document', 'Query');
3
3
  /**
4
4
  * Generates the server-side loader function for handling GraphQL queries.
@@ -12,11 +12,11 @@ const generateServerLoader = ({ queries }) => {
12
12
  return '';
13
13
  }
14
14
  return `
15
- export const defaultServerLoader = async ({ context, params }) => {
15
+ export const defaultServerLoader = async ({ context, params, _dataContext = {} }) => {
16
16
  const { apolloClient: client } = context;
17
17
  const queries = ${Object.entries(queries).reduce((acc, [key, value], index) => {
18
18
  const formattedValue = value.includes('queryParamsGenerator_')
19
- ? `queryGeneratorFunc(params).${value.split('queryParamsGenerator_')[1]}`
19
+ ? `queryGeneratorFunc({...params, _dataContext}).${value.split('queryParamsGenerator_')[1]}`
20
20
  : value;
21
21
  return `${acc}${key}:${formattedValue}${index + 1 === Object.keys(queries).length ? '}' : ','}`;
22
22
  }, '{')};
@@ -72,11 +72,16 @@ ${deferredAssignments}
72
72
  function generateReturnStatement(options, hasMiddleware) {
73
73
  const { loaderReturnInfo, isResourceRoute, queries, hasLoader } = options;
74
74
  const hasQueries = Object.keys(queries ?? {}).length > 0;
75
- const responseKey = isResourceRoute
76
- ? 'json'
77
- : loaderReturnInfo?.keys?.length > 0 || hasQueries
78
- ? 'defer'
79
- : loaderReturnInfo?.returnType || '';
75
+ let responseKey = '';
76
+ if (isResourceRoute) {
77
+ responseKey = 'json';
78
+ }
79
+ else if (loaderReturnInfo?.keys?.length > 0 || hasQueries) {
80
+ responseKey = 'defer';
81
+ }
82
+ else {
83
+ responseKey = loaderReturnInfo?.returnType || '';
84
+ }
80
85
  const defaultLoaderData = hasQueries ? 'defaultLoaderData' : '{}';
81
86
  const middlewareData = hasMiddleware ? '{ permissions, dataContext: rest, configurations }' : '{}';
82
87
  const respondOptions = loaderReturnInfo?.hasOptions ? 'respondOptions' : '';
@@ -104,48 +109,20 @@ function generateMiddlewarePushes(options) {
104
109
  ?.map((_, index) => `middlewareStack.push({ name: "middleware${index + 1}", func: middleware${index + 1} });`)
105
110
  .join('\n');
106
111
  }
107
- /**
108
- * Generates the permission-check logic for loaders, filtering permissions based on authority keys.
109
- *
110
- * @param options - The options containing the authority and extraPermissions to check.
111
- * @param isClient - A flag to specify if it's for client-side loading (default: false).
112
- * @returns The permission-check logic string.
113
- */
114
- function generateHasPermission(options, isClient = false) {
115
- const hasLoader = isClient ? options.hasClientLoader : options.hasLoader;
116
- let generates = '';
117
- if (options.authority?.length > 0 || options.extraPermissions?.length > 0) {
118
- generates = `
119
- if (permissions !== null) {
120
- const permissionKeys = ${JSON.stringify(options.authority)} || [];
121
- let extraPermissions = ${JSON.stringify(options.extraPermissions)} || [];
122
- extraPermissions = permissionKeys.concat(extraPermissions);
123
- permissions = {
124
- resolveConfiguration: pick(permissions?.resolveConfiguration, extraPermissions)
125
- };
126
- `;
127
- if (hasLoader) {
128
- generates += `
129
- hasPermissions = permissionKeys.some(key => ['Allow'].includes(get(permissions.resolveConfiguration, key)));
130
- `;
131
- }
132
- generates += `}`;
133
- }
134
- return generates;
135
- }
136
112
  /**
137
113
  * Generates the export functions for loaders and actions based on the provided options.
138
114
  * Handles middleware and permission checks if present.
139
115
  *
140
- * @param sourceExport - The source export string to append additional exports.
141
116
  * @param options - The configuration options including middleware, queries, etc.
142
117
  * @param hasMiddleware - A flag indicating if middleware exists.
143
118
  * @param hasQueries - A flag indicating if GraphQL queries are present.
144
119
  * @returns The updated export string.
145
120
  */
146
- function generateLoaderExports(sourceExport = '', options, hasMiddleware = false, hasQueries = false) {
121
+ function generateLoaderExports(options, hasMiddleware = false, hasQueries = false) {
122
+ let loaderExport = '';
123
+ // Generate server-side loader if queries are present
147
124
  if (hasQueries) {
148
- sourceExport += generateServerLoader(options);
125
+ loaderExport += generateServerLoader(options);
149
126
  }
150
127
  const getMiddlewareOptions = () => {
151
128
  if (options.requireAuth) {
@@ -155,7 +132,7 @@ function generateLoaderExports(sourceExport = '', options, hasMiddleware = false
155
132
  return '{}';
156
133
  };
157
134
  const { resourceUri, configurations } = options;
158
- sourceExport += `
135
+ loaderExport += `
159
136
  export async function loader(params) {
160
137
  ${hasMiddleware ? 'const middlewareStack = [];' : ''}
161
138
  const middlewareOptions = ${getMiddlewareOptions()}
@@ -164,8 +141,8 @@ function generateLoaderExports(sourceExport = '', options, hasMiddleware = false
164
141
  ${options.authority?.length > 0 || options.extraPermissions?.length > 0
165
142
  ? 'middlewareStack.push({ name: "lifecycle", func: lifecycleMiddleware });\n'
166
143
  : ''}
167
- ${options.authority?.length > 0 ? 'middlewareStack.push({ name: "permission", func: permissionMiddleware });\n' : ''}
168
- ${options.resourceUri ? 'middlewareStack.push({ name: "configurations", func: configurationMiddleware });\n' : ''}
144
+ ${options.authority?.length > 0 || options.extraPermissions?.length > 0 ? 'middlewareStack.push({ name: "permission", func: permissionMiddleware });\n' : ''}
145
+ ${options.configurations.length > 0 ? 'middlewareStack.push({ name: "configurations", func: configurationMiddleware });\n' : ''}
169
146
  const paramsFromOptions = ${options.resourceUri
170
147
  ? `{ resourceUri: '${resourceUri}', configurations: ${JSON.stringify(configurations ?? [])} }\n`
171
148
  : '{}'};
@@ -179,8 +156,11 @@ function generateLoaderExports(sourceExport = '', options, hasMiddleware = false
179
156
  let hasPermissions = true;
180
157
  let loaderErrors = [];
181
158
  ${generateHasPermission(options)}
159
+ ${generateConfigurationLogic(options)}
160
+ const paramsWithMiddlewareData = ${hasMiddleware ? `{ ...params, _dataContext: middlewareData }` : '{ ...params }'};
161
+
182
162
  const defaultLoaderResult = ${hasQueries
183
- ? `hasPermissions ? await withErrorHandler(defaultServerLoader, params) : { data: {}, errors: [] };\n
163
+ ? `hasPermissions ? await withErrorHandler(defaultServerLoader, paramsWithMiddlewareData) : { data: {}, errors: [] };\n
184
164
  loaderErrors = defaultLoaderResult.errors`
185
165
  : '{ data: {}, errors: [] }'};
186
166
  const defaultLoaderData = defaultLoaderResult.data;
@@ -196,91 +176,9 @@ function generateLoaderExports(sourceExport = '', options, hasMiddleware = false
196
176
  ? `let loaderData = hasPermissions && await withErrorHandler(loaderFunc, params) || { data: [], errors: [] };\n
197
177
  loaderErrors = loaderData?.errors;\n`
198
178
  : ''}
199
-
200
179
 
201
180
  ${generateLoaderReturnLogic(options)}
202
181
  ${generateReturnStatement(options, hasMiddleware)}
203
182
  }`;
204
- return sourceExport;
205
- }
206
- /**
207
- * Generates the client-side loader logic for fetching data on the client-side, including caching mechanisms.
208
- *
209
- * @param queries - The GraphQL queries to fetch on the client-side.
210
- * @returns The generated client loader function string.
211
- */
212
- const generateClientLoader = ({ queries }) => {
213
- if (Object.keys(queries ?? {}).length === 0) {
214
- return '';
215
- }
216
- return `
217
- const defaultClientLoader = async ({params, serverLoader})=>{
218
- const client = window.__CLIENT_SERVICE__?.apolloClient;
219
- const container = window.__CLIENT_SERVICE__?.container
220
-
221
- try {
222
- const getKey = (documentName:string)=> camelCase(documentName).replace('Document','')
223
-
224
-
225
- const queries = ${Object.entries(queries).reduce((acc, [key, value], index) => {
226
- const formattedValue = value.includes('queryParamsGenerator_')
227
- ? `queryGeneratorFunc(params).${value.split('queryParamsGenerator_')[1]}`
228
- : value;
229
- return `${acc}${key}:${formattedValue}${index + 1 === Object.keys(queries).length ? '}' : ','}`;
230
- }, '{')};
231
-
232
- const queryKeys: string[] = [${Object.keys(queries)
233
- .map((key) => camelCase(key.replace('Get', '')).replace('Document', 'Query'))
234
- .map((key) => `'${key}'`)}]
235
- let shouldCallServerLoader = false;
236
- let response = {};
237
- let cachedData, cacheKey;
238
- ${Object.keys(queries)
239
- .map((queryDoc, index) => `
240
- cachedData = client.cache.readQuery({
241
- query: ${queryDoc},
242
- variables: queries['${queryDoc}'],
243
- });
244
- cacheKey = getKey('${queryDoc}');
245
- if(!cachedData){
246
- shouldCallServerLoader = true;
247
- }
248
- if(cachedData && cachedData[cacheKey]){
249
- response[queryKeys[${index}]] = Promise.resolve(cachedData[cacheKey]);
250
- }
251
- `)
252
- .join('')}
253
- if(!shouldCallServerLoader) return response;
254
- const serverData = await serverLoader();
255
-
256
- if(serverData?.errors?.length){
257
- const store = container.get(ClientTypes.ReduxStore)
258
-
259
- serverData?.errors?.map((error)=>{
260
- store.dispatch(error)
261
- })
262
- }
263
-
264
- let queryKey;
265
- ${Object.keys(queries)
266
- .map((queryDoc, index) => `
267
- queryKey = queryKeys[${index}];
268
- if(!serverData[queryKey].then){
269
- return;
270
- }
271
- serverData[queryKey].then(({ data }) => {
272
- client.cache.writeQuery({
273
- query: ${queryDoc},
274
- variables: queries['${queryDoc}'],
275
- data,
276
- })
277
- })
278
- `)
279
- .join('')}
280
- return serverData;
281
-
282
- }catch(err){
283
- console.error('Error in defaultClientLoader',err);
284
- }
285
- }`;
286
- };export{generateClientLoader,generateHasPermission,generateLoaderExports,generateReturnStatement,generateServerLoader};//# sourceMappingURL=loaderGenerator.js.map
183
+ return loaderExport;
184
+ }export{generateLoaderExports,generateReturnStatement,generateServerLoader};//# sourceMappingURL=loaderGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loaderGenerator.js","sources":["../../../src/vite-wrappers/generators/loaderGenerator.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- 'use strict';var getRoutes_js=require('@common-stack/client-react/lib/route/get-routes.js'),fs=require('fs'),globAll=require('glob-all'),lodashEs=require('lodash-es'),node_crypto=require('node:crypto'),wrapperComponent=require('./wrapperComponent.cjs'),dialogWrapper=require('./dialog-wrapper.cjs'),iconSwitch=require('./icon-switch.cjs');/* eslint-disable array-callback-return */
1
+ 'use strict';var getRoutes_js=require('@common-stack/client-react/lib/route/get-routes.js'),fs=require('fs'),globAll=require('glob-all'),lodashEs=require('lodash-es'),node_crypto=require('node:crypto'),wrapperComponent=require('./wrapperComponent.cjs'),dialogWrapper=require('./dialog-wrapper.cjs'),iconSwitch=require('./icon-switch.cjs');/* eslint-disable jest/require-hook */
2
+ /* eslint-disable array-callback-return */
2
3
  /**
3
4
  * Generates a hash from the source string.
4
5
  * Used to create unique route suffixes.
@@ -105,7 +106,7 @@ const addIconFile = (icon) => (!iconFiles.includes(icon) ? iconFiles.push(icon)
105
106
  * @param paths - The paths configuration for various modules and components.
106
107
  */
107
108
  function defineRoute(routeFn, jsonRoute, { metaJson, settings, paths }) {
108
- const { routes = null, relativePath: path, componentPath, clientOnly, dialogPath, isResourceRoute, auth = 'optional', hasServerCode = false, hasLoader = false, hasAction = false, hasClientLoader = false, hasClientAction = false, hasComponent = false, hasErrorBoundary = false, hasLinks = false, hasMeta = false, hasHydrateFallback = false, hasShouldRevalidate = false, queryParamsGenerator = false, hasHandle = false, hasHeaders = false, wrapperPaths = [], middlewares = [], authority = [], extraPermissions = [], extraIcons = [], extraLink = [], extraProps = {}, loaderReturnInfo = {}, queries = {}, clientMiddlewares = [], configurations = [], resourceUri, icon, ...rest } = jsonRoute;
109
+ const { routes = null, relativePath: path, componentPath, clientOnly, dialogPath, isResourceRoute, auth = 'optional', hasServerCode = false, hasLoader = false, hasAction = false, hasClientLoader = false, hasClientAction = false, hasComponent = false, hasErrorBoundary = false, hasLinks = false, hasMeta = false, hasHydrateFallback = false, hasShouldRevalidate = false, queryParamsGenerator = false, hasHandle = false, hasHeaders = false, wrapperPaths = [], middlewares = [], authority = [], authorityConfig = {}, extraPermissions = [], extraIcons = [], extraLink = [], extraProps = {}, loaderReturnInfo = {}, queries = {}, clientMiddlewares = [], configurations = [], resourceUri, icon, ...rest } = jsonRoute;
109
110
  // Handle icons
110
111
  if (icon) {
111
112
  if (typeof icon === 'object') {
@@ -144,10 +145,7 @@ function defineRoute(routeFn, jsonRoute, { metaJson, settings, paths }) {
144
145
  wrapperPaths.push('$clientOnlyWrapper'); // Add a placeholder for client-only wrapper
145
146
  }
146
147
  if (authority.length > 0) {
147
- wrapperPaths.push('$permissionWrapper'); // Add a placeholder for permission wrapper
148
- }
149
- if (configurations.length > 0 && resourceUri) {
150
- wrapperPaths.push('$configurationWrapper'); // Add a placeholder for configuration wrapper
148
+ wrapperPaths.push('$configPermissionWrapper'); // Add a placeholder for permission wrapper
151
149
  }
152
150
  const requireAuth = !!auth;
153
151
  const options = {
@@ -172,6 +170,7 @@ function defineRoute(routeFn, jsonRoute, { metaJson, settings, paths }) {
172
170
  suffix: getHash(rest.path || '/'),
173
171
  middlewares,
174
172
  authority,
173
+ authorityConfig,
175
174
  extraLink,
176
175
  extraPermissions,
177
176
  extraProps: settings.disableExtraProps !== true ? extraProps : {},