Ember Data: add re-exports for new packages (#42017)

* [ember-data] add re-exports for `@ember-data/model`

* [ember-data] add re-exports for `@ember-data/adapter`

* [ember-data] add re-exports for `@ember-data/store`

* [ember-data] add re-exports for `@ember-data/serializer`

* [ember-data] add re-exports for `@ember-data/model`

* [ember-data] use OTHER_FILES for `@ember-data/adapter`

* [ember-data] use OTHER_FILES for `@ember-data/serializer`

* [ember-data] include error test for `@ember-data/adapter`

* [ember-data] use OTHER_FILES for `@ember-data/serializer`

* [ember-data] fix file inclusions and paths

* [ember-data] actually export and test `@ember-data/adapter/error`

* [ember-data] fix more tests

* [ember-data] rework @ember-data/adapter/error exports

* [ember-data] make `@ember-data/adapter/error` exports type-and-value

* [ember-data] make `@ember-data/adapter/error` exports type-and-value correctly

* [ember-data] use `export import` form

* [ember-data] fix mixin re-exports

* [ember-data] fix expanded adapter method test
This commit is contained in:
Chris Krycho 2020-02-05 10:12:40 -07:00 committed by GitHub
parent 3b611ed646
commit 45df8511a2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
36 changed files with 722 additions and 4 deletions

View File

@ -13,7 +13,7 @@ class Post extends DS.Model {
declare module 'ember-data/types/registries/model' {
export default interface ModelRegistry {
'post': Post;
post: Post;
'post-comment': PostComment;
}
}
@ -109,7 +109,7 @@ const SomeComponent = Ember.Object.extend({
lookUpUsers() {
assertType<User>(this.get('store').findRecord('user', 123));
assertType<DS.PromiseArray<User>>(this.get('store').findAll('user'));
}
},
});
const MyRouteAsync = Ember.Route.extend({
@ -124,7 +124,7 @@ const MyRouteAsync = Ember.Route.extend({
async afterModel(): Promise<Ember.Array<Comment>> {
const post = await this.get('store').findRecord('post', 1);
return await post.get('comments');
}
},
});
class MyRouteAsyncES6 extends Ember.Route {

View File

@ -102,7 +102,8 @@
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true,
"esModuleInterop": true
"esModuleInterop": true,
"experimentalDecorators": true
},
"files": [
"index.d.ts",

View File

@ -0,0 +1,3 @@
error.d.ts
json-api.d.ts
rest.d.ts

14
types/ember-data__adapter/error.d.ts vendored Normal file
View File

@ -0,0 +1,14 @@
import DS from 'ember-data';
export import AdapterError = DS.AdapterError;
export import InvalidError = DS.InvalidError;
export import UnauthorizedError = DS.UnauthorizedError;
export import ForbiddenError = DS.ForbiddenError;
export import NotFoundError = DS.NotFoundError;
export import ConflictError = DS.ConflictError;
export import ServerError = DS.ServerError;
export import TimeoutError = DS.TimeoutError;
export import AbortError = DS.AbortError;
export const errorsHashToArray: typeof DS.errorsHashToArray;
export const errorsArrayToHash: typeof DS.errorsArrayToHash;

14
types/ember-data__adapter/index.d.ts vendored Normal file
View File

@ -0,0 +1,14 @@
// Type definitions for @ember-data/adapter 3.15
// Project: https://github.com/emberjs/data
// Definitions by: Mike North <https://github.com/mike-north>
// Chris Krycho <https://github.com/chriskrycho>
// Dan Freeman <https://github.com/dfreeman>
// James C. Davis <https://github.com/jamescdavis>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 3.6
import DS from 'ember-data';
export let BuildURLMixin: DS.BuildURLMixin;
export default DS.Adapter;

View File

@ -0,0 +1,2 @@
import DS from 'ember-data';
export default DS.JSONAPIAdapter;

2
types/ember-data__adapter/rest.d.ts vendored Normal file
View File

@ -0,0 +1,2 @@
import DS from 'ember-data';
export default DS.RESTAdapter;

View File

@ -0,0 +1,26 @@
// These tests *actually do* what we need: show that the imports work at all.
// They are empty sub-classes of EmberObject at present in the base definitions
// being re-exported here. As long as the imports resolve, this is safe (until
// we make these the root definitions and expand these as appropriate).
import AdapterError, {
InvalidError,
TimeoutError,
AbortError,
UnauthorizedError,
ForbiddenError,
NotFoundError,
ConflictError,
ServerError,
errorsHashToArray,
errorsArrayToHash,
} from '@ember-data/adapter/error';
class MyInvalid extends InvalidError {
constructor() {
super([]); // required
}
}
errorsHashToArray({}); // $ExpectType<any[]>
errorsArrayToHash([]); // $ExpectType<{}>

View File

@ -0,0 +1,49 @@
import Service, { inject as service } from '@ember/service';
import Adapter, { BuildURLMixin } from '@ember-data/adapter';
import Model from '@ember-data/model';
import Store from '@ember-data/store';
import DS from 'ember-data';
class Session extends Service {
login(userName: string, password: string): Promise<void> {
return Promise.resolve();
}
}
declare module '@ember/service' {
interface Registry {
session: Session;
}
}
declare module 'ember-data/types/registries/model' {
export default interface ModelRegistry {
rootModel: any;
'super-user': any;
}
}
declare module 'ember-data/types/registries/adapter' {
export default interface AdapterRegistry {
customized: Customized;
}
}
class Customized extends Adapter {
@service session!: Session;
async someMethod(): Promise<void> {
this.defaultSerializer = 'a string';
this.defaultSerializer = 12; // $ExpectError
return this.session.login('hi@example.com', 'password');
}
}
const MixedIn = Adapter.extend(BuildURLMixin, {
findRecord(store: Store, type: typeof Model, id: string, snapshot: DS.Snapshot) {
let url = this.buildURL(type.modelName, id, snapshot, 'findRecord');
return $.ajax(url, { method: 'GET' });
},
});

View File

@ -0,0 +1,59 @@
import { inject as service } from '@ember/service';
import { computed } from '@ember/object';
import $ from 'jquery';
import JSONAPIAdapter from '@ember-data/adapter/json-api';
import Store from '@ember-data/store';
class JsonApi extends JSONAPIAdapter {
// Application specific overrides go here
}
const Customized = JSONAPIAdapter.extend({
host: 'https://api.example.com',
namespace: 'api/v1',
headers: {
API_KEY: 'secret key',
ANOTHER_HEADER: 'Some header value',
},
});
const AuthTokenHeader = JSONAPIAdapter.extend({
session: service('session'),
headers: computed('session.authToken', function() {
return {
API_KEY: this.get('session.authToken'),
ANOTHER_HEADER: 'Some header value',
};
}),
});
const UseAjax = JSONAPIAdapter.extend({
query(store: Store, type: string, query: object) {
const url = 'https://api.example.com/my-api';
return this.ajax(url, 'POST', {
param: 'foo',
});
},
});
const UseAjaxOptions = JSONAPIAdapter.extend({
query(store: Store, type: string, query: object) {
const url = 'https://api.example.com/my-api';
const options = this.ajaxOptions(url, 'DELETE', {
foo: 'bar',
});
return $.ajax(url, {
...options,
});
},
});
const UseAjaxOptionsWithOptionalThirdParams = JSONAPIAdapter.extend({
query(store: Store, type: string, query: object) {
const url = 'https://api.example.com/my-api';
const options = this.ajaxOptions(url, 'DELETE');
return $.ajax(url, {
...options,
});
},
});

View File

@ -0,0 +1,2 @@
/** Static assertion that `value` has type `T` */
export declare function assertType<T>(value: T): void;

View File

@ -0,0 +1,8 @@
import RESTAdapter from '@ember-data/adapter/rest';
class MyRESTAdapter extends RESTAdapter {
someMethod() {
this.coalesceFindRequests; // $ExpectType boolean
this.namespace; // $ExpectType string
}
}

View File

@ -0,0 +1,63 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": ["es6", "dom"],
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"strictFunctionTypes": false,
"baseUrl": "../",
"typeRoots": [
"../"
],
"paths": {
"@ember-data/adapter": ["ember-data__adapter"],
"@ember-data/adapter/*": ["ember-data__adapter/*"],
"@ember-data/model": ["ember-data__model"],
"@ember-data/model/*": ["ember-data__model/*"],
"@ember-data/store": ["ember-data__store"],
"@ember-data/store/*": ["ember-data__store/*"],
"@ember/application": ["ember__application"],
"@ember/application/*": ["ember__application/*"],
"@ember/array": ["ember__array"],
"@ember/array/*": ["ember__array/*"],
"@ember/component": ["ember__component"],
"@ember/component/*": ["ember__component/*"],
"@ember/controller": ["ember__controller"],
"@ember/debug": ["ember__debug"],
"@ember/debug/*": ["ember__debug/*"],
"@ember/engine": ["ember__engine"],
"@ember/engine/*": ["ember__engine/*"],
"@ember/error": ["ember__error"],
"@ember/object": ["ember__object"],
"@ember/object/*": ["ember__object/*"],
"@ember/polyfills": ["ember__polyfills"],
"@ember/routing": ["ember__routing"],
"@ember/routing/*": ["ember__routing/*"],
"@ember/runloop": ["ember__runloop"],
"@ember/runloop/*": ["ember__runloop/*"],
"@ember/service": ["ember__service"],
"@ember/string": ["ember__string"],
"@ember/string/*": ["ember__string/*"],
"@ember/template": ["ember__template"],
"@ember/template/*": ["ember__template/*"],
"@ember/test": ["ember__test"],
"@ember/test/*": ["ember__test/*"],
"@ember/utils": ["ember__utils"],
"@ember/utils/*": ["ember__utils/*"]
},
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true,
"esModuleInterop": true,
"experimentalDecorators": true
},
"files": [
"index.d.ts",
"test/lib/assert.ts",
"test/index.ts",
"test/error.ts",
"test/json-api.ts",
"test/rest.ts"
]
}

View File

@ -0,0 +1,21 @@
{
"extends": "dtslint/dt.json",
// Copied without modification from config for ember-data.
"rules": {
"strict-export-declare-modifiers": false,
"jsdoc-format": false,
"no-misused-new": false,
// not sure what this means
"no-single-declare-module": false,
"object-literal-key-quotes": false,
"only-arrow-functions": false,
"no-empty-interface": false,
"prefer-const": false,
"no-unnecessary-generics": false,
"no-declare-current-package": false,
"no-self-import": false,
"no-return-await": false, // used in tests
// @ember-data packages do not yet have ES module exports
"npm-naming": false
}
}

15
types/ember-data__model/index.d.ts vendored Normal file
View File

@ -0,0 +1,15 @@
// Type definitions for @ember-data/model 3.15
// Project: https://github.com/emberjs/data
// Definitions by: Mike North <https://github.com/mike-north>
// Chris Krycho <https://github.com/chriskrycho>
// Dan Freeman <https://github.com/dfreeman>
// James C. Davis <https://github.com/jamescdavis>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 3.6
import DS from 'ember-data';
export default DS.Model;
export import attr = DS.attr;
export import belongsTo = DS.belongsTo;
export import hasMany = DS.hasMany;

View File

@ -0,0 +1,2 @@
/** Static assertion that `value` has type `T` */
export declare function assertType<T>(value: T): void;

View File

@ -0,0 +1,80 @@
import { computed } from '@ember/object';
import Model, { attr, belongsTo, hasMany } from '@ember-data/model';
import DS, { ChangedAttributes } from 'ember-data';
import RSVP from 'rsvp';
declare module 'ember-data/types/registries/model' {
export default interface ModelRegistry {
user: InstanceType<typeof User>;
person: Person;
human: Human;
}
}
class Person extends Model.extend({
firstName: attr(),
lastName: attr(),
title: attr({ defaultValue: 'The default' }),
title2: attr({ defaultValue: () => 'The default' }),
fullName: computed('firstName', 'lastName', function() {
return `${this.get('firstName')} ${this.get('lastName')}`;
}),
}) {}
const User = Model.extend({
username: attr('string'),
email: attr('string'),
verified: attr('boolean', { defaultValue: false }),
canBeNull: attr('boolean', { allowNull: true }),
createdAt: attr('date', {
defaultValue() {
return new Date();
},
}),
mother: belongsTo('person'),
father: belongsTo('person'),
friends: hasMany('human'),
});
class Human extends Model {
@attr() age: number;
@belongsTo('human') mother: Human;
// We should remove the direct use of `DS.PromiseManyArray` by creating and
// exporting a type which represents `HasMany<Person>`.
@hasMany('person') children: DS.PromiseManyArray<Person>;
}
const user = User.create({ username: 'dwickern' });
user.get('id'); // $ExpectType string
user.get('username'); // $ExpectType string
user.get('verified'); // $ExpectType boolean
user.get('createdAt'); // $ExpectType Date
user.serialize();
user.serialize({ includeId: true });
user.serialize({ includeId: true });
const attributes: ChangedAttributes = user.changedAttributes();
user.rollbackAttributes(); // $ExpectType void
let destroyResult: RSVP.Promise<typeof user>;
destroyResult = user.destroyRecord();
destroyResult = user.destroyRecord({});
destroyResult = user.destroyRecord({ adapterOptions: {} });
destroyResult = user.destroyRecord({ adapterOptions: { waffles: 'are yummy' } });
user.deleteRecord(); // $ExpectType void
user.unloadRecord(); // $ExpectType void
let jsonified: object;
jsonified = user.toJSON();
jsonified = user.toJSON({ includeId: true });
let reloaded: RSVP.Promise<typeof user>;
reloaded = user.reload();
reloaded = user.reload({});
reloaded = user.reload({ adapterOptions: {} });
reloaded = user.reload({ adapterOptions: { fastAsCanBe: 'yessirree' } });

View File

@ -0,0 +1,56 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": ["es6", "dom"],
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"strictFunctionTypes": false,
"baseUrl": "../",
"typeRoots": [
"../"
],
"paths": {
"@ember-data/model": ["ember-data__model"],
"@ember-data/model/*": ["ember-data__model/*"],
"@ember/application": ["ember__application"],
"@ember/application/*": ["ember__application/*"],
"@ember/array": ["ember__array"],
"@ember/array/*": ["ember__array/*"],
"@ember/component": ["ember__component"],
"@ember/component/*": ["ember__component/*"],
"@ember/controller": ["ember__controller"],
"@ember/debug": ["ember__debug"],
"@ember/debug/*": ["ember__debug/*"],
"@ember/engine": ["ember__engine"],
"@ember/engine/*": ["ember__engine/*"],
"@ember/error": ["ember__error"],
"@ember/object": ["ember__object"],
"@ember/object/*": ["ember__object/*"],
"@ember/polyfills": ["ember__polyfills"],
"@ember/routing": ["ember__routing"],
"@ember/routing/*": ["ember__routing/*"],
"@ember/runloop": ["ember__runloop"],
"@ember/runloop/*": ["ember__runloop/*"],
"@ember/service": ["ember__service"],
"@ember/string": ["ember__string"],
"@ember/string/*": ["ember__string/*"],
"@ember/template": ["ember__template"],
"@ember/template/*": ["ember__template/*"],
"@ember/test": ["ember__test"],
"@ember/test/*": ["ember__test/*"],
"@ember/utils": ["ember__utils"],
"@ember/utils/*": ["ember__utils/*"]
},
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true,
"esModuleInterop": true,
"experimentalDecorators": true
},
"files": [
"index.d.ts",
"test/lib/assert.ts",
"test/model.ts"
]
}

View File

@ -0,0 +1,21 @@
{
"extends": "dtslint/dt.json",
// Copied without modification from config for ember-data.
"rules": {
"strict-export-declare-modifiers": false,
"jsdoc-format": false,
"no-misused-new": false,
// not sure what this means
"no-single-declare-module": false,
"object-literal-key-quotes": false,
"only-arrow-functions": false,
"no-empty-interface": false,
"prefer-const": false,
"no-unnecessary-generics": false,
"no-declare-current-package": false,
"no-self-import": false,
"no-return-await": false, // used in tests
// @ember-data packages do not yet have ES module exports
"npm-naming": false
}
}

View File

@ -0,0 +1,4 @@
json-api.d.ts
json.d.ts
rest.d.ts
transform.d.ts

11
types/ember-data__serializer/index.d.ts vendored Normal file
View File

@ -0,0 +1,11 @@
// Type definitions for @ember-data/serializer 3.15
// Project: https://github.com/emberjs/data
// Definitions by: Chris Krycho <https://github.com/me>
// Dan Freeman <https://github.com/dfreeman>
// James C. Davis <https://github.com/jamescdavis>
// Mike North <https://github.com/mike-north>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 3.6
import DS from 'ember-data';
export default DS.Serializer;

View File

@ -0,0 +1,3 @@
import DS from 'ember-data';
export default DS.JSONAPISerializer;

View File

@ -0,0 +1,2 @@
import DS from 'ember-data';
export default DS.JSONSerializer;

View File

@ -0,0 +1,4 @@
import DS from 'ember-data';
export let EmbeddedRecordsMixin: DS.EmbeddedRecordsMixin;
export default DS.RESTSerializer;

View File

@ -0,0 +1,22 @@
import Serializer from '@ember-data/serializer';
import ModelRegistry from 'ember-data/types/registries/model';
import Store from '@ember-data/store';
import Model from '@ember-data/model';
class FakeModel extends Model {
hasFunData = true;
}
declare module 'ember-data/types/registries/model' {
export default interface ModelRegistry {
'fake-model': FakeModel;
}
}
class MySerializer extends Serializer {
someMethod() {
// has types from Serializer
this.store; // $ExpectType Store
this.normalize(new FakeModel(), { works: 'yep' }); // $ExpectType {}
}
}

View File

@ -0,0 +1,8 @@
import JSONAPISerializer from '@ember-data/serializer/json-api';
class MoarSerialized extends JSONAPISerializer {
someMethod() {
// has types from JSONAPISerializer
this.modelNameFromPayloadKey('hello'); // $ExpectType string
}
}

View File

@ -0,0 +1,8 @@
import JSONSerializer from '@ember-data/serializer/json';
class MyJSONSerializer extends JSONSerializer {
someMethod() {
// has types from JSONSerializer
this.keyForLink('a', 'b'); // $ExpectType string
}
}

View File

@ -0,0 +1,18 @@
import RESTSerializer, { EmbeddedRecordsMixin } from '@ember-data/serializer/rest';
import EmberObject from '@ember/object';
import Model from '@ember-data/model';
class MySerializer extends RESTSerializer {
because = 'this needs to have the right type *and* the right runtime';
someMethod() {
// has types from RESTSerializer
this.keyForPolymorphicType('a', 'b', 'c'); // $ExpectType string
}
}
class Foo extends EmberObject.extend(EmbeddedRecordsMixin) {
someMethod() {
this.normalize; // $ExpectType (typeClass: Model, hash: {}, prop: string) => {}
}
}

View File

@ -0,0 +1,8 @@
import Transform from '@ember-data/serializer/transform';
class Foo extends Transform {
someMethod() {
// has types from Transform
this.serialize({ cool: 'cool cool' }, { defaultValue: 'potato', allowNull: false }); // $ExpectType any
}
}

View File

@ -0,0 +1,2 @@
import DS from 'ember-data';
export default DS.Transform;

View File

@ -0,0 +1,61 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": ["es6", "dom"],
"noImplicitAny": true,
"noImplicitThis": true,
"strictFunctionTypes": true,
"strictNullChecks": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"paths": {
"@ember-data/model": ["ember-data__model"],
"@ember-data/model/*": ["ember-data__model/*"],
"@ember-data/serializer": ["ember-data__serializer"],
"@ember-data/serializer/*": ["ember-data__serializer/*"],
"@ember-data/store": ["ember-data__store"],
"@ember-data/store/*": ["ember-data__store/*"],
"@ember/application": ["ember__application"],
"@ember/application/*": ["ember__application/*"],
"@ember/array": ["ember__array"],
"@ember/array/*": ["ember__array/*"],
"@ember/component": ["ember__component"],
"@ember/component/*": ["ember__component/*"],
"@ember/controller": ["ember__controller"],
"@ember/debug": ["ember__debug"],
"@ember/debug/*": ["ember__debug/*"],
"@ember/engine": ["ember__engine"],
"@ember/engine/*": ["ember__engine/*"],
"@ember/error": ["ember__error"],
"@ember/object": ["ember__object"],
"@ember/object/*": ["ember__object/*"],
"@ember/polyfills": ["ember__polyfills"],
"@ember/routing": ["ember__routing"],
"@ember/routing/*": ["ember__routing/*"],
"@ember/runloop": ["ember__runloop"],
"@ember/runloop/*": ["ember__runloop/*"],
"@ember/service": ["ember__service"],
"@ember/string": ["ember__string"],
"@ember/string/*": ["ember__string/*"],
"@ember/template": ["ember__template"],
"@ember/template/*": ["ember__template/*"],
"@ember/test": ["ember__test"],
"@ember/test/*": ["ember__test/*"],
"@ember/utils": ["ember__utils"],
"@ember/utils/*": ["ember__utils/*"]
},
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"test/index.ts",
"test/json-api.ts",
"test/json.ts",
"test/rest.ts",
"test/transform.ts"
]
}

View File

@ -0,0 +1,6 @@
{
"extends": "dtslint/dt.json",
"rules": {
"npm-naming": false // The ember addon package exports *build-time*, not *run-time* code.
}
}

View File

@ -0,0 +1,31 @@
import DS from 'ember-data';
import ModelRegistry from 'ember-data/types/registries/model';
import Store, { normalizeModelName } from '@ember-data/store';
import Model, { attr, hasMany, belongsTo } from '@ember-data/model';
import EmberArray from '@ember/array';
// -- support types
declare class Post extends Model {
@attr('string')
title: string;
@hasMany('post-comment')
comments: EmberArray<PostComment>;
}
declare class PostComment extends Model {
@belongsTo('post')
post: Post;
}
declare module 'ember-data/types/registries/model' {
export default interface ModelRegistry {
post: Post;
'post-comment': PostComment;
}
}
// -- actual tests
Store; // $ExpectType<DS.Store>
normalizeModelName('post'); // $ExpectType<string>
normalizeModelName('post-comment'); // $ExpectType<string>

14
types/ember-data__store/index.d.ts vendored Normal file
View File

@ -0,0 +1,14 @@
// Type definitions for @ember-data/store 3.15
// Project: https://github.com/emberjs/data
// Definitions by: Chris Krycho <https://github.com/me>
// Dan Freeman <https://github.com/dfreeman>
// James C. Davis <https://github.com/jamescdavis>
// Mike North <https://github.com/mike-north>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 3.6
import DS from 'ember-data';
export import normalizeModelName = DS.normalizeModelName;
export default DS.Store;

View File

@ -0,0 +1,57 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": ["es6", "dom"],
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"strictFunctionTypes": false,
"baseUrl": "../",
"typeRoots": [
"../"
],
"paths": {
"@ember-data/model": ["ember-data__model"],
"@ember-data/model/*": ["ember-data__model/*"],
"@ember-data/store": ["ember-data__store"],
"@ember-data/store/*": ["ember-data__store/*"],
"@ember/application": ["ember__application"],
"@ember/application/*": ["ember__application/*"],
"@ember/array": ["ember__array"],
"@ember/array/*": ["ember__array/*"],
"@ember/component": ["ember__component"],
"@ember/component/*": ["ember__component/*"],
"@ember/controller": ["ember__controller"],
"@ember/debug": ["ember__debug"],
"@ember/debug/*": ["ember__debug/*"],
"@ember/engine": ["ember__engine"],
"@ember/engine/*": ["ember__engine/*"],
"@ember/error": ["ember__error"],
"@ember/object": ["ember__object"],
"@ember/object/*": ["ember__object/*"],
"@ember/polyfills": ["ember__polyfills"],
"@ember/routing": ["ember__routing"],
"@ember/routing/*": ["ember__routing/*"],
"@ember/runloop": ["ember__runloop"],
"@ember/runloop/*": ["ember__runloop/*"],
"@ember/service": ["ember__service"],
"@ember/string": ["ember__string"],
"@ember/string/*": ["ember__string/*"],
"@ember/template": ["ember__template"],
"@ember/template/*": ["ember__template/*"],
"@ember/test": ["ember__test"],
"@ember/test/*": ["ember__test/*"],
"@ember/utils": ["ember__utils"],
"@ember/utils/*": ["ember__utils/*"]
},
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true,
"esModuleInterop": true,
"experimentalDecorators": true
},
"files": [
"index.d.ts",
"ember-data__store-tests.ts"
]
}

View File

@ -0,0 +1,21 @@
{
"extends": "dtslint/dt.json",
// Copied without modification from config for ember-data.
"rules": {
"strict-export-declare-modifiers": false,
"jsdoc-format": false,
"no-misused-new": false,
// not sure what this means
"no-single-declare-module": false,
"object-literal-key-quotes": false,
"only-arrow-functions": false,
"no-empty-interface": false,
"prefer-const": false,
"no-unnecessary-generics": false,
"no-declare-current-package": false,
"no-self-import": false,
"no-return-await": false, // used in tests
// @ember-data packages do not yet have ES module exports
"npm-naming": false
}
}