Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bug - fieldnames which match typescript keywords cause error #5199

Open
4 tasks
cmcconomyfwig opened this issue Mar 3, 2023 · 0 comments
Open
4 tasks

Bug - fieldnames which match typescript keywords cause error #5199

cmcconomyfwig opened this issue Mar 3, 2023 · 0 comments

Comments

@cmcconomyfwig
Copy link

Issue workflow progress

Progress of the issue based on the
Contributor Workflow

Make sure to fork this template and run yarn generate in the terminal.

Please make sure Mesh package versions under package.json matches yours.

  • 2. A failing test has been provided
  • 3. A local solution has been provided
  • 4. A pull request is pending review

Describe the bug

I performed a yarn mesh build against a Microsoft Dynamics endpoint, which succeeded without complaint.
However, upon running yarn mesh start, an error is observed (included at the end of this bug report).

I believe the root cause is that one of the 'tables' in Dynamics is named "Import", which clashes with the typescript 'import' keyword.

To Reproduce Steps to reproduce the behavior:

I can't provide authentication against our instance, but the yml looks like this:

sources:
  - name: Microsoft Graph
    handler:
      odata:
        endpoint: https://<instance>.crm.dynamics.com/api/data/v9.2/
        batch: multipart
        expandNavProps: true
        operationHeaders:
          Authorization: Bearer <token>
        schemaHeaders: 
          Authorization: Bearer <token>

Expected behavior

yarn mesh start doesn't fail.
Some suggestions:

  1. ignore any typescript keyword during import parsing
  2. replace any keyword-conflicting field with "keyword_" or something similar

I found a comprehensive list of typescript keywords, which is:

['abstract',	'arguments',	'await',	'boolean',
    'break',	'byte',	'case',	'catch',
    'char',	'class',	'const',	'continue',
    'debugger',	'default',	'delete',	'do',
    'double',	'else',	'enum',	'eval',
    'export',	'extends',	'false',	'final',
    'finally',	'float',	'for',	'function',
    'goto',	'if',	'implements',	'import',
    'in',	'instanceof',	'int',	'interface',
    'let',	'long',	'native',	'new',
    'null',	'package',	'private',	'protected',
    'public',	'return',	'short',	'static',
    'super',	'switch',	'synchronized',	'this',
    'throw',	'throws',	'transient',	'true',
    'try',	'typeof',	'var',	'void',
    'volatile',	'while',	'with',	'yield']

Environment:

  • OS: MacOS
  • "@graphql-mesh/cli": "^0.82.23"
  • "@graphql-mesh/odata": "^0.22.13"
  • NodeJS: v16.14.0

Additional context

The error trace encountered is as follows:

💥 🕸️  Mesh TSError: ⨯ Unable to compile TypeScript:
.mesh/index.ts:1774:43 - error TS1005: '(' expected.
1774   owner_imports?: Maybe<Array<Maybe<import>>>;
                                               ~
.mesh/index.ts:1775:35 - error TS1005: '(' expected.
1775   owner_importsById?: Maybe<import>;
                                       ~
.mesh/index.ts:26903:35 - error TS1005: '(' expected.
26903   regardingobjectid_import: import;
                                        ~
.mesh/index.ts:31156:35 - error TS1005: '(' expected.
31156   regardingobjectid_import: import;
                                        ~
.mesh/index.ts:33457:50 - error TS1005: '(' expected.
33457   BusinessUnit_Imports?: Maybe<Array<Maybe<import>>>;
                                                       ~
.mesh/index.ts:33458:42 - error TS1005: '(' expected.
33458   BusinessUnit_ImportsById?: Maybe<import>;
                                               ~
.mesh/index.ts:64463:19 - error TS1005: '(' expected.
64463   importid: import;
                        ~
.mesh/index.ts:64851:1 - error TS1128: Declaration or statement expected.
64851 export type import = crmbaseentity & {
      ~~~~~~
.mesh/index.ts:64851:13 - error TS2457: Type alias name cannot be 'import'.
64851 export type import = crmbaseentity & {
                  ~~~~~~
.mesh/index.ts:64851:20 - error TS1128: Declaration or statement expected.
64851 export type import = crmbaseentity & {
                         ~
.mesh/index.ts:64852:47 - error TS1005: ',' expected.
64852   sendnotification?: Maybe<Scalars['Boolean']>;
                                                    ~
.mesh/index.ts:64853:37 - error TS1005: ',' expected.
64853   statuscode?: Maybe<Scalars['Int']>;
                                          ~
.mesh/index.ts:64854:45 - error TS1005: ',' expected.
64854   _modifiedby_value?: Maybe<Scalars['GUID']>;
                                                  ~
.mesh/index.ts:64855:42 - error TS1005: ',' expected.
64855   modifiedon?: Maybe<Scalars['DateTime']>;
                                               ~
.mesh/index.ts:64856:42 - error TS1005: ',' expected.
64856   emailaddress?: Maybe<Scalars['String']>;
                                               ~
.mesh/index.ts:64857:36 - error TS1005: ',' expected.
64857   statecode?: Maybe<Scalars['Int']>;
                                         ~
.mesh/index.ts:64858:53 - error TS1005: ',' expected.
64858   _modifiedonbehalfby_value?: Maybe<Scalars['GUID']>;
                                                          ~
.mesh/index.ts:64859:53 - error TS1005: ',' expected.
64859   _owningbusinessunit_value?: Maybe<Scalars['GUID']>;
                                                          ~
.mesh/index.ts:64860:35 - error TS1005: ',' expected.
64860   sequence?: Maybe<Scalars['Int']>;
                                        ~
.mesh/index.ts:64861:42 - error TS1005: ',' expected.
64861   _ownerid_value?: Maybe<Scalars['GUID']>;
                                               ~
.mesh/index.ts:64862:52 - error TS1005: ',' expected.
64862   _createdonbehalfby_value?: Maybe<Scalars['GUID']>;
                                                         ~
.mesh/index.ts:64863:45 - error TS1005: ',' expected.
64863   _owninguser_value?: Maybe<Scalars['GUID']>;
                                                  ~
.mesh/index.ts:64864:41 - error TS1005: ',' expected.
64864   createdon?: Maybe<Scalars['DateTime']>;
                                              ~
.mesh/index.ts:64865:35 - error TS1005: ',' expected.
64865   modecode?: Maybe<Scalars['Int']>;
                                        ~
.mesh/index.ts:64866:36 - error TS1005: ',' expected.
64866   importid?: Maybe<Scalars['GUID']>;
                                         ~
.mesh/index.ts:64867:45 - error TS1005: ',' expected.
64867   _owningteam_value?: Maybe<Scalars['GUID']>;
                                                  ~
.mesh/index.ts:64868:44 - error TS1005: ',' expected.
64868   _createdby_value?: Maybe<Scalars['GUID']>;
                                                 ~
.mesh/index.ts:64869:34 - error TS1005: ',' expected.
64869   name?: Maybe<Scalars['String']>;
                                       ~
.mesh/index.ts:64870:24 - error TS1005: ',' expected.
64870   createdby: systemuser;
                             ~
.mesh/index.ts:64871:19 - error TS1005: ',' expected.
64871   owningteam: team;
                        ~
.mesh/index.ts:64872:25 - error TS1005: ',' expected.
64872   owninguser: systemuser;
                              ~
.mesh/index.ts:64873:32 - error TS1005: ',' expected.
64873   createdonbehalfby: systemuser;
                                     ~
.mesh/index.ts:64874:54 - error TS1005: ',' expected.
64874   Import_ImportFile?: Maybe<Array<Maybe<importfile>>>;
                                                           ~
.mesh/index.ts:64875:44 - error TS1005: ',' expected.
64875   Import_ImportFileById?: Maybe<importfile>;
                                                 ~
.mesh/index.ts:64876:21 - error TS1005: ',' expected.
64876   ownerid: principal;
                          ~
.mesh/index.ts:64877:33 - error TS1005: ',' expected.
64877   modifiedonbehalfby: systemuser;
                                      ~
.mesh/index.ts:64878:69 - error TS1005: ',' expected.
64878   Import_BulkDeleteFailures?: Maybe<Array<Maybe<bulkdeletefailure>>>;
                                                                          ~
.mesh/index.ts:64879:59 - error TS1005: ',' expected.
64879   Import_BulkDeleteFailuresById?: Maybe<bulkdeletefailure>;
                                                                ~
.mesh/index.ts:64880:35 - error TS1005: ',' expected.
64880   owningbusinessunit: businessunit;
                                        ~
.mesh/index.ts:64881:25 - error TS1005: ',' expected.
64881   modifiedby: systemuser;
                              ~
.mesh/index.ts:64882:63 - error TS1005: ',' expected.
64882   Import_AsyncOperations?: Maybe<Array<Maybe<asyncoperation>>>;
                                                                    ~
.mesh/index.ts:64883:53 - error TS1005: ',' expected.
64883   Import_AsyncOperationsById?: Maybe<asyncoperation>;
                                                          ~
.mesh/index.ts:64884:47 - error TS1005: ',' expected.
64884   ImportRecordsImport?: Maybe<Scalars['JSON']>;
                                                    ~
.mesh/index.ts:64885:39 - error TS1005: ',' expected.
64885   ParseImport?: Maybe<Scalars['JSON']>;
                                            ~
.mesh/index.ts:64886:32 - error TS1005: ',' expected.
64886   rest?: Maybe<Scalars['JSON']>;
                                     ~
.mesh/index.ts:174448:43 - error TS1005: '(' expected.
174448   owner_imports?: Maybe<Array<Maybe<import>>>;
                                                 ~
.mesh/index.ts:174449:35 - error TS1005: '(' expected.
174449   owner_importsById?: Maybe<import>;
                                         ~
.mesh/index.ts:206815:53 - error TS1005: '(' expected.
206815   lk_importbase_createdby?: Maybe<Array<Maybe<import>>>;
                                                           ~
.mesh/index.ts:206816:45 - error TS1005: '(' expected.
206816   lk_importbase_createdbyById?: Maybe<import>;
                                                   ~
.mesh/index.ts:207209:48 - error TS1005: '(' expected.
207209   SystemUser_Imports?: Maybe<Array<Maybe<import>>>;
                                                      ~
.mesh/index.ts:207210:40 - error TS1005: '(' expected.
207210   SystemUser_ImportsById?: Maybe<import>;
                                              ~
.mesh/index.ts:207471:57 - error TS1005: '(' expected.
207471   lk_import_createdonbehalfby?: Maybe<Array<Maybe<import>>>;
                                                               ~
.mesh/index.ts:207472:49 - error TS1005: '(' expected.
207472   lk_import_createdonbehalfbyById?: Maybe<import>;
                                                       ~
.mesh/index.ts:207672:58 - error TS1005: '(' expected.
207672   lk_import_modifiedonbehalfby?: Maybe<Array<Maybe<import>>>;
                                                                ~
.mesh/index.ts:207673:50 - error TS1005: '(' expected.
207673   lk_import_modifiedonbehalfbyById?: Maybe<import>;
                                                        ~
.mesh/index.ts:207849:54 - error TS1005: '(' expected.
207849   lk_importbase_modifiedby?: Maybe<Array<Maybe<import>>>;
                                                            ~
.mesh/index.ts:207850:46 - error TS1005: '(' expected.
207850   lk_importbase_modifiedbyById?: Maybe<import>;
                                                    ~
.mesh/index.ts:214644:43 - error TS1005: '(' expected.
214644   owner_imports?: Maybe<Array<Maybe<import>>>;
                                                 ~
.mesh/index.ts:214645:35 - error TS1005: '(' expected.
214645   owner_importsById?: Maybe<import>;
                                         ~
.mesh/index.ts:261820:42 - error TS1005: '(' expected.
261820   team_Imports?: Maybe<Array<Maybe<import>>>;
                                                ~
.mesh/index.ts:261821:34 - error TS1005: '(' expected.
261821   team_ImportsById?: Maybe<import>;
                                        ~
.mesh/index.ts:263011:43 - error TS1005: '(' expected.
263011   owner_imports?: Maybe<Array<Maybe<import>>>;
                                                 ~
.mesh/index.ts:263012:35 - error TS1005: '(' expected.
263012   owner_importsById?: Maybe<import>;
                                         ~
.mesh/index.ts:289051:37 - error TS1005: '(' expected.
289051   imports?: Maybe<Array<Maybe<import>>>;
                                           ~
.mesh/index.ts:289052:35 - error TS1005: '(' expected.
289052   importsByimportid?: Maybe<import>;
                                         ~
.mesh/index.ts:309728:37 - error TS1005: '(' expected.
309728   imports?: Maybe<Array<Maybe<import>>>;
                                           ~
.mesh/index.ts:309729:35 - error TS1005: '(' expected.
309729   importsByimportid?: Maybe<import>;
                                         ~
.mesh/index.ts:309730:31 - error TS1005: '(' expected.
309730   createimports?: Maybe<import>;
                                     ~
.mesh/index.ts:309732:41 - error TS1005: '(' expected.
309732   updateimportsByimportid?: Maybe<import>;
                                               ~
.mesh/index.ts:402045:37 - error TS1005: '(' expected.
402045   import: ResolverTypeWrapper<import>;
                                           ~
.mesh/index.ts:406070:17 - error TS1005: '(' expected.
406070   import: import;
                       ~

    at createTSError (/Users/cmcconomy/dev/test/graphql-mesh-example/node_modules/ts-node/src/index.ts:859:12)
    at reportTSError (/Users/cmcconomy/dev/test/graphql-mesh-example/node_modules/ts-node/src/index.ts:863:19)
    at /Users/cmcconomy/dev/test/graphql-mesh-example/node_modules/ts-node/src/index.ts:1379:34
    at Object.compile (/Users/cmcconomy/dev/test/graphql-mesh-example/node_modules/ts-node/src/index.ts:1458:13)
    at Module.m._compile (/Users/cmcconomy/dev/test/graphql-mesh-example/node_modules/ts-node/src/index.ts:1617:30)
    at Module._extensions..js (node:internal/modules/cjs/loader:1155:10)
    at Object.require.extensions.<computed> [as .ts] (/Users/cmcconomy/dev/test/graphql-mesh-example/node_modules/ts-node/src/index.ts:1621:12)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
error Command failed with exit code 1.

This was referenced Apr 30, 2024
This was referenced May 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant