@ember-data-mirror/serializer 5.4.0-alpha.139 → 5.4.0-alpha.141
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.
- package/dist/index.js.map +1 -1
- package/dist/json-BwMH6O_R.js.map +1 -1
- package/dist/json-api.js +1 -1
- package/dist/json-api.js.map +1 -1
- package/dist/rest.js.map +1 -1
- package/dist/transform.js.map +1 -1
- package/package.json +17 -45
- package/unstable-preview-types/index.d.ts +3 -3
package/dist/transform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform.js","sources":["../src/-private/transforms/transform.ts","../src/-private/transforms/boolean.ts","../src/-private/transforms/date.ts","../src/-private/transforms/number.ts","../src/-private/transforms/string.ts"],"sourcesContent":["/**\n @module @ember-data-mirror/serializer\n*/\nimport EmberObject from '@ember/object';\n\nimport type { LegacyAttributeField } from '@warp-drive-mirror/core-types/schema/fields';\n\n/**\n The `Transform` class is used to serialize and deserialize model\n attributes when they are saved or loaded from an\n adapter. Subclassing `Transform` is useful for creating custom\n attributes. All subclasses of `Transform` must implement a\n `serialize` and a `deserialize` method.\n\n Example\n\n ```app/transforms/temperature.js\n\n // Converts centigrade in the JSON to fahrenheit in the app\n export default class TemperatureTransform {\n deserialize(serialized, options) {\n return (serialized * 1.8) + 32;\n }\n\n serialize(deserialized, options) {\n return (deserialized - 32) / 1.8;\n }\n\n static create() {\n return new this();\n }\n }\n ```\n\n Usage\n\n ```app/models/requirement.js\n import Model, { attr } from '@ember-data-mirror/model';\n\n export default class RequirementModel extends Model {\n @attr('string') name;\n @attr('temperature') temperature;\n }\n ```\n\n The options passed into the `attr` function when the attribute is\n declared on the model is also available in the transform.\n\n ```app/models/post.js\n import Model, { attr } from '@ember-data-mirror/model';\n\n export default class PostModel extends Model {\n @attr('string') title;\n @attr('markdown', {\n markdown: {\n gfm: false,\n sanitize: true\n }\n })\n markdown;\n }\n ```\n\n ```app/transforms/markdown.js\n export default class MarkdownTransform {\n serialize(deserialized, options) {\n return deserialized.raw;\n }\n\n deserialize(serialized, options) {\n let markdownOptions = options.markdown || {};\n\n return marked(serialized, markdownOptions);\n }\n\n static create() {\n return new this();\n }\n }\n ```\n\n @class Transform\n @public\n */\n/**\n When given a deserialized value from a record attribute this\n method must return the serialized value.\n\n Example\n\n ```javascript\n serialize(deserialized, options) {\n return deserialized ? null : Number(deserialized);\n }\n ```\n\n @method serialize\n @public\n @param deserialized The deserialized value\n @param options hash of options passed to `attr`\n @return The serialized value\n*/\n/**\n When given a serialized value from a JSON object this method must\n return the deserialized value for the record attribute.\n\n Example\n\n ```javascript\n deserialize(serialized, options) {\n return empty(serialized) ? null : Number(serialized);\n }\n ```\n\n @method deserialize\n @public\n @param serialized The serialized value\n @param options hash of options passed to `attr`\n @return The deserialized value\n*/\nexport interface Transform {\n serialize(value: unknown, options: LegacyAttributeField['options']): unknown;\n deserialize(value: unknown, options: LegacyAttributeField['options']): unknown;\n}\nexport const Transform = EmberObject;\n","/**\n @module @ember-data-mirror/serializer\n*/\n\nimport type { TransformName } from '@warp-drive-mirror/core-types/symbols';\n\n/**\n The `BooleanTransform` class is used to serialize and deserialize\n boolean attributes on Ember Data record objects. This transform is\n used when `boolean` is passed as the type parameter to the\n [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function.\n\n Usage\n\n ```app/models/user.js\n import Model, { attr } from '@ember-data-mirror/model';\n\n export default class UserModel extends Model {\n @attr('boolean') isAdmin;\n @attr('string') name;\n @attr('string') email;\n }\n ```\n\n By default, the boolean transform only allows for values of `true` or\n `false`. You can opt into allowing `null` values for\n boolean attributes via `attr('boolean', { allowNull: true })`\n\n ```app/models/user.js\n import Model, { attr } from '@ember-data-mirror/model';\n\n export default class UserModel extends Model {\n @attr('string') email;\n @attr('string') username;\n @attr('boolean', { allowNull: true }) wantsWeeklyEmail;\n }\n ```\n\n @class BooleanTransform\n @public\n */\nexport class BooleanTransform {\n deserialize(serialized: boolean | null | number | string, options?: { allowNull?: boolean }): boolean | null {\n if ((serialized === null || serialized === undefined) && options?.allowNull === true) {\n return null;\n }\n\n if (typeof serialized === 'boolean') {\n return serialized;\n } else if (typeof serialized === 'string') {\n return /^(true|t|1)$/i.test(serialized);\n } else if (typeof serialized === 'number') {\n return serialized === 1;\n } else {\n return false;\n }\n }\n\n serialize(deserialized: boolean | null, options?: { allowNull?: boolean }): boolean | null {\n if ((deserialized === null || deserialized === undefined) && options?.allowNull === true) {\n return null;\n }\n\n return Boolean(deserialized);\n }\n\n declare [TransformName]: 'boolean';\n\n static create() {\n return new this();\n }\n}\n","/**\n @module @ember-data-mirror/serializer\n*/\n\nimport { TransformName } from '@warp-drive-mirror/core-types/symbols';\n\n/**\n The `DateTransform` class is used to serialize and deserialize\n date attributes on Ember Data record objects. This transform is used\n when `date` is passed as the type parameter to the\n [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function. It uses the [`ISO 8601`](https://en.wikipedia.org/wiki/ISO_8601)\n standard.\n\n ```app/models/score.js\n import Model, { attr, belongsTo } from '@ember-data-mirror/model';\n\n export default class ScoreModel extends Model {\n @attr('number') value;\n @belongsTo('player') player;\n @attr('date') date;\n }\n ```\n\n @class DateTransform\n @public\n */\n\nexport class DateTransform {\n deserialize(serialized: string | number | null, _options?: Record<string, unknown>) {\n if (typeof serialized === 'string') {\n let offset = serialized.indexOf('+');\n\n if (offset !== -1 && serialized.length - 5 === offset) {\n offset += 3;\n return new Date(serialized.slice(0, offset) + ':' + serialized.slice(offset));\n }\n return new Date(serialized);\n } else if (typeof serialized === 'number') {\n return new Date(serialized);\n } else if (serialized === null || serialized === undefined) {\n // if the value is null return null\n // if the value is not present in the data return undefined\n return serialized;\n } else {\n return null;\n }\n }\n\n serialize(date: Date, _options?: Record<string, unknown>): string | null {\n // @ts-expect-error isNaN accepts date as it is coercible\n if (date instanceof Date && !isNaN(date)) {\n return date.toISOString();\n } else {\n return null;\n }\n }\n\n [TransformName] = 'date' as const;\n\n static create() {\n return new this();\n }\n}\n","/**\n @module @ember-data-mirror/serializer\n*/\n\nimport { TransformName } from '@warp-drive-mirror/core-types/symbols';\n\nfunction isNumber(value: number) {\n return value === value && value !== Infinity && value !== -Infinity;\n}\n\n/**\n The `NumberTransform` class is used to serialize and deserialize\n numeric attributes on Ember Data record objects. This transform is\n used when `number` is passed as the type parameter to the\n [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function.\n\n Usage\n\n ```app/models/score.js\n import Model, { attr, belongsTo } from '@ember-data-mirror/model';\n\n export default class ScoreModel extends Model {\n @attr('number') value;\n @belongsTo('player') player;\n @attr('date') date;\n }\n ```\n\n @class NumberTransform\n @public\n */\nexport class NumberTransform {\n deserialize(serialized: string | number | null | undefined, _options?: Record<string, unknown>): number | null {\n if (serialized === '' || serialized === null || serialized === undefined) {\n return null;\n } else {\n const transformed = Number(serialized);\n\n return isNumber(transformed) ? transformed : null;\n }\n }\n\n serialize(deserialized: string | number | null | undefined, _options?: Record<string, unknown>): number | null {\n if (deserialized === '' || deserialized === null || deserialized === undefined) {\n return null;\n } else {\n const transformed = Number(deserialized);\n\n return isNumber(transformed) ? transformed : null;\n }\n }\n\n [TransformName] = 'number' as const;\n\n static create() {\n return new this();\n }\n}\n","/**\n @module @ember-data-mirror/serializer\n*/\n\nimport { TransformName } from '@warp-drive-mirror/core-types/symbols';\n\n/**\n The `StringTransform` class is used to serialize and deserialize\n string attributes on Ember Data record objects. This transform is\n used when `string` is passed as the type parameter to the\n [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function.\n\n Usage\n\n ```app/models/user.js\n import Model, { attr, belongsTo } from '@ember-data-mirror/model';\n\n export default class UserModel extends Model {\n @attr('boolean') isAdmin;\n @attr('string') name;\n @attr('string') email;\n }\n ```\n\n @class StringTransform\n @public\n */\nexport class StringTransform {\n deserialize(serialized: unknown, _options?: Record<string, unknown>): string | null {\n return !serialized && serialized !== '' ? null : String(serialized);\n }\n serialize(deserialized: unknown, _options?: Record<string, unknown>): string | null {\n return !deserialized && deserialized !== '' ? null : String(deserialized);\n }\n\n [TransformName] = 'string' as const;\n\n static create() {\n return new this();\n }\n}\n"],"names":["Transform","EmberObject","BooleanTransform","deserialize","serialized","options","undefined","allowNull","test","serialize","deserialized","Boolean","create","DateTransform","_options","offset","indexOf","length","Date","slice","date","isNaN","toISOString","TransformName","isNumber","value","Infinity","NumberTransform","transformed","Number","StringTransform","String"],"mappings":";;;AAAA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKO,MAAMA,SAAS,GAAGC;;AC5HzB;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,gBAAgB,CAAC;AAC5BC,EAAAA,WAAWA,CAACC,UAA4C,EAAEC,OAAiC,EAAkB;AAC3G,IAAA,IAAI,CAACD,UAAU,KAAK,IAAI,IAAIA,UAAU,KAAKE,SAAS,KAAKD,OAAO,EAAEE,SAAS,KAAK,IAAI,EAAE;AACpF,MAAA,OAAO,IAAI,CAAA;AACb,KAAA;AAEA,IAAA,IAAI,OAAOH,UAAU,KAAK,SAAS,EAAE;AACnC,MAAA,OAAOA,UAAU,CAAA;AACnB,KAAC,MAAM,IAAI,OAAOA,UAAU,KAAK,QAAQ,EAAE;AACzC,MAAA,OAAO,eAAe,CAACI,IAAI,CAACJ,UAAU,CAAC,CAAA;AACzC,KAAC,MAAM,IAAI,OAAOA,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"}
|
|
1
|
+
{"version":3,"file":"transform.js","sources":["../src/-private/transforms/transform.ts","../src/-private/transforms/boolean.ts","../src/-private/transforms/date.ts","../src/-private/transforms/number.ts","../src/-private/transforms/string.ts"],"sourcesContent":["/**\n @module @ember-data-mirror/serializer\n*/\nimport EmberObject from '@ember/object';\n\nimport type { LegacyAttributeField } from '@warp-drive-mirror/core-types/schema/fields';\n\n/**\n The `Transform` class is used to serialize and deserialize model\n attributes when they are saved or loaded from an\n adapter. Subclassing `Transform` is useful for creating custom\n attributes. All subclasses of `Transform` must implement a\n `serialize` and a `deserialize` method.\n\n Example\n\n ```app/transforms/temperature.js\n\n // Converts centigrade in the JSON to fahrenheit in the app\n export default class TemperatureTransform {\n deserialize(serialized, options) {\n return (serialized * 1.8) + 32;\n }\n\n serialize(deserialized, options) {\n return (deserialized - 32) / 1.8;\n }\n\n static create() {\n return new this();\n }\n }\n ```\n\n Usage\n\n ```app/models/requirement.js\n import Model, { attr } from '@ember-data-mirror/model';\n\n export default class RequirementModel extends Model {\n @attr('string') name;\n @attr('temperature') temperature;\n }\n ```\n\n The options passed into the `attr` function when the attribute is\n declared on the model is also available in the transform.\n\n ```app/models/post.js\n import Model, { attr } from '@ember-data-mirror/model';\n\n export default class PostModel extends Model {\n @attr('string') title;\n @attr('markdown', {\n markdown: {\n gfm: false,\n sanitize: true\n }\n })\n markdown;\n }\n ```\n\n ```app/transforms/markdown.js\n export default class MarkdownTransform {\n serialize(deserialized, options) {\n return deserialized.raw;\n }\n\n deserialize(serialized, options) {\n let markdownOptions = options.markdown || {};\n\n return marked(serialized, markdownOptions);\n }\n\n static create() {\n return new this();\n }\n }\n ```\n\n @class Transform\n @public\n */\n/**\n When given a deserialized value from a record attribute this\n method must return the serialized value.\n\n Example\n\n ```javascript\n serialize(deserialized, options) {\n return deserialized ? null : Number(deserialized);\n }\n ```\n\n @method serialize\n @public\n @param deserialized The deserialized value\n @param options hash of options passed to `attr`\n @return The serialized value\n*/\n/**\n When given a serialized value from a JSON object this method must\n return the deserialized value for the record attribute.\n\n Example\n\n ```javascript\n deserialize(serialized, options) {\n return empty(serialized) ? null : Number(serialized);\n }\n ```\n\n @method deserialize\n @public\n @param serialized The serialized value\n @param options hash of options passed to `attr`\n @return The deserialized value\n*/\nexport interface Transform {\n serialize(value: unknown, options: LegacyAttributeField['options']): unknown;\n deserialize(value: unknown, options: LegacyAttributeField['options']): unknown;\n}\nexport const Transform = EmberObject;\n","/**\n @module @ember-data-mirror/serializer\n*/\n\nimport type { TransformName } from '@warp-drive-mirror/core-types/symbols';\n\n/**\n The `BooleanTransform` class is used to serialize and deserialize\n boolean attributes on Ember Data record objects. This transform is\n used when `boolean` is passed as the type parameter to the\n [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function.\n\n Usage\n\n ```app/models/user.js\n import Model, { attr } from '@ember-data-mirror/model';\n\n export default class UserModel extends Model {\n @attr('boolean') isAdmin;\n @attr('string') name;\n @attr('string') email;\n }\n ```\n\n By default, the boolean transform only allows for values of `true` or\n `false`. You can opt into allowing `null` values for\n boolean attributes via `attr('boolean', { allowNull: true })`\n\n ```app/models/user.js\n import Model, { attr } from '@ember-data-mirror/model';\n\n export default class UserModel extends Model {\n @attr('string') email;\n @attr('string') username;\n @attr('boolean', { allowNull: true }) wantsWeeklyEmail;\n }\n ```\n\n @class BooleanTransform\n @public\n */\nexport class BooleanTransform {\n deserialize(serialized: boolean | null | number | string, options?: { allowNull?: boolean }): boolean | null {\n if ((serialized === null || serialized === undefined) && options?.allowNull === true) {\n return null;\n }\n\n if (typeof serialized === 'boolean') {\n return serialized;\n } else if (typeof serialized === 'string') {\n return /^(true|t|1)$/i.test(serialized);\n } else if (typeof serialized === 'number') {\n return serialized === 1;\n } else {\n return false;\n }\n }\n\n serialize(deserialized: boolean | null, options?: { allowNull?: boolean }): boolean | null {\n if ((deserialized === null || deserialized === undefined) && options?.allowNull === true) {\n return null;\n }\n\n return Boolean(deserialized);\n }\n\n declare [TransformName]: 'boolean';\n\n static create() {\n return new this();\n }\n}\n","/**\n @module @ember-data-mirror/serializer\n*/\n\nimport { TransformName } from '@warp-drive-mirror/core-types/symbols';\n\n/**\n The `DateTransform` class is used to serialize and deserialize\n date attributes on Ember Data record objects. This transform is used\n when `date` is passed as the type parameter to the\n [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function. It uses the [`ISO 8601`](https://en.wikipedia.org/wiki/ISO_8601)\n standard.\n\n ```app/models/score.js\n import Model, { attr, belongsTo } from '@ember-data-mirror/model';\n\n export default class ScoreModel extends Model {\n @attr('number') value;\n @belongsTo('player') player;\n @attr('date') date;\n }\n ```\n\n @class DateTransform\n @public\n */\n\nexport class DateTransform {\n deserialize(serialized: string | number | null, _options?: Record<string, unknown>) {\n if (typeof serialized === 'string') {\n let offset = serialized.indexOf('+');\n\n if (offset !== -1 && serialized.length - 5 === offset) {\n offset += 3;\n return new Date(serialized.slice(0, offset) + ':' + serialized.slice(offset));\n }\n return new Date(serialized);\n } else if (typeof serialized === 'number') {\n return new Date(serialized);\n } else if (serialized === null || serialized === undefined) {\n // if the value is null return null\n // if the value is not present in the data return undefined\n return serialized;\n } else {\n return null;\n }\n }\n\n serialize(date: Date, _options?: Record<string, unknown>): string | null {\n // @ts-expect-error isNaN accepts date as it is coercible\n if (date instanceof Date && !isNaN(date)) {\n return date.toISOString();\n } else {\n return null;\n }\n }\n\n [TransformName] = 'date' as const;\n\n static create() {\n return new this();\n }\n}\n","/**\n @module @ember-data-mirror/serializer\n*/\n\nimport { TransformName } from '@warp-drive-mirror/core-types/symbols';\n\nfunction isNumber(value: number) {\n return value === value && value !== Infinity && value !== -Infinity;\n}\n\n/**\n The `NumberTransform` class is used to serialize and deserialize\n numeric attributes on Ember Data record objects. This transform is\n used when `number` is passed as the type parameter to the\n [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function.\n\n Usage\n\n ```app/models/score.js\n import Model, { attr, belongsTo } from '@ember-data-mirror/model';\n\n export default class ScoreModel extends Model {\n @attr('number') value;\n @belongsTo('player') player;\n @attr('date') date;\n }\n ```\n\n @class NumberTransform\n @public\n */\nexport class NumberTransform {\n deserialize(serialized: string | number | null | undefined, _options?: Record<string, unknown>): number | null {\n if (serialized === '' || serialized === null || serialized === undefined) {\n return null;\n } else {\n const transformed = Number(serialized);\n\n return isNumber(transformed) ? transformed : null;\n }\n }\n\n serialize(deserialized: string | number | null | undefined, _options?: Record<string, unknown>): number | null {\n if (deserialized === '' || deserialized === null || deserialized === undefined) {\n return null;\n } else {\n const transformed = Number(deserialized);\n\n return isNumber(transformed) ? transformed : null;\n }\n }\n\n [TransformName] = 'number' as const;\n\n static create() {\n return new this();\n }\n}\n","/**\n @module @ember-data-mirror/serializer\n*/\n\nimport { TransformName } from '@warp-drive-mirror/core-types/symbols';\n\n/**\n The `StringTransform` class is used to serialize and deserialize\n string attributes on Ember Data record objects. This transform is\n used when `string` is passed as the type parameter to the\n [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function.\n\n Usage\n\n ```app/models/user.js\n import Model, { attr, belongsTo } from '@ember-data-mirror/model';\n\n export default class UserModel extends Model {\n @attr('boolean') isAdmin;\n @attr('string') name;\n @attr('string') email;\n }\n ```\n\n @class StringTransform\n @public\n */\nexport class StringTransform {\n deserialize(serialized: unknown, _options?: Record<string, unknown>): string | null {\n return !serialized && serialized !== '' ? null : String(serialized);\n }\n serialize(deserialized: unknown, _options?: Record<string, unknown>): string | null {\n return !deserialized && deserialized !== '' ? null : String(deserialized);\n }\n\n [TransformName] = 'string' as const;\n\n static create() {\n return new this();\n }\n}\n"],"names":["Transform","EmberObject","BooleanTransform","deserialize","serialized","options","undefined","allowNull","test","serialize","deserialized","Boolean","create","DateTransform","_options","offset","indexOf","length","Date","slice","date","isNaN","toISOString","TransformName","isNumber","value","Infinity","NumberTransform","transformed","Number","StringTransform","String"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ember-data-mirror/serializer",
|
|
3
|
-
"version": "5.4.0-alpha.
|
|
3
|
+
"version": "5.4.0-alpha.141",
|
|
4
4
|
"description": "Provides Legacy JSON, JSON:API and REST Implementations of the Serializer Interface for use with @ember-data-mirror/store",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ember-addon"
|
|
@@ -44,36 +44,10 @@
|
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
46
|
"ember-source": "3.28.12 || ^4.0.4 || ^5.0.0 || ^6.0.0",
|
|
47
|
-
"@warp-drive-mirror/core-types": "5.4.0-alpha.
|
|
48
|
-
"@ember-data-mirror/legacy-compat": "5.4.0-alpha.
|
|
49
|
-
"@ember-data-mirror/request-utils": "5.4.0-alpha.
|
|
50
|
-
"@ember-data-mirror/store": "5.4.0-alpha.
|
|
51
|
-
},
|
|
52
|
-
"dependenciesMeta": {
|
|
53
|
-
"@warp-drive-mirror/core-types": {
|
|
54
|
-
"injected": true
|
|
55
|
-
},
|
|
56
|
-
"@ember-data-mirror/store": {
|
|
57
|
-
"injected": true
|
|
58
|
-
},
|
|
59
|
-
"@ember-data-mirror/request": {
|
|
60
|
-
"injected": true
|
|
61
|
-
},
|
|
62
|
-
"@ember-data-mirror/request-utils": {
|
|
63
|
-
"injected": true
|
|
64
|
-
},
|
|
65
|
-
"@ember-data-mirror/tracking": {
|
|
66
|
-
"injected": true
|
|
67
|
-
},
|
|
68
|
-
"@ember-data-mirror/model": {
|
|
69
|
-
"injected": true
|
|
70
|
-
},
|
|
71
|
-
"@ember-data-mirror/legacy-compat": {
|
|
72
|
-
"injected": true
|
|
73
|
-
},
|
|
74
|
-
"@warp-drive-mirror/build-config": {
|
|
75
|
-
"injected": true
|
|
76
|
-
}
|
|
47
|
+
"@warp-drive-mirror/core-types": "5.4.0-alpha.141",
|
|
48
|
+
"@ember-data-mirror/legacy-compat": "5.4.0-alpha.141",
|
|
49
|
+
"@ember-data-mirror/request-utils": "5.4.0-alpha.141",
|
|
50
|
+
"@ember-data-mirror/store": "5.4.0-alpha.141"
|
|
77
51
|
},
|
|
78
52
|
"dependencies": {
|
|
79
53
|
"@embroider/macros": "^1.16.10",
|
|
@@ -81,36 +55,34 @@
|
|
|
81
55
|
"ember-cli-string-utils": "^1.1.0",
|
|
82
56
|
"ember-cli-path-utils": "^1.0.0",
|
|
83
57
|
"@ember/edition-utils": "1.2.0",
|
|
84
|
-
"@warp-drive-mirror/build-config": "5.4.0-alpha.
|
|
58
|
+
"@warp-drive-mirror/build-config": "5.4.0-alpha.141"
|
|
85
59
|
},
|
|
86
60
|
"devDependencies": {
|
|
87
61
|
"@babel/core": "^7.24.5",
|
|
88
62
|
"@babel/plugin-transform-typescript": "^7.24.5",
|
|
89
63
|
"@babel/preset-env": "^7.24.5",
|
|
90
64
|
"@babel/preset-typescript": "^7.24.1",
|
|
91
|
-
"@ember-data-mirror/model": "5.4.0-alpha.
|
|
92
|
-
"@ember-data-mirror/request": "5.4.0-alpha.
|
|
93
|
-
"@ember-data-mirror/request-utils": "5.4.0-alpha.
|
|
94
|
-
"@ember-data-mirror/store": "5.4.0-alpha.
|
|
95
|
-
"@ember-data-mirror/tracking": "5.4.0-alpha.
|
|
96
|
-
"@ember-data-mirror/legacy-compat": "5.4.0-alpha.
|
|
65
|
+
"@ember-data-mirror/model": "5.4.0-alpha.141",
|
|
66
|
+
"@ember-data-mirror/request": "5.4.0-alpha.141",
|
|
67
|
+
"@ember-data-mirror/request-utils": "5.4.0-alpha.141",
|
|
68
|
+
"@ember-data-mirror/store": "5.4.0-alpha.141",
|
|
69
|
+
"@ember-data-mirror/tracking": "5.4.0-alpha.141",
|
|
70
|
+
"@ember-data-mirror/legacy-compat": "5.4.0-alpha.141",
|
|
97
71
|
"@ember/test-waiters": "^3.1.0",
|
|
98
72
|
"@glimmer/component": "^1.1.2",
|
|
99
|
-
"@warp-drive-mirror/core-types": "5.4.0-alpha.
|
|
100
|
-
"@warp-drive/internal-config": "5.4.0-alpha.
|
|
73
|
+
"@warp-drive-mirror/core-types": "5.4.0-alpha.141",
|
|
74
|
+
"@warp-drive/internal-config": "5.4.0-alpha.141",
|
|
101
75
|
"decorator-transforms": "^2.3.0",
|
|
102
76
|
"ember-source": "~5.12.0",
|
|
103
|
-
"pnpm-sync-dependencies-meta-injected": "0.0.14",
|
|
104
77
|
"typescript": "^5.7.2",
|
|
105
|
-
"vite": "^5.
|
|
78
|
+
"vite": "^5.4.14"
|
|
106
79
|
},
|
|
107
80
|
"engines": {
|
|
108
|
-
"node": ">= 18.20.
|
|
81
|
+
"node": ">= 18.20.7"
|
|
109
82
|
},
|
|
110
83
|
"volta": {
|
|
111
84
|
"extends": "../../../../../../package.json"
|
|
112
85
|
},
|
|
113
|
-
"packageManager": "pnpm@8.15.9",
|
|
114
86
|
"typesVersions": {
|
|
115
87
|
"*": {
|
|
116
88
|
"unstable-preview-types": [
|
|
@@ -121,6 +93,6 @@
|
|
|
121
93
|
"scripts": {
|
|
122
94
|
"lint": "eslint . --quiet --cache --cache-strategy=content",
|
|
123
95
|
"build:pkg": "vite build;",
|
|
124
|
-
"sync
|
|
96
|
+
"sync": "echo \"syncing\""
|
|
125
97
|
}
|
|
126
98
|
}
|
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
/// <reference path="./transform.d.ts" />
|
|
5
5
|
/// <reference path="./-private/utils.d.ts" />
|
|
6
6
|
/// <reference path="./-private/embedded-records-mixin.d.ts" />
|
|
7
|
-
/// <reference path="./-private/transforms/boolean.type-test.d.ts" />
|
|
8
7
|
/// <reference path="./-private/transforms/date.d.ts" />
|
|
9
|
-
/// <reference path="./-private/transforms/boolean.d.ts" />
|
|
10
8
|
/// <reference path="./-private/transforms/string.d.ts" />
|
|
11
|
-
/// <reference path="./-private/transforms/number.d.ts" />
|
|
12
9
|
/// <reference path="./-private/transforms/transform.d.ts" />
|
|
10
|
+
/// <reference path="./-private/transforms/boolean.d.ts" />
|
|
11
|
+
/// <reference path="./-private/transforms/boolean.type-test.d.ts" />
|
|
12
|
+
/// <reference path="./-private/transforms/number.d.ts" />
|
|
13
13
|
declare module '@ember-data-mirror/serializer' {
|
|
14
14
|
/**
|
|
15
15
|
## Overview
|