typescript-axios string date format - #3423

Merged
macjohnny merged 2 commits into
OpenAPITools:masterfrom
tsiq-jeremy:2745-typescript-date-format
Jul 23, 2019
Merged

typescript-axios string date format#3423
macjohnny merged 2 commits into
OpenAPITools:masterfrom
tsiq-jeremy:2745-typescript-date-format

Conversation

@tsiq-jeremy

@tsiq-jeremytsiq-jeremy commented Jul 22, 2019

Copy link
Copy Markdown
Contributor

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\. If contributing template-only or documentation-only changes which will change sample output, be sure to build the project first.
  • Filed the PR against the correct branch: master, 4.1.x, 5.0.x. Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language.

Description of the PR

@TiFu@taxpon@sebastianhaas@kenisteward@Vrolijkx@macjohnny

Fair warning that I tested this out more thoroughly using swagger-codegen for this PR - swagger-api/swagger-codegen#9594 - but it looks like the same exact issue.

Related to this issue. When using TypeScript Fetch and passing parameters to a "Date" field, they expect a type of "string", but then toISOString() is called on it, which causes the function to fail.

Example json swagger:

"parameters": [
{
"name": "date",
"in": "query",
"type": "string",
"format": "date"
}
]

in In `AbstractTypeScriptClientCodegen.java the Typings map:

typeMapping.put("date", "string");
typeMapping.put("DateTime", "Date");

template issue:

{{#isDate}}
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString();
{{/isDate}}

requestParameters.{{paramName}} can never be a Date, since it has to be a string.

fixes#2745

@macjohnnymacjohnny left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@macjohnny

Copy link
Copy Markdown
Member

@tsiq-jeremy thanks for your PR! can you please re-generate the samples?

Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows. If contributing template-only or documentation-only changes which will change sample output, be sure to build the project first.

@macjohnny

Copy link
Copy Markdown
Member

cc @nicokoenig

@tsiq-jeremy

Copy link
Copy Markdown
ContributorAuthor

Hey I just ran ./bin/typescript-axios-petstore-all.sh and did not see any changes when running git status. I looked through the yaml file it runs against and it has date-time, but no date types.

@macjohnny

Copy link
Copy Markdown
Member

@tsiq-jeremy ok, that's probably because there is no Date-query parameter in the petstore example, so everything is fine.
The CI-failure is unrelated.

@macjohnny
macjohnny merged commit 5775813 into OpenAPITools:masterJul 23, 2019
@macjohnny

Copy link
Copy Markdown
Member

@tsiq-jeremy would you like to fix the same problem in the typescript-fetch generator, i.e. here:

{{#isDateTime}}
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString();
{{/isDateTime}}
{{^isDateTime}}
{{#isDate}}
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString().substr(0,10);
{{/isDate}}

@macjohnnymacjohnny changed the title 2745 typescript date formattypescript-axios string date formatJul 23, 2019
@tsiq-jeremy

Copy link
Copy Markdown
ContributorAuthor

Hey, let me look into that one. I'm not sure if there is a problem with typescript-fetch b/c in modelGeneric.mustache it has FromJSON and ToJSON that are manipulating the date type.

@tsiq-jeremy
tsiq-jeremy deleted the 2745-typescript-date-format branch July 23, 2019 13:52
@macjohnny

Copy link
Copy Markdown
Member

yes, but I think the From/ToJson functions are used for the body, not for the query parameters, so it should be the same situation

@tsiq-jeremy

Copy link
Copy Markdown
ContributorAuthor

Hey I have not tested this out fully, but I think this should not be a problem with typescript-fetch. Used to test:

"parameters": [
{
"name": "date",
"in": "query",
"type": "string",
"format": "date"
}
]

Produced:

exportinterfaceGetOrderByIdRequest{date: Date;}
....asyncgetOrderByIdRaw(requestParameters: GetOrderByIdRequest): Promise<runtime.ApiResponse<Order>>{
....constqueryParameters: runtime.HTTPQuery={};if(requestParameters.date!==undefined){queryParameters['date']=(requestParameters.dateasany).toISOString().substr(0,10);}
...
}

So it looks like that a Date object is getting passed in so that it should not produce an error when calling toISOString.

@macjohnny

Copy link
Copy Markdown
Member

Ok, alright, thanks for checking!

@wing328wing328 added this to the 4.1.0 milestone Jul 24, 2019
@wing328

Copy link
Copy Markdown
Member

@tsiq-jeremy thanks for the PR, which has been included in the 4.1.0 release: https://twitter.com/oas_generator/status/1160000504455319553

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[typescript-axios] toIsoString() with type string

3 participants

@tsiq-jeremy@macjohnny@wing328
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

typescript-axios string date format - #3423

Merged
macjohnny merged 2 commits into
OpenAPITools:masterfrom
tsiq-jeremy:2745-typescript-date-format
Jul 23, 2019
Merged

typescript-axios string date format#3423
macjohnny merged 2 commits into
OpenAPITools:masterfrom
tsiq-jeremy:2745-typescript-date-format

Conversation

@tsiq-jeremy

@tsiq-jeremytsiq-jeremy commented Jul 22, 2019

Copy link
Copy Markdown
Contributor

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\. If contributing template-only or documentation-only changes which will change sample output, be sure to build the project first.
  • Filed the PR against the correct branch: master, 4.1.x, 5.0.x. Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language.

Description of the PR

@TiFu@taxpon@sebastianhaas@kenisteward@Vrolijkx@macjohnny

Fair warning that I tested this out more thoroughly using swagger-codegen for this PR - swagger-api/swagger-codegen#9594 - but it looks like the same exact issue.

Related to this issue. When using TypeScript Fetch and passing parameters to a "Date" field, they expect a type of "string", but then toISOString() is called on it, which causes the function to fail.

Example json swagger:

"parameters": [
{
"name": "date",
"in": "query",
"type": "string",
"format": "date"
}
]

in In `AbstractTypeScriptClientCodegen.java the Typings map:

typeMapping.put("date", "string");
typeMapping.put("DateTime", "Date");

template issue:

{{#isDate}}
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString();
{{/isDate}}

requestParameters.{{paramName}} can never be a Date, since it has to be a string.

fixes#2745

@macjohnnymacjohnny left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@macjohnny

Copy link
Copy Markdown
Member

@tsiq-jeremy thanks for your PR! can you please re-generate the samples?

Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows. If contributing template-only or documentation-only changes which will change sample output, be sure to build the project first.

@macjohnny

Copy link
Copy Markdown
Member

cc @nicokoenig

@tsiq-jeremy

Copy link
Copy Markdown
ContributorAuthor

Hey I just ran ./bin/typescript-axios-petstore-all.sh and did not see any changes when running git status. I looked through the yaml file it runs against and it has date-time, but no date types.

@macjohnny

Copy link
Copy Markdown
Member

@tsiq-jeremy ok, that's probably because there is no Date-query parameter in the petstore example, so everything is fine.
The CI-failure is unrelated.

@macjohnny
macjohnny merged commit 5775813 into OpenAPITools:masterJul 23, 2019
@macjohnny

Copy link
Copy Markdown
Member

@tsiq-jeremy would you like to fix the same problem in the typescript-fetch generator, i.e. here:

{{#isDateTime}}
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString();
{{/isDateTime}}
{{^isDateTime}}
{{#isDate}}
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString().substr(0,10);
{{/isDate}}

@macjohnnymacjohnny changed the title 2745 typescript date formattypescript-axios string date formatJul 23, 2019
@tsiq-jeremy

Copy link
Copy Markdown
ContributorAuthor

Hey, let me look into that one. I'm not sure if there is a problem with typescript-fetch b/c in modelGeneric.mustache it has FromJSON and ToJSON that are manipulating the date type.

@tsiq-jeremy
tsiq-jeremy deleted the 2745-typescript-date-format branch July 23, 2019 13:52
@macjohnny

Copy link
Copy Markdown
Member

yes, but I think the From/ToJson functions are used for the body, not for the query parameters, so it should be the same situation

@tsiq-jeremy

Copy link
Copy Markdown
ContributorAuthor

Hey I have not tested this out fully, but I think this should not be a problem with typescript-fetch. Used to test:

"parameters": [
{
"name": "date",
"in": "query",
"type": "string",
"format": "date"
}
]

Produced:

exportinterfaceGetOrderByIdRequest{date: Date;}
....asyncgetOrderByIdRaw(requestParameters: GetOrderByIdRequest): Promise<runtime.ApiResponse<Order>>{
....constqueryParameters: runtime.HTTPQuery={};if(requestParameters.date!==undefined){queryParameters['date']=(requestParameters.dateasany).toISOString().substr(0,10);}
...
}

So it looks like that a Date object is getting passed in so that it should not produce an error when calling toISOString.

@macjohnny

Copy link
Copy Markdown
Member

Ok, alright, thanks for checking!

@wing328wing328 added this to the 4.1.0 milestone Jul 24, 2019
@wing328

Copy link
Copy Markdown
Member

@tsiq-jeremy thanks for the PR, which has been included in the 4.1.0 release: https://twitter.com/oas_generator/status/1160000504455319553

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[typescript-axios] toIsoString() with type string

3 participants

@tsiq-jeremy@macjohnny@wing328
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

typescript-axios string date format - #3423

Merged
macjohnny merged 2 commits into
OpenAPITools:masterfrom
tsiq-jeremy:2745-typescript-date-format
Jul 23, 2019
Merged

typescript-axios string date format#3423
macjohnny merged 2 commits into
OpenAPITools:masterfrom
tsiq-jeremy:2745-typescript-date-format

Conversation

@tsiq-jeremy

@tsiq-jeremytsiq-jeremy commented Jul 22, 2019

Copy link
Copy Markdown
Contributor

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\. If contributing template-only or documentation-only changes which will change sample output, be sure to build the project first.
  • Filed the PR against the correct branch: master, 4.1.x, 5.0.x. Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language.

Description of the PR

@TiFu@taxpon@sebastianhaas@kenisteward@Vrolijkx@macjohnny

Fair warning that I tested this out more thoroughly using swagger-codegen for this PR - swagger-api/swagger-codegen#9594 - but it looks like the same exact issue.

Related to this issue. When using TypeScript Fetch and passing parameters to a "Date" field, they expect a type of "string", but then toISOString() is called on it, which causes the function to fail.

Example json swagger:

"parameters": [
{
"name": "date",
"in": "query",
"type": "string",
"format": "date"
}
]

in In `AbstractTypeScriptClientCodegen.java the Typings map:

typeMapping.put("date", "string");
typeMapping.put("DateTime", "Date");

template issue:

{{#isDate}}
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString();
{{/isDate}}

requestParameters.{{paramName}} can never be a Date, since it has to be a string.

fixes#2745

@macjohnnymacjohnny left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@macjohnny

Copy link
Copy Markdown
Member

@tsiq-jeremy thanks for your PR! can you please re-generate the samples?

Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows. If contributing template-only or documentation-only changes which will change sample output, be sure to build the project first.

@macjohnny

Copy link
Copy Markdown
Member

cc @nicokoenig

@tsiq-jeremy

Copy link
Copy Markdown
ContributorAuthor

Hey I just ran ./bin/typescript-axios-petstore-all.sh and did not see any changes when running git status. I looked through the yaml file it runs against and it has date-time, but no date types.

@macjohnny

Copy link
Copy Markdown
Member

@tsiq-jeremy ok, that's probably because there is no Date-query parameter in the petstore example, so everything is fine.
The CI-failure is unrelated.

@macjohnny
macjohnny merged commit 5775813 into OpenAPITools:masterJul 23, 2019
@macjohnny

Copy link
Copy Markdown
Member

@tsiq-jeremy would you like to fix the same problem in the typescript-fetch generator, i.e. here:

{{#isDateTime}}
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString();
{{/isDateTime}}
{{^isDateTime}}
{{#isDate}}
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString().substr(0,10);
{{/isDate}}

@macjohnnymacjohnny changed the title 2745 typescript date formattypescript-axios string date formatJul 23, 2019
@tsiq-jeremy

Copy link
Copy Markdown
ContributorAuthor

Hey, let me look into that one. I'm not sure if there is a problem with typescript-fetch b/c in modelGeneric.mustache it has FromJSON and ToJSON that are manipulating the date type.

@tsiq-jeremy
tsiq-jeremy deleted the 2745-typescript-date-format branch July 23, 2019 13:52
@macjohnny

Copy link
Copy Markdown
Member

yes, but I think the From/ToJson functions are used for the body, not for the query parameters, so it should be the same situation

@tsiq-jeremy

Copy link
Copy Markdown
ContributorAuthor

Hey I have not tested this out fully, but I think this should not be a problem with typescript-fetch. Used to test:

"parameters": [
{
"name": "date",
"in": "query",
"type": "string",
"format": "date"
}
]

Produced:

exportinterfaceGetOrderByIdRequest{date: Date;}
....asyncgetOrderByIdRaw(requestParameters: GetOrderByIdRequest): Promise<runtime.ApiResponse<Order>>{
....constqueryParameters: runtime.HTTPQuery={};if(requestParameters.date!==undefined){queryParameters['date']=(requestParameters.dateasany).toISOString().substr(0,10);}
...
}

So it looks like that a Date object is getting passed in so that it should not produce an error when calling toISOString.

@macjohnny

Copy link
Copy Markdown
Member

Ok, alright, thanks for checking!

@wing328wing328 added this to the 4.1.0 milestone Jul 24, 2019
@wing328

Copy link
Copy Markdown
Member

@tsiq-jeremy thanks for the PR, which has been included in the 4.1.0 release: https://twitter.com/oas_generator/status/1160000504455319553

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[typescript-axios] toIsoString() with type string

3 participants

@tsiq-jeremy@macjohnny@wing328
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

typescript-axios string date format - #3423

Merged
macjohnny merged 2 commits into
OpenAPITools:masterfrom
tsiq-jeremy:2745-typescript-date-format
Jul 23, 2019
Merged

typescript-axios string date format#3423
macjohnny merged 2 commits into
OpenAPITools:masterfrom
tsiq-jeremy:2745-typescript-date-format

Conversation

@tsiq-jeremy

@tsiq-jeremytsiq-jeremy commented Jul 22, 2019

Copy link
Copy Markdown
Contributor

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\. If contributing template-only or documentation-only changes which will change sample output, be sure to build the project first.
  • Filed the PR against the correct branch: master, 4.1.x, 5.0.x. Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language.

Description of the PR

@TiFu@taxpon@sebastianhaas@kenisteward@Vrolijkx@macjohnny

Fair warning that I tested this out more thoroughly using swagger-codegen for this PR - swagger-api/swagger-codegen#9594 - but it looks like the same exact issue.

Related to this issue. When using TypeScript Fetch and passing parameters to a "Date" field, they expect a type of "string", but then toISOString() is called on it, which causes the function to fail.

Example json swagger:

"parameters": [
{
"name": "date",
"in": "query",
"type": "string",
"format": "date"
}
]

in In `AbstractTypeScriptClientCodegen.java the Typings map:

typeMapping.put("date", "string");
typeMapping.put("DateTime", "Date");

template issue:

{{#isDate}}
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString();
{{/isDate}}

requestParameters.{{paramName}} can never be a Date, since it has to be a string.

fixes#2745

@macjohnnymacjohnny left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@macjohnny

Copy link
Copy Markdown
Member

@tsiq-jeremy thanks for your PR! can you please re-generate the samples?

Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows. If contributing template-only or documentation-only changes which will change sample output, be sure to build the project first.

@macjohnny

Copy link
Copy Markdown
Member

cc @nicokoenig

@tsiq-jeremy

Copy link
Copy Markdown
ContributorAuthor

Hey I just ran ./bin/typescript-axios-petstore-all.sh and did not see any changes when running git status. I looked through the yaml file it runs against and it has date-time, but no date types.

@macjohnny

Copy link
Copy Markdown
Member

@tsiq-jeremy ok, that's probably because there is no Date-query parameter in the petstore example, so everything is fine.
The CI-failure is unrelated.

@macjohnny
macjohnny merged commit 5775813 into OpenAPITools:masterJul 23, 2019
@macjohnny

Copy link
Copy Markdown
Member

@tsiq-jeremy would you like to fix the same problem in the typescript-fetch generator, i.e. here:

{{#isDateTime}}
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString();
{{/isDateTime}}
{{^isDateTime}}
{{#isDate}}
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString().substr(0,10);
{{/isDate}}

@macjohnnymacjohnny changed the title 2745 typescript date formattypescript-axios string date formatJul 23, 2019
@tsiq-jeremy

Copy link
Copy Markdown
ContributorAuthor

Hey, let me look into that one. I'm not sure if there is a problem with typescript-fetch b/c in modelGeneric.mustache it has FromJSON and ToJSON that are manipulating the date type.

@tsiq-jeremy
tsiq-jeremy deleted the 2745-typescript-date-format branch July 23, 2019 13:52
@macjohnny

Copy link
Copy Markdown
Member

yes, but I think the From/ToJson functions are used for the body, not for the query parameters, so it should be the same situation

@tsiq-jeremy

Copy link
Copy Markdown
ContributorAuthor

Hey I have not tested this out fully, but I think this should not be a problem with typescript-fetch. Used to test:

"parameters": [
{
"name": "date",
"in": "query",
"type": "string",
"format": "date"
}
]

Produced:

exportinterfaceGetOrderByIdRequest{date: Date;}
....asyncgetOrderByIdRaw(requestParameters: GetOrderByIdRequest): Promise<runtime.ApiResponse<Order>>{
....constqueryParameters: runtime.HTTPQuery={};if(requestParameters.date!==undefined){queryParameters['date']=(requestParameters.dateasany).toISOString().substr(0,10);}
...
}

So it looks like that a Date object is getting passed in so that it should not produce an error when calling toISOString.

@macjohnny

Copy link
Copy Markdown
Member

Ok, alright, thanks for checking!

@wing328wing328 added this to the 4.1.0 milestone Jul 24, 2019
@wing328

Copy link
Copy Markdown
Member

@tsiq-jeremy thanks for the PR, which has been included in the 4.1.0 release: https://twitter.com/oas_generator/status/1160000504455319553

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[typescript-axios] toIsoString() with type string

3 participants

@tsiq-jeremy@macjohnny@wing328
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

typescript-axios string date format - #3423

Merged
macjohnny merged 2 commits into
OpenAPITools:masterfrom
tsiq-jeremy:2745-typescript-date-format
Jul 23, 2019
Merged

typescript-axios string date format#3423
macjohnny merged 2 commits into
OpenAPITools:masterfrom
tsiq-jeremy:2745-typescript-date-format

Conversation

@tsiq-jeremy

@tsiq-jeremytsiq-jeremy commented Jul 22, 2019

Copy link
Copy Markdown
Contributor

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\. If contributing template-only or documentation-only changes which will change sample output, be sure to build the project first.
  • Filed the PR against the correct branch: master, 4.1.x, 5.0.x. Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language.

Description of the PR

@TiFu@taxpon@sebastianhaas@kenisteward@Vrolijkx@macjohnny

Fair warning that I tested this out more thoroughly using swagger-codegen for this PR - swagger-api/swagger-codegen#9594 - but it looks like the same exact issue.

Related to this issue. When using TypeScript Fetch and passing parameters to a "Date" field, they expect a type of "string", but then toISOString() is called on it, which causes the function to fail.

Example json swagger:

"parameters": [
{
"name": "date",
"in": "query",
"type": "string",
"format": "date"
}
]

in In `AbstractTypeScriptClientCodegen.java the Typings map:

typeMapping.put("date", "string");
typeMapping.put("DateTime", "Date");

template issue:

{{#isDate}}
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString();
{{/isDate}}

requestParameters.{{paramName}} can never be a Date, since it has to be a string.

fixes#2745

@macjohnnymacjohnny left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@macjohnny

Copy link
Copy Markdown
Member

@tsiq-jeremy thanks for your PR! can you please re-generate the samples?

Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows. If contributing template-only or documentation-only changes which will change sample output, be sure to build the project first.

@macjohnny

Copy link
Copy Markdown
Member

cc @nicokoenig

@tsiq-jeremy

Copy link
Copy Markdown
ContributorAuthor

Hey I just ran ./bin/typescript-axios-petstore-all.sh and did not see any changes when running git status. I looked through the yaml file it runs against and it has date-time, but no date types.

@macjohnny

Copy link
Copy Markdown
Member

@tsiq-jeremy ok, that's probably because there is no Date-query parameter in the petstore example, so everything is fine.
The CI-failure is unrelated.

@macjohnny
macjohnny merged commit 5775813 into OpenAPITools:masterJul 23, 2019
@macjohnny

Copy link
Copy Markdown
Member

@tsiq-jeremy would you like to fix the same problem in the typescript-fetch generator, i.e. here:

{{#isDateTime}}
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString();
{{/isDateTime}}
{{^isDateTime}}
{{#isDate}}
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString().substr(0,10);
{{/isDate}}

@macjohnnymacjohnny changed the title 2745 typescript date formattypescript-axios string date formatJul 23, 2019
@tsiq-jeremy

Copy link
Copy Markdown
ContributorAuthor

Hey, let me look into that one. I'm not sure if there is a problem with typescript-fetch b/c in modelGeneric.mustache it has FromJSON and ToJSON that are manipulating the date type.

@tsiq-jeremy
tsiq-jeremy deleted the 2745-typescript-date-format branch July 23, 2019 13:52
@macjohnny

Copy link
Copy Markdown
Member

yes, but I think the From/ToJson functions are used for the body, not for the query parameters, so it should be the same situation

@tsiq-jeremy

Copy link
Copy Markdown
ContributorAuthor

Hey I have not tested this out fully, but I think this should not be a problem with typescript-fetch. Used to test:

"parameters": [
{
"name": "date",
"in": "query",
"type": "string",
"format": "date"
}
]

Produced:

exportinterfaceGetOrderByIdRequest{date: Date;}
....asyncgetOrderByIdRaw(requestParameters: GetOrderByIdRequest): Promise<runtime.ApiResponse<Order>>{
....constqueryParameters: runtime.HTTPQuery={};if(requestParameters.date!==undefined){queryParameters['date']=(requestParameters.dateasany).toISOString().substr(0,10);}
...
}

So it looks like that a Date object is getting passed in so that it should not produce an error when calling toISOString.

@macjohnny

Copy link
Copy Markdown
Member

Ok, alright, thanks for checking!

@wing328wing328 added this to the 4.1.0 milestone Jul 24, 2019
@wing328

Copy link
Copy Markdown
Member

@tsiq-jeremy thanks for the PR, which has been included in the 4.1.0 release: https://twitter.com/oas_generator/status/1160000504455319553

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[typescript-axios] toIsoString() with type string

3 participants

@tsiq-jeremy@macjohnny@wing328
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

typescript-axios string date format - #3423

Merged
macjohnny merged 2 commits into
OpenAPITools:masterfrom
tsiq-jeremy:2745-typescript-date-format
Jul 23, 2019
Merged

typescript-axios string date format#3423
macjohnny merged 2 commits into
OpenAPITools:masterfrom
tsiq-jeremy:2745-typescript-date-format

Conversation

@tsiq-jeremy

@tsiq-jeremytsiq-jeremy commented Jul 22, 2019

Copy link
Copy Markdown
Contributor

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\. If contributing template-only or documentation-only changes which will change sample output, be sure to build the project first.
  • Filed the PR against the correct branch: master, 4.1.x, 5.0.x. Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language.

Description of the PR

@TiFu@taxpon@sebastianhaas@kenisteward@Vrolijkx@macjohnny

Fair warning that I tested this out more thoroughly using swagger-codegen for this PR - swagger-api/swagger-codegen#9594 - but it looks like the same exact issue.

Related to this issue. When using TypeScript Fetch and passing parameters to a "Date" field, they expect a type of "string", but then toISOString() is called on it, which causes the function to fail.

Example json swagger:

"parameters": [
{
"name": "date",
"in": "query",
"type": "string",
"format": "date"
}
]

in In `AbstractTypeScriptClientCodegen.java the Typings map:

typeMapping.put("date", "string");
typeMapping.put("DateTime", "Date");

template issue:

{{#isDate}}
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString();
{{/isDate}}

requestParameters.{{paramName}} can never be a Date, since it has to be a string.

fixes#2745

@macjohnnymacjohnny left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@macjohnny

Copy link
Copy Markdown
Member

@tsiq-jeremy thanks for your PR! can you please re-generate the samples?

Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows. If contributing template-only or documentation-only changes which will change sample output, be sure to build the project first.

@macjohnny

Copy link
Copy Markdown
Member

cc @nicokoenig

@tsiq-jeremy

Copy link
Copy Markdown
ContributorAuthor

Hey I just ran ./bin/typescript-axios-petstore-all.sh and did not see any changes when running git status. I looked through the yaml file it runs against and it has date-time, but no date types.

@macjohnny

Copy link
Copy Markdown
Member

@tsiq-jeremy ok, that's probably because there is no Date-query parameter in the petstore example, so everything is fine.
The CI-failure is unrelated.

@macjohnny
macjohnny merged commit 5775813 into OpenAPITools:masterJul 23, 2019
@macjohnny

Copy link
Copy Markdown
Member

@tsiq-jeremy would you like to fix the same problem in the typescript-fetch generator, i.e. here:

{{#isDateTime}}
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString();
{{/isDateTime}}
{{^isDateTime}}
{{#isDate}}
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString().substr(0,10);
{{/isDate}}

@macjohnnymacjohnny changed the title 2745 typescript date formattypescript-axios string date formatJul 23, 2019
@tsiq-jeremy

Copy link
Copy Markdown
ContributorAuthor

Hey, let me look into that one. I'm not sure if there is a problem with typescript-fetch b/c in modelGeneric.mustache it has FromJSON and ToJSON that are manipulating the date type.

@tsiq-jeremy
tsiq-jeremy deleted the 2745-typescript-date-format branch July 23, 2019 13:52
@macjohnny

Copy link
Copy Markdown
Member

yes, but I think the From/ToJson functions are used for the body, not for the query parameters, so it should be the same situation

@tsiq-jeremy

Copy link
Copy Markdown
ContributorAuthor

Hey I have not tested this out fully, but I think this should not be a problem with typescript-fetch. Used to test:

"parameters": [
{
"name": "date",
"in": "query",
"type": "string",
"format": "date"
}
]

Produced:

exportinterfaceGetOrderByIdRequest{date: Date;}
....asyncgetOrderByIdRaw(requestParameters: GetOrderByIdRequest): Promise<runtime.ApiResponse<Order>>{
....constqueryParameters: runtime.HTTPQuery={};if(requestParameters.date!==undefined){queryParameters['date']=(requestParameters.dateasany).toISOString().substr(0,10);}
...
}

So it looks like that a Date object is getting passed in so that it should not produce an error when calling toISOString.

@macjohnny

Copy link
Copy Markdown
Member

Ok, alright, thanks for checking!

@wing328wing328 added this to the 4.1.0 milestone Jul 24, 2019
@wing328

Copy link
Copy Markdown
Member

@tsiq-jeremy thanks for the PR, which has been included in the 4.1.0 release: https://twitter.com/oas_generator/status/1160000504455319553

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[typescript-axios] toIsoString() with type string

3 participants

@tsiq-jeremy@macjohnny@wing328
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

typescript-axios string date format - #3423

Merged
macjohnny merged 2 commits into
OpenAPITools:masterfrom
tsiq-jeremy:2745-typescript-date-format
Jul 23, 2019
Merged

typescript-axios string date format#3423
macjohnny merged 2 commits into
OpenAPITools:masterfrom
tsiq-jeremy:2745-typescript-date-format

Conversation

@tsiq-jeremy

@tsiq-jeremytsiq-jeremy commented Jul 22, 2019

Copy link
Copy Markdown
Contributor

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\. If contributing template-only or documentation-only changes which will change sample output, be sure to build the project first.
  • Filed the PR against the correct branch: master, 4.1.x, 5.0.x. Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language.

Description of the PR

@TiFu@taxpon@sebastianhaas@kenisteward@Vrolijkx@macjohnny

Fair warning that I tested this out more thoroughly using swagger-codegen for this PR - swagger-api/swagger-codegen#9594 - but it looks like the same exact issue.

Related to this issue. When using TypeScript Fetch and passing parameters to a "Date" field, they expect a type of "string", but then toISOString() is called on it, which causes the function to fail.

Example json swagger:

"parameters": [
{
"name": "date",
"in": "query",
"type": "string",
"format": "date"
}
]

in In `AbstractTypeScriptClientCodegen.java the Typings map:

typeMapping.put("date", "string");
typeMapping.put("DateTime", "Date");

template issue:

{{#isDate}}
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString();
{{/isDate}}

requestParameters.{{paramName}} can never be a Date, since it has to be a string.

fixes#2745

@macjohnnymacjohnny left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@macjohnny

Copy link
Copy Markdown
Member

@tsiq-jeremy thanks for your PR! can you please re-generate the samples?

Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows. If contributing template-only or documentation-only changes which will change sample output, be sure to build the project first.

@macjohnny

Copy link
Copy Markdown
Member

cc @nicokoenig

@tsiq-jeremy

Copy link
Copy Markdown
ContributorAuthor

Hey I just ran ./bin/typescript-axios-petstore-all.sh and did not see any changes when running git status. I looked through the yaml file it runs against and it has date-time, but no date types.

@macjohnny

Copy link
Copy Markdown
Member

@tsiq-jeremy ok, that's probably because there is no Date-query parameter in the petstore example, so everything is fine.
The CI-failure is unrelated.

@macjohnny
macjohnny merged commit 5775813 into OpenAPITools:masterJul 23, 2019
@macjohnny

Copy link
Copy Markdown
Member

@tsiq-jeremy would you like to fix the same problem in the typescript-fetch generator, i.e. here:

{{#isDateTime}}
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString();
{{/isDateTime}}
{{^isDateTime}}
{{#isDate}}
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString().substr(0,10);
{{/isDate}}

@macjohnnymacjohnny changed the title 2745 typescript date formattypescript-axios string date formatJul 23, 2019
@tsiq-jeremy

Copy link
Copy Markdown
ContributorAuthor

Hey, let me look into that one. I'm not sure if there is a problem with typescript-fetch b/c in modelGeneric.mustache it has FromJSON and ToJSON that are manipulating the date type.

@tsiq-jeremy
tsiq-jeremy deleted the 2745-typescript-date-format branch July 23, 2019 13:52
@macjohnny

Copy link
Copy Markdown
Member

yes, but I think the From/ToJson functions are used for the body, not for the query parameters, so it should be the same situation

@tsiq-jeremy

Copy link
Copy Markdown
ContributorAuthor

Hey I have not tested this out fully, but I think this should not be a problem with typescript-fetch. Used to test:

"parameters": [
{
"name": "date",
"in": "query",
"type": "string",
"format": "date"
}
]

Produced:

exportinterfaceGetOrderByIdRequest{date: Date;}
....asyncgetOrderByIdRaw(requestParameters: GetOrderByIdRequest): Promise<runtime.ApiResponse<Order>>{
....constqueryParameters: runtime.HTTPQuery={};if(requestParameters.date!==undefined){queryParameters['date']=(requestParameters.dateasany).toISOString().substr(0,10);}
...
}

So it looks like that a Date object is getting passed in so that it should not produce an error when calling toISOString.

@macjohnny

Copy link
Copy Markdown
Member

Ok, alright, thanks for checking!

@wing328wing328 added this to the 4.1.0 milestone Jul 24, 2019
@wing328

Copy link
Copy Markdown
Member

@tsiq-jeremy thanks for the PR, which has been included in the 4.1.0 release: https://twitter.com/oas_generator/status/1160000504455319553

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[typescript-axios] toIsoString() with type string

3 participants

@tsiq-jeremy@macjohnny@wing328
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

typescript-axios string date format - #3423

Merged
macjohnny merged 2 commits into
OpenAPITools:masterfrom
tsiq-jeremy:2745-typescript-date-format
Jul 23, 2019
Merged

typescript-axios string date format#3423
macjohnny merged 2 commits into
OpenAPITools:masterfrom
tsiq-jeremy:2745-typescript-date-format

Conversation

@tsiq-jeremy

@tsiq-jeremytsiq-jeremy commented Jul 22, 2019

Copy link
Copy Markdown
Contributor

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\. If contributing template-only or documentation-only changes which will change sample output, be sure to build the project first.
  • Filed the PR against the correct branch: master, 4.1.x, 5.0.x. Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language.

Description of the PR

@TiFu@taxpon@sebastianhaas@kenisteward@Vrolijkx@macjohnny

Fair warning that I tested this out more thoroughly using swagger-codegen for this PR - swagger-api/swagger-codegen#9594 - but it looks like the same exact issue.

Related to this issue. When using TypeScript Fetch and passing parameters to a "Date" field, they expect a type of "string", but then toISOString() is called on it, which causes the function to fail.

Example json swagger:

"parameters": [
{
"name": "date",
"in": "query",
"type": "string",
"format": "date"
}
]

in In `AbstractTypeScriptClientCodegen.java the Typings map:

typeMapping.put("date", "string");
typeMapping.put("DateTime", "Date");

template issue:

{{#isDate}}
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString();
{{/isDate}}

requestParameters.{{paramName}} can never be a Date, since it has to be a string.

fixes#2745

@macjohnnymacjohnny left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@macjohnny

Copy link
Copy Markdown
Member

@tsiq-jeremy thanks for your PR! can you please re-generate the samples?

Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows. If contributing template-only or documentation-only changes which will change sample output, be sure to build the project first.

@macjohnny

Copy link
Copy Markdown
Member

cc @nicokoenig

@tsiq-jeremy

Copy link
Copy Markdown
ContributorAuthor

Hey I just ran ./bin/typescript-axios-petstore-all.sh and did not see any changes when running git status. I looked through the yaml file it runs against and it has date-time, but no date types.

@macjohnny

Copy link
Copy Markdown
Member

@tsiq-jeremy ok, that's probably because there is no Date-query parameter in the petstore example, so everything is fine.
The CI-failure is unrelated.

@macjohnny
macjohnny merged commit 5775813 into OpenAPITools:masterJul 23, 2019
@macjohnny

Copy link
Copy Markdown
Member

@tsiq-jeremy would you like to fix the same problem in the typescript-fetch generator, i.e. here:

{{#isDateTime}}
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString();
{{/isDateTime}}
{{^isDateTime}}
{{#isDate}}
queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString().substr(0,10);
{{/isDate}}

@macjohnnymacjohnny changed the title 2745 typescript date formattypescript-axios string date formatJul 23, 2019
@tsiq-jeremy

Copy link
Copy Markdown
ContributorAuthor

Hey, let me look into that one. I'm not sure if there is a problem with typescript-fetch b/c in modelGeneric.mustache it has FromJSON and ToJSON that are manipulating the date type.

@tsiq-jeremy
tsiq-jeremy deleted the 2745-typescript-date-format branch July 23, 2019 13:52
@macjohnny

Copy link
Copy Markdown
Member

yes, but I think the From/ToJson functions are used for the body, not for the query parameters, so it should be the same situation

@tsiq-jeremy

Copy link
Copy Markdown
ContributorAuthor

Hey I have not tested this out fully, but I think this should not be a problem with typescript-fetch. Used to test:

"parameters": [
{
"name": "date",
"in": "query",
"type": "string",
"format": "date"
}
]

Produced:

exportinterfaceGetOrderByIdRequest{date: Date;}
....asyncgetOrderByIdRaw(requestParameters: GetOrderByIdRequest): Promise<runtime.ApiResponse<Order>>{
....constqueryParameters: runtime.HTTPQuery={};if(requestParameters.date!==undefined){queryParameters['date']=(requestParameters.dateasany).toISOString().substr(0,10);}
...
}

So it looks like that a Date object is getting passed in so that it should not produce an error when calling toISOString.

@macjohnny

Copy link
Copy Markdown
Member

Ok, alright, thanks for checking!

@wing328wing328 added this to the 4.1.0 milestone Jul 24, 2019
@wing328

Copy link
Copy Markdown
Member

@tsiq-jeremy thanks for the PR, which has been included in the 4.1.0 release: https://twitter.com/oas_generator/status/1160000504455319553

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[typescript-axios] toIsoString() with type string

3 participants

@tsiq-jeremy@macjohnny@wing328