@yahoo/uds-create-config 2.44.0 → 3.0.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/README.md +129 -0
- package/dist/ai-lanes.d.ts +23 -0
- package/dist/ai-lanes.js +34 -0
- package/dist/authoring/define-component.d.ts +85 -0
- package/dist/configs/CanvasConfig.d.ts +3237 -0
- package/dist/configs/CanvasConfig.js +332 -0
- package/dist/configs/build-options.d.ts +10 -0
- package/dist/configs/build-options.js +68 -0
- package/dist/configs/platform.d.ts +15 -0
- package/dist/configs/platform.js +17 -0
- package/dist/configs/react-native-system.d.ts +3026 -0
- package/dist/configs/react-native-system.js +64 -0
- package/dist/configs/system.d.ts +2771 -0
- package/dist/configs/system.js +74 -0
- package/dist/css/properties.generated.d.ts +14 -0
- package/dist/css/properties.generated.js +6260 -0
- package/dist/css/value-type.d.ts +48 -0
- package/dist/css/value-type.js +131 -0
- package/dist/css/values.d.ts +33 -0
- package/dist/css/values.js +116 -0
- package/dist/entities/native/NativeModifier.d.ts +25 -0
- package/dist/entities/native/NativeModifier.js +41 -0
- package/dist/entities/native/NativeSettings.d.ts +44 -0
- package/dist/entities/native/NativeSettings.js +39 -0
- package/dist/entities/native/NativeStyleProperty.d.ts +355 -0
- package/dist/entities/native/NativeStyleProperty.js +28 -0
- package/dist/entities/native/NativeToken.d.ts +31 -0
- package/dist/entities/native/NativeToken.js +49 -0
- package/dist/entities/system/CanvasRole.d.ts +34 -0
- package/dist/entities/system/CanvasRole.js +45 -0
- package/dist/entities/system/Component.d.ts +1287 -0
- package/dist/entities/system/Component.js +1840 -0
- package/dist/entities/system/Composite.d.ts +12 -0
- package/dist/entities/system/Composite.js +26 -0
- package/dist/entities/system/Device.d.ts +11 -0
- package/dist/entities/system/Device.js +18 -0
- package/dist/entities/system/File.d.ts +72 -0
- package/dist/entities/system/File.js +136 -0
- package/dist/entities/system/Font.d.ts +48 -0
- package/dist/entities/system/Font.js +56 -0
- package/dist/entities/system/GlobalStyle.d.ts +26 -0
- package/dist/entities/system/GlobalStyle.js +54 -0
- package/dist/entities/system/Guidance.d.ts +85 -0
- package/dist/entities/system/Guidance.js +59 -0
- package/dist/entities/system/GuidanceStyle.d.ts +14 -0
- package/dist/entities/system/GuidanceStyle.js +8 -0
- package/dist/entities/system/Icon.d.ts +46 -0
- package/dist/entities/system/Icon.js +46 -0
- package/dist/entities/system/LinkedSystem.d.ts +504 -0
- package/dist/entities/system/LinkedSystem.js +814 -0
- package/dist/entities/system/Modifier.d.ts +92 -0
- package/dist/entities/system/Modifier.js +120 -0
- package/dist/entities/system/Motion.d.ts +28 -0
- package/dist/entities/system/Motion.js +48 -0
- package/dist/entities/system/Operation.d.ts +100 -0
- package/dist/entities/system/Operation.js +236 -0
- package/dist/entities/system/Package.d.ts +42 -0
- package/dist/entities/system/Package.js +75 -0
- package/dist/entities/system/Settings.d.ts +94 -0
- package/dist/entities/system/Settings.js +166 -0
- package/dist/entities/system/StyleProperty.d.ts +135 -0
- package/dist/entities/system/StyleProperty.js +438 -0
- package/dist/entities/system/Token.d.ts +67 -0
- package/dist/entities/system/Token.js +129 -0
- package/dist/entities/system/Tool.d.ts +134 -0
- package/dist/entities/system/Tool.js +124 -0
- package/dist/entities/system/color.d.ts +64 -0
- package/dist/entities/system/color.js +123 -0
- package/dist/entities/system/component-module.d.ts +63 -0
- package/dist/entities/system/component-module.js +258 -0
- package/dist/entities/system/copy-plan.d.ts +98 -0
- package/dist/entities/system/copy-plan.js +451 -0
- package/dist/entities/system/defineComponent.d.ts +428 -0
- package/dist/entities/system/defineComponent.js +337 -0
- package/dist/entities/system/element.d.ts +101 -0
- package/dist/entities/system/element.js +171 -0
- package/dist/entities/system/icon-library.d.ts +64 -0
- package/dist/entities/system/icon-library.js +112 -0
- package/dist/entities/system/icon-metadata.d.ts +72 -0
- package/dist/entities/system/icon-metadata.js +111 -0
- package/dist/entities/system/link-declaration.d.ts +27 -0
- package/dist/entities/system/link-declaration.js +64 -0
- package/dist/entities/system/link-plan.d.ts +160 -0
- package/dist/entities/system/link-plan.js +770 -0
- package/dist/entities/system/runtime-modules.d.ts +25 -0
- package/dist/entities/system/runtime-modules.js +38 -0
- package/dist/entities/system/style-bag.d.ts +20 -0
- package/dist/entities/system/style-bag.js +246 -0
- package/dist/entities/system/token-index.d.ts +89 -0
- package/dist/entities/system/token-index.js +112 -0
- package/dist/framework/Config.d.ts +2472 -0
- package/dist/framework/Config.js +5023 -0
- package/dist/framework/Entity.d.ts +127 -0
- package/dist/framework/Entity.js +125 -0
- package/dist/framework/authoring.d.ts +24 -0
- package/dist/framework/authoring.js +7 -0
- package/dist/framework/change-hooks.d.ts +119 -0
- package/dist/framework/change-hooks.js +131 -0
- package/dist/framework/changes.d.ts +88 -0
- package/dist/framework/changes.js +246 -0
- package/dist/framework/class-names.d.ts +260 -0
- package/dist/framework/class-names.js +630 -0
- package/dist/framework/coalesce.d.ts +25 -0
- package/dist/framework/coalesce.js +60 -0
- package/dist/framework/config-op.d.ts +76 -0
- package/dist/framework/config-op.js +43 -0
- package/dist/framework/config-operation-kind.d.ts +14 -0
- package/dist/framework/config-operation-kind.js +14 -0
- package/dist/framework/config-ops.d.ts +34 -0
- package/dist/framework/config-ops.js +187 -0
- package/dist/framework/defineConfig.d.ts +196 -0
- package/dist/framework/defineConfig.js +100 -0
- package/dist/framework/defineDerivedEntity.d.ts +74 -0
- package/dist/framework/defineDerivedEntity.js +83 -0
- package/dist/framework/defineEntity.d.ts +318 -0
- package/dist/framework/defineEntity.js +183 -0
- package/dist/framework/defineSubEntity.d.ts +148 -0
- package/dist/framework/defineSubEntity.js +121 -0
- package/dist/framework/derived-mutations.d.ts +20 -0
- package/dist/framework/derived-mutations.js +38 -0
- package/dist/framework/entity-search.d.ts +29 -0
- package/dist/framework/entity-search.js +117 -0
- package/dist/framework/inline-sources.d.ts +49 -0
- package/dist/framework/inline-sources.js +388 -0
- package/dist/framework/layer-styles.d.ts +25 -0
- package/dist/framework/layer-styles.js +49 -0
- package/dist/framework/memo.d.ts +48 -0
- package/dist/framework/memo.js +84 -0
- package/dist/framework/overlay.d.ts +49 -0
- package/dist/framework/overlay.js +17 -0
- package/dist/framework/plan.d.ts +49 -0
- package/dist/framework/plan.js +73 -0
- package/dist/framework/projections.d.ts +480 -0
- package/dist/framework/projections.js +974 -0
- package/dist/framework/prop-surface.d.ts +132 -0
- package/dist/framework/prop-surface.js +278 -0
- package/dist/framework/ref-graph.d.ts +71 -0
- package/dist/framework/ref-graph.js +158 -0
- package/dist/framework/ref-integrity.d.ts +55 -0
- package/dist/framework/ref-integrity.js +171 -0
- package/dist/framework/registered.d.ts +95 -0
- package/dist/framework/registry-dir.d.ts +42 -0
- package/dist/framework/registry-dir.js +48 -0
- package/dist/framework/registry.d.ts +300 -0
- package/dist/framework/registry.js +104 -0
- package/dist/framework/rejection.d.ts +58 -0
- package/dist/framework/rejection.js +111 -0
- package/dist/framework/rename-inference.d.ts +26 -0
- package/dist/framework/rename-inference.js +50 -0
- package/dist/framework/render-spec.d.ts +296 -0
- package/dist/framework/render-spec.js +809 -0
- package/dist/framework/schema-version.d.ts +140 -0
- package/dist/framework/schema-version.js +214 -0
- package/dist/framework/schemas.d.ts +109 -0
- package/dist/framework/schemas.js +615 -0
- package/dist/framework/session.d.ts +196 -0
- package/dist/framework/session.js +367 -0
- package/dist/framework/signature.d.ts +15 -0
- package/dist/framework/signature.js +83 -0
- package/dist/framework/snapshot.d.ts +115 -0
- package/dist/framework/snapshot.js +277 -0
- package/dist/framework/source-integrity.d.ts +226 -0
- package/dist/framework/source-integrity.js +478 -0
- package/dist/framework/sources.d.ts +211 -0
- package/dist/framework/sources.js +89 -0
- package/dist/framework/utils/compiled-schema.d.ts +23 -0
- package/dist/framework/utils/compiled-schema.js +46 -0
- package/dist/framework/utils/content-key.d.ts +15 -0
- package/dist/framework/utils/content-key.js +33 -0
- package/dist/framework/utils/enumerated.d.ts +13 -0
- package/dist/framework/utils/enumerated.js +19 -0
- package/dist/framework/utils/field-path.d.ts +95 -0
- package/dist/framework/utils/field-path.js +136 -0
- package/dist/framework/utils/field-schema.d.ts +55 -0
- package/dist/framework/utils/field-schema.js +183 -0
- package/dist/framework/utils/group.d.ts +37 -0
- package/dist/framework/utils/group.js +13 -0
- package/dist/framework/utils/package-path.d.ts +37 -0
- package/dist/framework/utils/package-path.js +61 -0
- package/dist/framework/utils/refs.d.ts +194 -0
- package/dist/framework/utils/refs.js +403 -0
- package/dist/framework/validate-spec.d.ts +27 -0
- package/dist/framework/validate-spec.js +45 -0
- package/dist/framework/value-domain.d.ts +26 -0
- package/dist/framework/value-domain.js +202 -0
- package/dist/framework/views-facade.d.ts +15 -0
- package/dist/framework/views-facade.js +19 -0
- package/dist/index.d.ts +90 -42
- package/dist/index.js +86 -37
- package/dist/migrations/2.0.0/raw-css.d.ts +11 -0
- package/dist/migrations/2.0.0/raw-css.js +72 -0
- package/dist/migrations/2.0.0/v1-artifact.d.ts +1559 -0
- package/dist/migrations/2.0.0/v1-artifact.js +1018 -0
- package/dist/migrations/20260908171448_settings_as_kind.d.ts +22 -0
- package/dist/migrations/20260908171448_settings_as_kind.js +89 -0
- package/dist/migrations/20260908194245_visible_state_pointer.d.ts +19 -0
- package/dist/migrations/20260908194245_visible_state_pointer.js +115 -0
- package/dist/migrations/20260909183001_icon_knockout_variants.d.ts +18 -0
- package/dist/migrations/20260909183001_icon_knockout_variants.js +8 -0
- package/dist/migrations/20260910212453_linked_system_link_ops.d.ts +13 -0
- package/dist/migrations/20260910212453_linked_system_link_ops.js +8 -0
- package/dist/migrations/index.d.ts +2 -0
- package/dist/migrations/index.js +2 -0
- package/dist/react-native/style-keys.generated.d.ts +10 -0
- package/dist/react-native/style-keys.generated.js +167 -0
- package/dist/renderer/RendererErrorBoundary.d.ts +32 -5
- package/dist/renderer/RendererErrorBoundary.js +59 -10
- package/dist/renderer/UdsRenderer.d.ts +11 -10
- package/dist/renderer/UdsRenderer.js +1 -1
- package/dist/renderer/assetEntries.d.ts +37 -0
- package/dist/renderer/assetEntries.js +39 -0
- package/dist/renderer/assetRenderable.d.ts +14 -6
- package/dist/renderer/assetRenderable.js +8 -2
- package/dist/renderer/componentEntry.d.ts +58 -0
- package/dist/renderer/componentEntry.js +71 -0
- package/dist/renderer/icon-library.d.ts +20 -0
- package/dist/renderer/index.d.ts +7 -7
- package/dist/renderer/index.js +5 -5
- package/dist/renderer/primitives/SlotRenderer.d.ts +1 -1
- package/dist/renderer/primitives/SlotRenderer.js +1 -1
- package/dist/renderer/runtimeComponent.d.ts +33 -0
- package/dist/renderer/runtimeComponent.js +113 -0
- package/dist/renderer/spec-content.d.ts +43 -0
- package/dist/renderer/spec-content.js +95 -0
- package/dist/renderer/wrapRegistry.d.ts +22 -37
- package/dist/renderer/wrapRegistry.js +10 -20
- package/dist/renderer/wrappers/event-bridge.js +6 -5
- package/dist/renderer/wrappers/hex-normalize.js +6 -5
- package/dist/renderer/wrappers/html-aliases.d.ts +7 -2
- package/dist/renderer/wrappers/html-aliases.js +36 -19
- package/dist/renderer/wrappers/inline-styles.js +7 -6
- package/dist/spec/asset-jsx.d.ts +18 -5
- package/dist/spec/asset-jsx.js +27 -16
- package/dist/spec/collapse-text-labels.d.ts +5 -15
- package/dist/spec/collapse-text-labels.js +26 -19
- package/dist/spec/empty-node-slots.d.ts +56 -34
- package/dist/spec/empty-node-slots.js +87 -47
- package/dist/spec/index.d.ts +21 -10
- package/dist/spec/index.js +21 -10
- package/dist/spec/jsxToSpec.d.ts +14 -9
- package/dist/spec/jsxToSpec.js +20 -3
- package/dist/spec/preview-elements.d.ts +63 -0
- package/dist/spec/preview-elements.js +89 -0
- package/dist/spec/rewrite-refs.d.ts +58 -0
- package/dist/spec/rewrite-refs.js +250 -0
- package/dist/spec/specToJsx.js +18 -29
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +39 -52
- package/dist/AssetGroup.d.ts +0 -77
- package/dist/AssetGroup.js +0 -125
- package/dist/Component.d.ts +0 -333
- package/dist/Component.js +0 -1061
- package/dist/ComponentGroup.d.ts +0 -22
- package/dist/ComponentGroup.js +0 -51
- package/dist/CompositeStyle.d.ts +0 -30
- package/dist/CompositeStyle.js +0 -59
- package/dist/Config.d.ts +0 -528
- package/dist/Config.js +0 -1712
- package/dist/Mode.d.ts +0 -41
- package/dist/Mode.js +0 -81
- package/dist/Modifier.d.ts +0 -51
- package/dist/Modifier.js +0 -97
- package/dist/MotionDef.d.ts +0 -81
- package/dist/MotionDef.js +0 -212
- package/dist/Props.d.ts +0 -332
- package/dist/Props.js +0 -35
- package/dist/Provider.d.ts +0 -20
- package/dist/Provider.js +0 -14
- package/dist/StyleProp.d.ts +0 -145
- package/dist/StyleProp.js +0 -239
- package/dist/Token.d.ts +0 -76
- package/dist/Token.js +0 -133
- package/dist/TokenGroup.d.ts +0 -33
- package/dist/TokenGroup.js +0 -69
- package/dist/asset-kind.d.ts +0 -55
- package/dist/asset-kind.js +0 -29
- package/dist/asset-value.d.ts +0 -23
- package/dist/asset-value.js +0 -40
- package/dist/brands.d.ts +0 -30
- package/dist/brands.js +0 -20
- package/dist/captureCallerPath.d.ts +0 -48
- package/dist/captureCallerPath.js +0 -95
- package/dist/colorExpressions.d.ts +0 -131
- package/dist/colorExpressions.js +0 -148
- package/dist/component-referrers.d.ts +0 -30
- package/dist/component-referrers.js +0 -40
- package/dist/config-diagnostics.d.ts +0 -21
- package/dist/config-diagnostics.js +0 -12
- package/dist/defineAssetGroup.d.ts +0 -200
- package/dist/defineAssetGroup.js +0 -323
- package/dist/defineProvider.d.ts +0 -29
- package/dist/defineProvider.js +0 -60
- package/dist/element-marker.d.ts +0 -63
- package/dist/element-marker.js +0 -113
- package/dist/entity-utils.d.ts +0 -56
- package/dist/entity-utils.js +0 -105
- package/dist/extension.d.ts +0 -55
- package/dist/extension.js +0 -214
- package/dist/factories.d.ts +0 -863
- package/dist/factories.js +0 -475
- package/dist/font-face.d.ts +0 -25
- package/dist/font-face.js +0 -72
- package/dist/foreign-component-name.d.ts +0 -21
- package/dist/foreign-component-name.js +0 -42
- package/dist/interpolate.d.ts +0 -20
- package/dist/interpolate.js +0 -10
- package/dist/jsx/__fixtures__/cross-component-preview.d.ts +0 -3
- package/dist/jsx/__fixtures__/cross-component-preview.js +0 -15
- package/dist/jsx/jsx-dev-runtime.d.ts +0 -15
- package/dist/jsx/jsx-dev-runtime.js +0 -11
- package/dist/jsx/jsx-runtime.d.ts +0 -48
- package/dist/jsx/jsx-runtime.js +0 -305
- package/dist/linked-system-pins.d.ts +0 -30
- package/dist/linked-system-pins.js +0 -45
- package/dist/linkedNodePrefixes.d.ts +0 -73
- package/dist/linkedNodePrefixes.js +0 -99
- package/dist/markers.d.ts +0 -235
- package/dist/markers.js +0 -70
- package/dist/motion-constants.d.ts +0 -37
- package/dist/motion-constants.js +0 -61
- package/dist/native/NativeConfig.d.ts +0 -56
- package/dist/native/NativeConfig.js +0 -162
- package/dist/native/assets.d.ts +0 -20
- package/dist/native/assets.js +0 -17
- package/dist/native/components.d.ts +0 -139
- package/dist/native/components.js +0 -67
- package/dist/native/index.d.ts +0 -18
- package/dist/native/index.js +0 -17
- package/dist/native/modes.d.ts +0 -10
- package/dist/native/modes.js +0 -11
- package/dist/native/types.d.ts +0 -95
- package/dist/native/types.js +0 -0
- package/dist/native/validation.d.ts +0 -8
- package/dist/native/validation.js +0 -885
- package/dist/native/values.d.ts +0 -7
- package/dist/native/values.js +0 -15
- package/dist/native.d.ts +0 -12
- package/dist/native.js +0 -10
- package/dist/refs.d.ts +0 -204
- package/dist/refs.js +0 -129
- package/dist/registry-aliases.d.ts +0 -33
- package/dist/registry-aliases.js +0 -35
- package/dist/registry-dir.d.ts +0 -22
- package/dist/registry-dir.js +0 -10
- package/dist/renderer/makeRegistry.d.ts +0 -34
- package/dist/renderer/makeRegistry.js +0 -52
- package/dist/renderer/makeUdsRenderer.d.ts +0 -13
- package/dist/renderer/makeUdsRenderer.js +0 -51
- package/dist/renderer/wrappers/component-slots.d.ts +0 -41
- package/dist/renderer/wrappers/component-slots.js +0 -66
- package/dist/renderer/wrappers/slot-resolution.d.ts +0 -25
- package/dist/renderer/wrappers/slot-resolution.js +0 -68
- package/dist/renderer/wrappers/void-elements.d.ts +0 -37
- package/dist/renderer/wrappers/void-elements.js +0 -40
- package/dist/spec/layer-props.d.ts +0 -52
- package/dist/spec/layer-props.js +0 -149
- package/dist/spec/preview-controls.d.ts +0 -44
- package/dist/spec/preview-controls.js +0 -139
- package/dist/spec/slot-refs.d.ts +0 -39
- package/dist/spec/slot-refs.js +0 -56
- package/dist/token-override-rows.d.ts +0 -68
- package/dist/token-override-rows.js +0 -233
- package/dist/tokenValueType.d.ts +0 -34
- package/dist/tokenValueType.js +0 -138
- package/dist/types/css-properties.d.ts +0 -233
- package/dist/types/css-properties.js +0 -14
- package/dist/types/css-property-keywords.d.ts +0 -156
- package/dist/types/css-property-keywords.js +0 -616
- package/dist/types/css-values.d.ts +0 -63
- package/dist/types/css-values.js +0 -16
- package/dist/types.d.ts +0 -1138
- package/dist/types.js +0 -12
- package/dist/units.d.ts +0 -14
- package/dist/units.js +0 -16
- package/dist/utils/index.d.ts +0 -4
- package/dist/utils/index.js +0 -4
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { ConfigIssueCode } from "./rejection.js";
|
|
2
|
+
import { Patch } from "./Config.js";
|
|
3
|
+
|
|
4
|
+
//#region src/framework/overlay.d.ts
|
|
5
|
+
/** A pending patch plus the id that lets a caller correlate it — with an optimistic UI gesture now,
|
|
6
|
+
* and with its `draft_patches` row — and the changeset it belongs to, when it is one of several. */
|
|
7
|
+
interface StampedPatch {
|
|
8
|
+
readonly id: string;
|
|
9
|
+
readonly patch: Patch;
|
|
10
|
+
/** The schema version the WRITER was on — what replay hands `upgradePatch` after a bump. Absent
|
|
11
|
+
* means 1: a patch stored before versioning existed. */
|
|
12
|
+
readonly schemaVersion?: number;
|
|
13
|
+
/**
|
|
14
|
+
* The changeset this patch belongs to — the set of patches one gesture wrote, named by the id the
|
|
15
|
+
* caller staged for the gesture, which is also its first patch's. A custom op that decomposes into
|
|
16
|
+
* several patches, a multi-op call, a copy of a linked system: each is one thing a person did, and
|
|
17
|
+
* the rows it wrote carry the same changeset so a list shows one line, undo drops one step, and a
|
|
18
|
+
* replay keeps or drops the gesture whole. A single patch carries none. Nothing but the id: what a
|
|
19
|
+
* changeset is called is derived from its rows where it is shown.
|
|
20
|
+
*/
|
|
21
|
+
readonly changeset?: string;
|
|
22
|
+
}
|
|
23
|
+
/** A patch that could not be replayed onto a new base, and the reason — reported rather than
|
|
24
|
+
* swallowed, so a surface can tell the user which of their edits the remote change invalidated. */
|
|
25
|
+
interface RebaseConflict {
|
|
26
|
+
readonly id: string;
|
|
27
|
+
readonly patch: Patch;
|
|
28
|
+
/** The error `apply` threw — "No component at "Button"", a validation failure, … */
|
|
29
|
+
readonly reason: string;
|
|
30
|
+
/**
|
|
31
|
+
* The rejection's own category (`NOT_FOUND`, `ALREADY_EXISTS`, …), or `INTERNAL` when the throw
|
|
32
|
+
* wasn't a `ConfigRejection` — an environmental failure (an unresolved linked source, a malformed
|
|
33
|
+
* pre-cutover row) rather than a refused write. A surface words the two differently: a refusal is
|
|
34
|
+
* about the user's edit, an internal error is not.
|
|
35
|
+
*/
|
|
36
|
+
readonly code: ConfigIssueCode | 'INTERNAL';
|
|
37
|
+
}
|
|
38
|
+
/** What `rebase` hands back: the replayed config, and the edits that didn't survive. Generic in the
|
|
39
|
+
* config type so `rebase` can return the receiver's own type (a `this` type can't be written inline
|
|
40
|
+
* in an object literal). */
|
|
41
|
+
interface RebaseResult<C> {
|
|
42
|
+
readonly config: C;
|
|
43
|
+
readonly dropped: RebaseConflict[];
|
|
44
|
+
}
|
|
45
|
+
/** Stamp a patch for the pending log. Ids must be unique across CLIENTS (they become the durable
|
|
46
|
+
* log's `client_patch_id`), so this is a uuid rather than a counter; tests pass their own. */
|
|
47
|
+
declare function stamp(patch: Patch, id?: string, changeset?: string): StampedPatch;
|
|
48
|
+
//#endregion
|
|
49
|
+
export { RebaseConflict, RebaseResult, StampedPatch, stamp };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { CURRENT_SCHEMA_VERSION } from "./schema-version.js";
|
|
2
|
+
//#region src/framework/overlay.ts
|
|
3
|
+
/** Stamp a patch for the pending log. Ids must be unique across CLIENTS (they become the durable
|
|
4
|
+
* log's `client_patch_id`), so this is a uuid rather than a counter; tests pass their own. */
|
|
5
|
+
function stamp(patch, id = crypto.randomUUID(), changeset) {
|
|
6
|
+
const stamped = {
|
|
7
|
+
id,
|
|
8
|
+
patch,
|
|
9
|
+
schemaVersion: CURRENT_SCHEMA_VERSION
|
|
10
|
+
};
|
|
11
|
+
return changeset ? {
|
|
12
|
+
...stamped,
|
|
13
|
+
changeset
|
|
14
|
+
} : stamped;
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { stamp };
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { ConfigOp } from "./config-op.js";
|
|
2
|
+
import { StampedPatch } from "./overlay.js";
|
|
3
|
+
import { Patch } from "./Config.js";
|
|
4
|
+
|
|
5
|
+
//#region src/framework/plan.d.ts
|
|
6
|
+
type PlanOp = ConfigOp;
|
|
7
|
+
/** What a kind's own `<verb>-plan` read says about one op in the plan. */
|
|
8
|
+
interface PlanImpact {
|
|
9
|
+
/** The op the account is about, `token/rename`. */
|
|
10
|
+
readonly op: string;
|
|
11
|
+
/** The read's answer: a `RenamePlan`, a `DeletePlan`, a `LinkPlan`, whatever the kind declared. */
|
|
12
|
+
readonly answer: unknown;
|
|
13
|
+
}
|
|
14
|
+
interface Plan {
|
|
15
|
+
/** The patches the ops would append, in order, stamped as `run` would stamp them. */
|
|
16
|
+
readonly patches: readonly StampedPatch[];
|
|
17
|
+
/** One line per patch, from {@link describePatch}. */
|
|
18
|
+
readonly summaries: readonly string[];
|
|
19
|
+
/** The kinds' own accounts of the ops that have one, in op order. */
|
|
20
|
+
readonly impact: readonly PlanImpact[];
|
|
21
|
+
}
|
|
22
|
+
/** An entity by kind and path. */
|
|
23
|
+
interface EntityAddress {
|
|
24
|
+
readonly kind: string;
|
|
25
|
+
readonly path: string;
|
|
26
|
+
}
|
|
27
|
+
interface RenamePlan {
|
|
28
|
+
readonly from: string;
|
|
29
|
+
readonly to: string;
|
|
30
|
+
/** Every entity the cascade rewrites: a body holding a ref to the old path, or its name as a key. */
|
|
31
|
+
readonly rewrites: readonly EntityAddress[];
|
|
32
|
+
/** Why the rename would be refused. `undefined` when it would go through. */
|
|
33
|
+
readonly blocked?: string;
|
|
34
|
+
}
|
|
35
|
+
interface DeletePlan {
|
|
36
|
+
readonly path: string;
|
|
37
|
+
/** What still points at the entity. Each has to move or go before the delete is allowed. */
|
|
38
|
+
readonly dependents: readonly EntityAddress[];
|
|
39
|
+
/** Why the delete would be refused. `undefined` when it would go through. */
|
|
40
|
+
readonly blocked?: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* One line for a patch, read off the patch itself: its kind, what it did, and where. The payload
|
|
44
|
+
* already names all three, so a kind declared in userland describes itself with no case here. An
|
|
45
|
+
* operation has the same shape, so a receipt for a batch describes its ops the same way.
|
|
46
|
+
*/
|
|
47
|
+
declare function describePatch(patch: Patch | ConfigOp): string;
|
|
48
|
+
//#endregion
|
|
49
|
+
export { DeletePlan, EntityAddress, Plan, PlanImpact, PlanOp, RenamePlan, describePatch };
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { isConfigRejection } from "./rejection.js";
|
|
2
|
+
import { splitRef } from "./utils/refs.js";
|
|
3
|
+
//#region src/framework/plan.ts
|
|
4
|
+
/**
|
|
5
|
+
* One line for a patch, read off the patch itself: its kind, what it did, and where. The payload
|
|
6
|
+
* already names all three, so a kind declared in userland describes itself with no case here. An
|
|
7
|
+
* operation has the same shape, so a receipt for a batch describes its ops the same way.
|
|
8
|
+
*/
|
|
9
|
+
function describePatch(patch) {
|
|
10
|
+
const { kind, operation } = patch;
|
|
11
|
+
const { path, owner, field, key, to } = patch;
|
|
12
|
+
return [
|
|
13
|
+
kind,
|
|
14
|
+
operation,
|
|
15
|
+
[
|
|
16
|
+
path,
|
|
17
|
+
owner,
|
|
18
|
+
field,
|
|
19
|
+
key
|
|
20
|
+
].filter(Boolean).join(" "),
|
|
21
|
+
to === void 0 ? void 0 : `to ${to}`
|
|
22
|
+
].filter(Boolean).join(" ");
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* The refusal an op would answer with, or `undefined` when it would go through. Anything else the
|
|
26
|
+
* attempt throws is not a refusal and propagates.
|
|
27
|
+
*/
|
|
28
|
+
function blockedBy(attempt) {
|
|
29
|
+
try {
|
|
30
|
+
attempt();
|
|
31
|
+
return;
|
|
32
|
+
} catch (error) {
|
|
33
|
+
if (isConfigRejection(error)) return error.message;
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function addresses(targets) {
|
|
38
|
+
return targets.map((target) => {
|
|
39
|
+
const { kind, qualifiedPath } = splitRef(target);
|
|
40
|
+
return {
|
|
41
|
+
kind,
|
|
42
|
+
path: qualifiedPath
|
|
43
|
+
};
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
function planRename({ config, kind, path, to }) {
|
|
47
|
+
const blocked = blockedBy(() => config.run([{
|
|
48
|
+
kind,
|
|
49
|
+
operation: "rename",
|
|
50
|
+
path,
|
|
51
|
+
to
|
|
52
|
+
}]));
|
|
53
|
+
return {
|
|
54
|
+
from: path,
|
|
55
|
+
to,
|
|
56
|
+
rewrites: addresses(config.dependentsOf(kind, path)),
|
|
57
|
+
...blocked === void 0 ? {} : { blocked }
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function planDelete({ config, kind, path }) {
|
|
61
|
+
const blocked = blockedBy(() => config.run([{
|
|
62
|
+
kind,
|
|
63
|
+
operation: "delete",
|
|
64
|
+
path
|
|
65
|
+
}]));
|
|
66
|
+
return {
|
|
67
|
+
path,
|
|
68
|
+
dependents: addresses(config.dependentsOf(kind, path)),
|
|
69
|
+
...blocked === void 0 ? {} : { blocked }
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//#endregion
|
|
73
|
+
export { blockedBy, describePatch, planDelete, planRename };
|