MCPcopy Create free account
hub / github.com/ember-learn/ember-api-docs / MetaStoreService

Class MetaStoreService

app/services/meta-store.js:8–57  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6import { tracked } from '@glimmer/tracking';
7
8export default class MetaStoreService extends Service {
9 @tracked availableProjectVersions = {
10 ember: A(),
11 'ember-data': A(),
12 };
13 @tracked projectRevMap = {};
14
15 addToProjectRevMap(projectVersionKey, projectRevDoc) {
16 let projectRevMap = this.projectRevMap;
17 if (!isPresent(projectRevMap[projectVersionKey])) {
18 projectRevMap[projectVersionKey] = projectRevDoc;
19 this.projectRevMap = projectRevMap;
20 }
21 }
22
23 getRevId(project, version, type, id) {
24 let encodedId = id;
25 let revType = this.projectRevMap[`${project}-${version}`][type];
26
27 let matchingKey = Object.keys(revType).find(
28 (key) => key.toLowerCase() === encodedId.toLowerCase(),
29 );
30
31 return this.projectRevMap[`${project}-${version}`][type][matchingKey];
32 }
33
34 getEncodedModulesFromProjectRev(id) {
35 return Object.keys(this.projectRevMap[id].module).sort();
36 }
37
38 initializeStore(availableProjectVersions, projectRevMap) {
39 this.availableProjectVersions = {
40 ember: A(availableProjectVersions['ember']),
41 'ember-data': A(availableProjectVersions['ember-data']),
42 };
43 this.projectRevMap = projectRevMap;
44 }
45
46 getFullVersion(projectName, compactProjVersion) {
47 const availProjVersions = this.availableProjectVersions[projectName];
48 let filtered = availProjVersions.filter(
49 (v) => getCompactVersion(v) === getCompactVersion(compactProjVersion),
50 );
51 if (filtered.length === 0) {
52 return;
53 }
54 // since there can be multiple full versions that match the compact version, use the most recent one.
55 return getLastVersion(filtered);
56 }
57}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected