atom.io 0.38.0 → 0.38.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -40,7 +40,9 @@ type stringified<J extends Json.Serializable> = (J extends string ? `"${J}"` : J
40
40
  __json?: J;
41
41
  });
42
42
  /** Type-safe wrapper for {@link JSON.parse} */
43
- declare const parseJson: <J extends Json.Serializable>(str: stringified<J> | string) => J;
43
+ declare function parseJson<J extends Json.Serializable>(str: stringified<J>): J;
44
+ /** Type-safe wrapper for {@link JSON.parse} */
45
+ declare function parseJson(str: string): Json.Serializable;
44
46
  /** Type-safe wrapper for {@link JSON.stringify} */
45
47
  declare const stringifyJson: <J extends Json.Serializable>(json: J) => stringified<J>;
46
48
  /** Only Canonical values should be used for keys because they always serialize to the same string */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":["JSON_DEFAULTS: JsonTypes"],"sources":["../../src/json/entries.ts","../../src/json/index.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":["JSON_DEFAULTS: JsonTypes"],"sources":["../../src/json/entries.ts","../../src/json/index.ts"],"sourcesContent":[],"mappings":"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"}
@@ -10,8 +10,9 @@ function toEntries(obj) {
10
10
 
11
11
  //#endregion
12
12
  //#region src/json/index.ts
13
- /** Type-safe wrapper for {@link JSON.parse} */
14
- const parseJson = (str) => JSON.parse(str);
13
+ function parseJson(str) {
14
+ return JSON.parse(str);
15
+ }
15
16
  /** Type-safe wrapper for {@link JSON.stringify} */
16
17
  const stringifyJson = (json) => JSON.stringify(json);
17
18
  const JSON_PROTOTYPES = [
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["JSON_DEFAULTS: JsonTypes"],"sources":["../../src/json/entries.ts","../../src/json/index.ts"],"sourcesContent":["import type { Count, Flat } from \"atom.io/internal\"\n\n/** Tuples of `[key, value]` pairs, as returned from `Object.entries` */\nexport type Entries<K extends PropertyKey = PropertyKey, V = any> = [K, V][]\n\n/** The collective or \"union\" type of the keys in a set of entries */\nexport type KeyOfEntries<E extends Entries> = E extends [infer K, any][]\n\t? K\n\t: never\n\n/** The type of the value of entry `K` in a set of entries `E` */\nexport type ValueOfEntry<E extends Entries, K extends KeyOfEntries<E>> = {\n\t[P in Count<E[`length`]>]: E[P] extends [K, infer V] ? V : never\n}[Count<E[`length`]>]\n\n/** The type of a set of entries `E` in object form */\nexport type FromEntries<E extends Entries> = Flat<{\n\t[K in KeyOfEntries<E>]: ValueOfEntry<E, K>\n}>\n\n/** Typed form of `Object.fromEntries` */\nexport function fromEntries<E extends Entries>(entries: E): FromEntries<E> {\n\treturn Object.fromEntries(entries) as FromEntries<E>\n}\n\n/** The type of an object T in {@link Entries} form */\nexport type ToEntries<T extends object> = Entries<keyof T, T[keyof T]>\n\n/** Typed form of `Object.entries` */\nexport function toEntries<T extends object>(obj: T): ToEntries<T> {\n\treturn Object.entries(obj) as Entries<keyof T, T[keyof T]>\n}\n","import type { ViewOf } from \"atom.io\"\n\nexport * from \"./entries\"\n\nexport type primitive = boolean | number | string | null\n\nexport namespace Json {\n\texport namespace Tree {\n\t\t// eslint-disable-next-line @typescript-eslint/no-shadow\n\t\texport type Array<Element = unknown> = ReadonlyArray<Element>\n\t\t// eslint-disable-next-line @typescript-eslint/no-shadow\n\t\texport type Object<K extends string = string, V = unknown> = Record<K, V>\n\t\texport type Fork = Array | Object\n\t\texport type Leaf = primitive\n\t\texport type Node = Fork | Leaf\n\t}\n\n\t/** A value can survive being {@link JSON.stringify}-ed and {@link JSON.parse}-d fully intact */\n\texport type Serializable =\n\t\t| primitive\n\t\t| Readonly<{ [key: string]: Serializable }>\n\t\t| ReadonlyArray<Serializable>\n\n\texport type Object<\n\t\tKey extends string = string,\n\t\tValue extends Serializable = Serializable,\n\t> = Record<Key, Value>\n\n\texport type Array<Element extends Serializable = Serializable> =\n\t\tReadonlyArray<Element>\n}\n\n/** A generic that retains the type information of a {@link Json.Serializable} value while in string form */\n// biome-ignore format: long silly ternary\nexport type stringified<J extends Json.Serializable> = (\n J extends string\n ? `\"${J}\"`\n : J extends number\n ? `${J}`\n : J extends true\n ? `true`\n : J extends false\n ? `false`\n : J extends boolean\n ? `false` | `true`\n : J extends null\n ? `null`\n : J extends []\n ? `[]`\n : J extends [infer Element extends Json.Serializable]\n ? `[${stringified<Element>}]`\n : J extends [\n\t\t\t\t\tinfer Element1 extends Json.Serializable,\n\t\t\t\t\tinfer Element2 extends Json.Serializable,\n\t\t\t\t]\n ? `[${stringified<Element1>}, ${stringified<Element2>}]`\n : J extends [\n\t\t\t\t\tinfer Element1 extends Json.Serializable,\n\t\t\t\t\tinfer Element2 extends Json.Serializable,\n\t\t\t\t\tinfer Element3 extends Json.Serializable,\n\t\t\t\t]\n ? `[${stringified<Element1>}, ${stringified<Element2>}, ${stringified<Element3>}]`\n : J extends any[]\n ? `[${string}]` & { __json?: J }\n : string & { __json?: J }\n )\n\n/** Type-safe wrapper for {@link JSON.parse} */\nexport const parseJson = <J extends Json.Serializable>(\n\tstr: stringified<J> | string,\n): J => JSON.parse(str)\n\n/** Type-safe wrapper for {@link JSON.stringify} */\nexport const stringifyJson = <J extends Json.Serializable>(\n\tjson: J,\n): stringified<J> => JSON.stringify(json) as stringified<J>\n\n/** Only Canonical values should be used for keys because they always serialize to the same string */\nexport type Canonical = primitive | ReadonlyArray<Canonical>\n\n/** A function whose parameters and return value are {@link Json.Serializable} */\nexport type JsonIO = (...params: Json.Serializable[]) => Json.Serializable | void\n\nexport type JsonInterface<T, J extends Json.Serializable = Json.Serializable> = {\n\ttoJson: (t: ViewOf<T>) => J\n\tfromJson: (json: J) => T\n}\n\nconst JSON_PROTOTYPES = [\n\tArray.prototype,\n\tBoolean.prototype,\n\tNumber.prototype,\n\tObject.prototype,\n\tString.prototype,\n] as const\nexport const isJson = (input: unknown): input is Json.Tree.Node => {\n\tif (input === null) return true\n\tif (input === undefined) return false\n\tconst prototype = Object.getPrototypeOf(input)\n\treturn JSON_PROTOTYPES.includes(prototype)\n}\n\nexport const JSON_TYPE_NAMES = [\n\t`array`,\n\t`boolean`,\n\t`null`,\n\t`number`,\n\t`object`,\n\t`string`,\n] as const\n\nexport type JsonTypeName = (typeof JSON_TYPE_NAMES)[number]\n\nexport interface JsonTypes extends Record<JsonTypeName, Json.Serializable> {\n\tarray: Json.Array\n\tboolean: boolean\n\tnull: null\n\tnumber: number\n\tobject: Json.Object\n\tstring: string\n}\n\nexport const JSON_DEFAULTS: JsonTypes = {\n\tarray: [],\n\tboolean: false,\n\tnull: null,\n\tnumber: 0,\n\tobject: {},\n\tstring: ``,\n}\n"],"mappings":";;AAqBA,SAAgB,YAA+B,SAA4B;AAC1E,QAAO,OAAO,YAAY;AAC1B;;AAMD,SAAgB,UAA4B,KAAsB;AACjE,QAAO,OAAO,QAAQ;AACtB;;;;;ACqCD,MAAa,aACZ,QACO,KAAK,MAAM;;AAGnB,MAAa,iBACZ,SACoB,KAAK,UAAU;AAapC,MAAM,kBAAkB;CACvB,MAAM;CACN,QAAQ;CACR,OAAO;CACP,OAAO;CACP,OAAO;CACP;AACD,MAAa,UAAU,UAA4C;AAClE,KAAI,UAAU,KAAM,QAAO;AAC3B,KAAI,UAAU,OAAW,QAAO;CAChC,MAAM,YAAY,OAAO,eAAe;AACxC,QAAO,gBAAgB,SAAS;AAChC;AAED,MAAa,kBAAkB;CAC9B;CACA;CACA;CACA;CACA;CACA;CACA;AAaD,MAAaA,gBAA2B;CACvC,OAAO,EAAE;CACT,SAAS;CACT,MAAM;CACN,QAAQ;CACR,QAAQ,EAAE;CACV,QAAQ;CACR"}
1
+ {"version":3,"file":"index.js","names":["JSON_DEFAULTS: JsonTypes"],"sources":["../../src/json/entries.ts","../../src/json/index.ts"],"sourcesContent":["import type { Count, Flat } from \"atom.io/internal\"\n\n/** Tuples of `[key, value]` pairs, as returned from `Object.entries` */\nexport type Entries<K extends PropertyKey = PropertyKey, V = any> = [K, V][]\n\n/** The collective or \"union\" type of the keys in a set of entries */\nexport type KeyOfEntries<E extends Entries> = E extends [infer K, any][]\n\t? K\n\t: never\n\n/** The type of the value of entry `K` in a set of entries `E` */\nexport type ValueOfEntry<E extends Entries, K extends KeyOfEntries<E>> = {\n\t[P in Count<E[`length`]>]: E[P] extends [K, infer V] ? V : never\n}[Count<E[`length`]>]\n\n/** The type of a set of entries `E` in object form */\nexport type FromEntries<E extends Entries> = Flat<{\n\t[K in KeyOfEntries<E>]: ValueOfEntry<E, K>\n}>\n\n/** Typed form of `Object.fromEntries` */\nexport function fromEntries<E extends Entries>(entries: E): FromEntries<E> {\n\treturn Object.fromEntries(entries) as FromEntries<E>\n}\n\n/** The type of an object T in {@link Entries} form */\nexport type ToEntries<T extends object> = Entries<keyof T, T[keyof T]>\n\n/** Typed form of `Object.entries` */\nexport function toEntries<T extends object>(obj: T): ToEntries<T> {\n\treturn Object.entries(obj) as Entries<keyof T, T[keyof T]>\n}\n","import type { ViewOf } from \"atom.io\"\n\nexport * from \"./entries\"\n\nexport type primitive = boolean | number | string | null\n\nexport namespace Json {\n\texport namespace Tree {\n\t\t// eslint-disable-next-line @typescript-eslint/no-shadow\n\t\texport type Array<Element = unknown> = ReadonlyArray<Element>\n\t\t// eslint-disable-next-line @typescript-eslint/no-shadow\n\t\texport type Object<K extends string = string, V = unknown> = Record<K, V>\n\t\texport type Fork = Array | Object\n\t\texport type Leaf = primitive\n\t\texport type Node = Fork | Leaf\n\t}\n\n\t/** A value can survive being {@link JSON.stringify}-ed and {@link JSON.parse}-d fully intact */\n\texport type Serializable =\n\t\t| primitive\n\t\t| Readonly<{ [key: string]: Serializable }>\n\t\t| ReadonlyArray<Serializable>\n\n\texport type Object<\n\t\tKey extends string = string,\n\t\tValue extends Serializable = Serializable,\n\t> = Record<Key, Value>\n\n\texport type Array<Element extends Serializable = Serializable> =\n\t\tReadonlyArray<Element>\n}\n\n/** A generic that retains the type information of a {@link Json.Serializable} value while in string form */\n// biome-ignore format: long silly ternary\nexport type stringified<J extends Json.Serializable> = (\n J extends string\n ? `\"${J}\"`\n : J extends number\n ? `${J}`\n : J extends true\n ? `true`\n : J extends false\n ? `false`\n : J extends boolean\n ? `false` | `true`\n : J extends null\n ? `null`\n : J extends []\n ? `[]`\n : J extends [infer Element extends Json.Serializable]\n ? `[${stringified<Element>}]`\n : J extends [\n\t\t\t\t\tinfer Element1 extends Json.Serializable,\n\t\t\t\t\tinfer Element2 extends Json.Serializable,\n\t\t\t\t]\n ? `[${stringified<Element1>}, ${stringified<Element2>}]`\n : J extends [\n\t\t\t\t\tinfer Element1 extends Json.Serializable,\n\t\t\t\t\tinfer Element2 extends Json.Serializable,\n\t\t\t\t\tinfer Element3 extends Json.Serializable,\n\t\t\t\t]\n ? `[${stringified<Element1>}, ${stringified<Element2>}, ${stringified<Element3>}]`\n : J extends any[]\n ? `[${string}]` & { __json?: J }\n : string & { __json?: J }\n )\n\n/** Type-safe wrapper for {@link JSON.parse} */\nexport function parseJson<J extends Json.Serializable>(str: stringified<J>): J\n/** Type-safe wrapper for {@link JSON.parse} */\nexport function parseJson(str: string): Json.Serializable\nexport function parseJson(str: string): Json.Serializable {\n\treturn JSON.parse(str)\n}\n\n/** Type-safe wrapper for {@link JSON.stringify} */\nexport const stringifyJson = <J extends Json.Serializable>(\n\tjson: J,\n): stringified<J> => JSON.stringify(json) as stringified<J>\n\n/** Only Canonical values should be used for keys because they always serialize to the same string */\nexport type Canonical = primitive | ReadonlyArray<Canonical>\n\n/** A function whose parameters and return value are {@link Json.Serializable} */\nexport type JsonIO = (...params: Json.Serializable[]) => Json.Serializable | void\n\nexport type JsonInterface<T, J extends Json.Serializable = Json.Serializable> = {\n\ttoJson: (t: ViewOf<T>) => J\n\tfromJson: (json: J) => T\n}\n\nconst JSON_PROTOTYPES = [\n\tArray.prototype,\n\tBoolean.prototype,\n\tNumber.prototype,\n\tObject.prototype,\n\tString.prototype,\n] as const\nexport const isJson = (input: unknown): input is Json.Tree.Node => {\n\tif (input === null) return true\n\tif (input === undefined) return false\n\tconst prototype = Object.getPrototypeOf(input)\n\treturn JSON_PROTOTYPES.includes(prototype)\n}\n\nexport const JSON_TYPE_NAMES = [\n\t`array`,\n\t`boolean`,\n\t`null`,\n\t`number`,\n\t`object`,\n\t`string`,\n] as const\n\nexport type JsonTypeName = (typeof JSON_TYPE_NAMES)[number]\n\nexport interface JsonTypes extends Record<JsonTypeName, Json.Serializable> {\n\tarray: Json.Array\n\tboolean: boolean\n\tnull: null\n\tnumber: number\n\tobject: Json.Object\n\tstring: string\n}\n\nexport const JSON_DEFAULTS: JsonTypes = {\n\tarray: [],\n\tboolean: false,\n\tnull: null,\n\tnumber: 0,\n\tobject: {},\n\tstring: ``,\n}\n"],"mappings":";;AAqBA,SAAgB,YAA+B,SAA4B;AAC1E,QAAO,OAAO,YAAY;AAC1B;;AAMD,SAAgB,UAA4B,KAAsB;AACjE,QAAO,OAAO,QAAQ;AACtB;;;;ACwCD,SAAgB,UAAU,KAAgC;AACzD,QAAO,KAAK,MAAM;AAClB;;AAGD,MAAa,iBACZ,SACoB,KAAK,UAAU;AAapC,MAAM,kBAAkB;CACvB,MAAM;CACN,QAAQ;CACR,OAAO;CACP,OAAO;CACP,OAAO;CACP;AACD,MAAa,UAAU,UAA4C;AAClE,KAAI,UAAU,KAAM,QAAO;AAC3B,KAAI,UAAU,OAAW,QAAO;CAChC,MAAM,YAAY,OAAO,eAAe;AACxC,QAAO,gBAAgB,SAAS;AAChC;AAED,MAAa,kBAAkB;CAC9B;CACA;CACA;CACA;CACA;CACA;CACA;AAaD,MAAaA,gBAA2B;CACvC,OAAO,EAAE;CACT,SAAS;CACT,MAAM;CACN,QAAQ;CACR,QAAQ,EAAE;CACV,QAAQ;CACR"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "atom.io",
3
- "version": "0.38.0",
3
+ "version": "0.38.1",
4
4
  "description": "Composable and testable reactive data library.",
5
5
  "homepage": "https://atom.io.fyi",
6
6
  "sideEffects": false,
@@ -121,7 +121,7 @@ export class Store implements Lineage {
121
121
  )
122
122
  public moleculeGraph: Junction<
123
123
  `upstreamMoleculeKey`,
124
- stringified<Canonical> | `root`,
124
+ stringified<Canonical> | `"root"`,
125
125
  `downstreamMoleculeKey`,
126
126
  stringified<Canonical>,
127
127
  { source: stringified<Canonical> }
package/src/json/index.ts CHANGED
@@ -66,9 +66,12 @@ export type stringified<J extends Json.Serializable> = (
66
66
  )
67
67
 
68
68
  /** Type-safe wrapper for {@link JSON.parse} */
69
- export const parseJson = <J extends Json.Serializable>(
70
- str: stringified<J> | string,
71
- ): J => JSON.parse(str)
69
+ export function parseJson<J extends Json.Serializable>(str: stringified<J>): J
70
+ /** Type-safe wrapper for {@link JSON.parse} */
71
+ export function parseJson(str: string): Json.Serializable
72
+ export function parseJson(str: string): Json.Serializable {
73
+ return JSON.parse(str)
74
+ }
72
75
 
73
76
  /** Type-safe wrapper for {@link JSON.stringify} */
74
77
  export const stringifyJson = <J extends Json.Serializable>(