@nascentdigital/funnel-core 4.4.4
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/dist/app/AppConfig.d.ts +41 -0
- package/dist/app/AppConfig.js +93 -0
- package/dist/app/BrandConfig.d.ts +13 -0
- package/dist/app/BrandConfig.js +2 -0
- package/dist/app/FeaturesConfig.d.ts +6 -0
- package/dist/app/FeaturesConfig.js +2 -0
- package/dist/app/RegionsConfig.d.ts +43 -0
- package/dist/app/RegionsConfig.js +113 -0
- package/dist/app/UIConfig.d.ts +4 -0
- package/dist/app/UIConfig.js +2 -0
- package/dist/app/index.d.ts +5 -0
- package/dist/app/index.js +21 -0
- package/dist/consent/ConsentCategory.d.ts +12 -0
- package/dist/consent/ConsentCategory.js +28 -0
- package/dist/consent/ConsentService.d.ts +15 -0
- package/dist/consent/ConsentService.js +37 -0
- package/dist/consent/index.d.ts +2 -0
- package/dist/consent/index.js +18 -0
- package/dist/errors/IsometricError.d.ts +19 -0
- package/dist/errors/IsometricError.js +30 -0
- package/dist/errors/IsometricErrorModule.d.ts +11 -0
- package/dist/errors/IsometricErrorModule.js +2 -0
- package/dist/errors/IsometricErrorUtils.d.ts +9 -0
- package/dist/errors/IsometricErrorUtils.js +85 -0
- package/dist/errors/SerializedIsometricError.d.ts +10 -0
- package/dist/errors/SerializedIsometricError.js +15 -0
- package/dist/errors/api/ApiError.d.ts +15 -0
- package/dist/errors/api/ApiError.js +23 -0
- package/dist/errors/api/ApiErrors.d.ts +7 -0
- package/dist/errors/api/ApiErrors.js +67 -0
- package/dist/errors/api/ArgumentError.d.ts +7 -0
- package/dist/errors/api/ArgumentError.js +18 -0
- package/dist/errors/api/ConcurrencyError.d.ts +4 -0
- package/dist/errors/api/ConcurrencyError.js +11 -0
- package/dist/errors/api/ConflictError.d.ts +4 -0
- package/dist/errors/api/ConflictError.js +11 -0
- package/dist/errors/api/DependencyError.d.ts +4 -0
- package/dist/errors/api/DependencyError.js +11 -0
- package/dist/errors/api/IllegalStateError.d.ts +4 -0
- package/dist/errors/api/IllegalStateError.js +11 -0
- package/dist/errors/api/InvalidOperationError.d.ts +4 -0
- package/dist/errors/api/InvalidOperationError.js +11 -0
- package/dist/errors/api/NotAuthenticatedError.d.ts +4 -0
- package/dist/errors/api/NotAuthenticatedError.js +11 -0
- package/dist/errors/api/NotAuthorizedError.d.ts +4 -0
- package/dist/errors/api/NotAuthorizedError.js +11 -0
- package/dist/errors/api/NotAvailableError.d.ts +4 -0
- package/dist/errors/api/NotAvailableError.js +11 -0
- package/dist/errors/api/NotFoundError.d.ts +4 -0
- package/dist/errors/api/NotFoundError.js +11 -0
- package/dist/errors/api/NotImplementedError.d.ts +4 -0
- package/dist/errors/api/NotImplementedError.js +11 -0
- package/dist/errors/api/OfflineError.d.ts +4 -0
- package/dist/errors/api/OfflineError.js +11 -0
- package/dist/errors/api/RangeError.d.ts +4 -0
- package/dist/errors/api/RangeError.js +11 -0
- package/dist/errors/api/ServerError.d.ts +4 -0
- package/dist/errors/api/ServerError.js +11 -0
- package/dist/errors/api/TimeoutError.d.ts +4 -0
- package/dist/errors/api/TimeoutError.js +11 -0
- package/dist/errors/api/index.d.ts +16 -0
- package/dist/errors/api/index.js +32 -0
- package/dist/errors/index.d.ts +5 -0
- package/dist/errors/index.js +26 -0
- package/dist/forms/FormModel.d.ts +47 -0
- package/dist/forms/FormModel.js +149 -0
- package/dist/forms/Forms.d.ts +15 -0
- package/dist/forms/Forms.js +35 -0
- package/dist/forms/IFormService.d.ts +6 -0
- package/dist/forms/IFormService.js +2 -0
- package/dist/forms/TranslateSchema.d.ts +8 -0
- package/dist/forms/TranslateSchema.js +2 -0
- package/dist/forms/index.d.ts +4 -0
- package/dist/forms/index.js +20 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +49 -0
- package/dist/regionalization/Country.d.ts +266 -0
- package/dist/regionalization/Country.js +338 -0
- package/dist/regionalization/Language.d.ts +199 -0
- package/dist/regionalization/Language.js +237 -0
- package/dist/regionalization/Locale.d.ts +28 -0
- package/dist/regionalization/Locale.js +49 -0
- package/dist/regionalization/Localized.d.ts +10 -0
- package/dist/regionalization/Localized.js +36 -0
- package/dist/regionalization/LocalizedCopy.d.ts +9 -0
- package/dist/regionalization/LocalizedCopy.js +26 -0
- package/dist/regionalization/Regionalization.d.ts +50 -0
- package/dist/regionalization/Regionalization.js +260 -0
- package/dist/regionalization/Regions.d.ts +2 -0
- package/dist/regionalization/Regions.js +2 -0
- package/dist/regionalization/index.d.ts +7 -0
- package/dist/regionalization/index.js +23 -0
- package/dist/schema/Asset.d.ts +23 -0
- package/dist/schema/Asset.js +36 -0
- package/dist/schema/AssetScope.d.ts +75 -0
- package/dist/schema/AssetScope.js +146 -0
- package/dist/schema/Block.d.ts +105 -0
- package/dist/schema/Block.js +122 -0
- package/dist/schema/ChangeSet.d.ts +108 -0
- package/dist/schema/ChangeSet.js +187 -0
- package/dist/schema/Collection.d.ts +197 -0
- package/dist/schema/Collection.js +165 -0
- package/dist/schema/CollectionModel.d.ts +30 -0
- package/dist/schema/CollectionModel.js +383 -0
- package/dist/schema/CollectionSnapshot.d.ts +11 -0
- package/dist/schema/CollectionSnapshot.js +12 -0
- package/dist/schema/Fields.d.ts +31 -0
- package/dist/schema/Fields.js +21 -0
- package/dist/schema/Form.d.ts +31 -0
- package/dist/schema/Form.js +23 -0
- package/dist/schema/LinkedCollectionModel.d.ts +9 -0
- package/dist/schema/LinkedCollectionModel.js +19 -0
- package/dist/schema/LinkedData.d.ts +44 -0
- package/dist/schema/LinkedData.js +288 -0
- package/dist/schema/LinkedPageModel.d.ts +11 -0
- package/dist/schema/LinkedPageModel.js +26 -0
- package/dist/schema/Optional.d.ts +23 -0
- package/dist/schema/Optional.js +34 -0
- package/dist/schema/Page.d.ts +299 -0
- package/dist/schema/Page.js +244 -0
- package/dist/schema/PageModel.d.ts +58 -0
- package/dist/schema/PageModel.js +881 -0
- package/dist/schema/PageQuery.d.ts +60 -0
- package/dist/schema/PageQuery.js +116 -0
- package/dist/schema/PageRoute.d.ts +7 -0
- package/dist/schema/PageRoute.js +48 -0
- package/dist/schema/PageSnapshot.d.ts +11 -0
- package/dist/schema/PageSnapshot.js +12 -0
- package/dist/schema/Section.d.ts +71 -0
- package/dist/schema/Section.js +35 -0
- package/dist/schema/Seo.d.ts +13 -0
- package/dist/schema/Seo.js +25 -0
- package/dist/schema/Site.d.ts +40 -0
- package/dist/schema/Site.js +87 -0
- package/dist/schema/SiteModel.d.ts +5 -0
- package/dist/schema/SiteModel.js +10 -0
- package/dist/schema/Tag.d.ts +28 -0
- package/dist/schema/Tag.js +59 -0
- package/dist/schema/TagGroup.d.ts +26 -0
- package/dist/schema/TagGroup.js +64 -0
- package/dist/schema/field/Field.d.ts +179 -0
- package/dist/schema/field/Field.js +309 -0
- package/dist/schema/field/base/AssetField.d.ts +148 -0
- package/dist/schema/field/base/AssetField.js +206 -0
- package/dist/schema/field/base/BooleanField.d.ts +21 -0
- package/dist/schema/field/base/BooleanField.js +38 -0
- package/dist/schema/field/base/CollectionField.d.ts +34 -0
- package/dist/schema/field/base/CollectionField.js +85 -0
- package/dist/schema/field/base/DateField.d.ts +21 -0
- package/dist/schema/field/base/DateField.js +37 -0
- package/dist/schema/field/base/DynamicPagesField.d.ts +36 -0
- package/dist/schema/field/base/DynamicPagesField.js +50 -0
- package/dist/schema/field/base/EmbeddedVideoField.d.ts +45 -0
- package/dist/schema/field/base/EmbeddedVideoField.js +176 -0
- package/dist/schema/field/base/EnumField.d.ts +40 -0
- package/dist/schema/field/base/EnumField.js +131 -0
- package/dist/schema/field/base/FormField.d.ts +25 -0
- package/dist/schema/field/base/FormField.js +48 -0
- package/dist/schema/field/base/LinkField.d.ts +103 -0
- package/dist/schema/field/base/LinkField.js +201 -0
- package/dist/schema/field/base/PageField.d.ts +46 -0
- package/dist/schema/field/base/PageField.js +83 -0
- package/dist/schema/field/base/RichTextField.d.ts +71 -0
- package/dist/schema/field/base/RichTextField.js +196 -0
- package/dist/schema/field/base/TextField.d.ts +33 -0
- package/dist/schema/field/base/TextField.js +86 -0
- package/dist/schema/field/base/TimestampField.d.ts +25 -0
- package/dist/schema/field/base/TimestampField.js +41 -0
- package/dist/schema/field/base/index.d.ts +13 -0
- package/dist/schema/field/base/index.js +29 -0
- package/dist/schema/field/composite/ListField.d.ts +47 -0
- package/dist/schema/field/composite/ListField.js +107 -0
- package/dist/schema/field/composite/ObjectField.d.ts +56 -0
- package/dist/schema/field/composite/ObjectField.js +19 -0
- package/dist/schema/field/composite/index.d.ts +2 -0
- package/dist/schema/field/composite/index.js +18 -0
- package/dist/schema/field/index.d.ts +3 -0
- package/dist/schema/field/index.js +19 -0
- package/dist/schema/index.d.ts +25 -0
- package/dist/schema/index.js +41 -0
- package/dist/services/EventBus.d.ts +17 -0
- package/dist/services/EventBus.js +37 -0
- package/dist/services/humanVerification/IHumanVerification.d.ts +8 -0
- package/dist/services/humanVerification/IHumanVerification.js +2 -0
- package/dist/services/humanVerification/index.d.ts +1 -0
- package/dist/services/humanVerification/index.js +17 -0
- package/dist/services/index.d.ts +3 -0
- package/dist/services/index.js +19 -0
- package/dist/services/leadGen/Contact.d.ts +40 -0
- package/dist/services/leadGen/Contact.js +38 -0
- package/dist/services/leadGen/ILeadGen.d.ts +16 -0
- package/dist/services/leadGen/ILeadGen.js +2 -0
- package/dist/services/leadGen/index.d.ts +2 -0
- package/dist/services/leadGen/index.js +18 -0
- package/dist/types/BoxedValue.d.ts +3 -0
- package/dist/types/BoxedValue.js +2 -0
- package/dist/types/Callback.d.ts +9 -0
- package/dist/types/Callback.js +2 -0
- package/dist/types/DateString.d.ts +35 -0
- package/dist/types/DateString.js +172 -0
- package/dist/types/FilterConditionally.d.ts +3 -0
- package/dist/types/FilterConditionally.js +2 -0
- package/dist/types/MaybeConditionalValue.d.ts +8 -0
- package/dist/types/MaybeConditionalValue.js +12 -0
- package/dist/types/Ordinal.d.ts +17 -0
- package/dist/types/Ordinal.js +38 -0
- package/dist/types/OverridableStringUnion.d.ts +2 -0
- package/dist/types/OverridableStringUnion.js +2 -0
- package/dist/types/PartialBy.d.ts +1 -0
- package/dist/types/PartialBy.js +2 -0
- package/dist/types/PickData.d.ts +6 -0
- package/dist/types/PickData.js +2 -0
- package/dist/types/Provider.d.ts +4 -0
- package/dist/types/Provider.js +2 -0
- package/dist/types/RequiredBy.d.ts +1 -0
- package/dist/types/RequiredBy.js +2 -0
- package/dist/types/Result.d.ts +16 -0
- package/dist/types/Result.js +2 -0
- package/dist/types/Timestamp.d.ts +17 -0
- package/dist/types/Timestamp.js +57 -0
- package/dist/types/Transform.d.ts +4 -0
- package/dist/types/Transform.js +2 -0
- package/dist/types/index.d.ts +14 -0
- package/dist/types/index.js +30 -0
- package/dist/ui/Accessible.d.ts +5 -0
- package/dist/ui/Accessible.js +15 -0
- package/dist/ui/BlockThemes.d.ts +19 -0
- package/dist/ui/BlockThemes.js +29 -0
- package/dist/ui/ColorMode.d.ts +12 -0
- package/dist/ui/ColorMode.js +49 -0
- package/dist/ui/File.d.ts +43 -0
- package/dist/ui/File.js +55 -0
- package/dist/ui/FileType.d.ts +8 -0
- package/dist/ui/FileType.js +48 -0
- package/dist/ui/ImageSource.d.ts +12 -0
- package/dist/ui/ImageSource.js +48 -0
- package/dist/ui/MimeType.d.ts +28 -0
- package/dist/ui/MimeType.js +110 -0
- package/dist/ui/Placement.d.ts +21 -0
- package/dist/ui/Placement.js +135 -0
- package/dist/ui/Position.d.ts +6 -0
- package/dist/ui/Position.js +42 -0
- package/dist/ui/Selector.d.ts +6 -0
- package/dist/ui/Selector.js +23 -0
- package/dist/ui/SemanticColor.d.ts +8 -0
- package/dist/ui/SemanticColor.js +237 -0
- package/dist/ui/Visual.d.ts +24 -0
- package/dist/ui/Visual.js +66 -0
- package/dist/ui/block-layout/BlockLayout.d.ts +99 -0
- package/dist/ui/block-layout/BlockLayout.js +286 -0
- package/dist/ui/block-layout/index.d.ts +1 -0
- package/dist/ui/block-layout/index.js +17 -0
- package/dist/ui/browser/BlurHasher.d.ts +13 -0
- package/dist/ui/browser/BlurHasher.js +76 -0
- package/dist/ui/browser/Browser.d.ts +107 -0
- package/dist/ui/browser/Browser.js +313 -0
- package/dist/ui/browser/ImageProxy.d.ts +30 -0
- package/dist/ui/browser/ImageProxy.js +132 -0
- package/dist/ui/browser/InputEvent.d.ts +13 -0
- package/dist/ui/browser/InputEvent.js +2 -0
- package/dist/ui/browser/SVGProxy.d.ts +9 -0
- package/dist/ui/browser/SVGProxy.js +59 -0
- package/dist/ui/browser/VideoProxy.d.ts +42 -0
- package/dist/ui/browser/VideoProxy.js +235 -0
- package/dist/ui/browser/index.d.ts +6 -0
- package/dist/ui/browser/index.js +22 -0
- package/dist/ui/fields/Field.d.ts +80 -0
- package/dist/ui/fields/Field.js +298 -0
- package/dist/ui/fields/FieldList.d.ts +80 -0
- package/dist/ui/fields/FieldList.js +421 -0
- package/dist/ui/fields/FieldListValidator.d.ts +9 -0
- package/dist/ui/fields/FieldListValidator.js +37 -0
- package/dist/ui/fields/FieldModel.d.ts +15 -0
- package/dist/ui/fields/FieldModel.js +28 -0
- package/dist/ui/fields/FieldSerializer.d.ts +13 -0
- package/dist/ui/fields/FieldSerializer.js +71 -0
- package/dist/ui/fields/FieldValidator.d.ts +19 -0
- package/dist/ui/fields/FieldValidator.js +98 -0
- package/dist/ui/fields/ObjectField.d.ts +75 -0
- package/dist/ui/fields/ObjectField.js +288 -0
- package/dist/ui/fields/errors.json +44 -0
- package/dist/ui/fields/index.d.ts +7 -0
- package/dist/ui/fields/index.js +23 -0
- package/dist/ui/fields/validators/AssetValidator.d.ts +9 -0
- package/dist/ui/fields/validators/AssetValidator.js +25 -0
- package/dist/ui/fields/validators/DateValidator.d.ts +9 -0
- package/dist/ui/fields/validators/DateValidator.js +41 -0
- package/dist/ui/fields/validators/EnumValidator.d.ts +10 -0
- package/dist/ui/fields/validators/EnumValidator.js +77 -0
- package/dist/ui/fields/validators/GenericValidator.d.ts +6 -0
- package/dist/ui/fields/validators/GenericValidator.js +22 -0
- package/dist/ui/fields/validators/LinkValidator.d.ts +9 -0
- package/dist/ui/fields/validators/LinkValidator.js +146 -0
- package/dist/ui/fields/validators/RichTextValidator.d.ts +6 -0
- package/dist/ui/fields/validators/RichTextValidator.js +35 -0
- package/dist/ui/fields/validators/TextValidator.d.ts +10 -0
- package/dist/ui/fields/validators/TextValidator.js +138 -0
- package/dist/ui/fields/validators/TimestampValidator.d.ts +9 -0
- package/dist/ui/fields/validators/TimestampValidator.js +41 -0
- package/dist/ui/fields/validators/ValidatorHelper.d.ts +23 -0
- package/dist/ui/fields/validators/ValidatorHelper.js +55 -0
- package/dist/ui/fields/validators/index.d.ts +8 -0
- package/dist/ui/fields/validators/index.js +24 -0
- package/dist/ui/geometry/AspectRatio.d.ts +27 -0
- package/dist/ui/geometry/AspectRatio.js +77 -0
- package/dist/ui/geometry/Bounds.d.ts +4 -0
- package/dist/ui/geometry/Bounds.js +11 -0
- package/dist/ui/geometry/Frame.d.ts +3 -0
- package/dist/ui/geometry/Frame.js +2 -0
- package/dist/ui/geometry/Insets.d.ts +14 -0
- package/dist/ui/geometry/Insets.js +14 -0
- package/dist/ui/geometry/PixelSize.d.ts +1 -0
- package/dist/ui/geometry/PixelSize.js +2 -0
- package/dist/ui/geometry/Point.d.ts +7 -0
- package/dist/ui/geometry/Point.js +15 -0
- package/dist/ui/geometry/Rect.d.ts +19 -0
- package/dist/ui/geometry/Rect.js +68 -0
- package/dist/ui/geometry/ScreenSize.d.ts +1 -0
- package/dist/ui/geometry/ScreenSize.js +2 -0
- package/dist/ui/geometry/Size.d.ts +7 -0
- package/dist/ui/geometry/Size.js +9 -0
- package/dist/ui/geometry/index.d.ts +9 -0
- package/dist/ui/geometry/index.js +25 -0
- package/dist/ui/index.d.ts +18 -0
- package/dist/ui/index.js +34 -0
- package/dist/ui/responsive/Breakpoint.d.ts +8 -0
- package/dist/ui/responsive/Breakpoint.js +24 -0
- package/dist/ui/responsive/BreakpointObserver.d.ts +16 -0
- package/dist/ui/responsive/BreakpointObserver.js +104 -0
- package/dist/ui/responsive/Breakpoints.d.ts +5 -0
- package/dist/ui/responsive/Breakpoints.js +15 -0
- package/dist/ui/responsive/ResponsiveValue.d.ts +7 -0
- package/dist/ui/responsive/ResponsiveValue.js +26 -0
- package/dist/ui/responsive/index.d.ts +4 -0
- package/dist/ui/responsive/index.js +20 -0
- package/dist/ui/richtext/LexicalUtils.d.ts +31 -0
- package/dist/ui/richtext/LexicalUtils.js +314 -0
- package/dist/ui/richtext/StyledTextNode.d.ts +33 -0
- package/dist/ui/richtext/StyledTextNode.js +101 -0
- package/dist/ui/richtext/index.d.ts +2 -0
- package/dist/ui/richtext/index.js +18 -0
- package/dist/utils/ArrayUtils.d.ts +17 -0
- package/dist/utils/ArrayUtils.js +66 -0
- package/dist/utils/ByteSize.d.ts +19 -0
- package/dist/utils/ByteSize.js +33 -0
- package/dist/utils/DateUtils.d.ts +15 -0
- package/dist/utils/DateUtils.js +100 -0
- package/dist/utils/Deferral.d.ts +28 -0
- package/dist/utils/Deferral.js +107 -0
- package/dist/utils/Duration.d.ts +7 -0
- package/dist/utils/Duration.js +35 -0
- package/dist/utils/Fn.d.ts +14 -0
- package/dist/utils/Fn.js +52 -0
- package/dist/utils/ObjectUtils.d.ts +89 -0
- package/dist/utils/ObjectUtils.js +159 -0
- package/dist/utils/Random.d.ts +15 -0
- package/dist/utils/Random.js +72 -0
- package/dist/utils/StringUtils.d.ts +10 -0
- package/dist/utils/StringUtils.js +51 -0
- package/dist/utils/UrlUtils.d.ts +22 -0
- package/dist/utils/UrlUtils.js +119 -0
- package/dist/utils/Value.d.ts +23 -0
- package/dist/utils/Value.js +122 -0
- package/dist/utils/index.d.ts +12 -0
- package/dist/utils/index.js +28 -0
- package/dist/utils/isDefined.d.ts +1 -0
- package/dist/utils/isDefined.js +6 -0
- package/package.json +64 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { Transform } from '../types';
|
|
2
|
+
import { BlockLayout } from '../ui/block-layout';
|
|
3
|
+
import { Field } from './field';
|
|
4
|
+
import { Fields } from './Fields';
|
|
5
|
+
import { Optional } from './Optional';
|
|
6
|
+
export declare class Block<TId extends string = string, TFields extends Fields = any, TConfig extends Block.Config = any> {
|
|
7
|
+
readonly type = "block";
|
|
8
|
+
readonly id: TId;
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly hint?: string;
|
|
11
|
+
readonly required: boolean;
|
|
12
|
+
readonly version: number;
|
|
13
|
+
readonly fields: TFields;
|
|
14
|
+
readonly editableFields: Fields.UnwrapOptional<TFields>;
|
|
15
|
+
readonly config: Block.Config.UnwrapOptional<TConfig>;
|
|
16
|
+
readonly getConfig?: Block.GetConfig<TConfig, TFields>;
|
|
17
|
+
readonly getLayout?: Block.GetLayout<TConfig, TFields>;
|
|
18
|
+
private constructor();
|
|
19
|
+
optional(): Optional<Block<TId, TFields, TConfig>>;
|
|
20
|
+
unwrap(): this;
|
|
21
|
+
modify(args: Block.ModifyArgs<TId, TFields, TConfig>): Block<TId, TFields, TConfig>;
|
|
22
|
+
rename(name: string): Block<TId, TFields, TConfig>;
|
|
23
|
+
hide(...keys: ReadonlyArray<Fields.OptionalKeys<TFields>>): Block<TId, TFields, TConfig>;
|
|
24
|
+
override(override: Fields.Override<TFields>): Block<TId, TFields, TConfig>;
|
|
25
|
+
extend<TAdditionalFields extends Fields>(fields: TAdditionalFields): Block<TId, TFields & TAdditionalFields, TConfig>;
|
|
26
|
+
static create<TId extends string, TFields extends Fields, TConfig extends Block.Config>(args: Block.FactoryArgs<TId, TFields, TConfig>): Block<TId, TFields, TConfig>;
|
|
27
|
+
}
|
|
28
|
+
export declare namespace Block {
|
|
29
|
+
type GetConfig<TConfig extends Config = Config, TFields extends Fields = Fields> = Transform<GetConfig.Args<TConfig, TFields>, GetConfig.Result<TConfig>>;
|
|
30
|
+
namespace GetConfig {
|
|
31
|
+
type Args<TConfig extends Config, TFields extends Fields> = {
|
|
32
|
+
config: Partial<Data.ForConfig<Config.UnwrapOptional<TConfig>>>;
|
|
33
|
+
configSchema: Config.UnwrapOptional<TConfig>;
|
|
34
|
+
fields: Partial<Data.ForFields<TFields>> | Partial<LinkedData.ForFields<TFields>>;
|
|
35
|
+
};
|
|
36
|
+
type Result<TConfig extends Config> = {
|
|
37
|
+
updatedConfig?: Partial<Data.ForConfig<Config.UnwrapOptional<TConfig>>>;
|
|
38
|
+
defaultConfig?: Partial<Data.ForConfig<Config.UnwrapOptional<TConfig>>>;
|
|
39
|
+
updatedConfigSchema?: Partial<Config.UnwrapOptional<TConfig>>;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
type GetLayout<TConfig extends Config = Config, TFields extends Fields = Fields> = Transform<GetLayout.Args<TConfig, TFields>, BlockLayout>;
|
|
43
|
+
namespace GetLayout {
|
|
44
|
+
type Args<TConfig extends Config, TFields extends Fields> = {
|
|
45
|
+
config: Partial<Data.ForConfig<Config.UnwrapOptional<TConfig>>> | Partial<LinkedData.ForConfig<Config.UnwrapOptional<TConfig>>>;
|
|
46
|
+
fields: Partial<Data.ForFields<TFields>> | Partial<LinkedData.ForFields<TFields>>;
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
type Config = Record<string, Optional.Maybe<Field.Type.Simple.Configuration>>;
|
|
50
|
+
namespace Config {
|
|
51
|
+
type UnwrapOptional<TConfig extends Config> = {
|
|
52
|
+
[key in keyof TConfig]: Optional.InnerType<TConfig[key]>;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
type Data<T extends Block = Block> = {
|
|
56
|
+
type: 'block';
|
|
57
|
+
id: T['id'];
|
|
58
|
+
version: number;
|
|
59
|
+
config: Data.ForConfig<T['config']>;
|
|
60
|
+
fields: Data.ForFields<T['fields']>;
|
|
61
|
+
};
|
|
62
|
+
namespace Data {
|
|
63
|
+
type ForFields<T extends Fields = Fields> = {
|
|
64
|
+
[key in keyof T as T[key] extends Optional<Field.Type> ? never : key]: Field.Data.ForOptionalType<T[key]>;
|
|
65
|
+
} & {
|
|
66
|
+
[key in keyof T as T[key] extends Optional<Field.Type> ? key : never]?: Field.Data.ForOptionalType<T[key]>;
|
|
67
|
+
};
|
|
68
|
+
type ForOptional<T extends Optional.Maybe<Block> = Optional.Maybe<Block>> = T extends Optional<Block> ? Data<Optional.InnerType<T>> | undefined : T extends Block ? Data<T> : never;
|
|
69
|
+
type ForConfig<T extends Config = Config> = {
|
|
70
|
+
name?: string;
|
|
71
|
+
} & {
|
|
72
|
+
[key in keyof T]: Field.Data<Optional.InnerType<T[key]>>;
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
type LinkedData<T extends Block = Block> = Omit<Data<T>, 'fields'> & {
|
|
76
|
+
fields: LinkedData.ForFields<T['fields']>;
|
|
77
|
+
};
|
|
78
|
+
namespace LinkedData {
|
|
79
|
+
type ForFields<T extends Fields = Fields> = {
|
|
80
|
+
[key in keyof T as T[key] extends Optional<Field.Type> ? never : key]: Field.LinkedData.ForOptionalType<T[key]>;
|
|
81
|
+
} & {
|
|
82
|
+
[key in keyof T as T[key] extends Optional<Field.Type> ? key : never]?: Field.LinkedData.ForOptionalType<T[key]>;
|
|
83
|
+
};
|
|
84
|
+
type ForOptional<T extends Optional.Maybe<Block> = Optional.Maybe<Block>> = T extends Optional<Block> ? LinkedData<Optional.InnerType<T>> | undefined : T extends Block ? LinkedData<T> : never;
|
|
85
|
+
type ForConfig<T extends Config = Config> = {
|
|
86
|
+
name?: string;
|
|
87
|
+
} & {
|
|
88
|
+
[key in keyof T]: Field.LinkedData<Optional.InnerType<T[key]>>;
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
type ConstructorArgs<TId extends string, TFields extends Fields, TConfig extends Config = Config> = {
|
|
92
|
+
id: TId;
|
|
93
|
+
name: string;
|
|
94
|
+
hint?: string;
|
|
95
|
+
required?: boolean;
|
|
96
|
+
version: number;
|
|
97
|
+
fields: TFields;
|
|
98
|
+
editableFields: Fields.UnwrapOptional<TFields>;
|
|
99
|
+
config?: TConfig;
|
|
100
|
+
getConfig?: GetConfig<TConfig, TFields>;
|
|
101
|
+
getLayout?: GetLayout<TConfig, TFields>;
|
|
102
|
+
};
|
|
103
|
+
type ModifyArgs<TId extends string, TFields extends Fields, TConfig extends Config> = Partial<Pick<ConstructorArgs<TId, TFields, TConfig>, 'name' | 'hint' | 'required'>>;
|
|
104
|
+
type FactoryArgs<TId extends string, TFields extends Fields, TConfig extends Config = Config> = Omit<ConstructorArgs<TId, TFields, TConfig>, 'editableFields' | 'required'>;
|
|
105
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Block = void 0;
|
|
4
|
+
const errors_1 = require("../errors");
|
|
5
|
+
const Fields_1 = require("./Fields");
|
|
6
|
+
const Optional_1 = require("./Optional");
|
|
7
|
+
// class
|
|
8
|
+
class Block {
|
|
9
|
+
constructor(args) {
|
|
10
|
+
var _a;
|
|
11
|
+
this.type = 'block';
|
|
12
|
+
// fail if name key/id is included in config
|
|
13
|
+
if (args.config && 'name' in args.config) {
|
|
14
|
+
throw new errors_1.ArgumentError('Block config schemas reserve the "name" key for the built-in name property.');
|
|
15
|
+
}
|
|
16
|
+
// initialize instance variables
|
|
17
|
+
this.id = args.id;
|
|
18
|
+
this.name = args.name;
|
|
19
|
+
this.hint = args.hint;
|
|
20
|
+
this.required = (_a = args.required) !== null && _a !== void 0 ? _a : true;
|
|
21
|
+
this.version = args.version;
|
|
22
|
+
this.fields = args.fields;
|
|
23
|
+
this.editableFields = args.editableFields;
|
|
24
|
+
this.config = args.config
|
|
25
|
+
? Object.entries(args.config).reduce((fields, [fieldId, field]) => {
|
|
26
|
+
fields[fieldId] = field.unwrap();
|
|
27
|
+
return fields;
|
|
28
|
+
}, {})
|
|
29
|
+
: {};
|
|
30
|
+
this.getConfig = args.getConfig;
|
|
31
|
+
this.getLayout = args.getLayout;
|
|
32
|
+
}
|
|
33
|
+
optional() {
|
|
34
|
+
return new Optional_1.Optional(this);
|
|
35
|
+
}
|
|
36
|
+
unwrap() {
|
|
37
|
+
return this;
|
|
38
|
+
}
|
|
39
|
+
modify(args) {
|
|
40
|
+
// create new block (re-map required fields)
|
|
41
|
+
return new Block(Object.assign({ id: this.id, name: this.name, hint: this.hint, required: this.required, version: this.version, fields: this.fields, editableFields: this.editableFields, config: this.config, getConfig: this.getConfig, getLayout: this.getLayout }, args));
|
|
42
|
+
}
|
|
43
|
+
rename(name) {
|
|
44
|
+
return this.modify({ name });
|
|
45
|
+
}
|
|
46
|
+
hide(...keys) {
|
|
47
|
+
// create new block with removed fields
|
|
48
|
+
return new Block({
|
|
49
|
+
id: this.id,
|
|
50
|
+
name: this.name,
|
|
51
|
+
hint: this.hint,
|
|
52
|
+
version: this.version,
|
|
53
|
+
required: this.required,
|
|
54
|
+
fields: this.fields,
|
|
55
|
+
editableFields: keys.reduce((fields, key) => {
|
|
56
|
+
// handle field if not already pruned
|
|
57
|
+
const field = fields[key];
|
|
58
|
+
if (field) {
|
|
59
|
+
// throw if field is required
|
|
60
|
+
if (field.required) {
|
|
61
|
+
throw new errors_1.InvalidOperationError(`Cannot hide required field: ${String(key)} in block: ${this.name}`);
|
|
62
|
+
}
|
|
63
|
+
// otherwise delete field if not already pruned
|
|
64
|
+
else {
|
|
65
|
+
delete fields[key];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// keep reducing
|
|
69
|
+
return fields;
|
|
70
|
+
}, Object.assign({}, this.editableFields)),
|
|
71
|
+
config: this.config,
|
|
72
|
+
getConfig: this.getConfig,
|
|
73
|
+
getLayout: this.getLayout
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
override(override) {
|
|
77
|
+
// get overrides from function
|
|
78
|
+
const overrides = override(this.fields);
|
|
79
|
+
// create new block with persisted field spec and overridden fields in unwrapped fields
|
|
80
|
+
return new Block({
|
|
81
|
+
id: this.id,
|
|
82
|
+
name: this.name,
|
|
83
|
+
hint: this.hint,
|
|
84
|
+
version: this.version,
|
|
85
|
+
required: this.required,
|
|
86
|
+
fields: this.fields,
|
|
87
|
+
editableFields: Object.assign(Object.assign({}, this.editableFields), overrides),
|
|
88
|
+
config: this.config,
|
|
89
|
+
getConfig: this.getConfig,
|
|
90
|
+
getLayout: this.getLayout
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
extend(fields) {
|
|
94
|
+
return new Block({
|
|
95
|
+
id: this.id,
|
|
96
|
+
name: this.name,
|
|
97
|
+
hint: this.hint,
|
|
98
|
+
required: this.required,
|
|
99
|
+
version: this.version,
|
|
100
|
+
fields: Object.assign(Object.assign({}, this.fields), fields),
|
|
101
|
+
editableFields: Object.assign(Object.assign({}, this.editableFields), Fields_1.Fields.unwrap(fields)),
|
|
102
|
+
config: this.config,
|
|
103
|
+
getConfig: this.getConfig,
|
|
104
|
+
getLayout: this.getLayout
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
static create(args) {
|
|
108
|
+
// create new block with both field spec and unwrapped fields
|
|
109
|
+
return new Block({
|
|
110
|
+
id: args.id,
|
|
111
|
+
name: args.name,
|
|
112
|
+
hint: args.hint,
|
|
113
|
+
version: args.version,
|
|
114
|
+
fields: args.fields,
|
|
115
|
+
editableFields: Fields_1.Fields.unwrap(args.fields),
|
|
116
|
+
config: args.config,
|
|
117
|
+
getConfig: args.getConfig,
|
|
118
|
+
getLayout: args.getLayout
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
exports.Block = Block;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { StringKeyOf, Tagged } from 'type-fest';
|
|
2
|
+
import { Language } from '../regionalization';
|
|
3
|
+
import { PartialBy } from '../types';
|
|
4
|
+
import { MimeType } from '../ui';
|
|
5
|
+
import type { Asset } from './Asset';
|
|
6
|
+
import type { Collection } from './Collection';
|
|
7
|
+
import type { Page } from './Page';
|
|
8
|
+
export declare class ChangeSet {
|
|
9
|
+
readonly brand: string;
|
|
10
|
+
readonly id: ChangeSet.Id;
|
|
11
|
+
readonly groupId: ChangeSet.GroupId;
|
|
12
|
+
private _name;
|
|
13
|
+
private _changes;
|
|
14
|
+
readonly createdOn: number;
|
|
15
|
+
readonly updatedOn: number;
|
|
16
|
+
private _publishedOn?;
|
|
17
|
+
private _modified;
|
|
18
|
+
constructor(args: ChangeSet.ConstructorArgs);
|
|
19
|
+
get isDefault(): boolean;
|
|
20
|
+
get name(): string;
|
|
21
|
+
set name(name: string);
|
|
22
|
+
get status(): ChangeSet.Status;
|
|
23
|
+
get errors(): boolean;
|
|
24
|
+
get publishedOn(): number | undefined;
|
|
25
|
+
set publishedOn(publishedOn: number | undefined);
|
|
26
|
+
get modified(): boolean;
|
|
27
|
+
get changes(): ReadonlyArray<ChangeSet.Change>;
|
|
28
|
+
get pageChanges(): ChangeSet.Change.ForPage[];
|
|
29
|
+
addPageChange(userId: string, change: Omit<ChangeSet.Change.ForPage, 'attribution'>): void;
|
|
30
|
+
deletePageChange(id: Page.Id): void;
|
|
31
|
+
get collectionChanges(): ChangeSet.Change.ForCollection[];
|
|
32
|
+
addCollectionChange(userId: string, change: Omit<ChangeSet.Change.ForCollection, 'attribution'>): void;
|
|
33
|
+
deleteCollectionChange(id: Collection.Id): void;
|
|
34
|
+
get assetChanges(): ChangeSet.Change.ForAsset[];
|
|
35
|
+
addAssetChange(userId: string, change: Omit<ChangeSet.Change.ForAsset, 'attribution'>): void;
|
|
36
|
+
deleteAssetChange(id: Asset.Id): void;
|
|
37
|
+
toData(): ChangeSet.Data;
|
|
38
|
+
}
|
|
39
|
+
export declare namespace ChangeSet {
|
|
40
|
+
type Id = Tagged<string, 'ChangeSet.Id'>;
|
|
41
|
+
type GroupId = Tagged<string, 'ChangeSet.GroupId'> | GroupId.Global;
|
|
42
|
+
namespace GroupId {
|
|
43
|
+
const global: "__global";
|
|
44
|
+
type Global = typeof global;
|
|
45
|
+
}
|
|
46
|
+
type Status = 'commited' | 'ready' | 'incomplete' | 'errors';
|
|
47
|
+
type Change = Change.ForPage | Change.ForCollection | Change.ForAsset;
|
|
48
|
+
namespace Change {
|
|
49
|
+
export type Id = Change['id'];
|
|
50
|
+
export type Type = 'create' | 'update' | 'unpublish' | 'delete';
|
|
51
|
+
type Base = {
|
|
52
|
+
type: Type;
|
|
53
|
+
name: string;
|
|
54
|
+
errors: boolean;
|
|
55
|
+
attribution: Attribution[];
|
|
56
|
+
};
|
|
57
|
+
export type Attribution = {
|
|
58
|
+
userId: string;
|
|
59
|
+
updatedOn: number;
|
|
60
|
+
};
|
|
61
|
+
export type ForPage = Base & {
|
|
62
|
+
__type: 'page';
|
|
63
|
+
id: Page.Id;
|
|
64
|
+
schema: Page.Type;
|
|
65
|
+
region: string;
|
|
66
|
+
language: Language;
|
|
67
|
+
slug?: string;
|
|
68
|
+
};
|
|
69
|
+
export type ForCollection = Base & {
|
|
70
|
+
__type: 'collection';
|
|
71
|
+
id: Collection.Id;
|
|
72
|
+
groupId: Collection.GroupId;
|
|
73
|
+
schema: Collection.Type;
|
|
74
|
+
language: Language;
|
|
75
|
+
};
|
|
76
|
+
export type ForAsset = Base & {
|
|
77
|
+
__type: 'asset';
|
|
78
|
+
id: Asset.Id;
|
|
79
|
+
mimeType: MimeType;
|
|
80
|
+
};
|
|
81
|
+
export {};
|
|
82
|
+
}
|
|
83
|
+
type Data = {
|
|
84
|
+
brand: string;
|
|
85
|
+
id: Id;
|
|
86
|
+
groupId: GroupId;
|
|
87
|
+
name: string;
|
|
88
|
+
changes: Change[];
|
|
89
|
+
errors: boolean;
|
|
90
|
+
createdOn: number;
|
|
91
|
+
updatedOn: number;
|
|
92
|
+
publishedOn?: number;
|
|
93
|
+
};
|
|
94
|
+
namespace Data {
|
|
95
|
+
type Prop = StringKeyOf<Data>;
|
|
96
|
+
const props: ReadonlyArray<Prop>;
|
|
97
|
+
type New = PartialBy<Omit<Data, 'id' | 'createdOn' | 'updatedOn' | 'publishedOn'>, 'name' | 'errors' | 'changes'>;
|
|
98
|
+
namespace New {
|
|
99
|
+
function filter(data: Data | New): data is New;
|
|
100
|
+
}
|
|
101
|
+
type Grouped = {
|
|
102
|
+
groupId: GroupId;
|
|
103
|
+
latest: Data;
|
|
104
|
+
total: number;
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
type ConstructorArgs = Omit<Data, 'errors'>;
|
|
108
|
+
}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.ChangeSet = void 0;
|
|
15
|
+
// model
|
|
16
|
+
class ChangeSet {
|
|
17
|
+
constructor(args) {
|
|
18
|
+
// initialize instance variables
|
|
19
|
+
this.brand = args.brand;
|
|
20
|
+
this.id = args.id;
|
|
21
|
+
this.groupId = args.groupId;
|
|
22
|
+
this._name = args.name;
|
|
23
|
+
this._changes = args.changes.slice();
|
|
24
|
+
this.createdOn = args.createdOn;
|
|
25
|
+
this.updatedOn = args.updatedOn;
|
|
26
|
+
this._publishedOn = args.publishedOn;
|
|
27
|
+
this._modified = false;
|
|
28
|
+
}
|
|
29
|
+
get isDefault() {
|
|
30
|
+
return this.groupId === ChangeSet.GroupId.global;
|
|
31
|
+
}
|
|
32
|
+
get name() {
|
|
33
|
+
return this._name;
|
|
34
|
+
}
|
|
35
|
+
set name(name) {
|
|
36
|
+
if (this._name !== name) {
|
|
37
|
+
this._name = name;
|
|
38
|
+
this._modified = true;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
get status() {
|
|
42
|
+
// mark published if live
|
|
43
|
+
const { _publishedOn, _changes } = this;
|
|
44
|
+
if (_publishedOn) {
|
|
45
|
+
return 'commited';
|
|
46
|
+
}
|
|
47
|
+
// mark ready if there are no errors
|
|
48
|
+
const errors = _changes.filter(change => change.errors);
|
|
49
|
+
if (errors.length === 0) {
|
|
50
|
+
return 'ready';
|
|
51
|
+
}
|
|
52
|
+
// or incomplete if there are any drafts in the errors
|
|
53
|
+
else if (errors.some(change => change.type === 'create')) {
|
|
54
|
+
return 'incomplete';
|
|
55
|
+
}
|
|
56
|
+
// or errors
|
|
57
|
+
else {
|
|
58
|
+
return 'errors';
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
get errors() {
|
|
62
|
+
return this._changes.some(change => change.errors);
|
|
63
|
+
}
|
|
64
|
+
get publishedOn() {
|
|
65
|
+
return this._publishedOn;
|
|
66
|
+
}
|
|
67
|
+
set publishedOn(publishedOn) {
|
|
68
|
+
if (this._publishedOn !== publishedOn) {
|
|
69
|
+
this._publishedOn = publishedOn;
|
|
70
|
+
this._modified = true;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
get modified() {
|
|
74
|
+
return this._modified;
|
|
75
|
+
}
|
|
76
|
+
get changes() {
|
|
77
|
+
return this._changes;
|
|
78
|
+
}
|
|
79
|
+
get pageChanges() {
|
|
80
|
+
return this._changes.filter(change => change.__type === 'page');
|
|
81
|
+
}
|
|
82
|
+
addPageChange(userId, change) {
|
|
83
|
+
// apply change
|
|
84
|
+
addChange({
|
|
85
|
+
changes: this._changes,
|
|
86
|
+
change,
|
|
87
|
+
userId
|
|
88
|
+
});
|
|
89
|
+
// mark modified
|
|
90
|
+
this._modified = true;
|
|
91
|
+
}
|
|
92
|
+
deletePageChange(id) {
|
|
93
|
+
this._changes = this.changes.filter(change => change.id !== id);
|
|
94
|
+
this._modified = true;
|
|
95
|
+
}
|
|
96
|
+
get collectionChanges() {
|
|
97
|
+
return this._changes.filter(change => change.__type === 'collection');
|
|
98
|
+
}
|
|
99
|
+
addCollectionChange(userId, change) {
|
|
100
|
+
// apply change
|
|
101
|
+
addChange({
|
|
102
|
+
changes: this._changes,
|
|
103
|
+
change,
|
|
104
|
+
userId
|
|
105
|
+
});
|
|
106
|
+
// mark modified
|
|
107
|
+
this._modified = true;
|
|
108
|
+
}
|
|
109
|
+
deleteCollectionChange(id) {
|
|
110
|
+
this._changes = this.changes.filter(change => change.id !== id);
|
|
111
|
+
this._modified = true;
|
|
112
|
+
}
|
|
113
|
+
get assetChanges() {
|
|
114
|
+
return this._changes.filter(change => change.__type === 'asset');
|
|
115
|
+
}
|
|
116
|
+
addAssetChange(userId, change) {
|
|
117
|
+
// apply change
|
|
118
|
+
addChange({
|
|
119
|
+
changes: this._changes,
|
|
120
|
+
change,
|
|
121
|
+
userId
|
|
122
|
+
});
|
|
123
|
+
// mark modified
|
|
124
|
+
this._modified = true;
|
|
125
|
+
}
|
|
126
|
+
deleteAssetChange(id) {
|
|
127
|
+
this._changes = this.changes.filter(change => change.id !== id);
|
|
128
|
+
this._modified = true;
|
|
129
|
+
}
|
|
130
|
+
toData() {
|
|
131
|
+
const { brand, id, groupId, name, _changes, errors, createdOn, updatedOn, publishedOn } = this;
|
|
132
|
+
return {
|
|
133
|
+
brand,
|
|
134
|
+
id,
|
|
135
|
+
groupId,
|
|
136
|
+
name,
|
|
137
|
+
changes: _changes,
|
|
138
|
+
errors,
|
|
139
|
+
createdOn,
|
|
140
|
+
updatedOn,
|
|
141
|
+
publishedOn
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
exports.ChangeSet = ChangeSet;
|
|
146
|
+
// extension
|
|
147
|
+
(function (ChangeSet) {
|
|
148
|
+
let GroupId;
|
|
149
|
+
(function (GroupId) {
|
|
150
|
+
GroupId.global = '__global';
|
|
151
|
+
})(GroupId = ChangeSet.GroupId || (ChangeSet.GroupId = {}));
|
|
152
|
+
let Data;
|
|
153
|
+
(function (Data) {
|
|
154
|
+
Data.props = [
|
|
155
|
+
'brand', 'id', 'groupId', 'name', 'changes', 'errors', 'createdOn', 'updatedOn', 'publishedOn'
|
|
156
|
+
];
|
|
157
|
+
let New;
|
|
158
|
+
(function (New) {
|
|
159
|
+
function filter(data) {
|
|
160
|
+
return !('id' in data);
|
|
161
|
+
}
|
|
162
|
+
New.filter = filter;
|
|
163
|
+
})(New = Data.New || (Data.New = {}));
|
|
164
|
+
})(Data = ChangeSet.Data || (ChangeSet.Data = {}));
|
|
165
|
+
})(ChangeSet || (exports.ChangeSet = ChangeSet = {}));
|
|
166
|
+
function addChange({ changes, change, userId }) {
|
|
167
|
+
// update existing page
|
|
168
|
+
const updatedOn = Date.now();
|
|
169
|
+
const changeIndex = changes.findIndex(({ id }) => change.id === id);
|
|
170
|
+
if (changeIndex >= 0) {
|
|
171
|
+
// update attribution (skip if it's the same change by the same user)
|
|
172
|
+
const _a = changes[changeIndex], { type, attribution } = _a, existingChange = __rest(_a, ["type", "attribution"]);
|
|
173
|
+
const lastAttribution = attribution.length > 0
|
|
174
|
+
? attribution[attribution.length - 1]
|
|
175
|
+
: undefined;
|
|
176
|
+
if ((lastAttribution === null || lastAttribution === void 0 ? void 0 : lastAttribution.userId) !== userId || change.type !== type) {
|
|
177
|
+
attribution.push({ userId, updatedOn });
|
|
178
|
+
}
|
|
179
|
+
// update change
|
|
180
|
+
changes[changeIndex] = Object.assign(Object.assign(Object.assign({}, existingChange), change), { type,
|
|
181
|
+
attribution });
|
|
182
|
+
}
|
|
183
|
+
// or add a new one
|
|
184
|
+
else {
|
|
185
|
+
changes.push(Object.assign(Object.assign({}, change), { attribution: [{ userId, updatedOn }] }));
|
|
186
|
+
}
|
|
187
|
+
}
|