OData V4 Literal Converter

0.1.1 · abandoned · verified Sun Apr 19

The `odata-v4-literal` package is a focused utility designed to convert OData V4 literal values (represented as strings, e.g., `'Hello'`, `123`, `true`, `2023-01-15T10:30:00Z`) into their corresponding native JavaScript data types. This functionality is essential for applications that parse OData query parameters or expressions and need to process the actual values. The package is currently at version 0.1.1, and its last publish date was over nine years ago, indicating that it is effectively abandoned. There is no active development or defined release cadence. Its primary differentiator is providing a direct, simple method for handling the specific syntax and escaping rules of OData V4 primitive literals, which can be complex for types like strings (requiring double single quotes for embedded apostrophes), dates, and GUIDs. Developers should be aware of its unmaintained status when considering its use in new projects.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to use `odata-v4-literal` to convert various OData V4 literal string representations into their native JavaScript types, including strings with escaped characters, numbers, booleans, GUIDs, and date/time types. It also shows basic error handling for malformed input.

import { Literal } from 'odata-v4-literal';

// Demonstrate conversion of various OData V4 literal types
console.log('--- OData V4 Literal Conversions ---');

// Edm.String (note the escaping for O'Neill)
const string1 = Literal.convert("Edm.String", "'Hello O''Neill'");
console.log(`'Hello O''Neill' (Edm.String) -> ${JSON.stringify(string1)} (Type: ${typeof string1})`);

// Another simple Edm.String
const string2 = Literal.convert("Edm.String", "'Another String'");
console.log(`'Another String' (Edm.String) -> ${JSON.stringify(string2)} (Type: ${typeof string2})`);

// Edm.Int32
const int32 = Literal.convert("Edm.Int32", "123");
console.log(`123 (Edm.Int32) -> ${JSON.stringify(int32)} (Type: ${typeof int32})`);

// Edm.Decimal / Edm.Double
const decimal = Literal.convert("Edm.Decimal", "123.45");
console.log(`123.45 (Edm.Decimal) -> ${JSON.stringify(decimal)} (Type: ${typeof decimal})`);

// Edm.Boolean
const booleanTrue = Literal.convert("Edm.Boolean", "true");
console.log(`true (Edm.Boolean) -> ${JSON.stringify(booleanTrue)} (Type: ${typeof booleanTrue})`);

const booleanFalse = Literal.convert("Edm.Boolean", "false");
console.log(`false (Edm.Boolean) -> ${JSON.stringify(booleanFalse)} (Type: ${typeof booleanFalse})`);

// Edm.Guid
const guid = Literal.convert("Edm.Guid", "80336209-66cb-4034-8b63-952467d344ff");
console.log(`80336209-66cb-4034-8b63-952467d344ff (Edm.Guid) -> ${JSON.stringify(guid)} (Type: ${typeof guid})`);

// Edm.DateTimeOffset (ISO 8601 format)
const dateTimeOffset = Literal.convert("Edm.DateTimeOffset", "2023-01-15T10:30:00Z");
console.log(`2023-01-15T10:30:00Z (Edm.DateTimeOffset) -> ${JSON.stringify(dateTimeOffset)} (Type: ${typeof dateTimeOffset})`);

// Edm.Date
const date = Literal.convert("Edm.Date", "2023-01-15");
console.log(`2023-01-15 (Edm.Date) -> ${JSON.stringify(date)} (Type: ${typeof date})`);

// Example of a potentially malformed literal (unquoted string for Edm.String)
try {
    // This will likely throw an error or return null/undefined depending on implementation
    const malformed = Literal.convert("Edm.String", "Unquoted String");
    console.log(`'Unquoted String' (malformed Edm.String) -> ${JSON.stringify(malformed)}`);
} catch (e: any) {
    console.error(`Error converting malformed string literal: ${e.message}`);
}

view raw JSON →