@bessemer/cornerstone 0.5.57 → 0.5.59

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 (83) hide show
  1. package/dist/async-value.d.ts +88 -0
  2. package/dist/async-value.d.ts.map +1 -0
  3. package/dist/async-value.js +54 -0
  4. package/dist/async-value.js.map +1 -0
  5. package/dist/async.d.ts +0 -55
  6. package/dist/async.d.ts.map +1 -1
  7. package/dist/async.js +1 -39
  8. package/dist/async.js.map +1 -1
  9. package/dist/cache.d.ts.map +1 -1
  10. package/dist/cache.js +2 -1
  11. package/dist/cache.js.map +1 -1
  12. package/dist/content.d.ts +7 -7
  13. package/dist/content.d.ts.map +1 -1
  14. package/dist/content.js +3 -2
  15. package/dist/content.js.map +1 -1
  16. package/dist/data-size.d.ts +1 -1
  17. package/dist/data-size.d.ts.map +1 -1
  18. package/dist/data-size.js +2 -2
  19. package/dist/data-size.js.map +1 -1
  20. package/dist/date.d.ts +1 -1
  21. package/dist/date.d.ts.map +1 -1
  22. package/dist/date.js +11 -20
  23. package/dist/date.js.map +1 -1
  24. package/dist/duration.d.ts +1 -1
  25. package/dist/duration.d.ts.map +1 -1
  26. package/dist/duration.js +2 -2
  27. package/dist/duration.js.map +1 -1
  28. package/dist/entry.d.ts +2 -0
  29. package/dist/entry.d.ts.map +1 -1
  30. package/dist/entry.js +5 -0
  31. package/dist/entry.js.map +1 -1
  32. package/dist/error-event.d.ts +1 -1
  33. package/dist/error-event.js +2 -2
  34. package/dist/error-event.js.map +1 -1
  35. package/dist/glob.d.ts +2 -2
  36. package/dist/glob.d.ts.map +1 -1
  37. package/dist/glob.js +29 -7
  38. package/dist/glob.js.map +1 -1
  39. package/dist/hex-code.d.ts +6 -3
  40. package/dist/hex-code.d.ts.map +1 -1
  41. package/dist/hex-code.js +11 -3
  42. package/dist/hex-code.js.map +1 -1
  43. package/dist/index.d.ts +3 -2
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +4 -2
  46. package/dist/index.js.map +1 -1
  47. package/dist/math.d.ts +1 -1
  48. package/dist/math.d.ts.map +1 -1
  49. package/dist/math.js +1 -1
  50. package/dist/math.js.map +1 -1
  51. package/dist/mime-type.d.ts +3 -3
  52. package/dist/mime-type.d.ts.map +1 -1
  53. package/dist/mime-type.js +6 -6
  54. package/dist/mime-type.js.map +1 -1
  55. package/dist/range.d.ts +6 -3
  56. package/dist/range.d.ts.map +1 -1
  57. package/dist/range.js +12 -9
  58. package/dist/range.js.map +1 -1
  59. package/dist/resource.d.ts.map +1 -1
  60. package/dist/resource.js +2 -1
  61. package/dist/resource.js.map +1 -1
  62. package/dist/sql/sql-expression-parser.js +2 -3
  63. package/dist/sql/sql-expression-parser.js.map +1 -1
  64. package/dist/sql/sql.d.ts +1 -1
  65. package/dist/sql/sql.d.ts.map +1 -1
  66. package/dist/sql/sql.js +1 -1
  67. package/dist/sql/sql.js.map +1 -1
  68. package/dist/ulid.d.ts +4 -4
  69. package/dist/ulid.d.ts.map +1 -1
  70. package/dist/ulid.js +9 -17
  71. package/dist/ulid.js.map +1 -1
  72. package/dist/uuid.d.ts +4 -4
  73. package/dist/uuid.d.ts.map +1 -1
  74. package/dist/uuid.js +11 -18
  75. package/dist/uuid.js.map +1 -1
  76. package/dist/zod-util.d.ts +10 -0
  77. package/dist/zod-util.d.ts.map +1 -0
  78. package/dist/{zod.js → zod-util.js} +9 -39
  79. package/dist/zod-util.js.map +1 -0
  80. package/package.json +1 -1
  81. package/dist/zod.d.ts +0 -36
  82. package/dist/zod.d.ts.map +0 -1
  83. package/dist/zod.js.map +0 -1
package/dist/range.js CHANGED
@@ -1,16 +1,19 @@
1
1
  // src/range.ts
2
- import { Objects, Zod } from "@bessemer/cornerstone";
3
- var boundsSchema = (type) => {
4
- return Zod.tuple([type.nullable(), type.nullable()]).brand("Bounds");
2
+ import { Objects } from "@bessemer/cornerstone";
3
+ import Zod from "zod";
4
+ var schema = (type) => {
5
+ return Zod.tuple([type.nullable(), type.nullable()]);
5
6
  };
6
- var bounds = (bounds2) => {
7
- if (Objects.isUndefined(bounds2[1])) {
8
- return [bounds2[0], null];
7
+ var NumericSchema = schema(Zod.number());
8
+ var of = (bounds) => {
9
+ if (Objects.isUndefined(bounds[1])) {
10
+ return [bounds[0], null];
9
11
  }
10
- return bounds2;
12
+ return bounds;
11
13
  };
12
14
  export {
13
- bounds,
14
- boundsSchema
15
+ NumericSchema,
16
+ of,
17
+ schema
15
18
  };
16
19
  //# sourceMappingURL=range.js.map
package/dist/range.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/range.ts"],"sourcesContent":["import { Objects, Zod } from '@bessemer/cornerstone'\nimport { ZodType } from 'zod'\nimport { TaggedType } from '@bessemer/cornerstone/types'\n\nexport const boundsSchema = <T extends ZodType>(type: T) => {\n return Zod.tuple([type.nullable(), type.nullable()]).brand('Bounds')\n}\n\nexport type Bounds<T> = TaggedType<[T | null, T | null], 'Bounds'>\n\nexport const bounds = <T>(bounds: [lower: T | null, upper?: T | null]): Bounds<T> => {\n if(Objects.isUndefined(bounds[1])) {\n return [bounds[0], null] as Bounds<T>\n }\n\n return bounds as Bounds<T>\n}"],"mappings":";AAAA,SAAS,SAAS,WAAW;AAItB,IAAM,eAAe,CAAoB,SAAY;AAC1D,SAAO,IAAI,MAAM,CAAC,KAAK,SAAS,GAAG,KAAK,SAAS,CAAC,CAAC,EAAE,MAAM,QAAQ;AACrE;AAIO,IAAM,SAAS,CAAIA,YAA2D;AACnF,MAAG,QAAQ,YAAYA,QAAO,CAAC,CAAC,GAAG;AACjC,WAAO,CAACA,QAAO,CAAC,GAAG,IAAI;AAAA,EACzB;AAEA,SAAOA;AACT;","names":["bounds"]}
1
+ {"version":3,"sources":["../src/range.ts"],"sourcesContent":["import { Objects } from '@bessemer/cornerstone'\nimport Zod, { ZodType } from 'zod'\nimport { TaggedType } from '@bessemer/cornerstone/types'\n\nexport type Bounds<T> = TaggedType<[T | null, T | null], 'Bounds'>\nexport type BoundsInput<T> = [lower: T | null, upper?: T | null] | Bounds<T>\n\nexport const schema = <T extends ZodType>(type: T) => {\n return Zod.tuple([type.nullable(), type.nullable()])\n}\n\nexport type NumericBounds<T> = Bounds<number>\nexport const NumericSchema = schema(Zod.number())\n\nexport const of = <T>(bounds: BoundsInput<T>): Bounds<T> => {\n if (Objects.isUndefined(bounds[1])) {\n return [bounds[0], null] as Bounds<T>\n }\n\n return bounds as Bounds<T>\n}\n"],"mappings":";AAAA,SAAS,eAAe;AACxB,OAAO,SAAsB;AAMtB,IAAM,SAAS,CAAoB,SAAY;AACpD,SAAO,IAAI,MAAM,CAAC,KAAK,SAAS,GAAG,KAAK,SAAS,CAAC,CAAC;AACrD;AAGO,IAAM,gBAAgB,OAAO,IAAI,OAAO,CAAC;AAEzC,IAAM,KAAK,CAAI,WAAsC;AAC1D,MAAI,QAAQ,YAAY,OAAO,CAAC,CAAC,GAAG;AAClC,WAAO,CAAC,OAAO,CAAC,GAAG,IAAI;AAAA,EACzB;AAEA,SAAO;AACT;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAEzD,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAE7B,MAAM,MAAM,WAAW,GAAG,MAAM,CAAA;AAEhC,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;AACxE,eAAO,MAAM,uBAAuB,EAAE,OAAO,CAAC,iBAAiB,CAAgB,CAAA;AAE/E,yBAAiB,WAAW,CAAC;IAGpB,MAAM,SAAS,GAAI,WAAW,iBAAiB,EAAE,KAAK,WAAW,KAAG,WAE1E,CAAA;IAEM,MAAM,YAAY,GAAI,WAAW,iBAAiB,EAAE,MAAM,KAAK,CAAC,WAAW,CAAC,KAAG,KAAK,CAAC,WAAW,CAEtG,CAAA;IAEM,MAAM,cAAc,GAAI,WAAW,iBAAiB,EAAE,KAAK,WAAW,KAAG,WAE/E,CAAA;IAEM,MAAM,iBAAiB,GAAI,WAAW,iBAAiB,EAAE,MAAM,KAAK,CAAC,WAAW,CAAC,KAAG,KAAK,CAAC,WAAW,CAE3G,CAAA;IAEM,MAAM,eAAe,GAAI,GAAG,YAAY,KAAK,CAAC,iBAAiB,CAAC,KAAG,iBAEzE,CAAA;CACF"}
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAEzD,OAAY,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAElC,MAAM,MAAM,WAAW,GAAG,MAAM,CAAA;AAEhC,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;AACxE,eAAO,MAAM,uBAAuB,EAAE,OAAO,CAAC,iBAAiB,CAAgB,CAAA;AAE/E,yBAAiB,WAAW,CAAC;IAGpB,MAAM,SAAS,GAAI,WAAW,iBAAiB,EAAE,KAAK,WAAW,KAAG,WAE1E,CAAA;IAEM,MAAM,YAAY,GAAI,WAAW,iBAAiB,EAAE,MAAM,KAAK,CAAC,WAAW,CAAC,KAAG,KAAK,CAAC,WAAW,CAEtG,CAAA;IAEM,MAAM,cAAc,GAAI,WAAW,iBAAiB,EAAE,KAAK,WAAW,KAAG,WAE/E,CAAA;IAEM,MAAM,iBAAiB,GAAI,WAAW,iBAAiB,EAAE,MAAM,KAAK,CAAC,WAAW,CAAC,KAAG,KAAK,CAAC,WAAW,CAE3G,CAAA;IAEM,MAAM,eAAe,GAAI,GAAG,YAAY,KAAK,CAAC,iBAAiB,CAAC,KAAG,iBAEzE,CAAA;CACF"}
package/dist/resource.js CHANGED
@@ -1,5 +1,6 @@
1
1
  // src/resource.ts
2
- import { Strings, Zod } from "@bessemer/cornerstone";
2
+ import { Strings } from "@bessemer/cornerstone";
3
+ import Zod from "zod";
3
4
  var ResourceNamespaceSchema = Zod.string();
4
5
  var ResourceKey;
5
6
  ((ResourceKey2) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/resource.ts"],"sourcesContent":["import { NominalType } from '@bessemer/cornerstone/types'\nimport { Strings, Zod } from '@bessemer/cornerstone'\nimport { ZodType } from 'zod'\n\nexport type ResourceKey = string\n\nexport type ResourceNamespace = NominalType<string, 'ResourceNamespace'>\nexport const ResourceNamespaceSchema: ZodType<ResourceNamespace> = Zod.string()\n\nexport namespace ResourceKey {\n const ResourceNamespaceSeparator = '/'\n\n export const namespace = (namespace: ResourceNamespace, key: ResourceKey): ResourceKey => {\n return `${namespace}${ResourceNamespaceSeparator}${key}`\n }\n\n export const namespaceAll = (namespace: ResourceNamespace, keys: Array<ResourceKey>): Array<ResourceKey> => {\n return keys.map((it) => ResourceKey.namespace(namespace, it))\n }\n\n export const stripNamespace = (namespace: ResourceNamespace, key: ResourceKey): ResourceKey => {\n return Strings.removeStart(key, `${namespace}${ResourceNamespaceSeparator}`)\n }\n\n export const stripNamespaceAll = (namespace: ResourceNamespace, keys: Array<ResourceKey>): Array<ResourceKey> => {\n return keys.map((it) => ResourceKey.stripNamespace(namespace, it))\n }\n\n export const extendNamespace = (...namespaces: Array<ResourceNamespace>): ResourceNamespace => {\n return namespaces.join(ResourceNamespaceSeparator)\n }\n}\n"],"mappings":";AACA,SAAS,SAAS,WAAW;AAMtB,IAAM,0BAAsD,IAAI,OAAO;AAEvE,IAAU;AAAA,CAAV,CAAUA,iBAAV;AACL,QAAM,6BAA6B;AAE5B,EAAMA,aAAA,YAAY,CAACC,YAA8B,QAAkC;AACxF,WAAO,GAAGA,UAAS,GAAG,0BAA0B,GAAG,GAAG;AAAA,EACxD;AAEO,EAAMD,aAAA,eAAe,CAACC,YAA8B,SAAiD;AAC1G,WAAO,KAAK,IAAI,CAAC,OAAOD,aAAY,UAAUC,YAAW,EAAE,CAAC;AAAA,EAC9D;AAEO,EAAMD,aAAA,iBAAiB,CAACC,YAA8B,QAAkC;AAC7F,WAAO,QAAQ,YAAY,KAAK,GAAGA,UAAS,GAAG,0BAA0B,EAAE;AAAA,EAC7E;AAEO,EAAMD,aAAA,oBAAoB,CAACC,YAA8B,SAAiD;AAC/G,WAAO,KAAK,IAAI,CAAC,OAAOD,aAAY,eAAeC,YAAW,EAAE,CAAC;AAAA,EACnE;AAEO,EAAMD,aAAA,kBAAkB,IAAI,eAA4D;AAC7F,WAAO,WAAW,KAAK,0BAA0B;AAAA,EACnD;AAAA,GArBe;","names":["ResourceKey","namespace"]}
1
+ {"version":3,"sources":["../src/resource.ts"],"sourcesContent":["import { NominalType } from '@bessemer/cornerstone/types'\nimport { Strings } from '@bessemer/cornerstone'\nimport Zod, { ZodType } from 'zod'\n\nexport type ResourceKey = string\n\nexport type ResourceNamespace = NominalType<string, 'ResourceNamespace'>\nexport const ResourceNamespaceSchema: ZodType<ResourceNamespace> = Zod.string()\n\nexport namespace ResourceKey {\n const ResourceNamespaceSeparator = '/'\n\n export const namespace = (namespace: ResourceNamespace, key: ResourceKey): ResourceKey => {\n return `${namespace}${ResourceNamespaceSeparator}${key}`\n }\n\n export const namespaceAll = (namespace: ResourceNamespace, keys: Array<ResourceKey>): Array<ResourceKey> => {\n return keys.map((it) => ResourceKey.namespace(namespace, it))\n }\n\n export const stripNamespace = (namespace: ResourceNamespace, key: ResourceKey): ResourceKey => {\n return Strings.removeStart(key, `${namespace}${ResourceNamespaceSeparator}`)\n }\n\n export const stripNamespaceAll = (namespace: ResourceNamespace, keys: Array<ResourceKey>): Array<ResourceKey> => {\n return keys.map((it) => ResourceKey.stripNamespace(namespace, it))\n }\n\n export const extendNamespace = (...namespaces: Array<ResourceNamespace>): ResourceNamespace => {\n return namespaces.join(ResourceNamespaceSeparator)\n }\n}\n"],"mappings":";AACA,SAAS,eAAe;AACxB,OAAO,SAAsB;AAKtB,IAAM,0BAAsD,IAAI,OAAO;AAEvE,IAAU;AAAA,CAAV,CAAUA,iBAAV;AACL,QAAM,6BAA6B;AAE5B,EAAMA,aAAA,YAAY,CAACC,YAA8B,QAAkC;AACxF,WAAO,GAAGA,UAAS,GAAG,0BAA0B,GAAG,GAAG;AAAA,EACxD;AAEO,EAAMD,aAAA,eAAe,CAACC,YAA8B,SAAiD;AAC1G,WAAO,KAAK,IAAI,CAAC,OAAOD,aAAY,UAAUC,YAAW,EAAE,CAAC;AAAA,EAC9D;AAEO,EAAMD,aAAA,iBAAiB,CAACC,YAA8B,QAAkC;AAC7F,WAAO,QAAQ,YAAY,KAAK,GAAGA,UAAS,GAAG,0BAA0B,EAAE;AAAA,EAC7E;AAEO,EAAMD,aAAA,oBAAoB,CAACC,YAA8B,SAAiD;AAC/G,WAAO,KAAK,IAAI,CAAC,OAAOD,aAAY,eAAeC,YAAW,EAAE,CAAC;AAAA,EACnE;AAEO,EAAMD,aAAA,kBAAkB,IAAI,eAA4D;AAC7F,WAAO,WAAW,KAAK,0BAA0B;AAAA,EACnD;AAAA,GArBe;","names":["ResourceKey","namespace"]}
@@ -1,6 +1,6 @@
1
1
  // src/sql/sql-expression-parser.ts
2
2
  import { ExpressionMapper } from "@bessemer/cornerstone/expression/expression-mapper";
3
- import { Arrays, Assertions, Entries, Objects, Ulids } from "@bessemer/cornerstone";
3
+ import { Arrays, Entries, Objects, Ulids } from "@bessemer/cornerstone";
4
4
  import {
5
5
  AndExpression,
6
6
  ContainsExpression,
@@ -29,8 +29,7 @@ DefaultSqlExpressionParser.register(ValueExpression, (expression, _, context) =>
29
29
  });
30
30
  DefaultSqlExpressionParser.register(VariableExpression, (expression, _, context) => {
31
31
  const variableName = context.variables[expression.name];
32
- Assertions.assertPresent(variableName, () => `SqlExpressionParser - Unable to resolve VariableExpression with name: ${expression.name}`);
33
- return variableName;
32
+ return variableName ?? expression.name;
34
33
  });
35
34
  DefaultSqlExpressionParser.register(NotExpression, (expression, map, context) => {
36
35
  if (isType(expression.value, ContainsExpression)) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sql/sql-expression-parser.ts"],"sourcesContent":["import { ExpressionMapper } from '@bessemer/cornerstone/expression/expression-mapper'\nimport { Arrays, Assertions, Entries, Objects, Ulids } from '@bessemer/cornerstone'\nimport { BasicType, Dictionary } from '@bessemer/cornerstone/types'\nimport {\n AndExpression,\n ContainsExpression,\n EqualsExpression,\n GreaterThanExpression,\n GreaterThanOrEqualExpression,\n LessThanExpression,\n LessThanOrEqualExpression,\n NotExpression,\n OrExpression,\n ValueExpression,\n VariableExpression,\n} from '@bessemer/cornerstone/expression/core-expression'\nimport { isType, isValue } from '@bessemer/cornerstone/expression/internal'\nimport { SqlFragment, SqlParameterMap } from '@bessemer/cornerstone/sql'\n\nexport type SqlExpressionParserContext = {\n variables: Dictionary<string>\n parameters: SqlParameterMap\n}\nexport class SqlExpressionParser extends ExpressionMapper<SqlFragment, SqlExpressionParserContext> {}\n\nexport const DefaultSqlExpressionParser = new SqlExpressionParser()\nDefaultSqlExpressionParser.register(ValueExpression, (expression, _, context) => {\n const value = expression.value\n const parameterName = `_${Ulids.generate()}`\n if (!Objects.isBasic(value)) {\n throw new Error(`SqlExpressionParser - Unable to resolve complex ValueExpression as Sql: ${JSON.stringify(value)}`)\n }\n\n context.parameters[parameterName] = value\n return `:${parameterName}`\n})\nDefaultSqlExpressionParser.register(VariableExpression, (expression, _, context) => {\n const variableName = context.variables[expression.name]\n Assertions.assertPresent(variableName, () => `SqlExpressionParser - Unable to resolve VariableExpression with name: ${expression.name}`)\n return variableName\n})\nDefaultSqlExpressionParser.register(NotExpression, (expression, map, context) => {\n if (isType(expression.value, ContainsExpression)) {\n // JOHN tons of gross duplicated code that is duped across the contains resolver\n const collection = expression.value.collection\n\n // JOHN parsing expressions like this should be easier...\n let value: Array<BasicType> = []\n if (isType(collection, ValueExpression)) {\n value = collection.value as Array<BasicType>\n } else if (isValue(collection)) {\n value = collection as Array<BasicType>\n } else {\n throw new Error(`SqlExpressionParser - Unable to resolve ContainsExpression with non-value collection: ${JSON.stringify(collection)}`)\n }\n\n value.forEach((it) => {\n if (!Objects.isBasic(it)) {\n throw new Error(`SqlExpressionParser - Unable to resolve complex ValueExpression as Sql: ${JSON.stringify(it)}`)\n }\n })\n\n const parameters = value.map((it) => Entries.of(`_${Ulids.generate()}`, it))\n parameters.forEach(([key, value]) => {\n context.parameters[key] = value\n })\n\n const containsExpression = expression.value.operands\n .map(map)\n .map(\n (sql) =>\n `(${sql} NOT IN (${Entries.keys(parameters)\n .map((it) => `:${it}`)\n .join(',')}))`\n )\n .join(' AND ')\n\n return `(${containsExpression})`\n } else {\n return `(NOT ${map(expression.value)})`\n }\n})\nDefaultSqlExpressionParser.register(AndExpression, (expression, map) => {\n return `(${expression.operands.map(map).join(' AND ')})`\n})\nDefaultSqlExpressionParser.register(OrExpression, (expression, map) => {\n return `(${expression.operands.map(map).join(' OR ')})`\n})\nDefaultSqlExpressionParser.register(EqualsExpression, (expression, map) => {\n const first = Arrays.first(expression.operands)!\n const rest = Arrays.rest(expression.operands)\n\n const mappedFirst = map(first)\n const equalsExpressions = rest.map((it) => `(${mappedFirst} = ${map(it)})`).join(' AND ')\n return `(${equalsExpressions})`\n})\nDefaultSqlExpressionParser.register(ContainsExpression, (expression, map, context) => {\n const collection = expression.collection\n\n // JOHN parsing expressions like this should be easier...\n let value: Array<BasicType> = []\n if (isType(collection, ValueExpression)) {\n value = collection.value as Array<BasicType>\n } else if (isValue(collection)) {\n value = collection as Array<BasicType>\n } else {\n throw new Error(`SqlExpressionParser - Unable to resolve ContainsExpression with non-value collection: ${JSON.stringify(collection)}`)\n }\n\n value.forEach((it) => {\n if (!Objects.isBasic(it)) {\n throw new Error(`SqlExpressionParser - Unable to resolve complex ValueExpression as Sql: ${JSON.stringify(it)}`)\n }\n })\n\n const parameters = value.map((it) => Entries.of(`_${Ulids.generate()}`, it))\n parameters.forEach(([key, value]) => {\n context.parameters[key] = value\n })\n\n const containsExpression = expression.operands\n .map(map)\n .map(\n (sql) =>\n `(${sql} IN (${Entries.keys(parameters)\n .map((it) => `:${it}`)\n .join(',')}))`\n )\n .join(' AND ')\n\n return `(${containsExpression})`\n})\nDefaultSqlExpressionParser.register(LessThanExpression, (expression, map) => {\n return `(${map(expression.left)} < ${map(expression.right)})`\n})\nDefaultSqlExpressionParser.register(LessThanOrEqualExpression, (expression, map) => {\n return `(${map(expression.left)} <= ${map(expression.right)})`\n})\nDefaultSqlExpressionParser.register(GreaterThanExpression, (expression, map) => {\n return `(${map(expression.left)} > ${map(expression.right)})`\n})\nDefaultSqlExpressionParser.register(GreaterThanOrEqualExpression, (expression, map) => {\n return `(${map(expression.left)} >= ${map(expression.right)})`\n})\n"],"mappings":";AAAA,SAAS,wBAAwB;AACjC,SAAS,QAAQ,YAAY,SAAS,SAAS,aAAa;AAE5D;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,QAAQ,eAAe;AAOzB,IAAM,sBAAN,cAAkC,iBAA0D;AAAC;AAE7F,IAAM,6BAA6B,IAAI,oBAAoB;AAClE,2BAA2B,SAAS,iBAAiB,CAAC,YAAY,GAAG,YAAY;AAC/E,QAAM,QAAQ,WAAW;AACzB,QAAM,gBAAgB,IAAI,MAAM,SAAS,CAAC;AAC1C,MAAI,CAAC,QAAQ,QAAQ,KAAK,GAAG;AAC3B,UAAM,IAAI,MAAM,2EAA2E,KAAK,UAAU,KAAK,CAAC,EAAE;AAAA,EACpH;AAEA,UAAQ,WAAW,aAAa,IAAI;AACpC,SAAO,IAAI,aAAa;AAC1B,CAAC;AACD,2BAA2B,SAAS,oBAAoB,CAAC,YAAY,GAAG,YAAY;AAClF,QAAM,eAAe,QAAQ,UAAU,WAAW,IAAI;AACtD,aAAW,cAAc,cAAc,MAAM,yEAAyE,WAAW,IAAI,EAAE;AACvI,SAAO;AACT,CAAC;AACD,2BAA2B,SAAS,eAAe,CAAC,YAAY,KAAK,YAAY;AAC/E,MAAI,OAAO,WAAW,OAAO,kBAAkB,GAAG;AAEhD,UAAM,aAAa,WAAW,MAAM;AAGpC,QAAI,QAA0B,CAAC;AAC/B,QAAI,OAAO,YAAY,eAAe,GAAG;AACvC,cAAQ,WAAW;AAAA,IACrB,WAAW,QAAQ,UAAU,GAAG;AAC9B,cAAQ;AAAA,IACV,OAAO;AACL,YAAM,IAAI,MAAM,yFAAyF,KAAK,UAAU,UAAU,CAAC,EAAE;AAAA,IACvI;AAEA,UAAM,QAAQ,CAAC,OAAO;AACpB,UAAI,CAAC,QAAQ,QAAQ,EAAE,GAAG;AACxB,cAAM,IAAI,MAAM,2EAA2E,KAAK,UAAU,EAAE,CAAC,EAAE;AAAA,MACjH;AAAA,IACF,CAAC;AAED,UAAM,aAAa,MAAM,IAAI,CAAC,OAAO,QAAQ,GAAG,IAAI,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;AAC3E,eAAW,QAAQ,CAAC,CAAC,KAAKA,MAAK,MAAM;AACnC,cAAQ,WAAW,GAAG,IAAIA;AAAA,IAC5B,CAAC;AAED,UAAM,qBAAqB,WAAW,MAAM,SACzC,IAAI,GAAG,EACP;AAAA,MACC,CAAC,QACC,IAAI,GAAG,YAAY,QAAQ,KAAK,UAAU,EACvC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,EACpB,KAAK,GAAG,CAAC;AAAA,IAChB,EACC,KAAK,OAAO;AAEf,WAAO,IAAI,kBAAkB;AAAA,EAC/B,OAAO;AACL,WAAO,QAAQ,IAAI,WAAW,KAAK,CAAC;AAAA,EACtC;AACF,CAAC;AACD,2BAA2B,SAAS,eAAe,CAAC,YAAY,QAAQ;AACtE,SAAO,IAAI,WAAW,SAAS,IAAI,GAAG,EAAE,KAAK,OAAO,CAAC;AACvD,CAAC;AACD,2BAA2B,SAAS,cAAc,CAAC,YAAY,QAAQ;AACrE,SAAO,IAAI,WAAW,SAAS,IAAI,GAAG,EAAE,KAAK,MAAM,CAAC;AACtD,CAAC;AACD,2BAA2B,SAAS,kBAAkB,CAAC,YAAY,QAAQ;AACzE,QAAM,QAAQ,OAAO,MAAM,WAAW,QAAQ;AAC9C,QAAM,OAAO,OAAO,KAAK,WAAW,QAAQ;AAE5C,QAAM,cAAc,IAAI,KAAK;AAC7B,QAAM,oBAAoB,KAAK,IAAI,CAAC,OAAO,IAAI,WAAW,MAAM,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,OAAO;AACxF,SAAO,IAAI,iBAAiB;AAC9B,CAAC;AACD,2BAA2B,SAAS,oBAAoB,CAAC,YAAY,KAAK,YAAY;AACpF,QAAM,aAAa,WAAW;AAG9B,MAAI,QAA0B,CAAC;AAC/B,MAAI,OAAO,YAAY,eAAe,GAAG;AACvC,YAAQ,WAAW;AAAA,EACrB,WAAW,QAAQ,UAAU,GAAG;AAC9B,YAAQ;AAAA,EACV,OAAO;AACL,UAAM,IAAI,MAAM,yFAAyF,KAAK,UAAU,UAAU,CAAC,EAAE;AAAA,EACvI;AAEA,QAAM,QAAQ,CAAC,OAAO;AACpB,QAAI,CAAC,QAAQ,QAAQ,EAAE,GAAG;AACxB,YAAM,IAAI,MAAM,2EAA2E,KAAK,UAAU,EAAE,CAAC,EAAE;AAAA,IACjH;AAAA,EACF,CAAC;AAED,QAAM,aAAa,MAAM,IAAI,CAAC,OAAO,QAAQ,GAAG,IAAI,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;AAC3E,aAAW,QAAQ,CAAC,CAAC,KAAKA,MAAK,MAAM;AACnC,YAAQ,WAAW,GAAG,IAAIA;AAAA,EAC5B,CAAC;AAED,QAAM,qBAAqB,WAAW,SACnC,IAAI,GAAG,EACP;AAAA,IACC,CAAC,QACC,IAAI,GAAG,QAAQ,QAAQ,KAAK,UAAU,EACnC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,EACpB,KAAK,GAAG,CAAC;AAAA,EAChB,EACC,KAAK,OAAO;AAEf,SAAO,IAAI,kBAAkB;AAC/B,CAAC;AACD,2BAA2B,SAAS,oBAAoB,CAAC,YAAY,QAAQ;AAC3E,SAAO,IAAI,IAAI,WAAW,IAAI,CAAC,MAAM,IAAI,WAAW,KAAK,CAAC;AAC5D,CAAC;AACD,2BAA2B,SAAS,2BAA2B,CAAC,YAAY,QAAQ;AAClF,SAAO,IAAI,IAAI,WAAW,IAAI,CAAC,OAAO,IAAI,WAAW,KAAK,CAAC;AAC7D,CAAC;AACD,2BAA2B,SAAS,uBAAuB,CAAC,YAAY,QAAQ;AAC9E,SAAO,IAAI,IAAI,WAAW,IAAI,CAAC,MAAM,IAAI,WAAW,KAAK,CAAC;AAC5D,CAAC;AACD,2BAA2B,SAAS,8BAA8B,CAAC,YAAY,QAAQ;AACrF,SAAO,IAAI,IAAI,WAAW,IAAI,CAAC,OAAO,IAAI,WAAW,KAAK,CAAC;AAC7D,CAAC;","names":["value"]}
1
+ {"version":3,"sources":["../../src/sql/sql-expression-parser.ts"],"sourcesContent":["import { ExpressionMapper } from '@bessemer/cornerstone/expression/expression-mapper'\nimport { Arrays, Entries, Objects, Ulids } from '@bessemer/cornerstone'\nimport { BasicType, Dictionary } from '@bessemer/cornerstone/types'\nimport {\n AndExpression,\n ContainsExpression,\n EqualsExpression,\n GreaterThanExpression,\n GreaterThanOrEqualExpression,\n LessThanExpression,\n LessThanOrEqualExpression,\n NotExpression,\n OrExpression,\n ValueExpression,\n VariableExpression,\n} from '@bessemer/cornerstone/expression/core-expression'\nimport { isType, isValue } from '@bessemer/cornerstone/expression/internal'\nimport { SqlFragment, SqlParameterMap } from '@bessemer/cornerstone/sql'\n\nexport type SqlExpressionParserContext = {\n variables: Dictionary<string>\n parameters: SqlParameterMap\n}\nexport class SqlExpressionParser extends ExpressionMapper<SqlFragment, SqlExpressionParserContext> {}\n\nexport const DefaultSqlExpressionParser = new SqlExpressionParser()\nDefaultSqlExpressionParser.register(ValueExpression, (expression, _, context) => {\n const value = expression.value\n const parameterName = `_${Ulids.generate()}`\n if (!Objects.isBasic(value)) {\n throw new Error(`SqlExpressionParser - Unable to resolve complex ValueExpression as Sql: ${JSON.stringify(value)}`)\n }\n\n context.parameters[parameterName] = value\n return `:${parameterName}`\n})\nDefaultSqlExpressionParser.register(VariableExpression, (expression, _, context) => {\n const variableName = context.variables[expression.name]\n return variableName ?? expression.name\n})\nDefaultSqlExpressionParser.register(NotExpression, (expression, map, context) => {\n if (isType(expression.value, ContainsExpression)) {\n // JOHN tons of gross duplicated code that is duped across the contains resolver\n const collection = expression.value.collection\n\n // JOHN parsing expressions like this should be easier...\n let value: Array<BasicType> = []\n if (isType(collection, ValueExpression)) {\n value = collection.value as Array<BasicType>\n } else if (isValue(collection)) {\n value = collection as Array<BasicType>\n } else {\n throw new Error(`SqlExpressionParser - Unable to resolve ContainsExpression with non-value collection: ${JSON.stringify(collection)}`)\n }\n\n value.forEach((it) => {\n if (!Objects.isBasic(it)) {\n throw new Error(`SqlExpressionParser - Unable to resolve complex ValueExpression as Sql: ${JSON.stringify(it)}`)\n }\n })\n\n const parameters = value.map((it) => Entries.of(`_${Ulids.generate()}`, it))\n parameters.forEach(([key, value]) => {\n context.parameters[key] = value\n })\n\n const containsExpression = expression.value.operands\n .map(map)\n .map(\n (sql) =>\n `(${sql} NOT IN (${Entries.keys(parameters)\n .map((it) => `:${it}`)\n .join(',')}))`\n )\n .join(' AND ')\n\n return `(${containsExpression})`\n } else {\n return `(NOT ${map(expression.value)})`\n }\n})\nDefaultSqlExpressionParser.register(AndExpression, (expression, map) => {\n return `(${expression.operands.map(map).join(' AND ')})`\n})\nDefaultSqlExpressionParser.register(OrExpression, (expression, map) => {\n return `(${expression.operands.map(map).join(' OR ')})`\n})\nDefaultSqlExpressionParser.register(EqualsExpression, (expression, map) => {\n const first = Arrays.first(expression.operands)!\n const rest = Arrays.rest(expression.operands)\n\n const mappedFirst = map(first)\n const equalsExpressions = rest.map((it) => `(${mappedFirst} = ${map(it)})`).join(' AND ')\n return `(${equalsExpressions})`\n})\nDefaultSqlExpressionParser.register(ContainsExpression, (expression, map, context) => {\n const collection = expression.collection\n\n // JOHN parsing expressions like this should be easier...\n let value: Array<BasicType> = []\n if (isType(collection, ValueExpression)) {\n value = collection.value as Array<BasicType>\n } else if (isValue(collection)) {\n value = collection as Array<BasicType>\n } else {\n throw new Error(`SqlExpressionParser - Unable to resolve ContainsExpression with non-value collection: ${JSON.stringify(collection)}`)\n }\n\n value.forEach((it) => {\n if (!Objects.isBasic(it)) {\n throw new Error(`SqlExpressionParser - Unable to resolve complex ValueExpression as Sql: ${JSON.stringify(it)}`)\n }\n })\n\n const parameters = value.map((it) => Entries.of(`_${Ulids.generate()}`, it))\n parameters.forEach(([key, value]) => {\n context.parameters[key] = value\n })\n\n const containsExpression = expression.operands\n .map(map)\n .map(\n (sql) =>\n `(${sql} IN (${Entries.keys(parameters)\n .map((it) => `:${it}`)\n .join(',')}))`\n )\n .join(' AND ')\n\n return `(${containsExpression})`\n})\nDefaultSqlExpressionParser.register(LessThanExpression, (expression, map) => {\n return `(${map(expression.left)} < ${map(expression.right)})`\n})\nDefaultSqlExpressionParser.register(LessThanOrEqualExpression, (expression, map) => {\n return `(${map(expression.left)} <= ${map(expression.right)})`\n})\nDefaultSqlExpressionParser.register(GreaterThanExpression, (expression, map) => {\n return `(${map(expression.left)} > ${map(expression.right)})`\n})\nDefaultSqlExpressionParser.register(GreaterThanOrEqualExpression, (expression, map) => {\n return `(${map(expression.left)} >= ${map(expression.right)})`\n})\n"],"mappings":"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","names":["value"]}
package/dist/sql/sql.d.ts CHANGED
@@ -3,5 +3,5 @@ import { SqlExpressionParser } from '@bessemer/cornerstone/sql/sql-expression-pa
3
3
  import { Dictionary } from '@bessemer/cornerstone/types';
4
4
  import { SqlFragment, SqlParameterMap } from '@bessemer/cornerstone/sql';
5
5
  export declare const fragment: (fragment: string) => SqlFragment;
6
- export declare const parseExpression: (expression: Expression<unknown>, variableMap: Dictionary<string>, parser?: SqlExpressionParser) => [SqlFragment, SqlParameterMap];
6
+ export declare const parseExpression: (expression: Expression<unknown>, variableMap?: Dictionary<string>, parser?: SqlExpressionParser) => [SqlFragment, SqlParameterMap];
7
7
  //# sourceMappingURL=sql.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../src/sql/sql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAe,MAAM,kCAAkC,CAAA;AAC1E,OAAO,EAA8B,mBAAmB,EAA8B,MAAM,iDAAiD,CAAA;AAC7I,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAExE,eAAO,MAAM,QAAQ,GAAI,UAAU,MAAM,KAAG,WAE3C,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,YAAY,UAAU,CAAC,OAAO,CAAC,EAC/B,aAAa,UAAU,CAAC,MAAM,CAAC,EAC/B,SAAQ,mBAAgD,KACvD,CAAC,WAAW,EAAE,eAAe,CAO/B,CAAA"}
1
+ {"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../src/sql/sql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAe,MAAM,kCAAkC,CAAA;AAC1E,OAAO,EAA8B,mBAAmB,EAA8B,MAAM,iDAAiD,CAAA;AAC7I,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAExE,eAAO,MAAM,QAAQ,GAAI,UAAU,MAAM,KAAG,WAE3C,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,YAAY,UAAU,CAAC,OAAO,CAAC,EAC/B,cAAc,UAAU,CAAC,MAAM,CAAC,EAChC,SAAQ,mBAAgD,KACvD,CAAC,WAAW,EAAE,eAAe,CAO/B,CAAA"}
package/dist/sql/sql.js CHANGED
@@ -6,7 +6,7 @@ var fragment = (fragment2) => {
6
6
  };
7
7
  var parseExpression = (expression, variableMap, parser = DefaultSqlExpressionParser) => {
8
8
  const context = {
9
- variables: variableMap,
9
+ variables: variableMap ?? {},
10
10
  parameters: {}
11
11
  };
12
12
  const fragment2 = Expressions.map(expression, parser, context);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sql/sql.ts"],"sourcesContent":["import { Expression, Expressions } from '@bessemer/cornerstone/expression'\nimport { DefaultSqlExpressionParser, SqlExpressionParser, SqlExpressionParserContext } from '@bessemer/cornerstone/sql/sql-expression-parser'\nimport { Dictionary } from '@bessemer/cornerstone/types'\nimport { SqlFragment, SqlParameterMap } from '@bessemer/cornerstone/sql'\n\nexport const fragment = (fragment: string): SqlFragment => {\n return fragment\n}\n\nexport const parseExpression = (\n expression: Expression<unknown>,\n variableMap: Dictionary<string>,\n parser: SqlExpressionParser = DefaultSqlExpressionParser\n): [SqlFragment, SqlParameterMap] => {\n const context: SqlExpressionParserContext = {\n variables: variableMap,\n parameters: {},\n }\n const fragment = Expressions.map(expression, parser, context)\n return [fragment, context.parameters]\n}\n"],"mappings":";AAAA,SAAqB,mBAAmB;AACxC,SAAS,kCAAmF;AAIrF,IAAM,WAAW,CAACA,cAAkC;AACzD,SAAOA;AACT;AAEO,IAAM,kBAAkB,CAC7B,YACA,aACA,SAA8B,+BACK;AACnC,QAAM,UAAsC;AAAA,IAC1C,WAAW;AAAA,IACX,YAAY,CAAC;AAAA,EACf;AACA,QAAMA,YAAW,YAAY,IAAI,YAAY,QAAQ,OAAO;AAC5D,SAAO,CAACA,WAAU,QAAQ,UAAU;AACtC;","names":["fragment"]}
1
+ {"version":3,"sources":["../../src/sql/sql.ts"],"sourcesContent":["import { Expression, Expressions } from '@bessemer/cornerstone/expression'\nimport { DefaultSqlExpressionParser, SqlExpressionParser, SqlExpressionParserContext } from '@bessemer/cornerstone/sql/sql-expression-parser'\nimport { Dictionary } from '@bessemer/cornerstone/types'\nimport { SqlFragment, SqlParameterMap } from '@bessemer/cornerstone/sql'\n\nexport const fragment = (fragment: string): SqlFragment => {\n return fragment\n}\n\nexport const parseExpression = (\n expression: Expression<unknown>,\n variableMap?: Dictionary<string>,\n parser: SqlExpressionParser = DefaultSqlExpressionParser\n): [SqlFragment, SqlParameterMap] => {\n const context: SqlExpressionParserContext = {\n variables: variableMap ?? {},\n parameters: {},\n }\n const fragment = Expressions.map(expression, parser, context)\n return [fragment, context.parameters]\n}\n"],"mappings":";AAAA,SAAqB,mBAAmB;AACxC,SAAS,kCAAmF;AAIrF,IAAM,WAAW,CAACA,cAAkC;AACzD,SAAOA;AACT;AAEO,IAAM,kBAAkB,CAC7B,YACA,aACA,SAA8B,+BACK;AACnC,QAAM,UAAsC;AAAA,IAC1C,WAAW,eAAe,CAAC;AAAA,IAC3B,YAAY,CAAC;AAAA,EACf;AACA,QAAMA,YAAW,YAAY,IAAI,YAAY,QAAQ,OAAO;AAC5D,SAAO,CAACA,WAAU,QAAQ,UAAU;AACtC;","names":["fragment"]}
package/dist/ulid.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { TaggedType } from '@bessemer/cornerstone/types';
2
+ import { ZodType } from 'zod';
2
3
  export type Ulid = TaggedType<string, 'Ulid'>;
3
- export declare const generate: () => Ulid;
4
- export declare const asString: (value: Ulid) => string;
5
- export declare const generateString: () => string;
4
+ export declare const Schema: ZodType<Ulid>;
6
5
  export declare const of: (value: string) => Ulid;
7
- export declare const isValid: (value: unknown) => value is Ulid;
6
+ export declare const fromString: (value: string) => Ulid;
7
+ export declare const generate: () => Ulid;
8
8
  //# sourceMappingURL=ulid.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ulid.d.ts","sourceRoot":"","sources":["../src/ulid.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAGxD,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAE7C,eAAO,MAAM,QAAQ,QAAO,IAE3B,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,OAAO,IAAI,KAAG,MAEtC,CAAA;AAED,eAAO,MAAM,cAAc,QAAO,MAEjC,CAAA;AAED,eAAO,MAAM,EAAE,GAAI,OAAO,MAAM,KAAG,IAGlC,CAAA;AAID,eAAO,MAAM,OAAO,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,IAEjD,CAAA"}
1
+ {"version":3,"file":"ulid.d.ts","sourceRoot":"","sources":["../src/ulid.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAY,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAElC,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAC7C,eAAO,MAAM,MAAM,EAAE,OAAO,CAAC,IAAI,CAAgF,CAAA;AAEjH,eAAO,MAAM,EAAE,GAAI,OAAO,MAAM,KAAG,IAElC,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,IAE1C,CAAA;AAED,eAAO,MAAM,QAAQ,QAAO,IAE3B,CAAA"}
package/dist/ulid.js CHANGED
@@ -1,28 +1,20 @@
1
1
  // src/ulid.ts
2
2
  import { ulid } from "ulid";
3
- import { Assertions, Strings } from "@bessemer/cornerstone";
4
- var generate = () => {
5
- return ulid();
6
- };
7
- var asString = (value) => {
8
- return value;
9
- };
10
- var generateString = () => {
11
- return asString(generate());
12
- };
3
+ import Zod from "zod";
4
+ var Schema = Zod.string().regex(/^[0-9A-HJKMNP-TV-Z]{26}$/, "Invalid ULID format");
13
5
  var of = (value) => {
14
- Assertions.assertTrue(isValid(value), () => `Attempted to coerce invalid value to Ulid: ${value}`);
15
6
  return value;
16
7
  };
17
- var pattern = /^[0-9A-HJKMNP-TV-Z]{26}$/;
18
- var isValid = (value) => {
19
- return Strings.isString(value) && pattern.test(value);
8
+ var fromString = (value) => {
9
+ return Schema.parse(value);
10
+ };
11
+ var generate = () => {
12
+ return ulid();
20
13
  };
21
14
  export {
22
- asString,
15
+ Schema,
16
+ fromString,
23
17
  generate,
24
- generateString,
25
- isValid,
26
18
  of
27
19
  };
28
20
  //# sourceMappingURL=ulid.js.map
package/dist/ulid.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ulid.ts"],"sourcesContent":["import { ulid } from 'ulid'\nimport { TaggedType } from '@bessemer/cornerstone/types'\nimport { Assertions, Strings } from '@bessemer/cornerstone'\n\nexport type Ulid = TaggedType<string, 'Ulid'>\n\nexport const generate = (): Ulid => {\n return ulid() as Ulid\n}\n\nexport const asString = (value: Ulid): string => {\n return value\n}\n\nexport const generateString = (): string => {\n return asString(generate())\n}\n\nexport const of = (value: string): Ulid => {\n Assertions.assertTrue(isValid(value), () => `Attempted to coerce invalid value to Ulid: ${value}`)\n return value as Ulid\n}\n\nconst pattern = /^[0-9A-HJKMNP-TV-Z]{26}$/\n\nexport const isValid = (value: unknown): value is Ulid => {\n return Strings.isString(value) && pattern.test(value)\n}\n"],"mappings":";AAAA,SAAS,YAAY;AAErB,SAAS,YAAY,eAAe;AAI7B,IAAM,WAAW,MAAY;AAClC,SAAO,KAAK;AACd;AAEO,IAAM,WAAW,CAAC,UAAwB;AAC/C,SAAO;AACT;AAEO,IAAM,iBAAiB,MAAc;AAC1C,SAAO,SAAS,SAAS,CAAC;AAC5B;AAEO,IAAM,KAAK,CAAC,UAAwB;AACzC,aAAW,WAAW,QAAQ,KAAK,GAAG,MAAM,8CAA8C,KAAK,EAAE;AACjG,SAAO;AACT;AAEA,IAAM,UAAU;AAET,IAAM,UAAU,CAAC,UAAkC;AACxD,SAAO,QAAQ,SAAS,KAAK,KAAK,QAAQ,KAAK,KAAK;AACtD;","names":[]}
1
+ {"version":3,"sources":["../src/ulid.ts"],"sourcesContent":["import { ulid } from 'ulid'\nimport { TaggedType } from '@bessemer/cornerstone/types'\nimport Zod, { ZodType } from 'zod'\n\nexport type Ulid = TaggedType<string, 'Ulid'>\nexport const Schema: ZodType<Ulid> = Zod.string().regex(/^[0-9A-HJKMNP-TV-Z]{26}$/, 'Invalid ULID format') as any\n\nexport const of = (value: string): Ulid => {\n return value as Ulid\n}\n\nexport const fromString = (value: string): Ulid => {\n return Schema.parse(value)\n}\n\nexport const generate = (): Ulid => {\n return ulid() as Ulid\n}\n"],"mappings":";AAAA,SAAS,YAAY;AAErB,OAAO,SAAsB;AAGtB,IAAM,SAAwB,IAAI,OAAO,EAAE,MAAM,4BAA4B,qBAAqB;AAElG,IAAM,KAAK,CAAC,UAAwB;AACzC,SAAO;AACT;AAEO,IAAM,aAAa,CAAC,UAAwB;AACjD,SAAO,OAAO,MAAM,KAAK;AAC3B;AAEO,IAAM,WAAW,MAAY;AAClC,SAAO,KAAK;AACd;","names":[]}
package/dist/uuid.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { TaggedType } from '@bessemer/cornerstone/types';
2
+ import { ZodType } from 'zod';
2
3
  export type Uuid = TaggedType<string, 'Uuid'>;
3
- export declare const generate: () => Uuid;
4
- export declare const asString: (value: Uuid) => string;
5
- export declare const generateString: () => string;
4
+ export declare const Schema: ZodType<Uuid>;
6
5
  export declare const of: (value: string) => Uuid;
7
- export declare const isValid: (value: unknown) => value is Uuid;
6
+ export declare const fromString: (value: string) => Uuid;
7
+ export declare const generate: () => Uuid;
8
8
  //# sourceMappingURL=uuid.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"uuid.d.ts","sourceRoot":"","sources":["../src/uuid.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAExD,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAE7C,eAAO,MAAM,QAAQ,QAAO,IAM3B,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,OAAO,IAAI,KAAG,MAEtC,CAAA;AAED,eAAO,MAAM,cAAc,QAAO,MAEjC,CAAA;AAQD,eAAO,MAAM,EAAE,GAAI,OAAO,MAAM,KAAG,IAGlC,CAAA;AAID,eAAO,MAAM,OAAO,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,IAEjD,CAAA"}
1
+ {"version":3,"file":"uuid.d.ts","sourceRoot":"","sources":["../src/uuid.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAY,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAElC,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAC7C,eAAO,MAAM,MAAM,EAAE,OAAO,CAAC,IAAI,CAA8B,CAAA;AAE/D,eAAO,MAAM,EAAE,GAAI,OAAO,MAAM,KAAG,IAElC,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,IAE1C,CAAA;AAED,eAAO,MAAM,QAAQ,QAAO,IAM3B,CAAA"}
package/dist/uuid.js CHANGED
@@ -1,5 +1,13 @@
1
1
  // src/uuid.ts
2
- import { Assertions, Objects, Strings } from "@bessemer/cornerstone";
2
+ import { Objects, Strings } from "@bessemer/cornerstone";
3
+ import Zod from "zod";
4
+ var Schema = Zod.string().uuid();
5
+ var of = (value) => {
6
+ return value;
7
+ };
8
+ var fromString = (value) => {
9
+ return Schema.parse(value);
10
+ };
3
11
  var generate = () => {
4
12
  if (Objects.isNil(crypto.randomUUID)) {
5
13
  return `${randomHex(8)}-${randomHex(4)}-${randomHex(4)}-${randomHex(4)}-${randomHex(12)}`;
@@ -7,29 +15,14 @@ var generate = () => {
7
15
  return crypto.randomUUID();
8
16
  }
9
17
  };
10
- var asString = (value) => {
11
- return value;
12
- };
13
- var generateString = () => {
14
- return asString(generate());
15
- };
16
18
  var randomHex = (characters) => {
17
19
  const randomNum = Math.floor(Math.random() * (16 ** characters - 1));
18
20
  return Strings.padStart(randomNum.toString(16), characters, "0");
19
21
  };
20
- var of = (value) => {
21
- Assertions.assertTrue(isValid(value), () => `Attempted to coerce invalid value to Uuid: ${value}`);
22
- return value;
23
- };
24
- var pattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
25
- var isValid = (value) => {
26
- return Strings.isString(value) && pattern.test(value);
27
- };
28
22
  export {
29
- asString,
23
+ Schema,
24
+ fromString,
30
25
  generate,
31
- generateString,
32
- isValid,
33
26
  of
34
27
  };
35
28
  //# sourceMappingURL=uuid.js.map
package/dist/uuid.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/uuid.ts"],"sourcesContent":["import { Assertions, Objects, Strings } from '@bessemer/cornerstone'\nimport { TaggedType } from '@bessemer/cornerstone/types'\n\nexport type Uuid = TaggedType<string, 'Uuid'>\n\nexport const generate = (): Uuid => {\n if (Objects.isNil(crypto.randomUUID)) {\n return `${randomHex(8)}-${randomHex(4)}-${randomHex(4)}-${randomHex(4)}-${randomHex(12)}` as Uuid\n } else {\n return crypto.randomUUID() as Uuid\n }\n}\n\nexport const asString = (value: Uuid): string => {\n return value\n}\n\nexport const generateString = (): string => {\n return asString(generate())\n}\n\nconst randomHex = (characters: number) => {\n // Generates a random number between 0x0..0 and 0xF..F for the target number of characters\n const randomNum = Math.floor(Math.random() * (16 ** characters - 1))\n return Strings.padStart(randomNum.toString(16), characters, '0')\n}\n\nexport const of = (value: string): Uuid => {\n Assertions.assertTrue(isValid(value), () => `Attempted to coerce invalid value to Uuid: ${value}`)\n return value as Uuid\n}\n\nconst pattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i\n\nexport const isValid = (value: unknown): value is Uuid => {\n return Strings.isString(value) && pattern.test(value)\n}\n"],"mappings":";AAAA,SAAS,YAAY,SAAS,eAAe;AAKtC,IAAM,WAAW,MAAY;AAClC,MAAI,QAAQ,MAAM,OAAO,UAAU,GAAG;AACpC,WAAO,GAAG,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC;AAAA,EACzF,OAAO;AACL,WAAO,OAAO,WAAW;AAAA,EAC3B;AACF;AAEO,IAAM,WAAW,CAAC,UAAwB;AAC/C,SAAO;AACT;AAEO,IAAM,iBAAiB,MAAc;AAC1C,SAAO,SAAS,SAAS,CAAC;AAC5B;AAEA,IAAM,YAAY,CAAC,eAAuB;AAExC,QAAM,YAAY,KAAK,MAAM,KAAK,OAAO,KAAK,MAAM,aAAa,EAAE;AACnE,SAAO,QAAQ,SAAS,UAAU,SAAS,EAAE,GAAG,YAAY,GAAG;AACjE;AAEO,IAAM,KAAK,CAAC,UAAwB;AACzC,aAAW,WAAW,QAAQ,KAAK,GAAG,MAAM,8CAA8C,KAAK,EAAE;AACjG,SAAO;AACT;AAEA,IAAM,UAAU;AAET,IAAM,UAAU,CAAC,UAAkC;AACxD,SAAO,QAAQ,SAAS,KAAK,KAAK,QAAQ,KAAK,KAAK;AACtD;","names":[]}
1
+ {"version":3,"sources":["../src/uuid.ts"],"sourcesContent":["import { Objects, Strings } from '@bessemer/cornerstone'\nimport { TaggedType } from '@bessemer/cornerstone/types'\nimport Zod, { ZodType } from 'zod'\n\nexport type Uuid = TaggedType<string, 'Uuid'>\nexport const Schema: ZodType<Uuid> = Zod.string().uuid() as any\n\nexport const of = (value: string): Uuid => {\n return value as Uuid\n}\n\nexport const fromString = (value: string): Uuid => {\n return Schema.parse(value)\n}\n\nexport const generate = (): Uuid => {\n if (Objects.isNil(crypto.randomUUID)) {\n return `${randomHex(8)}-${randomHex(4)}-${randomHex(4)}-${randomHex(4)}-${randomHex(12)}` as Uuid\n } else {\n return crypto.randomUUID() as Uuid\n }\n}\n\nconst randomHex = (characters: number) => {\n // Generates a random number between 0x0..0 and 0xF..F for the target number of characters\n const randomNum = Math.floor(Math.random() * (16 ** characters - 1))\n return Strings.padStart(randomNum.toString(16), characters, '0')\n}\n"],"mappings":";AAAA,SAAS,SAAS,eAAe;AAEjC,OAAO,SAAsB;AAGtB,IAAM,SAAwB,IAAI,OAAO,EAAE,KAAK;AAEhD,IAAM,KAAK,CAAC,UAAwB;AACzC,SAAO;AACT;AAEO,IAAM,aAAa,CAAC,UAAwB;AACjD,SAAO,OAAO,MAAM,KAAK;AAC3B;AAEO,IAAM,WAAW,MAAY;AAClC,MAAI,QAAQ,MAAM,OAAO,UAAU,GAAG;AACpC,WAAO,GAAG,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC;AAAA,EACzF,OAAO;AACL,WAAO,OAAO,WAAW;AAAA,EAC3B;AACF;AAEA,IAAM,YAAY,CAAC,eAAuB;AAExC,QAAM,YAAY,KAAK,MAAM,KAAK,OAAO,KAAK,MAAM,aAAa,EAAE;AACnE,SAAO,QAAQ,SAAS,UAAU,SAAS,EAAE,GAAG,YAAY,GAAG;AACjE;","names":[]}
@@ -0,0 +1,10 @@
1
+ import Zod, { ZodType } from 'zod';
2
+ import { ResourceKey } from '@bessemer/cornerstone/resource';
3
+ import { Result } from '@bessemer/cornerstone/result';
4
+ export declare const parse: <T extends ZodType>(type: T, data: unknown) => Result<Zod.infer<T>>;
5
+ export declare const parseOrThrow: <T extends ZodType>(type: T, data: unknown) => Zod.infer<T>;
6
+ export declare const parseJson: <T extends ZodType>(type: T, data: string) => Result<Zod.infer<T>>;
7
+ export declare const parseJsonOrThrow: <T extends ZodType>(type: T, data: string) => Zod.infer<T>;
8
+ export declare const arrayable: <T>(type: ZodType<T>) => Zod.ZodUnion<[Zod.ZodType<T, Zod.ZodTypeDef, T>, Zod.ZodArray<Zod.ZodType<T, Zod.ZodTypeDef, T>, "many">]>;
9
+ export declare const key: () => ZodType<ResourceKey>;
10
+ //# sourceMappingURL=zod-util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod-util.d.ts","sourceRoot":"","sources":["../src/zod-util.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AAE5D,OAAO,EAA4B,MAAM,EAAW,MAAM,8BAA8B,CAAA;AAExF,eAAO,MAAM,KAAK,GAAI,CAAC,SAAS,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,OAAO,KAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAOpF,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,OAAO,KAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAEnF,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,MAAM,KAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAOvF,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,MAAM,KAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAEtF,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,+GAE5C,CAAA;AAED,eAAO,MAAM,GAAG,QAAO,OAAO,CAAC,WAAW,CAEzC,CAAA"}
@@ -1,29 +1,7 @@
1
- // src/zod.ts
1
+ // src/zod-util.ts
2
2
  import Zod from "zod";
3
3
  import { parse as jsonParse } from "@bessemer/cornerstone/json";
4
4
  import { failure, getValueOrThrow, success } from "@bessemer/cornerstone/result";
5
- var object = Zod.object;
6
- var string = Zod.string;
7
- var union = Zod.union;
8
- var array = Zod.array;
9
- var unknown = Zod.unknown;
10
- var nullType = Zod.null;
11
- var undefined = Zod.undefined;
12
- var date = Zod.date;
13
- var boolean = Zod.boolean;
14
- var number = Zod.number;
15
- var tuple = Zod.tuple;
16
- var record = Zod.record;
17
- var lazy = Zod.lazy;
18
- var arrayable = (type) => {
19
- return union([type, array(type)]);
20
- };
21
- var key = () => {
22
- return string();
23
- };
24
- var entry = (value, key2) => {
25
- return tuple([key2 ?? string(), value]);
26
- };
27
5
  var parse = (type, data) => {
28
6
  const result = type.safeParse(data);
29
7
  if (result.success) {
@@ -45,26 +23,18 @@ var parseJson = (type, data) => {
45
23
  var parseJsonOrThrow = (type, data) => {
46
24
  return parseJson(type, data);
47
25
  };
26
+ var arrayable = (type) => {
27
+ return Zod.union([type, Zod.array(type)]);
28
+ };
29
+ var key = () => {
30
+ return Zod.string();
31
+ };
48
32
  export {
49
- array,
50
33
  arrayable,
51
- boolean,
52
- date,
53
- entry,
54
34
  key,
55
- lazy,
56
- nullType,
57
- number,
58
- object,
59
35
  parse,
60
36
  parseJson,
61
37
  parseJsonOrThrow,
62
- parseOrThrow,
63
- record,
64
- string,
65
- tuple,
66
- undefined,
67
- union,
68
- unknown
38
+ parseOrThrow
69
39
  };
70
- //# sourceMappingURL=zod.js.map
40
+ //# sourceMappingURL=zod-util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/zod-util.ts"],"sourcesContent":["import Zod, { ZodType } from 'zod'\nimport { ResourceKey } from '@bessemer/cornerstone/resource'\nimport { parse as jsonParse } from '@bessemer/cornerstone/json'\nimport { failure, getValueOrThrow, Result, success } from '@bessemer/cornerstone/result'\n\nexport const parse = <T extends ZodType>(type: T, data: unknown): Result<Zod.infer<T>> => {\n const result = type.safeParse(data)\n if (result.success) {\n return success(result.data)\n } else {\n return failure(result.error)\n }\n}\n\nexport const parseOrThrow = <T extends ZodType>(type: T, data: unknown): Zod.infer<T> => {\n return getValueOrThrow(parse(type, data))\n}\n\nexport const parseJson = <T extends ZodType>(type: T, data: string): Result<Zod.infer<T>> => {\n const result = jsonParse(data)\n if (!result.isSuccess) {\n return result\n }\n\n return parse(type, result.value)\n}\n\nexport const parseJsonOrThrow = <T extends ZodType>(type: T, data: string): Zod.infer<T> => {\n return parseJson(type, data)\n}\n\nexport const arrayable = <T>(type: ZodType<T>) => {\n return Zod.union([type, Zod.array(type)])\n}\n\nexport const key = (): ZodType<ResourceKey> => {\n return Zod.string()\n}\n"],"mappings":";AAAA,OAAO,SAAsB;AAE7B,SAAS,SAAS,iBAAiB;AACnC,SAAS,SAAS,iBAAyB,eAAe;AAEnD,IAAM,QAAQ,CAAoB,MAAS,SAAwC;AACxF,QAAM,SAAS,KAAK,UAAU,IAAI;AAClC,MAAI,OAAO,SAAS;AAClB,WAAO,QAAQ,OAAO,IAAI;AAAA,EAC5B,OAAO;AACL,WAAO,QAAQ,OAAO,KAAK;AAAA,EAC7B;AACF;AAEO,IAAM,eAAe,CAAoB,MAAS,SAAgC;AACvF,SAAO,gBAAgB,MAAM,MAAM,IAAI,CAAC;AAC1C;AAEO,IAAM,YAAY,CAAoB,MAAS,SAAuC;AAC3F,QAAM,SAAS,UAAU,IAAI;AAC7B,MAAI,CAAC,OAAO,WAAW;AACrB,WAAO;AAAA,EACT;AAEA,SAAO,MAAM,MAAM,OAAO,KAAK;AACjC;AAEO,IAAM,mBAAmB,CAAoB,MAAS,SAA+B;AAC1F,SAAO,UAAU,MAAM,IAAI;AAC7B;AAEO,IAAM,YAAY,CAAI,SAAqB;AAChD,SAAO,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,IAAI,CAAC,CAAC;AAC1C;AAEO,IAAM,MAAM,MAA4B;AAC7C,SAAO,IAAI,OAAO;AACpB;","names":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bessemer/cornerstone",
3
3
  "type": "module",
4
- "version": "0.5.57",
4
+ "version": "0.5.59",
5
5
  "module": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "sideEffects": false,
package/dist/zod.d.ts DELETED
@@ -1,36 +0,0 @@
1
- import Zod, { ZodType } from 'zod';
2
- import { ResourceKey } from '@bessemer/cornerstone/resource';
3
- import { Entry } from '@bessemer/cornerstone/entry';
4
- import { Result } from '@bessemer/cornerstone/result';
5
- export type infer<T extends ZodType<any, any, any>> = Zod.infer<T>;
6
- export type input<T extends ZodType<any, any, any>> = Zod.input<T>;
7
- export type output<T extends ZodType<any, any, any>> = Zod.output<T>;
8
- export declare const object: <T extends Zod.ZodRawShape>(shape: T, params?: Zod.RawCreateParams) => Zod.ZodObject<T, "strip", Zod.ZodTypeAny, Zod.objectOutputType<T, Zod.ZodTypeAny, "strip">, Zod.objectInputType<T, Zod.ZodTypeAny, "strip">>;
9
- export declare const string: (params?: Zod.RawCreateParams & {
10
- coerce?: true;
11
- }) => Zod.ZodString;
12
- export declare const union: <T extends readonly [Zod.ZodTypeAny, Zod.ZodTypeAny, ...Zod.ZodTypeAny[]]>(types: T, params?: Zod.RawCreateParams) => Zod.ZodUnion<T>;
13
- export declare const array: <T extends Zod.ZodTypeAny>(schema: T, params?: Zod.RawCreateParams) => Zod.ZodArray<T>;
14
- export declare const unknown: (params?: Zod.RawCreateParams) => Zod.ZodUnknown;
15
- export declare const nullType: (params?: Zod.RawCreateParams) => Zod.ZodNull;
16
- export declare const undefined: (params?: Zod.RawCreateParams) => Zod.ZodUndefined;
17
- export declare const date: (params?: Zod.RawCreateParams & {
18
- coerce?: boolean;
19
- }) => Zod.ZodDate;
20
- export declare const boolean: (params?: Zod.RawCreateParams & {
21
- coerce?: boolean;
22
- }) => Zod.ZodBoolean;
23
- export declare const number: (params?: Zod.RawCreateParams & {
24
- coerce?: boolean;
25
- }) => Zod.ZodNumber;
26
- export declare const tuple: <T extends [] | [Zod.ZodTypeAny, ...Zod.ZodTypeAny[]]>(schemas: T, params?: Zod.RawCreateParams) => Zod.ZodTuple<T, null>;
27
- export declare const record: typeof Zod.ZodRecord.create;
28
- export declare const lazy: <T extends Zod.ZodTypeAny>(getter: () => T, params?: Zod.RawCreateParams) => Zod.ZodLazy<T>;
29
- export declare const arrayable: <T>(type: ZodType<T>) => Zod.ZodUnion<[Zod.ZodType<T, Zod.ZodTypeDef, T>, Zod.ZodArray<Zod.ZodType<T, Zod.ZodTypeDef, T>, "many">]>;
30
- export declare const key: () => ZodType<ResourceKey>;
31
- export declare const entry: <Value, Key = string>(value: ZodType<Value>, key?: ZodType<Key>) => ZodType<Entry<Value, Key>>;
32
- export declare const parse: <T extends ZodType>(type: T, data: unknown) => Result<Zod.infer<T>>;
33
- export declare const parseOrThrow: <T extends ZodType>(type: T, data: unknown) => Zod.infer<T>;
34
- export declare const parseJson: <T extends ZodType>(type: T, data: string) => Result<Zod.infer<T>>;
35
- export declare const parseJsonOrThrow: <T extends ZodType>(type: T, data: string) => Zod.infer<T>;
36
- //# sourceMappingURL=zod.d.ts.map
package/dist/zod.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"zod.d.ts","sourceRoot":"","sources":["../src/zod.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAA;AAEnD,OAAO,EAA4B,MAAM,EAAW,MAAM,8BAA8B,CAAA;AAExF,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAClE,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAClE,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AACpE,eAAO,MAAM,MAAM,qNAAa,CAAA;AAChC,eAAO,MAAM,MAAM;UAkD4p4C,CAAC;mBAlDhp4C,CAAA;AAChC,eAAO,MAAM,KAAK,uIAAY,CAAA;AAC9B,eAAO,MAAM,KAAK,wFAAY,CAAA;AAC9B,eAAO,MAAM,OAAO,kDAAc,CAAA;AAClC,eAAO,MAAM,QAAQ,+CAAW,CAAA;AAChC,eAAO,MAAM,SAAS,oDAAgB,CAAA;AACtC,eAAO,MAAM,IAAI;UA4Col5C,CAAC;iBA5C1k5C,CAAA;AAC5B,eAAO,MAAM,OAAO;UA2Cm/4C,CAAC;oBA3Ct+4C,CAAA;AAClC,eAAO,MAAM,MAAM;UA0Cwv4C,CAAC;mBA1C5u4C,CAAA;AAChC,eAAO,MAAM,KAAK,2HAAY,CAAA;AAC9B,eAAO,MAAM,MAAM,6BAAa,CAAA;AAChC,eAAO,MAAM,IAAI,6FAAW,CAAA;AAE5B,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,+GAE5C,CAAA;AAED,eAAO,MAAM,GAAG,QAAO,OAAO,CAAC,WAAW,CAEzC,CAAA;AAED,eAAO,MAAM,KAAK,GAAI,KAAK,EAAE,GAAG,GAAG,MAAM,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,KAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAE/G,CAAA;AAED,eAAO,MAAM,KAAK,GAAI,CAAC,SAAS,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,OAAO,KAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAOpF,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,OAAO,KAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAEnF,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,MAAM,KAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAOvF,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,MAAM,KAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAEtF,CAAA"}
package/dist/zod.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/zod.ts"],"sourcesContent":["import Zod, { ZodType } from 'zod'\nimport { ResourceKey } from '@bessemer/cornerstone/resource'\nimport { Entry } from '@bessemer/cornerstone/entry'\nimport { parse as jsonParse } from '@bessemer/cornerstone/json'\nimport { failure, getValueOrThrow, Result, success } from '@bessemer/cornerstone/result'\n\nexport type infer<T extends ZodType<any, any, any>> = Zod.infer<T>\nexport type input<T extends ZodType<any, any, any>> = Zod.input<T>\nexport type output<T extends ZodType<any, any, any>> = Zod.output<T>\nexport const object = Zod.object\nexport const string = Zod.string\nexport const union = Zod.union\nexport const array = Zod.array\nexport const unknown = Zod.unknown\nexport const nullType = Zod.null\nexport const undefined = Zod.undefined\nexport const date = Zod.date\nexport const boolean = Zod.boolean\nexport const number = Zod.number\nexport const tuple = Zod.tuple\nexport const record = Zod.record\nexport const lazy = Zod.lazy\n\nexport const arrayable = <T>(type: ZodType<T>) => {\n return union([type, array(type)])\n}\n\nexport const key = (): ZodType<ResourceKey> => {\n return string()\n}\n\nexport const entry = <Value, Key = string>(value: ZodType<Value>, key?: ZodType<Key>): ZodType<Entry<Value, Key>> => {\n return tuple([key ?? string(), value]) as ZodType<Entry<Value, Key>>\n}\n\nexport const parse = <T extends ZodType>(type: T, data: unknown): Result<Zod.infer<T>> => {\n const result = type.safeParse(data)\n if (result.success) {\n return success(result.data)\n } else {\n return failure(result.error)\n }\n}\n\nexport const parseOrThrow = <T extends ZodType>(type: T, data: unknown): Zod.infer<T> => {\n return getValueOrThrow(parse(type, data))\n}\n\nexport const parseJson = <T extends ZodType>(type: T, data: string): Result<Zod.infer<T>> => {\n const result = jsonParse(data)\n if (!result.isSuccess) {\n return result\n }\n\n return parse(type, result.value)\n}\n\nexport const parseJsonOrThrow = <T extends ZodType>(type: T, data: string): Zod.infer<T> => {\n return parseJson(type, data)\n}\n"],"mappings":";AAAA,OAAO,SAAsB;AAG7B,SAAS,SAAS,iBAAiB;AACnC,SAAS,SAAS,iBAAyB,eAAe;AAKnD,IAAM,SAAS,IAAI;AACnB,IAAM,SAAS,IAAI;AACnB,IAAM,QAAQ,IAAI;AAClB,IAAM,QAAQ,IAAI;AAClB,IAAM,UAAU,IAAI;AACpB,IAAM,WAAW,IAAI;AACrB,IAAM,YAAY,IAAI;AACtB,IAAM,OAAO,IAAI;AACjB,IAAM,UAAU,IAAI;AACpB,IAAM,SAAS,IAAI;AACnB,IAAM,QAAQ,IAAI;AAClB,IAAM,SAAS,IAAI;AACnB,IAAM,OAAO,IAAI;AAEjB,IAAM,YAAY,CAAI,SAAqB;AAChD,SAAO,MAAM,CAAC,MAAM,MAAM,IAAI,CAAC,CAAC;AAClC;AAEO,IAAM,MAAM,MAA4B;AAC7C,SAAO,OAAO;AAChB;AAEO,IAAM,QAAQ,CAAsB,OAAuBA,SAAmD;AACnH,SAAO,MAAM,CAACA,QAAO,OAAO,GAAG,KAAK,CAAC;AACvC;AAEO,IAAM,QAAQ,CAAoB,MAAS,SAAwC;AACxF,QAAM,SAAS,KAAK,UAAU,IAAI;AAClC,MAAI,OAAO,SAAS;AAClB,WAAO,QAAQ,OAAO,IAAI;AAAA,EAC5B,OAAO;AACL,WAAO,QAAQ,OAAO,KAAK;AAAA,EAC7B;AACF;AAEO,IAAM,eAAe,CAAoB,MAAS,SAAgC;AACvF,SAAO,gBAAgB,MAAM,MAAM,IAAI,CAAC;AAC1C;AAEO,IAAM,YAAY,CAAoB,MAAS,SAAuC;AAC3F,QAAM,SAAS,UAAU,IAAI;AAC7B,MAAI,CAAC,OAAO,WAAW;AACrB,WAAO;AAAA,EACT;AAEA,SAAO,MAAM,MAAM,OAAO,KAAK;AACjC;AAEO,IAAM,mBAAmB,CAAoB,MAAS,SAA+B;AAC1F,SAAO,UAAU,MAAM,IAAI;AAC7B;","names":["key"]}