@trackunit/react-graphql-tools 0.0.94 → 0.0.95

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/CHANGELOG.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ ## [0.0.95](https://github.com/Trackunit/manager/compare/react-graphql-tools/0.0.94...react-graphql-tools/0.0.95) (2024-11-05)
6
+
5
7
  ## [0.0.94](https://github.com/Trackunit/manager/compare/react-graphql-tools/0.0.93...react-graphql-tools/0.0.94) (2024-10-29)
6
8
 
7
9
  ### Dependency Updates
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trackunit/react-graphql-tools",
3
- "version": "0.0.94",
3
+ "version": "0.0.95",
4
4
  "main": "src/index.js",
5
5
  "executors": "./executors.json",
6
6
  "generators": "./generators.json",
@@ -12,6 +12,10 @@ const generateMockFromType = (type, text) => {
12
12
  if (rightSideText.startsWith("DateTimeISOString")) {
13
13
  return "2023-01-22T15:08:12.527Z";
14
14
  }
15
+ //GeoJSONCoordinates
16
+ if (rightSideText.startsWith("[number, number] | [number, number][] | [number, number][][]")) {
17
+ return "[[1, 2], [3, 4]]";
18
+ }
15
19
  if (type.isStringLiteral()) {
16
20
  return type.compilerType.value; // Get the value of the string literal
17
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scrubMockFile.js","sourceRoot":"","sources":["../../../../../../../libs/react/graphql-tools/src/executors/createHooks/scrubMockFile.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-console */\nimport { faker } from \"@faker-js/faker\";\nimport { Project, TypeAliasDeclaration } from \"ts-morph\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst generateMockFromType = (type: any, text: string): any => {\n faker.seed(123);\n // type aliases are not working well so using text here.\n const rightSideText = text.substring(text.indexOf(\":\") + 1).trim();\n if (rightSideText.startsWith(\"DateTimeISOString\")) {\n return \"2023-01-22T15:08:12.527Z\";\n }\n if (type.isStringLiteral()) {\n return type.compilerType.value; // Get the value of the string literal\n }\n if (type.isNumberLiteral()) {\n return parseFloat(type.compilerType.value);\n }\n if (type.isBooleanLiteral()) {\n return type.compilerType.value === \"true\";\n }\n\n if (type.getText() === \"string\") {\n return faker.lorem.word();\n }\n if (type.getText() === \"number\") {\n return faker.number.int();\n }\n if (type.getText() === \"Date\" || type.getText() === \"DateTime\") {\n return \"2023-01-22T15:08:12.527Z\";\n }\n\n if (type.isUnion()) {\n // We'll take the first type in the union for simplicity\n return generateMockFromType(type.getUnionTypes()[0], \"\");\n }\n if (type.isArray()) {\n return [generateMockFromType(type.getArrayElementTypeOrThrow(), \"\")];\n }\n if (type.isObject()) {\n const properties = type.getProperties();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const obj: any = {};\n for (const prop of properties) {\n const declaration = prop.getValueDeclarationOrThrow();\n const propType = declaration.getType();\n if (prop.getName() === \"__typename\") {\n obj[prop.getName()] = propType.getText().replace(/\"/g, \"\");\n } else {\n obj[prop.getName()] = generateMockFromType(propType, declaration.getText());\n }\n }\n return obj;\n }\n return null; // Default\n};\n\n/**\n * Generates React hooks from your graphql files.\n */\nexport const scrubMockFileContent = async (fileContent: string, nxRoot: string, isVerbose?: boolean) => {\n const start = new Date().getTime();\n\n const project = new Project({\n compilerOptions: {\n noUnusedLocals: true,\n noUnusedParameters: true,\n },\n });\n const generatedFile = project.createSourceFile(\"tmpMock.ts\", fileContent);\n const mockThese: TypeAliasDeclaration[] = [];\n\n generatedFile.insertStatements(0, \"/* eslint-disable @typescript-eslint/no-explicit-any */\");\n generatedFile.insertStatements(1, \"/* eslint-disable @typescript-eslint/array-type */\");\n\n generatedFile.getTypeAliases().forEach(node => {\n if (node.getName().endsWith(\"Query\") && node.getName().length > \"Query\".length) {\n mockThese.push(node);\n }\n if (node.getName().endsWith(\"Mutation\") && node.getName().length > \"Mutation\".length) {\n mockThese.push(node);\n }\n });\n\n if (isVerbose) {\n const end = new Date().getTime();\n const time = end - start;\n console.log(\"Mock Execution time: \" + time);\n }\n\n const mock = mockThese.map(mocker => {\n const postFix = (mocker.getName().includes(\"Query\") ? \"Query\" : \"Mutation\").length;\n return `\n \n export const mockFor${mocker.getName()} = (variables: gql.${mocker.getName()}Variables, data?: DeepPartialNullable<gql.${mocker.getName()}> ) => {\n return queryFor(gql.${mocker.getName().substring(0, mocker.getName().length - postFix)}Document, variables, \n mergeDeep(\n ${JSON.stringify(generateMockFromType(mocker.getType(), \"\"), null, 4)}\n , data || {}) as gql.${mocker.getName()}\n );\n }`;\n });\n\n return `\n import { OperationVariables } from \"@apollo/client\";\n import { mergeDeep } from \"@apollo/client/utilities\";\n import { queryFor, DeepPartialNullable } from \"@trackunit/react-core-contexts-test\";\n import * as gql from \"./graphql\";\n \n ${mock.join(\"\\n\")}\n `;\n};\n"]}
1
+ {"version":3,"file":"scrubMockFile.js","sourceRoot":"","sources":["../../../../../../../libs/react/graphql-tools/src/executors/createHooks/scrubMockFile.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-console */\nimport { faker } from \"@faker-js/faker\";\nimport { Project, TypeAliasDeclaration } from \"ts-morph\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst generateMockFromType = (type: any, text: string): any => {\n faker.seed(123);\n // type aliases are not working well so using text here.\n const rightSideText = text.substring(text.indexOf(\":\") + 1).trim();\n if (rightSideText.startsWith(\"DateTimeISOString\")) {\n return \"2023-01-22T15:08:12.527Z\";\n }\n //GeoJSONCoordinates\n if (rightSideText.startsWith(\"[number, number] | [number, number][] | [number, number][][]\")) {\n return \"[[1, 2], [3, 4]]\";\n }\n if (type.isStringLiteral()) {\n return type.compilerType.value; // Get the value of the string literal\n }\n if (type.isNumberLiteral()) {\n return parseFloat(type.compilerType.value);\n }\n if (type.isBooleanLiteral()) {\n return type.compilerType.value === \"true\";\n }\n\n if (type.getText() === \"string\") {\n return faker.lorem.word();\n }\n if (type.getText() === \"number\") {\n return faker.number.int();\n }\n if (type.getText() === \"Date\" || type.getText() === \"DateTime\") {\n return \"2023-01-22T15:08:12.527Z\";\n }\n\n if (type.isUnion()) {\n // We'll take the first type in the union for simplicity\n return generateMockFromType(type.getUnionTypes()[0], \"\");\n }\n if (type.isArray()) {\n return [generateMockFromType(type.getArrayElementTypeOrThrow(), \"\")];\n }\n if (type.isObject()) {\n const properties = type.getProperties();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const obj: any = {};\n for (const prop of properties) {\n const declaration = prop.getValueDeclarationOrThrow();\n const propType = declaration.getType();\n if (prop.getName() === \"__typename\") {\n obj[prop.getName()] = propType.getText().replace(/\"/g, \"\");\n } else {\n obj[prop.getName()] = generateMockFromType(propType, declaration.getText());\n }\n }\n return obj;\n }\n return null; // Default\n};\n\n/**\n * Generates React hooks from your graphql files.\n */\nexport const scrubMockFileContent = async (fileContent: string, nxRoot: string, isVerbose?: boolean) => {\n const start = new Date().getTime();\n\n const project = new Project({\n compilerOptions: {\n noUnusedLocals: true,\n noUnusedParameters: true,\n },\n });\n const generatedFile = project.createSourceFile(\"tmpMock.ts\", fileContent);\n const mockThese: TypeAliasDeclaration[] = [];\n\n generatedFile.insertStatements(0, \"/* eslint-disable @typescript-eslint/no-explicit-any */\");\n generatedFile.insertStatements(1, \"/* eslint-disable @typescript-eslint/array-type */\");\n\n generatedFile.getTypeAliases().forEach(node => {\n if (node.getName().endsWith(\"Query\") && node.getName().length > \"Query\".length) {\n mockThese.push(node);\n }\n if (node.getName().endsWith(\"Mutation\") && node.getName().length > \"Mutation\".length) {\n mockThese.push(node);\n }\n });\n\n if (isVerbose) {\n const end = new Date().getTime();\n const time = end - start;\n console.log(\"Mock Execution time: \" + time);\n }\n\n const mock = mockThese.map(mocker => {\n const postFix = (mocker.getName().includes(\"Query\") ? \"Query\" : \"Mutation\").length;\n return `\n \n export const mockFor${mocker.getName()} = (variables: gql.${mocker.getName()}Variables, data?: DeepPartialNullable<gql.${mocker.getName()}> ) => {\n return queryFor(gql.${mocker.getName().substring(0, mocker.getName().length - postFix)}Document, variables, \n mergeDeep(\n ${JSON.stringify(generateMockFromType(mocker.getType(), \"\"), null, 4)}\n , data || {}) as gql.${mocker.getName()}\n );\n }`;\n });\n\n return `\n import { OperationVariables } from \"@apollo/client\";\n import { mergeDeep } from \"@apollo/client/utilities\";\n import { queryFor, DeepPartialNullable } from \"@trackunit/react-core-contexts-test\";\n import * as gql from \"./graphql\";\n \n ${mock.join(\"\\n\")}\n `;\n};\n"]}