liminal 0.5.13 → 0.5.15

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.
Files changed (134) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/Context.ts +21 -4
  3. package/Definition.ts +16 -0
  4. package/L/L.ts +10 -1
  5. package/L/all.ts +4 -0
  6. package/L/assistant.ts +5 -3
  7. package/L/catch.ts +4 -0
  8. package/L/continuation.ts +3 -2
  9. package/L/emit.ts +6 -2
  10. package/L/infer.ts +16 -10
  11. package/L/message.ts +7 -3
  12. package/L/model.ts +4 -0
  13. package/L/reflect.ts +2 -1
  14. package/L/run.ts +2 -1
  15. package/L/schema/_schema_common.ts +29 -0
  16. package/L/schema/anyOf.ts +10 -0
  17. package/L/schema/array.ts +13 -0
  18. package/L/schema/boolean.ts +8 -0
  19. package/L/schema/const.ts +18 -0
  20. package/L/schema/enum.ts +18 -0
  21. package/L/schema/integer.ts +6 -0
  22. package/L/schema/null.ts +8 -0
  23. package/L/schema/number.ts +8 -0
  24. package/L/schema/object.ts +21 -0
  25. package/L/schema/string.ts +11 -0
  26. package/L/strand.ts +6 -2
  27. package/L/stream.ts +2 -1
  28. package/Message.ts +3 -2
  29. package/Model.ts +4 -4
  30. package/ModelRegistry.ts +16 -3
  31. package/Rune.ts +36 -7
  32. package/Schema.ts +4 -4
  33. package/Strand.ts +37 -6
  34. package/dist/Context.d.ts +19 -0
  35. package/dist/Context.js +7 -2
  36. package/dist/Context.js.map +1 -1
  37. package/dist/Definition.d.ts +14 -0
  38. package/dist/Definition.js +11 -0
  39. package/dist/Definition.js.map +1 -1
  40. package/dist/L/L.d.ts +10 -1
  41. package/dist/L/L.js +10 -1
  42. package/dist/L/L.js.map +1 -1
  43. package/dist/L/all.d.ts +4 -0
  44. package/dist/L/all.js.map +1 -1
  45. package/dist/L/assistant.d.ts +4 -0
  46. package/dist/L/assistant.js +1 -3
  47. package/dist/L/assistant.js.map +1 -1
  48. package/dist/L/catch.d.ts +4 -0
  49. package/dist/L/catch.js +4 -0
  50. package/dist/L/catch.js.map +1 -1
  51. package/dist/L/continuation.d.ts +1 -0
  52. package/dist/L/continuation.js +3 -2
  53. package/dist/L/continuation.js.map +1 -1
  54. package/dist/L/emit.d.ts +4 -0
  55. package/dist/L/emit.js +6 -2
  56. package/dist/L/emit.js.map +1 -1
  57. package/dist/L/infer.d.ts +4 -0
  58. package/dist/L/infer.js +11 -7
  59. package/dist/L/infer.js.map +1 -1
  60. package/dist/L/message.d.ts +6 -2
  61. package/dist/L/message.js +5 -1
  62. package/dist/L/message.js.map +1 -1
  63. package/dist/L/model.d.ts +4 -0
  64. package/dist/L/model.js +4 -0
  65. package/dist/L/model.js.map +1 -1
  66. package/dist/L/reflect.d.ts +1 -0
  67. package/dist/L/reflect.js +2 -1
  68. package/dist/L/reflect.js.map +1 -1
  69. package/dist/L/run.d.ts +2 -1
  70. package/dist/L/run.js.map +1 -1
  71. package/dist/L/schema/_schema_common.d.ts +6 -0
  72. package/dist/L/schema/_schema_common.js +19 -0
  73. package/dist/L/schema/_schema_common.js.map +1 -0
  74. package/dist/L/schema/anyOf.d.ts +5 -0
  75. package/dist/L/schema/anyOf.js +5 -0
  76. package/dist/L/schema/anyOf.js.map +1 -0
  77. package/dist/L/schema/array.d.ts +5 -0
  78. package/dist/L/schema/array.js +8 -0
  79. package/dist/L/schema/array.js.map +1 -0
  80. package/dist/L/schema/boolean.d.ts +6 -0
  81. package/dist/L/schema/boolean.js +4 -0
  82. package/dist/L/schema/boolean.js.map +1 -0
  83. package/dist/L/schema/const.d.ts +8 -0
  84. package/dist/L/schema/const.js +10 -0
  85. package/dist/L/schema/const.js.map +1 -0
  86. package/dist/L/schema/enum.d.ts +8 -0
  87. package/dist/L/schema/enum.js +10 -0
  88. package/dist/L/schema/enum.js.map +1 -0
  89. package/dist/L/schema/integer.d.ts +5 -0
  90. package/dist/L/schema/integer.js +3 -0
  91. package/dist/L/schema/integer.js.map +1 -0
  92. package/dist/L/schema/null.d.ts +6 -0
  93. package/dist/L/schema/null.js +4 -0
  94. package/dist/L/schema/null.js.map +1 -0
  95. package/dist/L/schema/number.d.ts +6 -0
  96. package/dist/L/schema/number.js +4 -0
  97. package/dist/L/schema/number.js.map +1 -0
  98. package/dist/L/schema/object.d.ts +9 -0
  99. package/dist/L/schema/object.js +12 -0
  100. package/dist/L/schema/object.js.map +1 -0
  101. package/dist/L/schema/string.d.ts +8 -0
  102. package/dist/L/schema/string.js +4 -0
  103. package/dist/L/schema/string.js.map +1 -0
  104. package/dist/L/strand.d.ts +4 -0
  105. package/dist/L/strand.js +6 -2
  106. package/dist/L/strand.js.map +1 -1
  107. package/dist/L/stream.d.ts +1 -0
  108. package/dist/L/stream.js +2 -1
  109. package/dist/L/stream.js.map +1 -1
  110. package/dist/Message.d.ts +3 -2
  111. package/dist/Model.d.ts +4 -4
  112. package/dist/Model.js +4 -4
  113. package/dist/ModelRegistry.d.ts +11 -1
  114. package/dist/ModelRegistry.js +16 -3
  115. package/dist/ModelRegistry.js.map +1 -1
  116. package/dist/Rune.d.ts +29 -8
  117. package/dist/Rune.js +2 -0
  118. package/dist/Rune.js.map +1 -1
  119. package/dist/Schema.d.ts +2 -2
  120. package/dist/Schema.js +2 -2
  121. package/dist/Schema.js.map +1 -1
  122. package/dist/Strand.d.ts +24 -0
  123. package/dist/Strand.js +27 -4
  124. package/dist/Strand.js.map +1 -1
  125. package/dist/tsconfig.tsbuildinfo +1 -1
  126. package/dist/util/JSONValue.d.ts +1 -1
  127. package/dist/util/JSONValue.js +21 -9
  128. package/dist/util/JSONValue.js.map +1 -1
  129. package/package.json +1 -1
  130. package/util/JSONValue.ts +23 -8
  131. package/L/context.ts +0 -12
  132. package/dist/L/context.d.ts +0 -2
  133. package/dist/L/context.js +0 -12
  134. package/dist/L/context.js.map +0 -1
@@ -1,18 +1,30 @@
1
1
  import { LiminalAssertionError } from "liminal";
2
2
  export var JSONValue;
3
3
  (function (JSONValue) {
4
- function assert(value) {
5
- if (value === null) {
4
+ function assert(value, visited = new Set()) {
5
+ if (value === null)
6
+ return;
7
+ const t = typeof value;
8
+ if (typeof value !== "object") {
9
+ LiminalAssertionError.assert(t === "string" || t === "number" || t === "boolean");
6
10
  return;
7
11
  }
8
- else if (Array.isArray(value)) {
9
- value.every(assert);
10
- }
11
- else if (typeof value === "object") {
12
- Object.values(value).every(assert);
12
+ LiminalAssertionError.assert(!visited.has(value));
13
+ visited.add(value);
14
+ try {
15
+ if (Array.isArray(value)) {
16
+ for (let i = 0; i < value.length; i++) {
17
+ assert(value[i], new Set(visited));
18
+ }
19
+ }
20
+ else {
21
+ for (const key in value) {
22
+ assert(value[key], new Set(visited));
23
+ }
24
+ }
13
25
  }
14
- else {
15
- LiminalAssertionError.assert(typeof value === "string" || typeof value === "number" || typeof value === "boolean");
26
+ finally {
27
+ visited.delete(value);
16
28
  }
17
29
  }
18
30
  JSONValue.assert = assert;
@@ -1 +1 @@
1
- {"version":3,"file":"JSONValue.js","sourceRoot":"","sources":["../../util/JSONValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAG/C,MAAM,KAAW,SAAS,CAYzB;AAZD,WAAiB,SAAS;IACxB,SAAgB,MAAM,CAAC,KAAc;QACnC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAM;QACR,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACrB,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACpC,CAAC;aAAM,CAAC;YACN,qBAAqB,CAAC,MAAM,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,CAAC,CAAA;QACpH,CAAC;IACH,CAAC;IAVe,gBAAM,SAUrB,CAAA;AACH,CAAC,EAZgB,SAAS,KAAT,SAAS,QAYzB"}
1
+ {"version":3,"file":"JSONValue.js","sourceRoot":"","sources":["../../util/JSONValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAG/C,MAAM,KAAW,SAAS,CA2BzB;AA3BD,WAAiB,SAAS;IACxB,SAAgB,MAAM,CACpB,KAAc,EACd,UAAuB,IAAI,GAAG,EAAU;QAExC,IAAI,KAAK,KAAK,IAAI;YAAE,OAAM;QAC1B,MAAM,CAAC,GAAG,OAAO,KAAK,CAAA;QACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,qBAAqB,CAAC,MAAM,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,SAAS,CAAC,CAAA;YACjF,OAAM;QACR,CAAC;QACD,qBAAqB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;QACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAClB,IAAI,CAAC;YACH,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACtC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;gBACpC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;oBACxB,MAAM,CAAC,KAAK,CAAC,GAAY,CAAC,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;gBAC/C,CAAC;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC;IACH,CAAC;IAzBe,gBAAM,SAyBrB,CAAA;AACH,CAAC,EA3BgB,SAAS,KAAT,SAAS,QA2BzB"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.5.13",
6
+ "version": "0.5.15",
7
7
  "license": "Apache-2.0",
8
8
  "repository": {
9
9
  "type": "git",
package/util/JSONValue.ts CHANGED
@@ -2,15 +2,30 @@ import { LiminalAssertionError } from "liminal"
2
2
 
3
3
  export type JSONValue = null | boolean | number | string | JSONValueArray | JSONValueObject
4
4
  export namespace JSONValue {
5
- export function assert(value: unknown): asserts value is JSONValue {
6
- if (value === null) {
5
+ export function assert(
6
+ value: unknown,
7
+ visited: Set<object> = new Set<object>(),
8
+ ): asserts value is JSONValue {
9
+ if (value === null) return
10
+ const t = typeof value
11
+ if (typeof value !== "object") {
12
+ LiminalAssertionError.assert(t === "string" || t === "number" || t === "boolean")
7
13
  return
8
- } else if (Array.isArray(value)) {
9
- value.every(assert)
10
- } else if (typeof value === "object") {
11
- Object.values(value).every(assert)
12
- } else {
13
- LiminalAssertionError.assert(typeof value === "string" || typeof value === "number" || typeof value === "boolean")
14
+ }
15
+ LiminalAssertionError.assert(!visited.has(value))
16
+ visited.add(value)
17
+ try {
18
+ if (Array.isArray(value)) {
19
+ for (let i = 0; i < value.length; i++) {
20
+ assert(value[i], new Set(visited))
21
+ }
22
+ } else {
23
+ for (const key in value) {
24
+ assert(value[key as never], new Set(visited))
25
+ }
26
+ }
27
+ } finally {
28
+ visited.delete(value)
14
29
  }
15
30
  }
16
31
  }
package/L/context.ts DELETED
@@ -1,12 +0,0 @@
1
- import { Context } from "../Context.ts"
2
- import { reflect } from "./reflect.ts"
3
-
4
- export function* context(partial: Partial<Omit<Context, "clone">>) {
5
- const { context } = yield* reflect
6
- return Context({
7
- handler: partial.handler ?? context.handler,
8
- messages: partial.messages ?? context.messages,
9
- models: partial.models ?? context.models,
10
- tools: partial.tools ?? context.tools,
11
- })
12
- }
@@ -1,2 +0,0 @@
1
- import { Context } from "../Context.ts";
2
- export declare function context(partial: Partial<Omit<Context, "clone">>): Generator<import("../Rune.ts").Rune<import("../LEvent.ts").LEvent>, Context, any>;
package/dist/L/context.js DELETED
@@ -1,12 +0,0 @@
1
- import { Context } from "../Context.js";
2
- import { reflect } from "./reflect.js";
3
- export function* context(partial) {
4
- const { context } = yield* reflect;
5
- return Context({
6
- handler: partial.handler ?? context.handler,
7
- messages: partial.messages ?? context.messages,
8
- models: partial.models ?? context.models,
9
- tools: partial.tools ?? context.tools,
10
- });
11
- }
12
- //# sourceMappingURL=context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../L/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,SAAS,CAAC,CAAC,OAAO,CAAC,OAAwC;IAC/D,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC,OAAO,CAAA;IAClC,OAAO,OAAO,CAAC;QACb,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO;QAC3C,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ;QAC9C,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM;QACxC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK;KACtC,CAAC,CAAA;AACJ,CAAC"}