Skip to content

Commit

Permalink
feat: typed serializers
Browse files Browse the repository at this point in the history
  • Loading branch information
runspired committed Mar 11, 2024
1 parent 7127828 commit 69c9e08
Show file tree
Hide file tree
Showing 11 changed files with 531 additions and 359 deletions.
2 changes: 1 addition & 1 deletion packages/model/src/-private/model.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ class Model extends EmberObject {
binding?: T
): void;
static eachTransformedAttribute<K extends keyof this & string>(
callback: (this: ModelSchema<this>, key: K, type: string | null) => void,
callback: (this: ModelSchema<this>, key: K, type: string) => void,
binding?: T
): void;

Expand Down
2 changes: 1 addition & 1 deletion packages/serializer/.eslintrc.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ module.exports = {
isolation.rules({
allowedImports: [
'ember-inflector',
'@ember/application',
'@ember/owner',
'@ember/service',
'@ember/debug',
'@ember/object',
Expand Down
5 changes: 5 additions & 0 deletions packages/serializer/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
"peerDependencies": {
"@ember/string": "^3.1.1",
"@warp-drive/core-types": "workspace:0.0.0-alpha.21",
"@ember-data/legacy-compat": "workspace:5.4.0-alpha.35",
"ember-inflector": "^4.0.2"
},
"dependenciesMeta": {
Expand All @@ -72,6 +73,9 @@
},
"@ember-data/tracking": {
"injected": true
},
"@ember-data/legacy-compat": {
"injected": true
}
},
"dependencies": {
Expand All @@ -95,6 +99,7 @@
"@ember-data/request": "workspace:5.4.0-alpha.35",
"@ember-data/store": "workspace:5.4.0-alpha.35",
"@ember-data/tracking": "workspace:5.4.0-alpha.35",
"@ember-data/legacy-compat": "workspace:5.4.0-alpha.35",
"@ember/string": "^3.1.1",
"@embroider/addon-dev": "^4.1.2",
"@glimmer/component": "^1.1.2",
Expand Down
4 changes: 4 additions & 0 deletions packages/serializer/src/-private/transforms/boolean.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
@module @ember-data/serializer
*/

import { TransformName } from '@warp-drive/core-types/symbols';

/**
The `BooleanTransform` class is used to serialize and deserialize
boolean attributes on Ember Data record objects. This transform is
Expand Down Expand Up @@ -62,6 +64,8 @@ export default class BooleanTransform {
return Boolean(deserialized);
}

[TransformName] = 'boolean' as const;

static create() {
return new this();
}
Expand Down
4 changes: 4 additions & 0 deletions packages/serializer/src/-private/transforms/date.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
@module @ember-data/serializer
*/

import { TransformName } from '@warp-drive/core-types/symbols';

/**
The `DateTransform` class is used to serialize and deserialize
date attributes on Ember Data record objects. This transform is used
Expand Down Expand Up @@ -53,6 +55,8 @@ export default class DateTransform {
}
}

[TransformName] = 'date' as const;

static create() {
return new this();
}
Expand Down
4 changes: 4 additions & 0 deletions packages/serializer/src/-private/transforms/number.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
@module @ember-data/serializer
*/

import { TransformName } from '@warp-drive/core-types/symbols';

function isNumber(value: number) {
return value === value && value !== Infinity && value !== -Infinity;
}
Expand Down Expand Up @@ -48,6 +50,8 @@ export default class NumberTransform {
}
}

[TransformName] = 'number' as const;

static create() {
return new this();
}
Expand Down
4 changes: 4 additions & 0 deletions packages/serializer/src/-private/transforms/string.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
@module @ember-data/serializer
*/

import { TransformName } from '@warp-drive/core-types/symbols';

/**
The `StringTransform` class is used to serialize and deserialize
string attributes on Ember Data record objects. This transform is
Expand Down Expand Up @@ -31,6 +33,8 @@ export default class StringTransform {
return !deserialized && deserialized !== '' ? null : String(deserialized);
}

[TransformName] = 'string' as const;

static create() {
return new this();
}
Expand Down
5 changes: 3 additions & 2 deletions packages/serializer/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ import { inject as service } from '@ember/service';

import type Store from '@ember-data/store';
import type { ModelSchema } from '@ember-data/store/-types/q/ds-model';
import type { EmptyResourceDocument, SingleResourceDocument } from '@warp-drive/core-types/spec/raw';

/**
> ⚠️ CAUTION you likely want the docs for [<Interface> Serializer](/ember-data/release/classes/%3CInterface%3E%20Serializer)
Expand Down Expand Up @@ -265,7 +266,7 @@ export default class extends EmberObject {
@param {Object} hash
@return {Object}
*/
normalize(_typeClass: ModelSchema, hash: Record<string, unknown>): Record<string, unknown> {
return hash;
normalize(_typeClass: ModelSchema, hash: Record<string, unknown>): SingleResourceDocument | EmptyResourceDocument {
return hash as unknown as SingleResourceDocument;
}
}
Loading

0 comments on commit 69c9e08

Please sign in to comment.