Initial commit
This commit is contained in:
commit
a6272848f9
379 changed files with 74829 additions and 0 deletions
325
build/dev/javascript/gleam_json/gleam/json.mjs
Normal file
325
build/dev/javascript/gleam_json/gleam/json.mjs
Normal file
|
|
@ -0,0 +1,325 @@
|
|||
import * as $bit_array from "../../gleam_stdlib/gleam/bit_array.mjs";
|
||||
import * as $dict from "../../gleam_stdlib/gleam/dict.mjs";
|
||||
import * as $dynamic from "../../gleam_stdlib/gleam/dynamic.mjs";
|
||||
import * as $decode from "../../gleam_stdlib/gleam/dynamic/decode.mjs";
|
||||
import * as $list from "../../gleam_stdlib/gleam/list.mjs";
|
||||
import * as $option from "../../gleam_stdlib/gleam/option.mjs";
|
||||
import { None, Some } from "../../gleam_stdlib/gleam/option.mjs";
|
||||
import * as $result from "../../gleam_stdlib/gleam/result.mjs";
|
||||
import * as $string_tree from "../../gleam_stdlib/gleam/string_tree.mjs";
|
||||
import { Ok, Error, toList, prepend as listPrepend, CustomType as $CustomType } from "../gleam.mjs";
|
||||
import {
|
||||
decode as decode_string,
|
||||
json_to_string as do_to_string,
|
||||
json_to_string as to_string_tree,
|
||||
identity as do_string,
|
||||
identity as do_bool,
|
||||
identity as do_int,
|
||||
identity as do_float,
|
||||
do_null,
|
||||
object as do_object,
|
||||
array as do_preprocessed_array,
|
||||
} from "../gleam_json_ffi.mjs";
|
||||
|
||||
export { to_string_tree };
|
||||
|
||||
export class UnexpectedEndOfInput extends $CustomType {}
|
||||
export const DecodeError$UnexpectedEndOfInput = () =>
|
||||
new UnexpectedEndOfInput();
|
||||
export const DecodeError$isUnexpectedEndOfInput = (value) =>
|
||||
value instanceof UnexpectedEndOfInput;
|
||||
|
||||
export class UnexpectedByte extends $CustomType {
|
||||
constructor($0) {
|
||||
super();
|
||||
this[0] = $0;
|
||||
}
|
||||
}
|
||||
export const DecodeError$UnexpectedByte = ($0) => new UnexpectedByte($0);
|
||||
export const DecodeError$isUnexpectedByte = (value) =>
|
||||
value instanceof UnexpectedByte;
|
||||
export const DecodeError$UnexpectedByte$0 = (value) => value[0];
|
||||
|
||||
export class UnexpectedSequence extends $CustomType {
|
||||
constructor($0) {
|
||||
super();
|
||||
this[0] = $0;
|
||||
}
|
||||
}
|
||||
export const DecodeError$UnexpectedSequence = ($0) =>
|
||||
new UnexpectedSequence($0);
|
||||
export const DecodeError$isUnexpectedSequence = (value) =>
|
||||
value instanceof UnexpectedSequence;
|
||||
export const DecodeError$UnexpectedSequence$0 = (value) => value[0];
|
||||
|
||||
export class UnableToDecode extends $CustomType {
|
||||
constructor($0) {
|
||||
super();
|
||||
this[0] = $0;
|
||||
}
|
||||
}
|
||||
export const DecodeError$UnableToDecode = ($0) => new UnableToDecode($0);
|
||||
export const DecodeError$isUnableToDecode = (value) =>
|
||||
value instanceof UnableToDecode;
|
||||
export const DecodeError$UnableToDecode$0 = (value) => value[0];
|
||||
|
||||
function do_parse(json, decoder) {
|
||||
return $result.try$(
|
||||
decode_string(json),
|
||||
(dynamic_value) => {
|
||||
let _pipe = $decode.run(dynamic_value, decoder);
|
||||
return $result.map_error(
|
||||
_pipe,
|
||||
(var0) => { return new UnableToDecode(var0); },
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Decode a JSON string into dynamically typed data which can be decoded into
|
||||
* typed data with the `gleam/dynamic` module.
|
||||
*
|
||||
* ## Examples
|
||||
*
|
||||
* ```gleam
|
||||
* > parse("[1,2,3]", decode.list(of: decode.int))
|
||||
* Ok([1, 2, 3])
|
||||
* ```
|
||||
*
|
||||
* ```gleam
|
||||
* > parse("[", decode.list(of: decode.int))
|
||||
* Error(UnexpectedEndOfInput)
|
||||
* ```
|
||||
*
|
||||
* ```gleam
|
||||
* > parse("1", decode.string)
|
||||
* Error(UnableToDecode([decode.DecodeError("String", "Int", [])]))
|
||||
* ```
|
||||
*/
|
||||
export function parse(json, decoder) {
|
||||
return do_parse(json, decoder);
|
||||
}
|
||||
|
||||
function decode_to_dynamic(json) {
|
||||
let $ = $bit_array.to_string(json);
|
||||
if ($ instanceof Ok) {
|
||||
let string$1 = $[0];
|
||||
return decode_string(string$1);
|
||||
} else {
|
||||
return new Error(new UnexpectedByte(""));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Decode a JSON bit string into dynamically typed data which can be decoded
|
||||
* into typed data with the `gleam/dynamic` module.
|
||||
*
|
||||
* ## Examples
|
||||
*
|
||||
* ```gleam
|
||||
* > parse_bits(<<"[1,2,3]">>, decode.list(of: decode.int))
|
||||
* Ok([1, 2, 3])
|
||||
* ```
|
||||
*
|
||||
* ```gleam
|
||||
* > parse_bits(<<"[">>, decode.list(of: decode.int))
|
||||
* Error(UnexpectedEndOfInput)
|
||||
* ```
|
||||
*
|
||||
* ```gleam
|
||||
* > parse_bits(<<"1">>, decode.string)
|
||||
* Error(UnableToDecode([decode.DecodeError("String", "Int", [])])),
|
||||
* ```
|
||||
*/
|
||||
export function parse_bits(json, decoder) {
|
||||
return $result.try$(
|
||||
decode_to_dynamic(json),
|
||||
(dynamic_value) => {
|
||||
let _pipe = $decode.run(dynamic_value, decoder);
|
||||
return $result.map_error(
|
||||
_pipe,
|
||||
(var0) => { return new UnableToDecode(var0); },
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a JSON value into a string.
|
||||
*
|
||||
* Where possible prefer the `to_string_tree` function as it is faster than
|
||||
* this function, and BEAM VM IO is optimised for sending `StringTree` data.
|
||||
*
|
||||
* ## Examples
|
||||
*
|
||||
* ```gleam
|
||||
* > to_string(array([1, 2, 3], of: int))
|
||||
* "[1,2,3]"
|
||||
* ```
|
||||
*/
|
||||
export function to_string(json) {
|
||||
return do_to_string(json);
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode a string into JSON, using normal JSON escaping.
|
||||
*
|
||||
* ## Examples
|
||||
*
|
||||
* ```gleam
|
||||
* > to_string(string("Hello!"))
|
||||
* "\"Hello!\""
|
||||
* ```
|
||||
*/
|
||||
export function string(input) {
|
||||
return do_string(input);
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode a bool into JSON.
|
||||
*
|
||||
* ## Examples
|
||||
*
|
||||
* ```gleam
|
||||
* > to_string(bool(False))
|
||||
* "false"
|
||||
* ```
|
||||
*/
|
||||
export function bool(input) {
|
||||
return do_bool(input);
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode an int into JSON.
|
||||
*
|
||||
* ## Examples
|
||||
*
|
||||
* ```gleam
|
||||
* > to_string(int(50))
|
||||
* "50"
|
||||
* ```
|
||||
*/
|
||||
export function int(input) {
|
||||
return do_int(input);
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode a float into JSON.
|
||||
*
|
||||
* ## Examples
|
||||
*
|
||||
* ```gleam
|
||||
* > to_string(float(4.7))
|
||||
* "4.7"
|
||||
* ```
|
||||
*/
|
||||
export function float(input) {
|
||||
return do_float(input);
|
||||
}
|
||||
|
||||
/**
|
||||
* The JSON value null.
|
||||
*
|
||||
* ## Examples
|
||||
*
|
||||
* ```gleam
|
||||
* > to_string(null())
|
||||
* "null"
|
||||
* ```
|
||||
*/
|
||||
export function null$() {
|
||||
return do_null();
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode an optional value into JSON, using null if it is the `None` variant.
|
||||
*
|
||||
* ## Examples
|
||||
*
|
||||
* ```gleam
|
||||
* > to_string(nullable(Some(50), of: int))
|
||||
* "50"
|
||||
* ```
|
||||
*
|
||||
* ```gleam
|
||||
* > to_string(nullable(None, of: int))
|
||||
* "null"
|
||||
* ```
|
||||
*/
|
||||
export function nullable(input, inner_type) {
|
||||
if (input instanceof Some) {
|
||||
let value = input[0];
|
||||
return inner_type(value);
|
||||
} else {
|
||||
return null$();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode a list of key-value pairs into a JSON object.
|
||||
*
|
||||
* ## Examples
|
||||
*
|
||||
* ```gleam
|
||||
* > to_string(object([
|
||||
* #("game", string("Pac-Man")),
|
||||
* #("score", int(3333360)),
|
||||
* ]))
|
||||
* "{\"game\":\"Pac-Mac\",\"score\":3333360}"
|
||||
* ```
|
||||
*/
|
||||
export function object(entries) {
|
||||
return do_object(entries);
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode a list of JSON values into a JSON array.
|
||||
*
|
||||
* ## Examples
|
||||
*
|
||||
* ```gleam
|
||||
* > to_string(preprocessed_array([int(1), float(2.0), string("3")]))
|
||||
* "[1, 2.0, \"3\"]"
|
||||
* ```
|
||||
*/
|
||||
export function preprocessed_array(from) {
|
||||
return do_preprocessed_array(from);
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode a list into a JSON array.
|
||||
*
|
||||
* ## Examples
|
||||
*
|
||||
* ```gleam
|
||||
* > to_string(array([1, 2, 3], of: int))
|
||||
* "[1, 2, 3]"
|
||||
* ```
|
||||
*/
|
||||
export function array(entries, inner_type) {
|
||||
let _pipe = entries;
|
||||
let _pipe$1 = $list.map(_pipe, inner_type);
|
||||
return preprocessed_array(_pipe$1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode a Dict into a JSON object using the supplied functions to encode
|
||||
* the keys and the values respectively.
|
||||
*
|
||||
* ## Examples
|
||||
*
|
||||
* ```gleam
|
||||
* > to_string(dict(dict.from_list([ #(3, 3.0), #(4, 4.0)]), int.to_string, float)
|
||||
* "{\"3\": 3.0, \"4\": 4.0}"
|
||||
* ```
|
||||
*/
|
||||
export function dict(dict, keys, values) {
|
||||
return object(
|
||||
$dict.fold(
|
||||
dict,
|
||||
toList([]),
|
||||
(acc, k, v) => { return listPrepend([keys(k), values(v)], acc); },
|
||||
),
|
||||
);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue