Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Octanify, begin mixin deprecation #474

Open
wants to merge 32 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
2e6274f
Octanify (component arg breaking change)
charlesfries Aug 1, 2021
4b674ac
Generate store service, begin mixin deprecation
charlesfries Aug 1, 2021
e529f9b
Convert to native classes
charlesfries Aug 2, 2021
e5d2fd1
Cleanup
charlesfries Aug 2, 2021
bdf83d3
Update ember-cli-babel to 7.26.6
charlesfries Aug 3, 2021
943b581
Bump ember-cli-addon-docs, uninstall @ember/jquery, ember-ajax , move…
charlesfries Sep 7, 2021
cdb4db7
Bump `ember-concurrency` from 1.0.0 to 2.1.2
charlesfries Sep 7, 2021
ac3fd0b
Install lint packages, update lint configuration
charlesfries Sep 7, 2021
0da048c
Update packages
charlesfries Sep 7, 2021
b716c40
Rm get calls
charlesfries Sep 7, 2021
b7235ee
Enable jquery
charlesfries Sep 7, 2021
148d556
Add itemizable test model, remove itemizable mixin, add tags hasMany …
charlesfries Sep 7, 2021
18492f4
Cleanup
charlesfries Sep 7, 2021
5adc215
Rm custom prettier printWidth
charlesfries Sep 7, 2021
efc6af1
Convert to native classes
charlesfries Sep 7, 2021
6ac3987
Glimmerize dummy
charlesfries Sep 8, 2021
2dc9816
Convert components to angle brackets, glimmerize demo1 component
charlesfries Sep 8, 2021
335a7e1
Bump ember-cli-mirage
charlesfries Sep 8, 2021
b7c08b1
Fix example
charlesfries Sep 8, 2021
e4f420a
Revert unnecessary changes, additional modernization, fix CSS comp mo…
charlesfries Sep 12, 2021
facdced
Revert
charlesfries Sep 12, 2021
7942ba8
Rm unused packages, disable jquery integration, mirage classes, fix t…
charlesfries Sep 12, 2021
ce15bde
Cleanup
charlesfries Sep 12, 2021
06b7646
Cleanup
charlesfries Sep 12, 2021
d860a9b
Glimmerize test component, bump ember-router-scroll
charlesfries Sep 12, 2021
78a36ea
Fix href bug
charlesfries Sep 12, 2021
021cf7d
Fix template lint warnings
charlesfries Sep 12, 2021
1e08559
Bump docs addons
charlesfries Sep 12, 2021
50d8784
Merge branch 'master' into pr/474
jkeen Oct 5, 2022
494544b
Linter fixes
jkeen Oct 5, 2022
34c2bb1
Merge pull request #1 from jkeen/pr/474
charlesfries Oct 12, 2022
34030b5
Cleanup
charlesfries Oct 12, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
# misc
/coverage/
!.*
.*/
.eslintcache

# ember-try
/.node_modules.ember-try/
Expand Down
64 changes: 34 additions & 30 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,55 +10,59 @@ module.exports = {
ecmaVersion: 2018,
sourceType: 'module',
ecmaFeatures: {
legacyDecorators: true
}
legacyDecorators: true,
},
},
plugins: [
'ember'
],
plugins: ['ember'],
extends: [
'eslint:recommended',
'plugin:ember/recommended'
'plugin:ember/recommended',
'plugin:prettier/recommended',
],
env: {
browser: true
browser: true,
},
rules: {
'ember/no-jquery': 'off',
'ember/no-mixins': 'off',
'ember/no-new-mixins': 'off',
'no-useless-escape': 'off'
'no-useless-escape': 'off',
},
overrides: [
// node files
{
files: [
'.eslintrc.js',
'.template-lintrc.js',
'ember-cli-build.js',
'index.js',
'testem.js',
'blueprints/*/index.js',
'config/**/*.js',
'server/**/*.js',
'tests/dummy/config/**/*.js'
],
excludedFiles: [
'addon/**',
'addon-test-support/**',
'app/**',
'tests/dummy/app/**'
'./.eslintrc.js',
'./.prettierrc.js',
'./.template-lintrc.js',
'./ember-cli-build.js',
'./index.js',
'./testem.js',
'./blueprints/*/index.js',
'./config/**/*.js',
'./server/**/*.js',
'./tests/dummy/config/**/*.js',
],
parserOptions: {
sourceType: 'script'
sourceType: 'script',
},
env: {
browser: false,
node: true
node: true,
},
plugins: ['node'],
rules: Object.assign({}, require('eslint-plugin-node').configs.recommended.rules, {
'node/no-unpublished-require': 'off'
})
}
]
extends: ['plugin:node/recommended'],
rules: {
'node/no-unpublished-require': 'off',
},
},
{
// Test files:
files: ['tests/**/*-test.{js,ts}'],
extends: ['plugin:qunit/recommended'],
rules: {
'qunit/require-expect': 'off',
},
},
],
};
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
/.env*
/.pnp*
/.sass-cache
/.eslintcache
/connect.lock
/coverage/
/libpeerconnection.log
Expand Down
5 changes: 5 additions & 0 deletions .npmignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,13 @@
/.editorconfig
/.ember-cli
/.env*
/.eslintcache
/.eslintignore
/.eslintrc.js
/.git/
/.gitignore
/.prettierignore
/.prettierrc.js
/.template-lintrc.js
/.travis.yml
/.watchmanconfig
Expand All @@ -23,10 +26,12 @@
/ember-cli-build.js
/testem.js
/tests/
/yarn-error.log
/yarn.lock
.gitkeep

# ember-try
/.node_modules.ember-try/
/bower.json.ember-try
/package.json.ember-try
/config/addon-docs.js
21 changes: 21 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# unconventional js
/blueprints/*/files/
/vendor/

# compiled output
/dist/
/tmp/

# dependencies
/bower_components/
/node_modules/

# misc
/coverage/
!.*
.eslintcache

# ember-try
/.node_modules.ember-try/
/bower.json.ember-try
/package.json.ember-try
5 changes: 5 additions & 0 deletions .prettierrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
'use strict';

module.exports = {
singleQuote: true,
};
5 changes: 4 additions & 1 deletion .template-lintrc.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
'use strict';

module.exports = {
extends: 'octane'
extends: 'recommended',
rules: {
'no-inline-styles': false,
},
};
5 changes: 2 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,8 @@

## Linting

* `yarn lint:hbs`
* `yarn lint:js`
* `yarn lint:js --fix`
* `yarn lint`
* `yarn lint:fix`

## Running tests

Expand Down
6 changes: 2 additions & 4 deletions addon/-private/cache.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import { queryCacheKey, cacheKey } from './utils/get-key';
import { queryCacheKey, cacheKey } from './utils/get-key';

/*
A cache for queries.
*/
export default class Cache {

constructor() {
this.store = {};
}
Expand All @@ -21,7 +20,6 @@ export default class Cache {
}

all() {
return Object.keys(this.store).map(key => this.store[key]);
return Object.keys(this.store).map((key) => this.store[key]);
}

}
30 changes: 16 additions & 14 deletions addon/-private/coordinator.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,18 @@ import { get } from '@ember/object';

// cleans options so that the resulting object only contains
// data we want to send to the server as query params.
let _cleanParams = function(options) {
let _cleanParams = function (options) {
let clean = { ...{}, ...options };
delete clean.reload;
delete clean.backgroundReload;
return clean;
}
};

/*
I know how to retrieve queries from the cache, and also assemble queries that
are not in the cache but can be derived from them.
*/
export default class Coordinator {

constructor(store) {
this.store = store;
this.recordCache = new Cache();
Expand Down Expand Up @@ -52,9 +51,9 @@ export default class Coordinator {
}

queryFor(...args) {
return args.length === 3 ?
this.recordQueryFor(...args) :
this.recordArrayQueryFor(...args);
return args.length === 3
? this.recordQueryFor(...args)
: this.recordArrayQueryFor(...args);
}

dump() {
Expand All @@ -65,7 +64,9 @@ export default class Coordinator {
}

recordHasIncludes(type, id, includesString) {
let query = this._assembleRecordQuery(type, id, { include: includesString });
let query = this._assembleRecordQuery(type, id, {
include: includesString,
});
let nonLoadedIncludes = this._nonLoadedIncludesForQuery(query);

return nonLoadedIncludes.length === 0;
Expand Down Expand Up @@ -99,16 +100,17 @@ export default class Coordinator {
}

_nonLoadedIncludesForQuery(query) {
let loadedIncludes = get(this, `loadedIncludes.${query.type}.${query.id}`) || [];
let loadedIncludes =
get(this, `loadedIncludes.${query.type}.${query.id}`) || [];
let includesString = query.params.include || '';

return includesString
.split(',')
.filter(include => !!include)
.filter(include => {
return !loadedIncludes.find(loadedInclude => {
.filter((include) => !!include)
.filter((include) => {
return !loadedIncludes.find((loadedInclude) => {
return loadedInclude.indexOf(include) === 0;
})
});
});
}

Expand All @@ -123,13 +125,13 @@ export default class Coordinator {

_updateLoadedIncludesWithQuery(query) {
this.loadedIncludes[query.type] = this.loadedIncludes[query.type] || {};
this.loadedIncludes[query.type][query.id] = this.loadedIncludes[query.type][query.id] || [];
this.loadedIncludes[query.type][query.id] =
this.loadedIncludes[query.type][query.id] || [];

let currentIncludes = this.loadedIncludes[query.type][query.id];
let nonLoadedIncludes = this._nonLoadedIncludesForQuery(query);
let newLoadedIncludes = [...currentIncludes, ...nonLoadedIncludes];

this.loadedIncludes[query.type][query.id] = newLoadedIncludes;
}

}
16 changes: 6 additions & 10 deletions addon/-private/record-array-query.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
export default class RecordArrayQuery {

constructor(store, type, params = {}) {
this.store = store;
this.type = type;
Expand All @@ -13,14 +12,12 @@ export default class RecordArrayQuery {

if (this.value) {
promise = this.value.update();

} else {
promise = this.store.query(this.type, this.params)
.then(records => {
this.value = records;
promise = this.store.query(this.type, this.params).then((records) => {
this.value = records;

return records;
});
return records;
});
}

return promise;
Expand All @@ -30,13 +27,12 @@ export default class RecordArrayQuery {
let includes = this.params && this.params.include;
let models = this.value;

if (includes && models) {
if (includes && models) {
models
.filter(model => model.trackLoadedIncludes)
.filter((model) => model.trackLoadedIncludes)
.forEach((model) => {
model.trackLoadedIncludes(includes);
});
}
}

}
18 changes: 8 additions & 10 deletions addon/-private/record-query.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
export default class RecordQuery {

constructor(store, type, id, params = {}) {
this.store = store;
this.type = type;
Expand All @@ -8,22 +7,21 @@ export default class RecordQuery {

// if we have no params, we can use the model from
// the store if it exists, nice lil shortcut here.
this.value = Object.keys(this.params).length === 0 ?
this.store.peekRecord(type, id) :
null;
this.value =
Object.keys(this.params).length === 0
? this.store.peekRecord(type, id)
: null;
}

run() {
// if we're running a query in storefront we always want
// a blocking promise, so we force reload true.
let options = { ...{ reload: true }, ...this.params };

return this.store.findRecord(this.type, this.id, options)
.then(record => {
this.value = record;
return this.store.findRecord(this.type, this.id, options).then((record) => {
this.value = record;

return record;
});
return record;
});
}

}
Loading