PageSourceSearch

https://hapifhir.io/hapi-fhir/resources/prismjs/components/prism-http.js

js hapifhir.io collected 2026-09-25 08:50:55 UTC 4,087 bytes, 151 lines download raw bytes

vendor: 4,087 bytes, lines 1-151
1(function (Prism) {
2
3	/**
4	 * @param {string} name
5	 * @returns {RegExp}
6	 */
7	function headerValueOf(name) {
8		return RegExp('(^(?:' + name + '):[ \t]*(?![ \t]))[^]+', 'i');
9	}
10
11	Prism.languages.http = {
12		'request-line': {
13			pattern: /^(?:CONNECT|DELETE|GET|HEAD|OPTIONS|PATCH|POST|PRI|PUT|SEARCH|TRACE)\s(?:https?:\/\/|\/)\S*\sHTTP\/[\d.]+/m,
14			inside: {
15				// HTTP Method
16				'method': {
17					pattern: /^[A-Z]+\b/,
18					alias: 'property'
19				},
20				// Request Target e.g. http://example.com, /path/to/file
21				'request-target': {
22					pattern: /^(\s)(?:https?:\/\/|\/)\S*(?=\s)/,
23					lookbehind: true,
24					alias: 'url',
25					inside: Prism.languages.uri
26				},
27				// HTTP Version
28				'http-version': {
29					pattern: /^(\s)HTTP\/[\d.]+/,
30					lookbehind: true,
31					alias: 'property'
32				},
33			}
34		},
35		'response-status': {
36			pattern: /^HTTP\/[\d.]+ \d+ .+/m,
37			inside: {
38				// HTTP Version
39				'http-version': {
40					pattern: /^HTTP\/[\d.]+/,
41					alias: 'property'
42				},
43				// Status Code
44				'status-code': {
45					pattern: /^(\s)\d+(?=\s)/,
46					lookbehind: true,
47					alias: 'number'
48				},
49				// Reason Phrase
50				'reason-phrase': {
51					pattern: /^(\s).+/,
52					lookbehind: true,
53					alias: 'string'
54				}
55			}
56		},
57		'header': {
58			pattern: /^[\w-]+:.+(?:(?:\r\n?|\n)[ \t].+)*/m,
59			inside: {
60				'header-value': [
61					{
62						pattern: headerValueOf(/Content-Security-Policy/.source),
63						lookbehind: true,
64						alias: ['csp', 'languages-csp'],
65						inside: Prism.languages.csp
66					},
67					{
68						pattern: headerValueOf(/Public-Key-Pins(?:-Report-Only)?/.source),
69						lookbehind: true,
70						alias: ['hpkp', 'languages-hpkp'],
71						inside: Prism.languages.hpkp
72					},
73					{
74						pattern: headerValueOf(/Strict-Transport-Security/.source),
75						lookbehind: true,
76						alias: ['hsts', 'languages-hsts'],
77						inside: Prism.languages.hsts
78					},
79					{
80						pattern: headerValueOf(/[^:]+/.source),
81						lookbehind: true
82					}
83				],
84				'header-name': {
85					pattern: /^[^:]+/,
86					alias: 'keyword'
87				},
88				'punctuation': /^:/
89			}
90		}
91	};
92
93	// Create a mapping of Content-Type headers to language definitions
94	var langs = Prism.languages;
95	var httpLanguages = {
96		'application/javascript': langs.javascript,
97		'application/json': langs.json || langs.javascript,
98		'application/xml': langs.xml,
99		'text/xml': langs.xml,
100		'text/html': langs.html,
101		'text/css': langs.css,
102		'text/plain': langs.plain
103	};
104
105	// Declare which types can also be suffixes
106	var suffixTypes = {
107		'application/json': true,
108		'application/xml': true
109	};
110
111	/**
112	 * Returns a pattern for the given content type which matches it and any type which has it as a suffix.
113	 *
114	 * @param {string} contentType
115	 * @returns {string}
116	 */
117	function getSuffixPattern(contentType) {
118		var suffix = contentType.replace(/^[a-z]+\//, '');
119		var suffixPattern = '\\w+/(?:[\\w.-]+\\+)+' + suffix + '(?![+\\w.-])';
120		return '(?:' + contentType + '|' + suffixPattern + ')';
121	}
122
123	// Insert each content type parser that has its associated language
124	// currently loaded.
125	var options;
126	for (var contentType in httpLanguages) {
127		if (httpLanguages[contentType]) {
128			options = options || {};
129
130			var pattern = suffixTypes[contentType] ? getSuffixPattern(contentType) : contentType;
131			options[contentType.replace(/\//g, '-')] = {
132				pattern: RegExp(
133					'(' + /content-type:\s*/.source + pattern + /(?:(?:\r\n?|\n)[\w-].*)*(?:\r(?:\n|(?!\n))|\n)/.source + ')' +
134					// This is a little interesting:
135					// The HTTP format spec required 1 empty line before the body to make everything unambiguous.
136					// However, when writing code by hand (e.g. to display on a website) people can forget about this,
137					// so we want to be liberal here. We will allow the empty line to be omitted if the first line of
138					// the body does not start with a [\w-] character (as headers do).
139					/[^ \t\w-][\s\S]*/.source,
140					'i'
141				),
142				lookbehind: true,
143				inside: httpLanguages[contentType]
144			};
145		}
146	}
147	if (options) {
148		Prism.languages.insertBefore('http', 'header', options);
149	}
150
151}(Prism));

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.