| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- export const readableDate = (s: string) => {
- const ts = new Date(s);
- const date = ts.toLocaleDateString();
- const time = ts.toLocaleTimeString([], {
- hour: "numeric",
- minute: "2-digit",
- });
- return `${time} on ${date}`;
- };
- export const capitalize = (s: string) => {
- return s.charAt(0).toUpperCase() + s.substring(1).toLowerCase();
- };
- const LINE = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/gm;
- export const dotenv_parse = (src: string): Record<string, string> => {
- // Parser src into an Object
- const obj = {} as Record<string, string>;
- // Convert buffer to string
- let lines = src.toString();
- // Convert line breaks to same format
- lines = lines.replace(/\r\n?/gm, "\n");
- let match;
- while ((match = LINE.exec(lines)) != null) {
- const key = match[1];
- // Default undefined or null to empty string
- let value = match[2] || "";
- // Remove whitespace
- value = value.trim();
- // Check if double quoted
- const maybeQuote = value[0];
- // Remove surrounding quotes
- value = value.replace(/^(['"`])([\s\S]*)\1$/gm, "$2");
- // Expand newlines if double quoted
- if (maybeQuote === '"') {
- value = value.replace(/\\n/g, "\n");
- value = value.replace(/\\r/g, "\r");
- }
- // Add to object
- obj[key] = value;
- }
- return obj;
- };
|