@kubohiroya/turbowarp-extension-data-editor 0.1.0 → 0.2.1

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.
Files changed (123) hide show
  1. package/README.md +30 -6
  2. package/dist/build-info.json +7 -2
  3. package/dist/descendants.js +11 -2
  4. package/dist/fixed-input-branches.d.ts +12 -0
  5. package/dist/fixed-input-branches.js +180 -0
  6. package/dist/fixed-input-editor.d.ts +39 -0
  7. package/dist/fixed-input-editor.js +538 -0
  8. package/dist/fixed-input-schema.d.ts +15 -0
  9. package/dist/fixed-input-schema.js +21 -0
  10. package/dist/fixed-input-snapshot.d.ts +7 -0
  11. package/dist/fixed-input-snapshot.js +180 -0
  12. package/dist/fixed-input-types.d.ts +138 -0
  13. package/dist/fixed-input-types.js +23 -0
  14. package/dist/fixed-input-view.d.ts +14 -0
  15. package/dist/fixed-input-view.js +168 -0
  16. package/dist/index.d.ts +7 -0
  17. package/dist/index.js +4 -0
  18. package/dist/json-value.d.ts +4 -0
  19. package/dist/json-value.js +12 -0
  20. package/dist/prepared-save.d.ts +5 -0
  21. package/dist/prepared-save.js +47 -0
  22. package/dist/prepared-types.d.ts +13 -0
  23. package/dist/prepared-types.js +1 -0
  24. package/dist/react.css +42 -0
  25. package/dist/react.d.ts +3 -0
  26. package/dist/react.js +10 -1
  27. package/dist/registry.d.ts +6 -0
  28. package/dist/registry.js +98 -48
  29. package/dist/rjsf.d.ts +48 -1
  30. package/dist/rjsf.js +92 -8
  31. package/dist/schema-compose.d.ts +6 -0
  32. package/dist/schema-compose.js +103 -0
  33. package/dist/schema-engine.d.ts +18 -0
  34. package/dist/schema-engine.js +298 -0
  35. package/dist/schema-json.d.ts +10 -0
  36. package/dist/schema-json.js +68 -0
  37. package/dist/schema-types.d.ts +161 -0
  38. package/dist/schema-types.js +2 -0
  39. package/dist/schema-view.d.ts +7 -0
  40. package/dist/schema-view.js +102 -0
  41. package/dist/schema.d.ts +10 -0
  42. package/dist/schema.js +87 -0
  43. package/dist/session.d.ts +3 -1
  44. package/dist/session.js +220 -9
  45. package/dist/source-document.d.ts +3 -0
  46. package/dist/source-document.js +415 -0
  47. package/dist/source-editor.d.ts +13 -0
  48. package/dist/source-editor.js +235 -0
  49. package/dist/source-schema-hints.d.ts +3 -0
  50. package/dist/source-schema-hints.js +13 -0
  51. package/dist/source-types.d.ts +47 -0
  52. package/dist/source-types.js +1 -0
  53. package/dist/source-view.d.ts +3 -0
  54. package/dist/source-view.js +318 -0
  55. package/dist/turbowarp/bridge.d.ts +2 -1
  56. package/dist/turbowarp/bridge.js +34 -5
  57. package/dist/turbowarp/fixed-fields.d.ts +82 -0
  58. package/dist/turbowarp/fixed-fields.js +311 -0
  59. package/dist/turbowarp/fixed-transaction.d.ts +18 -0
  60. package/dist/turbowarp/fixed-transaction.js +460 -0
  61. package/dist/turbowarp/host.d.ts +3 -8
  62. package/dist/turbowarp/host.js +68 -1
  63. package/dist/turbowarp.d.ts +4 -0
  64. package/dist/turbowarp.js +1 -1
  65. package/dist/types.d.ts +7 -4
  66. package/dist/view.js +4 -0
  67. package/dist/webpack4/index.js +24 -5
  68. package/dist/webpack4/metafile.json +9886 -8710
  69. package/dist/webpack4/react.js +11 -2
  70. package/dist/webpack4/react.js.map +2 -2
  71. package/dist/webpack4/rjsf.js +15205 -20951
  72. package/dist/webpack4/rjsf.js.map +4 -4
  73. package/dist/webpack4/schema.js +20 -0
  74. package/dist/webpack4/shared-75QIWLZY.js +8375 -0
  75. package/dist/webpack4/shared-75QIWLZY.js.map +7 -0
  76. package/dist/webpack4/shared-BKTRZUZH.js +42 -0
  77. package/dist/webpack4/{shared-KIFRVTSM.js.map → shared-BKTRZUZH.js.map} +1 -1
  78. package/dist/webpack4/shared-FYUILHED.js +1 -0
  79. package/dist/webpack4/shared-FYUILHED.js.map +7 -0
  80. package/dist/webpack4/shared-GQLPPRT2.js +210 -0
  81. package/dist/webpack4/shared-GQLPPRT2.js.map +7 -0
  82. package/dist/webpack4/shared-P2JBRZFP.js +2206 -0
  83. package/dist/webpack4/shared-P2JBRZFP.js.map +7 -0
  84. package/dist/webpack4/{shared-KIFRVTSM.js → shared-RN7GOT65.js} +2 -41
  85. package/dist/webpack4/shared-RN7GOT65.js.map +7 -0
  86. package/dist/webpack4/turbowarp.js +912 -9
  87. package/dist/webpack4/turbowarp.js.map +4 -4
  88. package/docs/README.md +1 -0
  89. package/docs/block-editor-e2e.md +98 -16
  90. package/docs/ci-success-gate.md +84 -0
  91. package/docs/editor/issue-12-public-validation/README.md +61 -0
  92. package/docs/editor/issue-12-public-validation/dark-invalid.png +0 -0
  93. package/docs/editor/issue-12-public-validation/dark-styles.json +173 -0
  94. package/docs/editor/issue-12-public-validation/dark-valid.png +0 -0
  95. package/docs/editor/issue-12-public-validation/deployment-target.json +5 -0
  96. package/docs/editor/issue-12-public-validation/deployment-wait.json +7 -0
  97. package/docs/editor/issue-12-public-validation/light-invalid.png +0 -0
  98. package/docs/editor/issue-12-public-validation/light-styles.json +173 -0
  99. package/docs/editor/issue-12-public-validation/light-valid.png +0 -0
  100. package/docs/editor/issue-12-public-validation/provenance.json +88 -0
  101. package/docs/editor/issue-12-public-validation/results.json +677 -0
  102. package/docs/editor/issue-12-public-validation/summary.json +206 -0
  103. package/docs/fixed-input-contracts.md +77 -0
  104. package/docs/github-pages.md +48 -41
  105. package/docs/package-distribution.md +2 -2
  106. package/docs/schema-stage1-browser.json +10 -0
  107. package/docs/schema-stage1-contracts.json +242 -0
  108. package/docs/schema-stage1-dependencies.json +202 -0
  109. package/docs/schema-stage1-git-artifact-20261018.ja.md +17 -0
  110. package/docs/schema-stage1-profile-compat.json +30 -0
  111. package/docs/schema-stage1-review-fixes-20261018.ja.md +36 -0
  112. package/docs/schema-stage1-verification.json +541 -0
  113. package/docs/schema-stage1.ja.md +80 -0
  114. package/docs/schema.md +43 -0
  115. package/docs/source-forms.ja.md +19 -0
  116. package/docs/stage-2-publication.ja.md +35 -0
  117. package/docs/template-fixture-separation.ja.md +43 -0
  118. package/package.json +18 -3
  119. package/webpack4.cjs +1 -1
  120. package/dist/webpack4/shared-CQB3NG2A.js +0 -1
  121. package/dist/webpack4/shared-WHOAW2VF.js +0 -957
  122. package/dist/webpack4/shared-WHOAW2VF.js.map +0 -7
  123. /package/dist/webpack4/{shared-CQB3NG2A.js.map → schema.js.map} +0 -0
package/docs/schema.md ADDED
@@ -0,0 +1,43 @@
1
+ # 固定Schemaのpure検証API
2
+
3
+ `@kubohiroya/turbowarp-extension-data-editor/schema`はDOM・React・RJSFをimportせず、同梱resourceだけで同期検証する。既存の登録API・GUIフラグ・保存データは変更しない。
4
+
5
+ `compileSchemaBundle(bundle)`は`compiled`、`schema-error`、`execution-error`を区別する。成功した`validator.validate(data, {consumerId})`は`valid`、`invalid`、`execution-error`を返す。入力診断は`toValidationIssues()`で従来の表示用型へ変換できる。
6
+
7
+ bundleは`identity`・`dialect`・`root`・`resources`・`provenance`を持つ。方言は`draft-07`または`2020-12`を必ず指定する。各resourceの`retrievalUri`はfragmentなしの絶対URI。HTTP形式でもネットワークへアクセスせず、URNも使える。`$id`・相対/絶対ref・再帰refをローカルで解決し、実効IDが異なる場所と衝突するbundleは拒否する。bundleごとのAjv instanceで同じIDの異版を隔離する。
8
+
9
+ artifactの`canonical-schema`は`canonicalSources`、`generated-schema`は`generatedFiles`と`generatedFrom`へ対応させる。参照用Schemaと生成処理はcompile入力にしない。正本・生成物・参照用・生成処理の同一repository/path/symbolを重複分類しない。metadataにあるファイル・URLを探索して読み込む機能はない。
10
+
11
+ Schemaと入力を専用snapshotへコピーして検証する。coercion・default補完・追加property削除を行わず、frozen入力も扱う。privateなSchema snapshot内でURI/方言の同義識別子を正規化するが、所有側のSchema・rawデータ・正本や生成物を書き換えない。JSONの有限数・文字列・真偽値・null・密な配列・plain objectを受け付ける。循環、class instance、accessor、非JSON値を拒否し、getter・toJSON・入力iteratorを実行しない。
12
+
13
+ snapshotは最大100,000訪問値・深さ128に制限し、超過は`limit-exceeded`の実行診断とする。制限のためにデータを切り捨てて成功扱いにはしない。Schemaの非同期検証は受け付けない。標準formatは直接依存のajv-formatsにあるものを使い、未知formatを黙って無視しない。
14
+
15
+ 診断は固定codeとscope、必要なresource URI・JSON Pointer・keywordを持つ。required/additionalPropertiesは問題の子項目へPointerを付け、URI fragmentをschemaPathへ分解する。raw値・Ajvのparams・例外本文をコピーしない。未知ref・Schema不正とengine実行失敗を混同しない。
16
+
17
+ 同期owner合成とRJSFの明示経路はS1-3で追加済み。owner形式adapterと配布はS1-4で追加し、16契約をS1-5で横断確認した。既存フォームへ自動接続しない。新入口の利用を外すことで従来の経路へ戻せる。
18
+
19
+ 実装根拠: [Ajvの方言](https://ajv.js.org/json-schema.html)、[Schema登録と隔離](https://ajv.js.org/guide/managing-schemas.html)。
20
+
21
+ ## S1-3: 同期owner検証と明示フォーム
22
+
23
+ `validateSchemaInput(compiled, data, {context, ownerValidate?})` はcontextを先に検査し、構造検証に成功したときだけ同期ownerを1回呼ぶ。`context`にはconsumerId、有限のnowMs、JSON互換settingsが必要。候補とcontextの保護snapshotを渡し、入力を正規化値へ置換しない。Promise/thenableはasync-owner-unsupported、例外はowner-validation-failed、不正な結果はowner-result-invalid。不正contextはowner-context-invalid。拒否Promiseも処理して未処理rejectionを残さない。
24
+
25
+ `/rjsf`の`createSchemaBundleEditor`と`registerSchemaBundle`は、従来optionsのschemaの代わりにschemaBundle、呼出しごとの`validationContext: () => context`、任意のownerValidateを受ける。構造・同期owner検証はlive/save/未mount保存で共通。legacy validateDataはこの検証が成功した後、保存時だけ実行する。新経路のreadはdefaultを補わず、既存createSchemaEditorのdefault初期化は維持する。
26
+
27
+ `SchemaBundleEditorOptions`の型引数を省略した場合は`null`設定を使う。`SchemaValidationContext` / `SyncOwnerValidator`と同じ既定であり、options変数にも`settings: null`を指定できる。設定を使う場合は明示型またはfactoryの推論を使う。public型の検査は省略・inline・明示型と不正設定の負例を含む。
28
+
29
+ RJSF v5用には正本を変えないprivateな表示Schemaを作る。閉じたresource graphのID/anchor/refを解決し、wrapper内のfragment pointerへ展開する。private表示側で不要になったID宣言を除くが、正本・検証制約は変更しない。検証の正本は常に元bundleのengineで、RJSFへextraErrorsを渡す。JSON Pointerの特殊キーを保持し、共通field-errorsのARIA表示・訂正・解除へ接続する。
30
+
31
+ 2020-12 prefixItems、dynamic/recursive ref、RJSFが展開を終了できないobject再帰は、フォーム登録時に明示的に拒否する。配列items経由の再帰と両方言の同梱refは合成フォームで確認する。これらの表示制限はheadless engineの受理範囲を狭めない。現行14本番契約の実フォームと段階2で新規予定の9固定契約は、段階2の具体計画で区別して検証する。旧16契約には撤去したTemplateサンプル2件が含まれる。[現行の再検証手順](template-fixture-separation.ja.md#current-verification)に従い、Templateの旧入口を検証対象にしない。
32
+
33
+ この工程は拡張へのeditor登録、GUI依存更新、binding、候補UIを追加しない。新APIを呼ばない既存利用者の挙動は維持する。
34
+
35
+ ## S1-4pの配布
36
+
37
+ 段階1中はnpmへ未公開のAPIを既存の0.1.0公開版と取り違えないよう、ownerの追加pure型依存を検証済みGit commitへ固定する。Git依存のprepareで既存buildを実行し、dist/JS/型/CSS/webpack4/build-infoを生成する。ローカルfile:/tmp依存は公開manifestへ残さない。npm publishや既存GUI依存の変更はこの作業に含めない。
38
+
39
+ 既存hostがBlockEditorRegistrationAPI/BlockEditorServiceを実装する場合、新しいregisterSchemaBundleは任意のcapabilityとして追加する。既存の3 memberだけを持つobjectも代入できる。createBlockEditorServiceの戻り値ではSchemaBundleBlockEditorRegistrationAPIとしてこのcapabilityを保証し、外部hostでは存在を確認して利用する。ownerのGit依存はpureファイルだけでなく./rjsfの修正版宣言も照合する。固定するcommitと実解決の対応は公開時の検証記録に残す。
40
+
41
+ ownerのvalidate*Sourceは元source/未正規化データと診断を分けて返す。形式不正・未知variantで生のparser例外を診断へ混ぜない。Camera系は既存readerと同じtrim/BOM・ROSのtrim後サイズ条件を維持するが、返すsourceは原文を保持する。lib-editor/schemasのemit copyは配布用生成物であり、bundleのartifact.roleは元のSchema正本/TypeBox・Spec生成物の由来を表す。
42
+
43
+ 旧SchemaEditorOptions.schema経路は既存format/error/defaultの互換性とprovenance不在を考慮し、従来のRJSF validatorを継続する。明示bundleだけをpure engineへ接続し、それぞれlive/save/未mountで同じ判定を使う。webpack4 helperには新しい/schemaの事前build入口も追加し、既存4入口とCSS aliasを保つ。
@@ -0,0 +1,19 @@
1
+ # 固定Schemaを使うSource/Form編集
2
+
3
+ 既存の`register`・`registerSchema`・`registerSchemaBundle`は変更しない。追加の`registerSourceEditor`は、ホスト提供APIでは任意、`createBlockEditorService()`の返す`SourceBlockEditorRegistrationAPI`では必須となる。既存の`SchemaBundleBlockEditorRegistrationAPI`を実装するホストに新メソッドを要求しない。公開入口は従来の8つを維持する。
4
+
5
+ 型と汎用有限JSON契約`jsonValueSchemaBundle`は`./schema`から取得する。この入口はDOM・Reactを必要としない。`PreparedEditorDefinition`と`PreparedSave`は`.`・`./rjsf`、UIを含む`createSourceEditor`は`./rjsf`から取得する。拡張側は型とpure owner adapterだけを参照し、React/RJSFを重複同梱しない。汎用JSON Schemaの正本は`src/json-value.ts`の`jsonValueSchema`であり、JSONファイルの生成物を正本と呼ばない。
6
+
7
+ `SourceEditorOptions`は固定した`bindings`と、保存のたびに新しい検証contextを返す`validationContext`を受け取る。各bindingは引数名、固定variant一覧、必要なら空scene等を明示するsourceOnlyVariants、`decode`と`validateSource`を持つ。`decode(source)`は`SourceDocument`を返し、その`source`に原文のraw文字列、`data`に編集表示用の値、`format`と`variantId`に形式と固定variantの識別子を保持する。`validateSource(source, context)`は`SourceValidation`を返し、その`source`に検証した候補文字列、`result`に検証結果を保持する。opcodeは`extensionId_opcode`の完全修飾名とする。複数のbindingを一つのeditorに束ねれば、一回のSaveで全候補を検証し、単一transactionとして保存する。
8
+
9
+ 追加経路は`prepareSave`で候補を一回だけ生成し、同一文字列をowner検証とcommitへ渡す。診断やcallback出力はgetter・iteratorを実行せずJSON snapshotし、不正値や非同期結果を拒否する。contextは保存試行ごとに一回取得してfreezeする。単一sessionとDescendantSessionの両方がこの経路を使う。旧`validate/createPatch`経路にprepared定義を渡すと安全に拒否する。prepared単一sessionの登録解除・再登録は保存を失効させる。既存legacy sessionの登録解除後の挙動は変更しない。
10
+
11
+ 追加UIにはSourceとForm、明示的な形式・固定variant選択による新規作成を用意する。Formは実在するJSON値を有限のReactツリーとして描画する。既存RJSFの描画・default初期化には変更を加えず、新経路ではroot scalar/array、任意キー、再帰、prefixItemsを扱うためRJSFのSchema変換制約を引き継がない。Schemaのkeywordを削除せず、正本の両方言・resource/ref/anchorを共通engineで検証する。表示用コピーだけを同じURI registryで解決する。閉じたenum/const unionは選択UI、互換なraw値を許すenum候補は`ui:enum`で提示する。外部候補一覧や新しいenum項目の登録は後続工程であり、この追加UIには含めない。
12
+
13
+ 無変更・編集後の差戻し・Cancelは原文とUndo履歴を保持する。JSON range/YAML ASTで未編集箇所を保持し、既定値、const、minItemsによるデータ補完を行わない。ownerが受理したJSONのBOMや前後のtrim whitespaceを保持し、厳密なJSON codec自体の文法は拡張しない。YAMLの空配列等をJSONと誤認するownerには単一document markerを付けてYAMLを維持する。Formからの暗黙variant変更は拒否する。
14
+
15
+ 安全に保持できないalias/anchor/tag自体の編集、コメントを消す部分置換などは保存を拒否し、`Discard form edits`で原文Sourceへ戻れる。非有限数に変換されるJSON数値は共通の有限JSON契約で扱えない。既存runtimeのparserは変更せず、旧GUIやflag OFFでは従来の実行を維持する。これらを無条件なForm対応済みとは数えない。
16
+
17
+ GUIの`blockEditorSourceForms`は起動時固定・既定OFFで、`blockEditorDialogs=1`も必要。OFFで新capabilityを公開せず、従来の登録APIを維持する。ロールバックはflag OFFで再読込し、必要ならconsumer→producer→共通の順で差分と依存を戻す。raw形式を自動移行しないため逆変換は不要。
18
+
19
+ 開発時のローカルtarballはnpm公開を行わず検証できる。公開可能な配布の受け入れ条件はmanifest・lock・実解決・build-info/capabilityの一致である。作業コピーのHEADだけを実装済みのGit artifactと呼ばない。build-infoの`sourceState: working-tree`と`sourceSha256`で未commit実装を区別し、公開Git pinへの置換は別の承認・検証条件とする。
@@ -0,0 +1,35 @@
1
+ # 段階2の公開Git配布
2
+
3
+ 管理: https://github.com/kubohiroya/turbowarp-extension-data-editor/issues/31
4
+
5
+ `feat/schema/stage2-source-forms` → `main`。Sourceを正本とする固定Schema編集とprepared-source-v1保存を追加する。GUIは起動時固定の`blockEditorSourceForms`既定OFFと`blockEditorDialogs`を必要とする。既存API、8公開入口、CSS、rawの無変更保存を維持する。
6
+
7
+ 先行ローカル検証は共通212ケース、全体の関連659ケースと実GUI5代表×8手順。再実行を加算していない。共通ローカルartifact SHA-256は`f3f66138902e4fb869540029460f800492ae0a23d29aacdd90eaf6d2b0766672`、sourceSha256は`aef366417f026ececbcb718f8001f3b5dddc5e34a2fdb3bc69d5390ce2e9118e`。このartifactは未commit基準d910ed0…であり公開Gitから再生成するartifactとは区別する。
8
+
9
+ 公開順序: 共通 → Scene Graph / Camera Source → consumerとGUI。公開Git SHAは各consumer manifest・lock・実解決・build-infoへ揃える。npm公開を必要としない。
10
+
11
+ 受け入れ基準: ./schemaのpure型、prepared公開型、旧型の互換、単一/子孫session、同じ候補の検査/commit、複数引数atomic、登録失効を維持する。GUIの数値入力・enum/ref/anchor表示とraw保持を確認する。無効なYAML alias/tagやコメントを消す置換はFormで拒否しSourceへ明示的に戻す。
12
+
13
+ ロールバック: sourceForms OFFで再読込。必要ならconsumer→producer→共通の逆依存順でrevertし、manifest・lock・実解決を一体で戻す。rawの自動移行は行わない。merge・npm公開・Pages手動再公開は本工程に含めない。
14
+
15
+ 公開Git artifactの検証結果とCI URLはPR本文および集約記録へ追記する。履歴のローカル検証は置換しない。
16
+
17
+ ## 0.2.0のリリース追補
18
+
19
+ 2026-10-18、日本時間。ユーザーは段階2全体のcommit・push・PR・merge・npm公開を承認した。新規API追加に合わせ共通を0.2.0へminor更新する。文書レビューのdecode説明訂正を含む。先行0.1.0 Git/file artifactと過去659件の記録は採取時点の履歴として保持する。
20
+
21
+ 安定版build段階ではfresh frozen install、全commonテスト、CI/site/infrastructure、typecheck、8公開入口・CSS・packを検証する。最終merge SHAからpackした同一tarballをnpmへ公開し、registry integrityとbuild-infoを照合する。producer/consumerは最終共通Git SHAへpin・lock・allowBuilds・実解決を揃える。GUIの起動時固定・既定OFFを維持する。
22
+
23
+ 公開後の問題には、フラグOFFと逆依存順のrevertで対応する。公開済み版を削除せず、修正は新しいversionで公開する。
24
+
25
+ ## 公開直前の依存audit追補
26
+
27
+ 共通0.2.0はまだnpm未公開の時点で、direct fast-uri3.1.0に8high/1moderateのadvisoryを確認した。対象packageはfast-uriだけである。間接AJVで既に使っている3.1.8へ直接依存も固定し、lockの全fast-uri edgeを3.1.8へ統一する。Schemaの正本・owner・既存API・保存形式は変更しない。
28
+
29
+ 0.2.0の公開前修正として別PRでmainへ統合し、後続pinには修正後の最終SHAを使う。旧4818a4dの検証は履歴として保持し、最終配布の証拠と区別する。fresh install後にaudit、Schema/ref/診断/Source/Form/8入口を含む全common検証、packを確認する。一次資料: https://github.com/advisories/GHSA-qw65-cvwx-89v3 および保存した9件のaudit JSON。
30
+
31
+ ## 最終GUI/site固定の追補
32
+
33
+ 共通配布artifactはsecurity修正を含むGit `76fa1d50a3c188082ceef723ea018a9d8769ea6e`、GUIは `1caa902a51ec3338b9b30372174f71d04044ecd8` へ固定する。site/source.jsonのGUI/coreをこの対応へ更新する。siteのmain revisionと共通配布のcore revisionは役割が異なるため、siteだけの追補でconsumerのcore pinを循環更新しない。source/package/build入力がcore76faから不変であることを確認する。
34
+
35
+ 最終production GUIの実依存34edgeがlockと一致し、62block-editorテスト・既存addon33テスト・全6browserentryのproduction buildが成功。共通所有のChromium E2E6件もこのGUI/coreの組合せで成功した。npm公開とowner代表Source/Form確認の最終結果は集約記録へ保存する。既定OFFは維持する。
@@ -0,0 +1,43 @@
1
+ # Template用途依存からの試験分離
2
+
3
+ owner横断検証は14契約・8packageです。Templateの旧2サンプルは対象外にしました。JSON/YAML編集の任意サンプルはexamples/document-properties.mjs、対応する実serviceの試験はtest/generic-document.test.mjsで所有します。Templateやその公開APIをimportしません。
4
+
5
+ 例には任意のtext/enabledと追加キーを使用します。required/defaultや業務条件はありません。新たなpackage exportや標準ブロックは追加せず、examplesはnpm配布APIにしません。登録は呼出側が明示的に行います。
6
+
7
+ 旧16契約・9packageという過去結果は変更しません。旧2入力とprovenanceはtest/fixtures/schema-stage1/historyへ保持しました。共通src・8公開入口・依存pin/lock・CSS/buildは変更しません。
8
+
9
+ `docs/schema-stage1-contracts.json`は旧16契約の採取結果として保持します。現行の件数の正本は実行する`scripts/verify-schema-stage1.mjs`であり、Templateのない8packageのisolation indexを渡して検証します。今回の結果・依存照合はTemplate側のローカル集約記録に保存し、過去結果を上書きしません。
10
+
11
+ <a id="current-verification"></a>
12
+
13
+ ## 現行の再検証手順(14契約・8package)
14
+
15
+ 対象は共通エディタと7つの実拡張packageです。Templateの`./editor-schema`は撤去済みで、共通依存も持ちません。Templateをこの手順のownerやindexに含めないでください。Template自体のhello/build/manifestはTemplate側で別に検証します。
16
+
17
+ まず各ownerの採用commit・依存pin/lock・実解決を確認し、その版のbuild生成物を用意します。共通repoの`scripts/verify-schema-package.mjs`を各owner checkoutをcwdとして実行し、pure入口に必要なruntime依存だけを引数で指定します。共通自身の入口は`/schema`、7拡張の入口は`/editor-schema`です。新たな公開・install・依存更新を暗黙に行う手順ではありません。既存の検証済みartifactを使う場合も、その採取時のSHA・hash・実解決を確認します。
18
+
19
+ 検証成功ログの`isolated:`に出力されたディレクトリを、次の**8 keyだけ**へ対応付けて`isolation-index.json`を作成します。値は例示なので、実際のsource-free package検証先の絶対パスへ置き換えてください。
20
+
21
+ ```json
22
+ {
23
+ "editor": "/path/to/isolated-editor",
24
+ "aframe": "/path/to/isolated-aframe",
25
+ "scene-graph": "/path/to/isolated-scene-graph",
26
+ "3d-scene-runtime": "/path/to/isolated-3d-scene-runtime",
27
+ "camera-source": "/path/to/isolated-camera-source",
28
+ "camera-calibration": "/path/to/isolated-camera-calibration",
29
+ "realtime-motion-capture": "/path/to/isolated-realtime-motion-capture",
30
+ "time-space-sync": "/path/to/isolated-time-space-sync"
31
+ }
32
+ ```
33
+
34
+ 共通repoをcwdとして、同じindexで両方を実行します。
35
+
36
+ ```sh
37
+ node scripts/verify-schema-stage1.mjs /path/to/isolation-index.json
38
+ node scripts/verify-schema-dependencies.mjs /path/to/isolation-index.json
39
+ ```
40
+
41
+ 前者は`contracts: 14`・`packageCount: 8`と各契約の成功を確認します。後者はScene Graph→Runtime、Camera Source→Calibration/Motionの実bundle一致と、7consumerの共通pureファイル一致を確認します。失敗したownerをindexから落として成功扱いにせず、依存pin・lock・実解決・生成物を確認してください。
42
+
43
+ この14契約は現行の本番owner契約です。共通examplesのJSON/YAML試験やTemplateのhello試験を本番契約へ足しません。段階2で新設予定の9固定契約は未実装の別計画で、現行検証が成功しても追加9件の実装済みを意味しません。旧16契約・9packageの再現にはその時点の旧commit/artifactを使い、ここに新Templateを混ぜません。過去の採取結果・手順は履歴として保持します。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubohiroya/turbowarp-extension-data-editor",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "description": "Custom editor sessions and UI for structured data handled by TurboWarp extensions",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -37,7 +37,11 @@
37
37
  "./webpack4": {
38
38
  "require": "./webpack4.cjs"
39
39
  },
40
- "./build-info": "./dist/build-info.json"
40
+ "./build-info": "./dist/build-info.json",
41
+ "./schema": {
42
+ "types": "./dist/schema.d.ts",
43
+ "import": "./dist/schema.js"
44
+ }
41
45
  },
42
46
  "files": [
43
47
  "dist",
@@ -54,9 +58,11 @@
54
58
  "build": "tsc --project tsconfig.json && node scripts/copy-react-css.mjs && node scripts/build-webpack4.mjs && node scripts/write-build-info.mjs",
55
59
  "test": "pnpm build && node --test test/*.test.mjs",
56
60
  "test:e2e:block-editor": "playwright test --config test/e2e/turbowarp/playwright.config.cjs",
61
+ "test:e2e:fixed-inputs": "E2E_FIXED_INPUTS=1 playwright test --config test/e2e/turbowarp/playwright.config.cjs --project=chromium-project-url fixed-inputs.spec.cjs",
57
62
  "test:e2e:infrastructure": "node --test test/e2e/turbowarp/infrastructure.test.cjs",
58
63
  "test:e2e:native": "E2E_NATIVE=1 pnpm test:e2e:block-editor",
59
- "prepack": "npm run build"
64
+ "prepack": "npm run build",
65
+ "prepare": "npm run build"
60
66
  },
61
67
  "devDependencies": {
62
68
  "@playwright/test": "1.64.1",
@@ -73,6 +79,9 @@
73
79
  "@rjsf/core": "5.24.13",
74
80
  "@rjsf/utils": "5.24.13",
75
81
  "@rjsf/validator-ajv8": "5.24.13",
82
+ "ajv": "8.20.0",
83
+ "ajv-formats": "2.1.1",
84
+ "fast-uri": "3.1.8",
76
85
  "yaml": "^2.9.1"
77
86
  },
78
87
  "peerDependencies": {
@@ -89,5 +98,11 @@
89
98
  },
90
99
  "publishConfig": {
91
100
  "access": "public"
101
+ },
102
+ "gitHead": "485f0e550e622235624b5e9176820161aeeba252",
103
+ "x-turbowarp-source": {
104
+ "revision": "485f0e550e622235624b5e9176820161aeeba252",
105
+ "revisionRole": "base-commit",
106
+ "sourceState": "working-tree-release-overlay"
92
107
  }
93
108
  }
package/webpack4.cjs CHANGED
@@ -6,7 +6,7 @@ const withBlockEditorWebpack4 = (config, {hostRoot}) => {
6
6
  if (Array.isArray(config)) return config.map(item => withBlockEditorWebpack4(item, {hostRoot}));
7
7
  const prefix = '@kubohiroya/turbowarp-extension-data-editor';
8
8
  const alias = {...config.resolve?.alias};
9
- for (const entry of ['index', 'rjsf', 'react', 'turbowarp']) {
9
+ for (const entry of ['index', 'rjsf', 'react', 'turbowarp', 'schema']) {
10
10
  alias[`${prefix}${entry === 'index' ? '' : `/${entry}`}$`] = path.join(__dirname, 'dist/webpack4', `${entry}.js`);
11
11
  }
12
12
  alias[`${prefix}/react/styles.css$`] = path.join(__dirname, 'dist/react.css');
@@ -1 +0,0 @@
1
- //# sourceMappingURL=shared-CQB3NG2A.js.map