Skip to content

Commit 2f6072f

Browse files
Merge pull request #1636 from NullVoxPopuli/upgrade-resources
Upgrade resources
2 parents ec19050 + 036df19 commit 2f6072f

File tree

24 files changed

+202
-170
lines changed

24 files changed

+202
-170
lines changed

.github/workflows/ci.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ jobs:
7171

7272

7373
tests_node:
74-
name: Tests
74+
name: "Node Tests"
7575
runs-on: ubuntu-latest
7676
timeout-minutes: 15
7777
needs: [install_dependencies]
@@ -85,7 +85,7 @@ jobs:
8585

8686

8787
tests:
88-
name: Ember Tests
88+
name: "Ember Tests"
8989
strategy:
9090
matrix:
9191
# os: [ubuntu-latest, macOS-latest, windows-latest]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
/* eslint-disable @typescript-eslint/ban-ts-comment */
2+
// Some packages do not provide types
3+
4+
import * as eDeepTracked from 'ember-deep-tracked';
5+
// @ts-expect-error
6+
import * as focusTrap from 'ember-focus-trap';
7+
// @ts-expect-error
8+
import * as mFocusTrap from 'ember-focus-trap/modifiers/focus-trap';
9+
import * as headlessMenu from 'ember-headlessui/components/menu';
10+
import * as eModifier from 'ember-modifier';
11+
import * as ePrimitives from 'ember-primitives';
12+
import * as emberRepl from 'ember-repl';
13+
import * as eResources from 'ember-resources';
14+
import * as reactiveDebounce from 'reactiveweb/debounce';
15+
import * as reactiveFps from 'reactiveweb/fps';
16+
import * as reactiveFunction from 'reactiveweb/function';
17+
import * as reactiveImage from 'reactiveweb/image';
18+
import * as reactiveKeepLatest from 'reactiveweb/keep-latest';
19+
import * as reactiveLink from 'reactiveweb/link';
20+
import * as reactiveMap from 'reactiveweb/map';
21+
import * as reactiveRemoteData from 'reactiveweb/remote-data';
22+
import * as reactiveModifier from 'reactiveweb/resource/modifier';
23+
import * as reactiveService from 'reactiveweb/resource/service';
24+
import * as reactiveSync from 'reactiveweb/sync';
25+
import * as reactiveThrottle from 'reactiveweb/throttle';
26+
import * as reactiveWaitUntil from 'reactiveweb/wait-until';
27+
import * as trackedBuiltIns from 'tracked-built-ins';
28+
// @ts-expect-error
29+
import * as trackedToolbox from 'tracked-toolbox';
30+
import * as xstate from 'xstate';
31+
32+
import * as limberExternalLink from 'limber/components/external-link';
33+
import * as limberHeader from 'limber/components/limber/header';
34+
import * as limberMenu from 'limber/components/limber/menu';
35+
import * as limberShadowed from 'limber/components/shadowed';
36+
37+
export const importMap = {
38+
// Own Stuff
39+
'limber/components/limber/menu': limberMenu,
40+
'limber/components/limber/header': limberHeader,
41+
'limber/components/external-link': limberExternalLink,
42+
'limber/components/shadowed': limberShadowed,
43+
44+
// Libraries
45+
'ember-repl': emberRepl,
46+
xstate: xstate,
47+
'ember-modifier': eModifier,
48+
'tracked-built-ins': trackedBuiltIns,
49+
'ember-headlessui/components/menu': headlessMenu,
50+
'ember-focus-trap': focusTrap,
51+
'ember-focus-trap/modifiers/focus-trap': mFocusTrap,
52+
'ember-primitives': ePrimitives,
53+
'tracked-toolbox': trackedToolbox,
54+
'ember-deep-tracked': eDeepTracked,
55+
'ember-resources': eResources,
56+
57+
// Reactiveweb *only* has path imports
58+
'reactiveweb/debounce': reactiveDebounce,
59+
'reactiveweb/ember-concurrency': reactiveDebounce,
60+
'reactiveweb/fps': reactiveFps,
61+
'reactiveweb/function': reactiveFunction,
62+
'reactiveweb/image': reactiveImage,
63+
'reactiveweb/keep-latest': reactiveKeepLatest,
64+
'reactiveweb/link': reactiveLink,
65+
'reactiveweb/map': reactiveMap,
66+
'reactiveweb/remote-data': reactiveRemoteData,
67+
'reactiveweb/modifier': reactiveModifier,
68+
'reactiveweb/service': reactiveService,
69+
'reactiveweb/sync': reactiveSync,
70+
'reactiveweb/throttle': reactiveThrottle,
71+
'reactiveweb/wait-until': reactiveWaitUntil,
72+
73+
// These paths are for backcompat
74+
// Since code is maintained in URLs,
75+
// we can't upgrade any of it.
76+
//
77+
// We could probably log a deprecation message on these paths
78+
'ember-resources/core': eResources,
79+
'ember-resources/link': reactiveLink,
80+
'ember-resources/service': reactiveService,
81+
'ember-resources/modifier': reactiveModifier,
82+
'ember-resources/util/map': reactiveMap,
83+
'ember-resources/util/debounce': reactiveDebounce,
84+
'ember-resources/util/keep-latest': reactiveKeepLatest,
85+
'ember-resources/util/function': reactiveFunction,
86+
'ember-resources/util/fps': reactiveFps,
87+
'ember-resources/util/remote-data': reactiveRemoteData,
88+
};

apps/repl/app/components/limber/output/compiler/index.gts

+3-5
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,7 @@ export default class Compiler extends Component<Signature> {
6969
@action
7070
@waitFor
7171
async makeComponent(format: Format, text: string) {
72-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
73-
// @ts-expect-error
74-
let { COMPONENT_MAP } = await import('/ember-repl/component-map.js');
72+
let { importMap } = await import('./import-map');
7573

7674
let onSuccess = async (component: ComponentLike) => {
7775
if (!component) {
@@ -103,7 +101,7 @@ export default class Compiler extends Component<Signature> {
103101
topLevelScope: {
104102
CopyMenu: CopyMenu,
105103
},
106-
importMap: COMPONENT_MAP,
104+
importMap,
107105
onCompileStart: this.onCompileStart,
108106
onSuccess,
109107
onError: this.onError,
@@ -112,7 +110,7 @@ export default class Compiler extends Component<Signature> {
112110
case 'gjs':
113111
return await compile(text, {
114112
format: format,
115-
importMap: COMPONENT_MAP,
113+
importMap,
116114
onCompileStart: this.onCompileStart,
117115
onSuccess,
118116
onError: this.onError,

apps/repl/app/components/shadowed.gts

+10-7
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import { modifier } from 'ember-modifier';
2-
3-
import State from 'limber/helpers/state';
2+
import { cell } from 'ember-resources';
43

54
import type { TOC } from '@ember/component/template-only';
65

7-
const attachShadow = modifier((element: Element, [setShadow]: [State['update']]) => {
6+
type SetShadow = ReturnType<typeof cell<ShadowRoot>>['set'];
7+
8+
const attachShadow = modifier((element: Element, [setShadow]: [SetShadow]) => {
89
setShadow(element.attachShadow({ mode: 'open' }));
910
});
1011

@@ -13,19 +14,21 @@ const attachShadow = modifier((element: Element, [setShadow]: [State['update']])
1314
// assets in public, but idk how to set that up
1415
const getStyles = () => [...document.head.querySelectorAll('link')].map((link) => link.href);
1516

17+
const shadowRoot = () => cell<ShadowRoot>();
18+
1619
export const Shadowed: TOC<{
1720
Element: HTMLDivElement;
1821
Args: {
1922
omitStyles?: boolean;
2023
};
2124
Blocks: { default: [] };
2225
}> = <template>
23-
{{#let (State) as |shadow|}}
26+
{{#let (shadowRoot) as |shadow|}}
2427
{{! @glint-ignore }}
25-
<div data-shadow {{attachShadow shadow.update}} ...attributes></div>
28+
<div data-shadow {{attachShadow shadow.set}} ...attributes></div>
2629

27-
{{#if shadow.value}}
28-
{{#in-element shadow.value}}
30+
{{#if shadow.current}}
31+
{{#in-element shadow.current}}
2932
{{#unless @omitStyles}}
3033
{{#let (getStyles) as |styles|}}
3134
{{#each styles as |styleHref|}}

apps/repl/app/helpers/state.ts

-26
This file was deleted.

apps/repl/app/services/editor.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { tracked } from '@glimmer/tracking';
22
import { action } from '@ember/object';
33
import Service, { inject as service } from '@ember/service';
44

5-
import { link } from 'ember-resources/link';
5+
import { link } from 'reactiveweb/link';
66

77
import { FileURIComponent } from 'limber/utils/editor-text';
88

apps/repl/ember-cli-build.js

-28
Original file line numberDiff line numberDiff line change
@@ -52,34 +52,6 @@ module.exports = async function (defaults) {
5252
require('@nullvoxpopuli/limber-codemirror/broccoli-funnel')(),
5353
// Tailwind
5454
require('@nullvoxpopuli/limber-styles/broccoli-funnel')(),
55-
// COMPONENT_MAP,
56-
require('ember-repl/ember-cli').buildComponentMap([
57-
'limber/components/limber/menu',
58-
'limber/components/limber/header',
59-
'limber/components/external-link',
60-
'limber/components/shadowed',
61-
'limber/helpers/state',
62-
'ember-repl',
63-
'xstate',
64-
'ember-modifier',
65-
'tracked-built-ins',
66-
'ember-headlessui/components/menu',
67-
'ember-focus-trap/modifiers/focus-trap',
68-
'ember-primitives',
69-
'tracked-toolbox',
70-
'ember-deep-tracked',
71-
'ember-resources',
72-
'ember-resources/core',
73-
'ember-resources/link',
74-
'ember-resources/service',
75-
'ember-resources/modifier',
76-
'ember-resources/util/map',
77-
'ember-resources/util/debounce',
78-
'ember-resources/util/keep-latest',
79-
'ember-resources/util/function',
80-
'ember-resources/util/fps',
81-
'ember-resources/util/remote-data',
82-
]),
8355
],
8456
skipBabel: [
8557
{

apps/repl/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@
162162
"ember-modifier": "^4.1.0",
163163
"ember-primitives": "^0.11.1",
164164
"ember-repl": "workspace:*",
165-
"ember-resources": "^6.4.2",
165+
"ember-resources": "^7.0.0",
166166
"ember-statechart-component": "6.1.2",
167167
"highlight.js": "^11.9.0",
168168
"highlightjs-glimmer": "^2.2.1",
@@ -172,6 +172,7 @@
172172
"lz-string": "^1.5.0",
173173
"path-browserify": "^1.0.1",
174174
"penpal": "^6.2.2",
175+
"reactiveweb": "^1.2.0",
175176
"rehype-raw": "^6.1.1",
176177
"rehype-stringify": "^9.0.4",
177178
"remark-html": "16.0.1",

apps/repl/public/samples/remote-data.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import Component from '@glimmer/component';
1313
import { tracked } from '@glimmer/tracking';
1414
import { on } from '@ember/modifier';
1515
16-
import { RemoteData } from 'ember-resources/util/remote-data';
16+
import { RemoteData } from 'reactiveweb/remote-data';
1717
1818
const urlFor = (id) => `https://swapi.dev/api/people/${id}`;
1919

apps/repl/tests/rendered-snippets-test.gts

+2-4
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,11 @@ module('Rendered Snippets / Demos', function (hooks) {
2222
let component: ComponentLike | undefined;
2323
let error: string | undefined;
2424

25-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
26-
// @ts-expect-error
27-
let { COMPONENT_MAP } = await import('/ember-repl/component-map.js');
25+
let { importMap } = await import('limber/components/limber/output/compiler/import-map');
2826

2927
await compileAnything(text, {
3028
format: 'glimdown',
31-
importMap: COMPONENT_MAP,
29+
importMap,
3230
onCompileStart: async () => assert.step('start compile'),
3331
onSuccess: async (compiled) => {
3432
component = compiled;

apps/tutorial/app/services/docs.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { cached, tracked } from '@glimmer/tracking';
22
import Service, { service } from '@ember/service';
33

44
import { use } from 'ember-resources';
5-
import { RemoteData } from 'ember-resources/util/remote-data';
5+
import { RemoteData } from 'reactiveweb/remote-data';
66

77
import type Selected from './selected';
88
import type { Manifest } from './types';

apps/tutorial/app/services/selected.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import Service, { service } from '@ember/service';
22

33
import { use } from 'ember-resources';
4-
import { link } from 'ember-resources/link';
5-
import { keepLatest } from 'ember-resources/util/keep-latest';
6-
import { RemoteData } from 'ember-resources/util/remote-data';
4+
import { keepLatest } from 'reactiveweb/keep-latest';
5+
import { link } from 'reactiveweb/link';
6+
import { RemoteData } from 'reactiveweb/remote-data';
77

88
import { MarkdownToHTML } from './markdown';
99

apps/tutorial/package.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,12 @@
3131
"ember-async-data": "1.0.3",
3232
"ember-modifier": "^4.1.0",
3333
"ember-primitives": "^0.11.1",
34-
"ember-resources": "^6.4.2",
34+
"ember-resources": "^7.0.0",
3535
"highlight.js": "^11.9.0",
3636
"highlightjs-glimmer": "^2.2.1",
3737
"kolay": "^0.0.3",
3838
"limber-ui": "workspace:*",
39+
"reactiveweb": "^1.2.0",
3940
"rehype-raw": "^6.1.1",
4041
"rehype-stringify": "^9.0.4",
4142
"remark-parse": "^10.0.2",
@@ -121,4 +122,4 @@
121122
"volta": {
122123
"extends": "../../package.json"
123124
}
124-
}
125+
}

apps/tutorial/public/docs/11-requesting-data/1-using-remote-data/answer.gjs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import Component from '@glimmer/component';
22
import { tracked } from '@glimmer/tracking';
33
import { on } from '@ember/modifier';
44

5-
import { RemoteData } from 'ember-resources/util/remote-data';
5+
import { RemoteData } from 'reactiveweb/remote-data';
66

77
const urlFor = (id) => `https://swapi.dev/api/people/${id}`;
88

apps/tutorial/public/docs/11-requesting-data/1-using-remote-data/prompt.gjs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import Component from '@glimmer/component';
22
import { tracked } from '@glimmer/tracking';
33
import { on } from '@ember/modifier';
44

5-
import { RemoteData } from 'ember-resources/util/remote-data';
5+
import { RemoteData } from 'reactiveweb/remote-data';
66

77
const urlFor = (id) => `https://swapi.dev/api/people/${id}`;
88

apps/tutorial/public/docs/12-loading-patterns/1-keeping-latest/answer.gjs

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import { tracked } from '@glimmer/tracking';
33
import { on } from '@ember/modifier';
44

55
import { use, resource } from 'ember-resources';
6-
import { RemoteData, remoteData } from 'ember-resources/util/remote-data';
7-
import { keepLatest } from 'ember-resources/util/keep-latest';
6+
import { RemoteData, remoteData } from 'reactiveweb/remote-data';
7+
import { keepLatest } from 'reactiveweb/keep-latest';
88

99
const isEmpty = (x) => !x || x?.length === 0;
1010
const urlFor = (id) => `https://swapi.dev/api/people/${id}`;
@@ -58,8 +58,8 @@ export default class Demo extends Component {
5858
{{/if}}
5959
</div>
6060
<style>
61-
#demo {
62-
position: relative; max-width: 30rem;
61+
#demo {
62+
position: relative; max-width: 30rem;
6363
border: 1px solid;
6464
padding: 1rem;
6565
}

apps/tutorial/public/docs/12-loading-patterns/1-keeping-latest/prompt.gjs

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import { tracked } from '@glimmer/tracking';
33
import { on } from '@ember/modifier';
44

55
import { use, resource } from 'ember-resources';
6-
import { RemoteData, remoteData } from 'ember-resources/util/remote-data';
7-
import { keepLatest } from 'ember-resources/util/keep-latest';
6+
import { RemoteData, remoteData } from 'reactiveweb/remote-data';
7+
import { keepLatest } from 'reactiveweb/keep-latest';
88

99
const isEmpty = (x) => !x || x?.length === 0;
1010
const urlFor = (id) => `https://swapi.dev/api/people/${id}`;
@@ -60,8 +60,8 @@ export default class Demo extends Component {
6060
{{/if}}
6161
</div>
6262
<style>
63-
#demo {
64-
position: relative; max-width: 30rem;
63+
#demo {
64+
position: relative; max-width: 30rem;
6565
border: 1px solid;
6666
padding: 1rem;
6767
}

0 commit comments

Comments
 (0)