Skip to content

Commit

Permalink
Refactor UUID to pattern-based schema; remove string generation
Browse files Browse the repository at this point in the history
  • Loading branch information
skeate committed Nov 12, 2022
1 parent 6c33e8d commit 061993e
Show file tree
Hide file tree
Showing 12 changed files with 168 additions and 304 deletions.
64 changes: 0 additions & 64 deletions scripts/generate-schemables.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ type SchemableCombinators = {
generic: ReadonlyArray<readonly [string, string]>
date: ReadonlyArray<readonly [string, string]>
number: ReadonlyArray<readonly [string, string]>
string: ReadonlyArray<readonly [string, string]>
}

type Schemable = [name: `With${string}`, path: string]
Expand Down Expand Up @@ -139,28 +138,6 @@ export const makeSchemableExtTypeclass: (
),
),
),
...pipe(
combinators.string,
RA.map(([combinator, comment]) =>
ts.addSyntheticLeadingComment(
_.createPropertySignature(
[_.createModifier(ts.SyntaxKind.ReadonlyKeyword)],
_.createIdentifier(combinator),
undefined,
_.createTypeReferenceNode(
_.createQualifiedName(
_.createIdentifier(combinator),
_.createIdentifier(`SchemableParams${suffix}`),
),
[_.createTypeReferenceNode(_.createIdentifier('S'), undefined)],
),
),
ts.SyntaxKind.MultiLineCommentTrivia,
`* ${comment}`,
true,
),
),
),
...pipe(
combinators.date,
RA.map(([combinator, comment]) =>
Expand Down Expand Up @@ -229,13 +206,6 @@ const makeSchemableExtContents: (
makeModuleStarImport(combinator, `./number/${combinator}`),
),
),
_.createJSDocComment('string'),
...pipe(
combinators.string,
RA.map(([combinator]) =>
makeModuleStarImport(combinator, `./string/${combinator}`),
),
),
_.createJSDocComment('date'),
...pipe(
combinators.date,
Expand Down Expand Up @@ -360,18 +330,6 @@ const makeSchemableInstance: (
),
),
),
...pipe(
schemableCombinators.string,
RA.map(([schemableCombinatorName]) =>
_.createPropertyAssignment(
_.createIdentifier(schemableCombinatorName),
_.createPropertyAccessExpression(
_.createIdentifier(schemableCombinatorName),
_.createIdentifier(instanceName),
),
),
),
),
...pipe(
schemableCombinators.date,
RA.map(([schemableCombinatorName]) =>
Expand Down Expand Up @@ -436,13 +394,6 @@ const makeSchemableInstanceModuleContents: (
makeModuleStarImport(combinator, `./number/${combinator}`),
),
),
_.createJSDocComment('string'),
...pipe(
combinators.string,
RA.map(([combinator]) =>
makeModuleStarImport(combinator, `./string/${combinator}`),
),
),
_.createJSDocComment('date'),
...pipe(
combinators.date,
Expand Down Expand Up @@ -526,21 +477,6 @@ const getSchemableCombinators: Build<SchemableCombinators> = C =>
),
),
),
TE.apS(
'string',
pipe(
C.readFiles('./src/string'),
TE.chain(
TE.traverseArray(file =>
pipe(
C,
getModuleJSDocComment(`./src/string/${file}`),
TE.map(comment => tuple(getModuleName(file), comment)),
),
),
),
),
),
TE.apS(
'generic',
pipe(
Expand Down
4 changes: 0 additions & 4 deletions src/Arbitrary.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,6 @@ import * as floatFromString from './number/floatFromString'
import * as int from './number/int'
import * as intFromString from './number/intFromString'

/** String */
import * as uuid from './string/uuid'

/** Date */
import * as date from './date/date'
import * as dateFromIsoString from './date/dateFromIsoString'
Expand All @@ -59,7 +56,6 @@ export const Schemable: SchemableExt1<Arb.URI> = {
floatFromString: floatFromString.Arbitrary,
int: int.Arbitrary,
intFromString: intFromString.Arbitrary,
uuid: uuid.Arbitrary,
date: date.Arbitrary,
dateFromIsoString: dateFromIsoString.Arbitrary,
}
4 changes: 0 additions & 4 deletions src/Decoder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,6 @@ import * as floatFromString from './number/floatFromString'
import * as int from './number/int'
import * as intFromString from './number/intFromString'

/** String */
import * as uuid from './string/uuid'

/** Date */
import * as date from './date/date'
import * as dateFromIsoString from './date/dateFromIsoString'
Expand All @@ -59,7 +56,6 @@ export const Schemable: SchemableExt2C<D.URI> = {
floatFromString: floatFromString.Decoder,
int: int.Decoder,
intFromString: intFromString.Decoder,
uuid: uuid.Decoder,
date: date.Decoder,
dateFromIsoString: dateFromIsoString.Decoder,
}
4 changes: 0 additions & 4 deletions src/Encoder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,6 @@ import * as floatFromString from './number/floatFromString'
import * as int from './number/int'
import * as intFromString from './number/intFromString'

/** String */
import * as uuid from './string/uuid'

/** Date */
import * as date from './date/date'
import * as dateFromIsoString from './date/dateFromIsoString'
Expand All @@ -59,7 +56,6 @@ export const Schemable: SchemableExt2<Enc.URI> = {
floatFromString: floatFromString.Encoder,
int: int.Encoder,
intFromString: intFromString.Encoder,
uuid: uuid.Encoder,
date: date.Encoder,
dateFromIsoString: dateFromIsoString.Encoder,
}
4 changes: 0 additions & 4 deletions src/Eq.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,6 @@ import * as floatFromString from './number/floatFromString'
import * as int from './number/int'
import * as intFromString from './number/intFromString'

/** String */
import * as uuid from './string/uuid'

/** Date */
import * as date from './date/date'
import * as dateFromIsoString from './date/dateFromIsoString'
Expand All @@ -59,7 +56,6 @@ export const Schemable: SchemableExt1<Eq.URI> = {
floatFromString: floatFromString.Eq,
int: int.Eq,
intFromString: intFromString.Eq,
uuid: uuid.Eq,
date: date.Eq,
dateFromIsoString: dateFromIsoString.Eq,
}
4 changes: 0 additions & 4 deletions src/Guard.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,6 @@ import * as floatFromString from './number/floatFromString'
import * as int from './number/int'
import * as intFromString from './number/intFromString'

/** String */
import * as uuid from './string/uuid'

/** Date */
import * as date from './date/date'
import * as dateFromIsoString from './date/dateFromIsoString'
Expand All @@ -59,7 +56,6 @@ export const Schemable: SchemableExt1<G.URI> = {
floatFromString: floatFromString.Guard,
int: int.Guard,
intFromString: intFromString.Guard,
uuid: uuid.Guard,
date: date.Guard,
dateFromIsoString: dateFromIsoString.Guard,
}
43 changes: 0 additions & 43 deletions src/SchemableExt.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,6 @@ import * as floatFromString from './number/floatFromString'
import * as int from './number/int'
import * as intFromString from './number/intFromString'

/** String */
import * as uuid from './string/uuid'

/** Date */
import * as date from './date/date'
import * as dateFromIsoString from './date/dateFromIsoString'
Expand Down Expand Up @@ -177,16 +174,6 @@ export interface SchemableExt<S>
*/
readonly intFromString: intFromString.SchemableParams<S>

/**
* Represents strings that are UUIDs.
*
* This is heavily inspired by the `validator.js` module
* [`isUUID`](https://github.com/validatorjs/validator.js/blob/master/src/lib/isUUID.js).
*
* @since 0.0.1
*/
readonly uuid: uuid.SchemableParams<S>

/**
* Represents valid Date objects
*
Expand Down Expand Up @@ -310,16 +297,6 @@ export interface SchemableExt1<S extends URIS>
*/
readonly intFromString: intFromString.SchemableParams1<S>

/**
* Represents strings that are UUIDs.
*
* This is heavily inspired by the `validator.js` module
* [`isUUID`](https://github.com/validatorjs/validator.js/blob/master/src/lib/isUUID.js).
*
* @since 0.0.1
*/
readonly uuid: uuid.SchemableParams1<S>

/**
* Represents valid Date objects
*
Expand Down Expand Up @@ -443,16 +420,6 @@ export interface SchemableExt2<S extends URIS2>
*/
readonly intFromString: intFromString.SchemableParams2<S>

/**
* Represents strings that are UUIDs.
*
* This is heavily inspired by the `validator.js` module
* [`isUUID`](https://github.com/validatorjs/validator.js/blob/master/src/lib/isUUID.js).
*
* @since 0.0.1
*/
readonly uuid: uuid.SchemableParams2<S>

/**
* Represents valid Date objects
*
Expand Down Expand Up @@ -576,16 +543,6 @@ export interface SchemableExt2C<S extends URIS2>
*/
readonly intFromString: intFromString.SchemableParams2C<S>

/**
* Represents strings that are UUIDs.
*
* This is heavily inspired by the `validator.js` module
* [`isUUID`](https://github.com/validatorjs/validator.js/blob/master/src/lib/isUUID.js).
*
* @since 0.0.1
*/
readonly uuid: uuid.SchemableParams2C<S>

/**
* Represents valid Date objects
*
Expand Down
4 changes: 0 additions & 4 deletions src/TaskDecoder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,6 @@ import * as floatFromString from './number/floatFromString'
import * as int from './number/int'
import * as intFromString from './number/intFromString'

/** String */
import * as uuid from './string/uuid'

/** Date */
import * as date from './date/date'
import * as dateFromIsoString from './date/dateFromIsoString'
Expand All @@ -59,7 +56,6 @@ export const Schemable: SchemableExt2C<TD.URI> = {
floatFromString: floatFromString.TaskDecoder,
int: int.TaskDecoder,
intFromString: intFromString.TaskDecoder,
uuid: uuid.TaskDecoder,
date: date.TaskDecoder,
dateFromIsoString: dateFromIsoString.TaskDecoder,
}
4 changes: 0 additions & 4 deletions src/Type.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,6 @@ import * as floatFromString from './number/floatFromString'
import * as int from './number/int'
import * as intFromString from './number/intFromString'

/** String */
import * as uuid from './string/uuid'

/** Date */
import * as date from './date/date'
import * as dateFromIsoString from './date/dateFromIsoString'
Expand All @@ -59,7 +56,6 @@ export const Schemable: SchemableExt1<t.URI> = {
floatFromString: floatFromString.Type,
int: int.Type,
intFromString: intFromString.Type,
uuid: uuid.Type,
date: date.Type,
dateFromIsoString: dateFromIsoString.Type,
}
Loading

0 comments on commit 061993e

Please sign in to comment.