@operato/board 10.28.2 → 10.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,23 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [10.29.0](https://github.com/hatiolab/operato/compare/v10.28.3...v10.29.0) (2026-09-26)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @operato/board
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### [10.28.3](https://github.com/hatiolab/operato/compare/v10.28.2...v10.28.3) (2026-09-26)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### :mega: Other
|
|
18
|
+
|
|
19
|
+
* **board:** depend on things-scene 10.1.56 — portal-profile@2 door frames ([5c1ae14](https://github.com/hatiolab/operato/commit/5c1ae14f520c445b4831d1a986784cea164d447b))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
6
23
|
### [10.28.2](https://github.com/hatiolab/operato/compare/v10.28.1...v10.28.2) (2026-09-25)
|
|
7
24
|
|
|
8
25
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { expect, fixture, html } from '@open-wc/testing';
|
|
2
2
|
import { executeServerCommand } from '@web/test-runner-commands';
|
|
3
|
-
import { registerTypeResolver,
|
|
3
|
+
import { registerTypeResolver, resetFiguresV3 } from '@hatiolab/things-scene';
|
|
4
4
|
import { createResolvedScene } from '../src/resolved-scene.js';
|
|
5
5
|
import '../src/ox-board-preview.js';
|
|
6
6
|
/**
|
|
@@ -40,7 +40,7 @@ describe('모르는 type 이 없으면 아무에게도 묻지 않는다', () =>
|
|
|
40
40
|
});
|
|
41
41
|
afterEach(() => {
|
|
42
42
|
takeBack();
|
|
43
|
-
|
|
43
|
+
resetFiguresV3();
|
|
44
44
|
});
|
|
45
45
|
it('씬의 기본 type 만 있는 보드는 공급자를 부르지 않는다', async () => {
|
|
46
46
|
var _a;
|
|
@@ -60,7 +60,7 @@ describe('기다리는 동안 화면이 바뀌면 늦게 온 씬은 들어서지
|
|
|
60
60
|
let takeBack;
|
|
61
61
|
afterEach(() => {
|
|
62
62
|
takeBack === null || takeBack === void 0 ? void 0 : takeBack();
|
|
63
|
-
|
|
63
|
+
resetFiguresV3();
|
|
64
64
|
});
|
|
65
65
|
it('앞의 모델을 풀고 돌아왔을 때 미리보기가 다른 모델을 들고 있으면 그 씬은 버린다', async () => {
|
|
66
66
|
/* The first model's type resolves slowly; the second one has nothing to resolve. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolved-scene.test.js","sourceRoot":"","sources":["../../test/resolved-scene.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAEhE,OAAO,EAAE,oBAAoB,EAAE,
|
|
1
|
+
{"version":3,"file":"resolved-scene.test.js","sourceRoot":"","sources":["../../test/resolved-scene.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture, html } from '@open-wc/testing'\nimport type { LitElement } from 'lit'\nimport { executeServerCommand } from '@web/test-runner-commands'\n\nimport { registerTypeResolver, resetFiguresV3 } from '@hatiolab/things-scene'\n\nimport { createResolvedScene } from '../src/resolved-scene.js'\nimport '../src/ox-board-preview.js'\n\n/**\n * The one door a model goes through to become a scene (ADR-0063 결정 2).\n *\n * Three things are counted here, and each of them is something that goes wrong quietly otherwise:\n * a scene built somewhere else never resolves its types, a board of ordinary components pays for a\n * server round trip it does not need, and a scene that was waiting lands on a viewer that has\n * already moved on.\n */\n\nconst KNOWN_MODEL = {\n type: 'container',\n components: [{ type: 'rect', left: 0, top: 0, width: 100, height: 100 }]\n}\n\nconst modelWith = (types: string[]) => ({\n type: 'container',\n components: types.map((type, index) => ({ type, left: index * 10, top: 0, width: 100, height: 100 }))\n})\n\ndescribe('씬을 만드는 문은 하나다', () => {\n it('things-scene 의 create 를 읽는 파일은 resolved-scene.ts 하나뿐이다', async () => {\n /*\n * 세는 범위는 이 꾸러미와 `@operato/process` 다 — 문은 여기 있고 그 꾸러미가 둘째 소비자다.\n * 이 꾸러미만 보던 규칙은 옆에 씬 둘이 서 있는 동안 「문은 하나」라고 답하고 있었다.\n */\n const files = await executeServerCommand<unknown, string[]>('files-importing-scene-create')\n\n expect(files).to.deep.equal(['src/resolved-scene.ts'])\n })\n})\n\ndescribe('모르는 type 이 없으면 아무에게도 묻지 않는다', () => {\n let asked: string[][]\n let takeBack: () => void\n\n beforeEach(() => {\n asked = []\n takeBack = registerTypeResolver(async types => {\n asked.push([...types])\n })\n })\n\n afterEach(() => {\n takeBack()\n resetFiguresV3()\n })\n\n it('씬의 기본 type 만 있는 보드는 공급자를 부르지 않는다', async () => {\n const scene = await createResolvedScene({ model: KNOWN_MODEL })\n\n expect(asked).to.deep.equal([])\n expect(scene).to.not.equal(null)\n\n scene?.release?.()\n })\n\n it('모르는 type 이 있을 때만 부른다', async () => {\n const scene = await createResolvedScene({ model: modelWith(['rect', 'EQ_ASKED_ABOUT']) })\n\n expect(asked).to.deep.equal([['EQ_ASKED_ABOUT']])\n\n scene?.release?.()\n })\n})\n\ndescribe('기다리는 동안 화면이 바뀌면 늦게 온 씬은 들어서지 않는다', () => {\n let takeBack: () => void\n\n afterEach(() => {\n takeBack?.()\n resetFiguresV3()\n })\n\n it('앞의 모델을 풀고 돌아왔을 때 미리보기가 다른 모델을 들고 있으면 그 씬은 버린다', async () => {\n /* The first model's type resolves slowly; the second one has nothing to resolve. */\n let releaseFirst: () => void = () => {}\n const firstResolved = new Promise<void>(resolve => {\n releaseFirst = resolve\n })\n\n takeBack = registerTypeResolver(async types => {\n if (types.includes('EQ_SLOW')) {\n await firstResolved\n }\n })\n\n const element = (await fixture(html`<ox-board-preview></ox-board-preview>`)) as LitElement & {\n boardModel: unknown\n _scene: { root: { components: unknown[] } } | null\n }\n\n element.boardModel = modelWith(['EQ_SLOW'])\n await element.updateComplete\n\n /* The second model arrives while the first one is still waiting on its type. */\n element.boardModel = modelWith(['rect', 'rect'])\n await element.updateComplete\n\n releaseFirst()\n await new Promise(resolve => setTimeout(resolve, 0))\n\n expect(element._scene).to.not.equal(null)\n expect(element._scene!.root.components.length).to.equal(2)\n })\n})\n"]}
|