uriTemplate.ts ×13

Frontier kind: Code frontier

unlabeled · c_9c891c76032f

24 tests · 3519 LOC · 19 files · introduces 0 tests · 40 LOC · 1 file

Introduces — evidence that enters the hierarchy at this concept

Code
13 ranges40 lines · 1 files
Tests
0 tests

Contains — complete concept membership

All code (extent)
512 ranges3519 lines · 19 files · Browse complete extent
All tests (intent)
24 testsBrowse complete intent

Neighbourhood graph

The orange circle is the focus. Violet and green circles are every ancestor and descendant, broader and narrower, at any distance; blue squares and pink diamonds are the introduced files and exact introduced tests of every visible concept, not only the focus's. Arrows point from broader to narrower concepts and bridge only concepts omitted from this view. Undirected links show source or test introduction. Concept and file size follows LOC; exact test nodes use test-count units.

Introduced files, introduced tests, and structurally relevant concept specialization

In the embedded map, ordinary wheel input scrolls the page; use the visible controls to zoom and drag to pan. Open the full-screen map for canvas navigation: wheel pans, Ctrl/Command plus wheel zooms, and arrow keys pan when this region is focused. On touch screens, open the full-screen map to pan or pinch. If JavaScript or WebGL is unavailable, use the native relationship evidence on this page.

Introduced files, introduced tests, and structurally relevant concept specializationuriTemplate.test|title=UriTemplate complex templates|occurrence=1 · 0 introduced LOCuriTemplate.test|title=U…uriTemplate.test|title=UriTemplate Level 4 - Form-style query continuation with value modifiers|occurrence=1 · 0 introduced LOCuriTemplate.test|title=U…uriTemplate.test|title=UriTemplate Level 4 - Form-style query with value modifiers|occurrence=1 · 0 introduced LOCuriTemplate.test|title=U…uriTemplate.test|title=UriTemplate Level 4 - Fragment expansion with value modifiers|occurrence=1 · 0 introduced LOCuriTemplate.test|title=U…uriTemplate.test|title=UriTemplate Level 4 - Reserved expansion with value modifiers|occurrence=1 · 0 introduced LOCuriTemplate.test|title=U…uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×3 · 4 introduced LOCuriTemplate.ts ×3uriTemplate.ts ×2 · 4 introduced LOCuriTemplate.ts ×2uriTemplate.ts ×4 · 4 introduced LOCuriTemplate.ts ×4uriTemplate.ts ×2 · 7 introduced LOCuriTemplate.ts ×2uriTemplate.ts ×3 · 3 introduced LOCuriTemplate.ts ×3uriTemplate.test|title=UriTemplate Level 4 - String expansion with value modifiers|occurrence=1 · 0 introduced LOCuriTemplate.test|title=U…uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×5 · 5 introduced LOCuriTemplate.ts ×5uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×2 · 3 introduced LOCuriTemplate.ts ×2uriTemplate.ts ×1 · 2 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×3 · 4 introduced LOCuriTemplate.ts ×3uriTemplate.test|title=UriTemplate Level 1 - Simple string expansion|occurrence=1, uriTemplate.test|title=UriTemplate Level 3 - String expansion with multiple variables|occurrence=1, +1 · 0 introduced LOCuriTemplate.test|title=U…uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×1 · 2 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×3 · 13 introduced LOCuriTemplate.ts ×3uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×1 · 2 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×6 · 14 introduced LOCuriTemplate.ts ×6uriTemplate.ts ×1 · 2 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×1 · 4 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×2 · 3 introduced LOCuriTemplate.ts ×2uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×1 · 2 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×2 · 4 introduced LOCuriTemplate.ts ×2uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×2 · 3 introduced LOCuriTemplate.ts ×2uriTemplate.ts ×2 · 2 introduced LOCuriTemplate.ts ×2uriTemplate.ts ×1 · 2 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×5 · 9 introduced LOCuriTemplate.ts ×5uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×4 · 14 introduced LOCuriTemplate.ts ×4uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×1 · 1 introduced LOCuriTemplate.ts ×1uriTemplate.ts ×2 · 8 introduced LOCuriTemplate.ts ×2uriTemplate.ts ×8 · 41 introduced LOCuriTemplate.ts ×8uriTemplate.ts ×8 · 50 introduced LOCuriTemplate.ts ×8uri.test|title=URI URI#file, win-speciale|occurrence=1, charCode.test|title=CharCode has good values|occurrence=1, +2 · 0 introduced LOCuri.test|title=URI URI#f…utils.ts ×3 · 9 introduced LOCutils.ts ×3lifecycle.ts ×2 · 4 introduced LOClifecycle.ts ×2lifecycle.ts ×1 · 2 introduced LOClifecycle.ts ×1lifecycle.ts ×4 · 8 introduced LOClifecycle.ts ×4lifecycle.ts ×6 · 16 introduced LOClifecycle.ts ×6lifecycle.ts ×1 · 2 introduced LOClifecycle.ts ×1lifecycle.ts ×1 · 2 introduced LOClifecycle.ts ×1lifecycle.ts ×1 · 3 introduced LOClifecycle.ts ×1map.ts ×97 · 3334 introduced LOCmap.ts ×97src/vs/base/common/arrays.ts · 949 LOCcommon/arrays.tssrc/vs/base/common/arraysFind.ts · 226 LOCcommon/arraysFind.tssrc/vs/base/common/assert.ts · 91 LOCcommon/assert.tssrc/vs/base/common/charCode.ts · 450 LOCcommon/charCode.tssrc/vs/base/common/collections.ts · 176 LOCcommon/collections.tssrc/vs/base/common/errors.ts · 357 LOCcommon/errors.tssrc/vs/base/common/functional.ts · 32 LOCcommon/functional.tssrc/vs/base/common/iterator.ts · 194 LOCcommon/iterator.tssrc/vs/base/common/lifecycle.ts · 974 LOCcommon/lifecycle.tssrc/vs/base/common/map.ts · 1016 LOCcommon/map.tssrc/vs/base/common/marshallingIds.ts · 33 LOCcommon/marshallingIds.tssrc/vs/base/common/path.ts · 1589 LOCcommon/path.tssrc/vs/base/common/platform.ts · 281 LOCcommon/platform.tssrc/vs/base/common/process.ts · 76 LOCcommon/process.tssrc/vs/base/common/types.ts · 410 LOCcommon/types.tssrc/vs/base/common/uri.ts · 754 LOCcommon/uri.tssrc/vs/base/common/uriTemplate.ts · 305 LOCcommon/uriTemplate.tssrc/vs/base/test/common/utils.ts · 107 LOCcommon/utils.tssrc/vs/nls.ts · 244 LOCvs/nls.tscharCode.test|title=CharCode has good values|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/charCode.test|title=CharCode has good values|occurrence=1charCode.test|title=Char…path.test|title=Paths (Node Implementation) path|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/path.test|title=Paths (Node Implementation) path|occurrence=1path.test|title=Paths (N…uri.test|title=URI File paths containing apostrophes break URI parsing and cannot be opened #276075|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uri.test|title=URI File paths containing apostrophes break URI parsing and cannot be opened #276075|occurrence=1uri.test|title=URI File …uri.test|title=URI URI#file, win-speciale|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uri.test|title=URI URI#file, win-speciale|occurrence=1uri.test|title=URI URI#f…uriTemplate.test|title=UriTemplate Level 1 - Simple string expansion|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uriTemplate.test|title=UriTemplate Level 1 - Simple string expansion|occurrence=1uriTemplate.test|title=U…uriTemplate.test|title=UriTemplate Level 2 - Fragment expansion|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uriTemplate.test|title=UriTemplate Level 2 - Fragment expansion|occurrence=1uriTemplate.test|title=U…uriTemplate.test|title=UriTemplate Level 2 - Reserved expansion|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uriTemplate.test|title=UriTemplate Level 2 - Reserved expansion|occurrence=1uriTemplate.test|title=U…uriTemplate.test|title=UriTemplate Level 3 - Form-style query continuation|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uriTemplate.test|title=UriTemplate Level 3 - Form-style query continuation|occurrence=1uriTemplate.test|title=U…uriTemplate.test|title=UriTemplate Level 3 - Form-style query expansion|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uriTemplate.test|title=UriTemplate Level 3 - Form-style query expansion|occurrence=1uriTemplate.test|title=U…uriTemplate.test|title=UriTemplate Level 3 - Fragment expansion with multiple variables|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uriTemplate.test|title=UriTemplate Level 3 - Fragment expansion with multiple variables|occurrence=1uriTemplate.test|title=U…uriTemplate.test|title=UriTemplate Level 3 - Label expansion with dot-prefix|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uriTemplate.test|title=UriTemplate Level 3 - Label expansion with dot-prefix|occurrence=1uriTemplate.test|title=U…uriTemplate.test|title=UriTemplate Level 3 - Path segments expansion|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uriTemplate.test|title=UriTemplate Level 3 - Path segments expansion|occurrence=1uriTemplate.test|title=U…uriTemplate.test|title=UriTemplate Level 3 - Path-style parameter expansion|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uriTemplate.test|title=UriTemplate Level 3 - Path-style parameter expansion|occurrence=1uriTemplate.test|title=U…uriTemplate.test|title=UriTemplate Level 3 - Reserved expansion with multiple variables|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uriTemplate.test|title=UriTemplate Level 3 - Reserved expansion with multiple variables|occurrence=1uriTemplate.test|title=U…uriTemplate.test|title=UriTemplate Level 3 - String expansion with multiple variables|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uriTemplate.test|title=UriTemplate Level 3 - String expansion with multiple variables|occurrence=1uriTemplate.test|title=U…uriTemplate.test|title=UriTemplate Level 4 - Form-style query continuation with value modifiers|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uriTemplate.test|title=UriTemplate Level 4 - Form-style query continuation with value modifiers|occurrence=1uriTemplate.test|title=U…uriTemplate.test|title=UriTemplate Level 4 - Form-style query with value modifiers|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uriTemplate.test|title=UriTemplate Level 4 - Form-style query with value modifiers|occurrence=1uriTemplate.test|title=U…uriTemplate.test|title=UriTemplate Level 4 - Fragment expansion with value modifiers|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uriTemplate.test|title=UriTemplate Level 4 - Fragment expansion with value modifiers|occurrence=1uriTemplate.test|title=U…uriTemplate.test|title=UriTemplate Level 4 - Label expansion with value modifiers|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uriTemplate.test|title=UriTemplate Level 4 - Label expansion with value modifiers|occurrence=1uriTemplate.test|title=U…uriTemplate.test|title=UriTemplate Level 4 - Path expansion with value modifiers|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uriTemplate.test|title=UriTemplate Level 4 - Path expansion with value modifiers|occurrence=1uriTemplate.test|title=U…uriTemplate.test|title=UriTemplate Level 4 - Path-style parameters with value modifiers|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uriTemplate.test|title=UriTemplate Level 4 - Path-style parameters with value modifiers|occurrence=1uriTemplate.test|title=U…uriTemplate.test|title=UriTemplate Level 4 - Reserved expansion with value modifiers|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uriTemplate.test|title=UriTemplate Level 4 - Reserved expansion with value modifiers|occurrence=1uriTemplate.test|title=U…uriTemplate.test|title=UriTemplate Level 4 - String expansion with value modifiers|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uriTemplate.test|title=UriTemplate Level 4 - String expansion with value modifiers|occurrence=1uriTemplate.test|title=U…uriTemplate.test|title=UriTemplate complex templates|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uriTemplate.test|title=UriTemplate complex templates|occurrence=1uriTemplate.test|title=U…uriTemplate.test|title=UriTemplate control characters are percent-encoded with two hex digits|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uriTemplate.test|title=UriTemplate control characters are percent-encoded with two hex digits|occurrence=1uriTemplate.test|title=U…uriTemplate.test|title=UriTemplate edge cases|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uriTemplate.test|title=UriTemplate edge cases|occurrence=1uriTemplate.test|title=U…uriTemplate.test|title=UriTemplate handling undefined or null values|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uriTemplate.test|title=UriTemplate handling undefined or null values|occurrence=1uriTemplate.test|title=U…uriTemplate.test|title=UriTemplate simple replacement|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uriTemplate.test|title=UriTemplate simple replacement|occurrence=1uriTemplate.test|title=U…Focused concept · uriTemplate.ts ×13 · 40 introduced LOCuriTemplate.ts ×13

Graph controls are ready.

Interactive rendering requires JavaScript and WebGL. Use the native relationship evidence on this page while the interactive map is unavailable.

Native relationship evidence

Every exact file and test below is linked only from the concept that introduces it.

Introduced tests

Every collected test enters the hierarchy at exactly one concept.

No tests are introduced at this concept. Its intent tests are introduced by other concepts.

Introduced code

Every collected source range enters the hierarchy at exactly one concept.

1 file ranked by introduced lines: 40 introduced LOC across 13 ranges. Expand a file to inspect source; the > gutter marks introduced lines.

src/vs/base/common/uriTemplate.ts 40 introduced LOC · 13 ranges

Open complete file

103 result += comp;
104 } else {
105 > result += this._expand(comp, variables); uriTemplate.ts
106 > }
107 }
108 return result;
110
111 private _expand(comp: IUriTemplateComponent, variables: Record<string, unknown>): string {
112 > const op = comp.operator; uriTemplate.ts
113 > const varSpecs = comp.variables;
114 > if (varSpecs.length === 0) {
115 return comp.expression;
116 }
117 > const vals: string[] = []; uriTemplate.ts
118 > const isNamed = op === ';' || op === '?' || op === '&';
119 > const isReserved = op === '+' || op === '#';
120 > const isFragment = op === '#';
121 > const isLabel = op === '.';
122 > const isPath = op === '/';
123 > const isForm = op === '?';
124 > const isFormCont = op === '&';
125 > const isParam = op === ';';
126 >
127 > let prefix = '';
128 > if (op === '+') { prefix = ''; }
129 else if (op === '#') { prefix = '#'; }
130 else if (op === '.') { prefix = '.'; }
133 else if (op === '?') { prefix = '?'; }
134 else if (op === '&') { prefix = '&'; }
136 > for (const v of varSpecs) {
137 > const value = variables[v.name];
138 > const defined = Object.prototype.hasOwnProperty.call(variables, v.name);
139 > if (value === undefined || value === null || (Array.isArray(value) && value.length === 0)) {
140 if (isParam) {
141 if (defined && (value === null || value === undefined)) {
152 continue;
153 }
154 > if (typeof value === 'object' && !Array.isArray(value)) { uriTemplate.ts
155 if (v.explodable) {
156 const pairs: string[] = [];
203 continue;
204 }
205 > if (Array.isArray(value)) { uriTemplate.ts
206 if (v.explodable) {
207 if (isLabel) {
229 continue;
230 }
231 > let str = String(value); uriTemplate.ts
232 > if (v.prefixLength !== undefined) {
233 str = str.substring(0, v.prefixLength);
234 }
235 > // For simple expansion, encode ! as well (not reserved) uriTemplate.ts
236 > // Only + and # are reserved
237 > const enc = UriTemplate._encode(str, op === '+' || op === '#');
238 > if (isParam) {
239 vals.push(v.name + '=' + enc);
240 > } else if (isForm || isFormCont) { uriTemplate.ts
241 vals.push(v.name + '=' + enc);
242 } else if (isLabel) {
247 vals.push(enc);
248 }
249 > } uriTemplate.ts
250 >
251 > let joined = '';
252 > if (isLabel) {
253 // Remove trailing dot for missing values
254 const filtered = vals.filter(v => v !== '');
255 joined = filtered.length ? prefix + filtered.join('.') : '';
256 > } else if (isPath) { uriTemplate.ts
257 // Remove empty segments for undefined/null
258 const filtered = vals.filter(v => v !== '');
275 joined = vals.join(',');
276 }
277 > return joined; uriTemplate.ts
278 > }
279
280 private static _encode(str: string, reserved: boolean): string {
281 > return reserved ? encodeURI(str) : pctEncode(str); uriTemplate.ts
282 > }
283
284 private static _formPair(k: string, v: unknown, named: boolean): string {