Skip to content

Commit 9036613

Browse files
authored
Merge pull request #815 from ember-learn/prember
Use prember
2 parents 65735b1 + ab36313 commit 9036613

File tree

17 files changed

+1218
-734
lines changed

17 files changed

+1218
-734
lines changed

.eslintignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,6 @@
2020
/.node_modules.ember-try/
2121
/bower.json.ember-try
2222
/package.json.ember-try
23+
24+
# data git checkout
25+
/ember-api-docs-data/

.github/workflows/ci.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ jobs:
5757
- name: Install dependencies
5858
run: npm ci
5959

60+
- run: npm run clone
61+
6062
- name: Test
6163
env:
6264
PERCY_PARALLEL_NONCE: ${{ env.PERCY_PARALLEL_NONCE }}

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,6 @@ local.log
4040
/.node_modules.ember-try/
4141
/bower.json.ember-try
4242
/package.json.ember-try
43+
44+
/ember-api-docs-data/
45+
/ember-api-docs-data

app/adapters/application.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
import { inject as service } from '@ember/service';
22
import JSONAPIAdapter from '@ember-data/adapter/json-api';
33
import fetch from 'fetch';
4-
import ENV from 'ember-api-docs/config/environment';
54
import { pluralize } from 'ember-inflector';
65
import { isBlank } from '@ember/utils';
76

87
export default class Application extends JSONAPIAdapter {
9-
host = ENV.API_HOST;
108
currentProject = '';
119
currentProjectVersion = '';
1210

@@ -47,7 +45,7 @@ export default class Application extends JSONAPIAdapter {
4745

4846
async findRecord(store, { modelName }, id) {
4947
let url;
50-
let host = this.host;
48+
// let host = this.host;
5149
let projectName = this.currentProject;
5250

5351
if (['namespace', 'class', 'module'].indexOf(modelName) > -1) {
@@ -85,7 +83,7 @@ export default class Application extends JSONAPIAdapter {
8583
throw new Error('Unexpected model lookup');
8684
}
8785

88-
url = `${host}/${url}.json`;
86+
url = `/${url}.json`;
8987

9088
let response = await fetch(url);
9189
let json = await response.json();

app/router.js

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ class AppRouter extends EmberRouter {
3434
}
3535

3636
AppRouter.map(function () {
37-
this.route('404');
3837
this.route('ember-cli');
3938
this.route('project', { path: '/:project' });
4039

@@ -92,4 +91,39 @@ AppRouter.map(function () {
9291
this.route('data-module', { path: '/data/modules/:module' });
9392
});
9493

94+
/*
95+
404
96+
ember-cli
97+
project
98+
99+
/:project/:project_version
100+
/classes/:class
101+
/methods, /properties, /events
102+
/functions/:module (no sub routes)
103+
/namespaces/:namespace
104+
/methods, /properties, /events
105+
/modules/:module
106+
/methods, /properties, /events
107+
108+
SUB ROUTES
109+
110+
Instead of https://api.emberjs.com/ember/4.6/classes/Engine/methods/unregister?anchor=unregister
111+
We can do https://api.emberjs.com/ember/4.6/classes/Engine/methods?anchor=unregister
112+
113+
/methods/:method
114+
/properties/:property
115+
/events/:event
116+
117+
OTHER STATES
118+
private, deprecated, inherited, protected
119+
inherited is not reflected in URL state but it's checked by default
120+
121+
MAYBE REDIRECTS
122+
123+
/data/modules/:module
124+
/data/classes/:class
125+
/modules/:module
126+
/classes/:class
127+
*/
128+
95129
export default AppRouter;

app/routes/project-version/classes/class.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,13 @@ export default class ClassRoute extends Route.extend(ScrollTracker) {
8181
}
8282

8383
if (model.isError) {
84-
this.router.transitionTo('404');
84+
let error = new Error(
85+
'Error retrieving model in routes/project-version/classes/class'
86+
);
87+
88+
error.status = 404;
89+
90+
throw error;
8591
}
8692
}
8793

app/serializers/application.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,18 @@ export default class Application extends JSONAPISerializer {
55
@service
66
metaStore;
77

8+
extractId(_, hash) {
9+
return hash.id.toLowerCase();
10+
}
11+
12+
extractRelationship(relationship) {
13+
// for some reason we only need to update the id to lowercase when it's an object relationship and not an array 🤷
14+
if (relationship?.data?.id) {
15+
relationship.data.id = relationship.data.id.toLowerCase();
16+
}
17+
return super.extractRelationship(relationship);
18+
}
19+
820
normalizeFindRecordResponse(store, primaryModelClass, payload, id) {
921
let normalizedDocument = super.normalizeFindRecordResponse(...arguments);
1022

app/services/meta-store.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,14 @@ export default class MetaStoreService extends Service {
2222
}
2323

2424
getRevId(project, version, type, id) {
25-
let encodedId = encodeURIComponent(id);
26-
return this.projectRevMap[`${project}-${version}`][type][encodedId];
25+
let encodedId = id;
26+
let revType = this.projectRevMap[`${project}-${version}`][type];
27+
28+
let matchingKey = Object.keys(revType).find(
29+
(key) => key.toLowerCase() === encodedId.toLowerCase()
30+
);
31+
32+
return this.projectRevMap[`${project}-${version}`][type][matchingKey];
2733
}
2834

2935
getEncodedModulesFromProjectRev(id) {

app/templates/404.hbs

Lines changed: 0 additions & 10 deletions
This file was deleted.

ember-cli-build.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,13 @@ const EmberApp = require('ember-cli/lib/broccoli/ember-app');
44
const Funnel = require('broccoli-funnel');
55
const mergeTrees = require('broccoli-merge-trees');
66
const envIsProduction = process.env.EMBER_ENV === 'production';
7+
const premberUrls = require('./prember-urls');
78

89
module.exports = function (defaults) {
910
let app = new EmberApp(defaults, {
11+
prember: {
12+
urls: premberUrls(),
13+
},
1014
fingerprint: {
1115
extensions: [
1216
'js',
@@ -63,5 +67,6 @@ module.exports = function (defaults) {
6367
include: ['mappings.json'],
6468
destDir: '/assets/',
6569
});
70+
6671
return mergeTrees([app.toTree(), mappingsTree]);
6772
};

lib/api-docs-data/index.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
'use strict';
2+
3+
const Funnel = require('broccoli-funnel');
4+
5+
module.exports = {
6+
name: require('./package').name,
7+
8+
isDevelopingAddon() {
9+
return true;
10+
},
11+
12+
treeForPublic() {
13+
return new Funnel('ember-api-docs-data', {
14+
include: ['**/json-docs/**', '**/rev-index/**'],
15+
});
16+
},
17+
};

lib/api-docs-data/package.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"name": "api-docs-data",
3+
"keywords": [
4+
"ember-addon"
5+
],
6+
"peerDependencies": {
7+
"broccoli-funnel": "*"
8+
}
9+
}

0 commit comments

Comments
 (0)