<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Wed Feb 07 22:35:27 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[COMPASS-4161] MongoDB.tmLanguage: Single source of truth for syntax highlighting</title>
                <link>https://jira.mongodb.org/browse/COMPASS-4161</link>
                <project id="13182" key="COMPASS">Compass </project>
                    <description>&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;In VSCODE-23, we&apos;re taking the fast path. In the future, let&apos;s work out a unified solution for VSCODE, MONGOSH, and COMPASS. Notes/ideas below.&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;&lt;a name=&quot;Notes&quot;&gt;&lt;/a&gt;Notes&lt;/h4&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;All of this lives in something like TypeScript-TmLanguage &#8594; MongoDB-TmLanguage and is generated following pattern of &lt;a href=&quot;https://github.com/microsoft/TypeScript-TmLanguage&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/microsoft/TypeScript-TmLanguage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;h5&gt;&lt;a name=&quot;VSCode&quot;&gt;&lt;/a&gt;VS Code&lt;/h5&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;&lt;a href=&quot;https://github.com/microsoft/TypeScript-TmLanguage/blob/master/build/build.ts&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/microsoft/TypeScript-TmLanguage/blob/master/build/build.ts&lt;/a&gt; takes canonical plist&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://github.com/sheetalkamat/TypeScript-TmLanguage-VsCode/blob/master/build/update-grammar.js&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/sheetalkamat/TypeScript-TmLanguage-VsCode/blob/master/build/update-grammar.js&lt;/a&gt; for dl master &#8594; converting plist into VS Code .json + dependency .json&apos;s&lt;/li&gt;
&lt;/ul&gt;


&lt;h5&gt;&lt;a name=&quot;AceEditor&quot;&gt;&lt;/a&gt;Ace Editor&lt;/h5&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Add a build task to &lt;tt&gt;mongodb-ace-mode&lt;/tt&gt; to generate &lt;a href=&quot;https://github.com/mongodb-js/ace-mode/blob/master/index.js&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb-js/ace-mode/blob/master/index.js&lt;/a&gt; using &lt;a href=&quot;https://github.com/ajaxorg/ace/wiki/Importing-.tmtheme-and-.tmlanguage-Files-into-Ace&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;ace/tool/tmlanguage.js&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;node ace/tool/tmlanguage.js MongoDB.tmLanguage&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt;

&lt;h5&gt;&lt;a name=&quot;highlight.js&quot;&gt;&lt;/a&gt;highlight.js&lt;/h5&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;&lt;a href=&quot;https://highlightjs.readthedocs.io/en/latest/language-guide.html&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://highlightjs.readthedocs.io/en/latest/language-guide.html&lt;/a&gt; is s imilar in simplicity to ace &lt;a href=&quot;https://cloud9-sdk.readme.io/docs/highlighting-rules&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://cloud9-sdk.readme.io/docs/highlighting-rules&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;relevant for mongosh cli and beyond (e.g. leafygreen editor/syntax component, docs, etc.)&lt;/li&gt;
&lt;/ul&gt;



&lt;h5&gt;&lt;a name=&quot;mongoshhighlighting&quot;&gt;&lt;/a&gt;mongosh highlighting&lt;/h5&gt;
&lt;h6&gt;&lt;a name=&quot;Output&quot;&gt;&lt;/a&gt;Output&lt;/h6&gt;

&lt;p&gt;&lt;tt&gt;repl&lt;/tt&gt; uses &lt;a href=&quot;https://nodejs.org/api/repl.html#repl_customizing_repl_output&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;&lt;tt&gt;util.inspect()&lt;/tt&gt; which 1. can be customized&lt;/a&gt; 2. replace &lt;tt&gt;util.inspect()&lt;/tt&gt; entirely via the &lt;a href=&quot;https://nodejs.org/api/repl.html#repl_repl_start_options&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;&lt;tt&gt;writer&lt;/tt&gt;&lt;/a&gt; option with something like  &lt;a href=&quot;https://www.npmjs.com/package/cli-highlight&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;&lt;tt&gt;cli-highlight&lt;/tt&gt;&lt;/a&gt; or &lt;a href=&quot;https://npm.im/emphasize&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;&lt;tt&gt;emphasize&lt;/tt&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h6&gt;&lt;a name=&quot;Input&quot;&gt;&lt;/a&gt;Input&lt;/h6&gt;

&lt;p&gt;trickier... but possible.&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;&lt;a href=&quot;https://github.com/nikersify/jay&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/nikersify/jay&lt;/a&gt; &quot;Supercharged JavaScript REPL&quot;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;span class=&quot;image-wrap&quot; style=&quot;&quot;&gt;&lt;img src=&quot;https://nmotw.in/images/jay/jay.gif&quot; style=&quot;border: 0px solid black&quot; /&gt;&lt;/span&gt;&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;python impl of similar goal experience &lt;a href=&quot;https://github.com/laixintao/iredis/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/laixintao/iredis/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt; (HT @max for links)&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;&lt;a href=&quot;https://github.com/nikersify/jay/blob/master/source/prompt.ts#L137&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/nikersify/jay/blob/master/source/prompt.ts#L137&lt;/a&gt;
	&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
		&lt;li&gt;Uses &lt;a href=&quot;https://npm.im/emphasize&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;&lt;tt&gt;emphasize&lt;/tt&gt;&lt;/a&gt; for highlighting&lt;/li&gt;
		&lt;li&gt;Which in turn wraps &lt;a href=&quot;https://github.com/wooorm/lowlight&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/wooorm/lowlight&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;Which wraps &lt;tt&gt;highlight.js&lt;/tt&gt; under the hood :tada:&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;mongosh uses node core &lt;tt&gt;repl&lt;/tt&gt; tho
	&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
		&lt;li&gt;REPLServer inherits from readline.Interface so running it through emphasize  in this fall through of _ttyWrite  should do it &lt;a href=&quot;https://github.com/nodejs/node/blob/master/lib/readline.js#L1058&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/nodejs/node/blob/master/lib/readline.js#L1058&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;two different streams input (passed to eval) and output (whats written to term)&lt;br/&gt;
eval() happens &lt;tt&gt;input.on(&apos;line&apos;)|https://github.com/nodejs/node/blob/master/lib/repl.js#L763&lt;/tt&gt;  which is emitted from &lt;a href=&quot;https://github.com/nodejs/node/blob/master/lib/readline.js#L197&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;&lt;tt&gt;input&lt;/tt&gt; here&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
        <key id="1181290">COMPASS-4161</key>
            <summary>MongoDB.tmLanguage: Single source of truth for syntax highlighting</summary>
                <type id="10501" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14720&amp;avatarType=issuetype">Investigation</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="12300">Won&apos;t Do</resolution>
                                        <assignee username="-1">Unassigned</assignee>
                                    <reporter username="lucas.hrabovsky">Lucas Hrabovsky</reporter>
                        <labels>
                    </labels>
                <created>Mon, 24 Feb 2020 15:23:07 +0000</created>
                <updated>Thu, 30 Jun 2022 10:18:48 +0000</updated>
                            <resolved>Thu, 30 Jun 2022 10:18:48 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                    <issuelinks>
                            <issuelinktype id="10520">
                    <name>Problem/Incident</name>
                                                                <inwardlinks description="is caused by">
                                                        </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                                        </outwardlinks>
                                                                <inwardlinks description="is related to">
                                                        </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Thu, 30 Jun 2022 10:18:48 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        3 years, 50 weeks, 2 days ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10057" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comment by Customer</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10056" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last commenter</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>jessica.sigafoos@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            3 years, 50 weeks, 2 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>lucas.hrabovsky</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hwuc6f:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hr5nl3:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10053" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time In Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_14350" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>serverRank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hwtyfr:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                    </customfields>
    </item>
</channel>
</rss>