From 2083413c8514efb3201224bf533f7922a5b80fc1 Mon Sep 17 00:00:00 2001 From: Ricardo Mendes Date: Tue, 25 Jul 2017 14:33:23 +0100 Subject: [PATCH 1/6] Create 0000-ember-data-javascript-module-api.md --- text/0000-ember-data-javascript-module-api.md | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 text/0000-ember-data-javascript-module-api.md diff --git a/text/0000-ember-data-javascript-module-api.md b/text/0000-ember-data-javascript-module-api.md new file mode 100644 index 0000000000..5565dd9cd5 --- /dev/null +++ b/text/0000-ember-data-javascript-module-api.md @@ -0,0 +1,52 @@ +- Start Date: 2017-07-25 +- RFC PR: (leave this empty) +- Ember Issue: (leave this empty) + +# Summary + +Align Ember Data module API with [RFC #176](https://github.com/emberjs/rfcs/blob/master/text/0176-javascript-module-api.md). + +# Motivation + +This document proposes changes to the modules exported by Ember Data to make it consistent with the changes to the Ember module API proposed in [RFC #176](https://github.com/emberjs/rfcs/blob/master/text/0176-javascript-module-api.md). + +# Detailed design + +The + +Ember Data will stick with 1 top level namespace of `ember-data`. +Under it there are 6 nested module namespaces where exposed components could live. +Someday these namespaces could be moved into their own top level scoped package (for example `ember-data/serializer` could become `@ember-data/serializer`) however, +that is not being proposed at this time. + +# How We Teach This + +What names and terminology work best for these concepts and why? How is this +idea best presented? As a continuation of existing Ember patterns, or as a +wholly new one? + +Would the acceptance of this proposal mean the Ember guides must be +re-organized or altered? Does it change how Ember is taught to new users +at any level? + +How should this feature be introduced and taught to existing Ember +users? + +# Drawbacks + +Why should we *not* do this? Please consider the impact on teaching Ember, +on the integration of this feature with other existing and planned features, +on the impact of the API churn on existing apps, etc. + +There are tradeoffs to choosing any path, please attempt to identify them here. + +# Alternatives + +What other designs have been considered? What is the impact of not doing this? + +This section could also include prior art, that is, how other frameworks in the same domain have solved this problem. + +# Unresolved questions + +Optional, but suggested for first drafts. What parts of the design are still +TBD? From dd5d9b598f5187695c8d4ea83346cdd1cc8dafeb Mon Sep 17 00:00:00 2001 From: Ricardo Mendes Date: Tue, 25 Jul 2017 14:39:42 +0100 Subject: [PATCH 2/6] Update 0000-ember-data-javascript-module-api.md --- text/0000-ember-data-javascript-module-api.md | 82 +++++++++++++++++-- 1 file changed, 77 insertions(+), 5 deletions(-) diff --git a/text/0000-ember-data-javascript-module-api.md b/text/0000-ember-data-javascript-module-api.md index 5565dd9cd5..a2c5e41a86 100644 --- a/text/0000-ember-data-javascript-module-api.md +++ b/text/0000-ember-data-javascript-module-api.md @@ -42,11 +42,83 @@ There are tradeoffs to choosing any path, please attempt to identify them here. # Alternatives -What other designs have been considered? What is the impact of not doing this? - -This section could also include prior art, that is, how other frameworks in the same domain have solved this problem. +The easiest alternative would be to continue using the current exports. +Alternatively, we could use the current shims, which do not follow the RFC #176 heuristics as closely. # Unresolved questions -Optional, but suggested for first drafts. What parts of the design are still -TBD? +## Should transforms live inside `ember-data/serializer`? + +Conceptually transforms are closly related to serializers, +byt theyhave their own name and namespace in the Ember container. + +# Addenda + +## Addendum 1 - Table of Module Names and Exports by Global + +### `@ember-data/store` +| Global | Module | +|--- | --- | +| `DS.Store` | `import Store from 'ember-data/store'` | +| `DS.AdapterPopulatedRecordArray` | `import AdapterPopulatedRecordArray from 'ember-data/store/adapter-populated-record-array'` | +| `DS.DebugAdapter` | `import DebugAdapter from 'ember-data/store/debug-adapter'` | +| `DS.FilteredRecordArray` | `import FilteredRecordArray from 'ember-data/store/filterd-record-array'` | +| `DS.ManyArray` | `import ManyArray from 'ember-data/store/many-array'` | +| `DS.RecordArray` | `import RecordArray from 'ember-data/store/record-array'` | +| `DS.RecordArrayManager` | `import RecordArrayManager from 'ember-data/store/record-array-manager'` | +| `DS._initializeStoreService` | `import { initializeStoreService } from 'ember-data/store'` | +| `DS.normalizeModelName` | `import { normalizeModelName } from 'ember-data/store'` | +| `DS._setupContainer` | `import { setupContainer } from 'ember-data/store'` + +### `@ember-data/model` +| Global | Module | +|--- | --- | +| `DS.Model` | `import Model from 'ember-data/model'` | +| `DS.Errors` | `import Errors from 'ember-data/model/errors'` | +| `DS.InternalModel` | `import InternalModel from 'ember-data/model/internal-model'` | +| `DS.Relationship` | `import Relationship from 'ember-data/model'` | +| `DS.RootState` | `import RootState from 'ember-data/model/root-state'` | +| `DS.Shapshot` | `import Snapshot from 'ember-data/model/snapshot'` | +| `DS.attr` | `import { attr } from 'ember-data/model'`| +| `DS.belongsTo` | `import { belongsTo } from 'ember-data/model'`| +| `DS.hasMany` | `import { hasMany } from 'ember-data/model'` | + + +### `@ember-data/adapter` +| Global | Module | +|--- | --- | +| `DS.Adapter` | `import Adapter from 'ember-data/adapter'` | +| `DS.AbortError` | `import AbortError from 'ember-data/adapter/abort-error'` | +| `DS.AdapterError` | `import AdapterError from 'ember-data/adapter/adapter-error'` | +| `DS.BuildURLMixin` | `import BuildURLMixin from 'ember-data/adapter/build-url-mixin'` | +| `DS.InvalidError` | `import InvalidError from 'ember-data/adapter/invalid-error'` | +| `DS.JSONAPIAdapter` | `import JSONAPIAdapter from 'ember-data/adapter/json-api'` | +| `DS.RESTAdapter` | `import RESTAdapter from 'ember-data/adapter/rest'` | +| `DS.TimeoutError` | `import TimeoutError from 'ember-data/adapter/timeout-error'` | +| `DS.errorsHashToArray` | `import { errorsHashToArray } from 'ember-data/adapters'` | +| `DS.errorsArrayToHash` | `import { errorsArrayToHash } from 'ember-data/adapters'` | + +### `@ember-data/serializer` +| Global | Module | +|--- | --- | +| `DS.Serializer` | `import Serializer from 'ember-data/serializer'` | +| `DS.EmbeddedRecordsMixin` | `import EmbeddedRecordsMixin from 'ember-data/serializer/embedded-record-mixin'` | +| `DS.JSONAPISerializer` | `import JSONAPISerializer from 'ember-data/serializer/json-api'` | +| `DS.JSONSerializer` | `import JSONSerializer from 'ember-data/serializer/json'` | +| `DS.RESTSerializer` | `import RESTSerializer from 'ember-data/serializer/rest'` | + +### `@ember-data/transform` +| Global | Module | +|--- | --- | +| `DS.Transform` | `import Transform from 'ember-data/transform'` | +| `DS.BooleanTransform` | `import BooleanTransform from 'ember-data/transform/boolean'` | +| `DS.DateTransform` | `import DateTransform from 'ember-data/transform/date'` | +| `DS.NumberTransform` | `import NumberTransform from 'ember-data/transform/number'` | +| `DS.StringTransform` | `import StringTransform from 'ember-data/transform/string'` | + +### `@ember-data/promise-proxy` +| Global | Module | +|--- | --- | +| `DS.PromiseArray` | `import PromiseArray from 'ember-data/promise-proxies/array'` | +| `DS.PromiseManyArray` | `import PromiseManyArray from 'ember-data/promise-proxies/many-array'`| +| `DS.PromiseObject` | `import PromiseObject from 'ember-data/promise-proxies/object'` | From ac5c0b65955cf4928821b61b18ea54fab133b5e1 Mon Sep 17 00:00:00 2001 From: Ricardo Mendes Date: Tue, 25 Jul 2017 14:40:43 +0100 Subject: [PATCH 3/6] Update 0000-ember-data-javascript-module-api.md --- text/0000-ember-data-javascript-module-api.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/text/0000-ember-data-javascript-module-api.md b/text/0000-ember-data-javascript-module-api.md index a2c5e41a86..763a376304 100644 --- a/text/0000-ember-data-javascript-module-api.md +++ b/text/0000-ember-data-javascript-module-api.md @@ -12,13 +12,19 @@ This document proposes changes to the modules exported by Ember Data to make it # Detailed design -The - -Ember Data will stick with 1 top level namespace of `ember-data`. -Under it there are 6 nested module namespaces where exposed components could live. -Someday these namespaces could be moved into their own top level scoped package (for example `ember-data/serializer` could become `@ember-data/serializer`) however, +Ember Data will stick with 1 top level namespace of `@ember-data`. Under it there are 6 nested module +namespaces where exposed components could live. Someday these namespaces could be moved into their own +top level scoped package (for example `@ember-data/serializer` could become `@ember-data/serializer`) however, that is not being proposed at this time. + +- `@ember-data/store` - Store related concers with storing records inside ember data's identity map. +- `@ember-data/model` - Classes and utilities related to modeling data +- `@ember-data/adapter` - Classes and utilities related to communicating with external backends +- `@ember-data/serializer` - Classes for serializing and extracting data from outside Ember Data +- `@ember-data/transform` - Classes for transforming individual values +- `@ember-data/promise-proxies` - Classes for allowing promises to show up in ember templates. + # How We Teach This What names and terminology work best for these concepts and why? How is this From 8b5d114a9523a42c0661b45151847b7aee797cca Mon Sep 17 00:00:00 2001 From: Ricardo Mendes Date: Tue, 25 Jul 2017 14:59:38 +0100 Subject: [PATCH 4/6] Update 0000-ember-data-javascript-module-api.md --- text/0000-ember-data-javascript-module-api.md | 84 +++++++++---------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/text/0000-ember-data-javascript-module-api.md b/text/0000-ember-data-javascript-module-api.md index 763a376304..b979a42f08 100644 --- a/text/0000-ember-data-javascript-module-api.md +++ b/text/0000-ember-data-javascript-module-api.md @@ -65,66 +65,66 @@ byt theyhave their own name and namespace in the Ember container. ### `@ember-data/store` | Global | Module | |--- | --- | -| `DS.Store` | `import Store from 'ember-data/store'` | -| `DS.AdapterPopulatedRecordArray` | `import AdapterPopulatedRecordArray from 'ember-data/store/adapter-populated-record-array'` | -| `DS.DebugAdapter` | `import DebugAdapter from 'ember-data/store/debug-adapter'` | -| `DS.FilteredRecordArray` | `import FilteredRecordArray from 'ember-data/store/filterd-record-array'` | -| `DS.ManyArray` | `import ManyArray from 'ember-data/store/many-array'` | -| `DS.RecordArray` | `import RecordArray from 'ember-data/store/record-array'` | -| `DS.RecordArrayManager` | `import RecordArrayManager from 'ember-data/store/record-array-manager'` | -| `DS._initializeStoreService` | `import { initializeStoreService } from 'ember-data/store'` | -| `DS.normalizeModelName` | `import { normalizeModelName } from 'ember-data/store'` | -| `DS._setupContainer` | `import { setupContainer } from 'ember-data/store'` +| `DS.Store` | `import Store from '@ember-data/store'` | +| `DS.AdapterPopulatedRecordArray` | `import AdapterPopulatedRecordArray from '@ember-data/store/src/src/adapter-populated-record-array'` | +| `DS.DebugAdapter` | `import DebugAdapter from '@ember-data/store/src/src/debug-adapter'` | +| `DS.FilteredRecordArray` | `import FilteredRecordArray from '@ember-data/store/src/filterd-record-array'` | +| `DS.ManyArray` | `import ManyArray from '@ember-data/store/src/many-array'` | +| `DS.RecordArray` | `import RecordArray from '@ember-data/store/src/record-array'` | +| `DS.RecordArrayManager` | `import RecordArrayManager from '@ember-data/store/src/record-array-manager'` | +| `DS._initializeStoreService` | `import { initializeStoreService } from '@ember-data/store'` | +| `DS.normalizeModelName` | `import { normalizeModelName } from '@ember-data/store'` | +| `DS._setupContainer` | `import { setupContainer } from '@ember-data/store'` ### `@ember-data/model` | Global | Module | |--- | --- | -| `DS.Model` | `import Model from 'ember-data/model'` | -| `DS.Errors` | `import Errors from 'ember-data/model/errors'` | -| `DS.InternalModel` | `import InternalModel from 'ember-data/model/internal-model'` | -| `DS.Relationship` | `import Relationship from 'ember-data/model'` | -| `DS.RootState` | `import RootState from 'ember-data/model/root-state'` | -| `DS.Shapshot` | `import Snapshot from 'ember-data/model/snapshot'` | -| `DS.attr` | `import { attr } from 'ember-data/model'`| -| `DS.belongsTo` | `import { belongsTo } from 'ember-data/model'`| -| `DS.hasMany` | `import { hasMany } from 'ember-data/model'` | +| `DS.Model` | `import Model from '@ember-data/model'` | +| `DS.Errors` | `import Errors from '@ember-data/model/src/errors'` | +| `DS.InternalModel` | `import InternalModel from '@ember-data/model/src/internal-model'` | +| `DS.Relationship` | `import Relationship from '@ember-data/model'` | +| `DS.RootState` | `import RootState from '@ember-data/model/src/root-state'` | +| `DS.Shapshot` | `import Snapshot from '@ember-data/model/src/snapshot'` | +| `DS.attr` | `import { attr } from '@ember-data/model'`| +| `DS.belongsTo` | `import { belongsTo } from '@ember-data/model'`| +| `DS.hasMany` | `import { hasMany } from '@ember-data/model'` | ### `@ember-data/adapter` | Global | Module | |--- | --- | -| `DS.Adapter` | `import Adapter from 'ember-data/adapter'` | -| `DS.AbortError` | `import AbortError from 'ember-data/adapter/abort-error'` | -| `DS.AdapterError` | `import AdapterError from 'ember-data/adapter/adapter-error'` | -| `DS.BuildURLMixin` | `import BuildURLMixin from 'ember-data/adapter/build-url-mixin'` | -| `DS.InvalidError` | `import InvalidError from 'ember-data/adapter/invalid-error'` | -| `DS.JSONAPIAdapter` | `import JSONAPIAdapter from 'ember-data/adapter/json-api'` | -| `DS.RESTAdapter` | `import RESTAdapter from 'ember-data/adapter/rest'` | -| `DS.TimeoutError` | `import TimeoutError from 'ember-data/adapter/timeout-error'` | -| `DS.errorsHashToArray` | `import { errorsHashToArray } from 'ember-data/adapters'` | -| `DS.errorsArrayToHash` | `import { errorsArrayToHash } from 'ember-data/adapters'` | +| `DS.Adapter` | `import Adapter from '@ember-data/adapter'` | +| `DS.AbortError` | `import AbortError from '@ember-data/adapter/src/abort-error'` | +| `DS.AdapterError` | `import AdapterError from '@ember-data/adapter/src/adapter-error'` | +| `DS.BuildURLMixin` | `import BuildURLMixin from '@ember-data/adapter/src/build-url-mixin'` | +| `DS.InvalidError` | `import InvalidError from '@ember-data/adapter/src/invalid-error'` | +| `DS.JSONAPIAdapter` | `import JSONAPIAdapter from '@ember-data/adapter/src/json-api'` | +| `DS.RESTAdapter` | `import RESTAdapter from '@ember-data/adapter/src/rest'` | +| `DS.TimeoutError` | `import TimeoutError from '@ember-data/adapter/src/timeout-error'` | +| `DS.errorsHashToArray` | `import { errorsHashToArray } from '@ember-data/adapters'` | +| `DS.errorsArrayToHash` | `import { errorsArrayToHash } from '@ember-data/adapters'` | ### `@ember-data/serializer` | Global | Module | |--- | --- | -| `DS.Serializer` | `import Serializer from 'ember-data/serializer'` | -| `DS.EmbeddedRecordsMixin` | `import EmbeddedRecordsMixin from 'ember-data/serializer/embedded-record-mixin'` | -| `DS.JSONAPISerializer` | `import JSONAPISerializer from 'ember-data/serializer/json-api'` | -| `DS.JSONSerializer` | `import JSONSerializer from 'ember-data/serializer/json'` | -| `DS.RESTSerializer` | `import RESTSerializer from 'ember-data/serializer/rest'` | +| `DS.Serializer` | `import Serializer from '@ember-data/serializer'` | +| `DS.EmbeddedRecordsMixin` | `import EmbeddedRecordsMixin from '@ember-data/serializer/src/embedded-record-mixin'` | +| `DS.JSONAPISerializer` | `import JSONAPISerializer from '@ember-data/serializer/src/json-api'` | +| `DS.JSONSerializer` | `import JSONSerializer from '@ember-data/serializer/src/json'` | +| `DS.RESTSerializer` | `import RESTSerializer from '@ember-data/serializer/src/rest'` | ### `@ember-data/transform` | Global | Module | |--- | --- | -| `DS.Transform` | `import Transform from 'ember-data/transform'` | -| `DS.BooleanTransform` | `import BooleanTransform from 'ember-data/transform/boolean'` | -| `DS.DateTransform` | `import DateTransform from 'ember-data/transform/date'` | -| `DS.NumberTransform` | `import NumberTransform from 'ember-data/transform/number'` | -| `DS.StringTransform` | `import StringTransform from 'ember-data/transform/string'` | +| `DS.Transform` | `import Transform from '@ember-data/transform'` | +| `DS.BooleanTransform` | `import BooleanTransform from '@ember-data/transform/src/boolean'` | +| `DS.DateTransform` | `import DateTransform from '@ember-data/transform/src/date'` | +| `DS.NumberTransform` | `import NumberTransform from '@ember-data/transform/src/number'` | +| `DS.StringTransform` | `import StringTransform from '@ember-data/transform/src/string'` | ### `@ember-data/promise-proxy` | Global | Module | |--- | --- | -| `DS.PromiseArray` | `import PromiseArray from 'ember-data/promise-proxies/array'` | -| `DS.PromiseManyArray` | `import PromiseManyArray from 'ember-data/promise-proxies/many-array'`| -| `DS.PromiseObject` | `import PromiseObject from 'ember-data/promise-proxies/object'` | +| `DS.PromiseArray` | `import PromiseArray from '@ember-data/promise-proxies/src/array'` | +| `DS.PromiseManyArray` | `import PromiseManyArray from '@ember-data/promise-proxies/src/many-array'`| +| `DS.PromiseObject` | `import PromiseObject from '@ember-data/promise-proxies/src/object'` | From b4e903138c07916bd0dc679869116792db201089 Mon Sep 17 00:00:00 2001 From: Ricardo Mendes Date: Tue, 25 Jul 2017 15:02:28 +0100 Subject: [PATCH 5/6] Update 0000-ember-data-javascript-module-api.md --- text/0000-ember-data-javascript-module-api.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/text/0000-ember-data-javascript-module-api.md b/text/0000-ember-data-javascript-module-api.md index b979a42f08..a9734a6f90 100644 --- a/text/0000-ember-data-javascript-module-api.md +++ b/text/0000-ember-data-javascript-module-api.md @@ -66,8 +66,8 @@ byt theyhave their own name and namespace in the Ember container. | Global | Module | |--- | --- | | `DS.Store` | `import Store from '@ember-data/store'` | -| `DS.AdapterPopulatedRecordArray` | `import AdapterPopulatedRecordArray from '@ember-data/store/src/src/adapter-populated-record-array'` | -| `DS.DebugAdapter` | `import DebugAdapter from '@ember-data/store/src/src/debug-adapter'` | +| `DS.AdapterPopulatedRecordArray` | `import AdapterPopulatedRecordArray from '@ember-data/store/src/adapter-populated-record-array'` | +| `DS.DebugAdapter` | `import DebugAdapter from '@ember-data/store/src/debug-adapter'` | | `DS.FilteredRecordArray` | `import FilteredRecordArray from '@ember-data/store/src/filterd-record-array'` | | `DS.ManyArray` | `import ManyArray from '@ember-data/store/src/many-array'` | | `DS.RecordArray` | `import RecordArray from '@ember-data/store/src/record-array'` | From 1496320fe672545e917cadaf905c4e8d153a62b3 Mon Sep 17 00:00:00 2001 From: Ricardo Mendes Date: Tue, 25 Jul 2017 15:16:22 +0100 Subject: [PATCH 6/6] Update 0000-ember-data-javascript-module-api.md --- text/0000-ember-data-javascript-module-api.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/text/0000-ember-data-javascript-module-api.md b/text/0000-ember-data-javascript-module-api.md index a9734a6f90..d69c74d229 100644 --- a/text/0000-ember-data-javascript-module-api.md +++ b/text/0000-ember-data-javascript-module-api.md @@ -12,11 +12,8 @@ This document proposes changes to the modules exported by Ember Data to make it # Detailed design -Ember Data will stick with 1 top level namespace of `@ember-data`. Under it there are 6 nested module -namespaces where exposed components could live. Someday these namespaces could be moved into their own -top level scoped package (for example `@ember-data/serializer` could become `@ember-data/serializer`) however, -that is not being proposed at this time. - +Ember Data will stick with 1 top level namespace of `@ember-data`. +Under it there are 6 nested module namespaces where exposed components could live. - `@ember-data/store` - Store related concers with storing records inside ember data's identity map. - `@ember-data/model` - Classes and utilities related to modeling data @@ -108,7 +105,7 @@ byt theyhave their own name and namespace in the Ember container. | Global | Module | |--- | --- | | `DS.Serializer` | `import Serializer from '@ember-data/serializer'` | -| `DS.EmbeddedRecordsMixin` | `import EmbeddedRecordsMixin from '@ember-data/serializer/src/embedded-record-mixin'` | +| `DS.EmbeddedRecordsMixin` | `import EmbeddedRecordsMixin from '@ember-data/serializer/src/embedded-records-mixin'` | | `DS.JSONAPISerializer` | `import JSONAPISerializer from '@ember-data/serializer/src/json-api'` | | `DS.JSONSerializer` | `import JSONSerializer from '@ember-data/serializer/src/json'` | | `DS.RESTSerializer` | `import RESTSerializer from '@ember-data/serializer/src/rest'` |