@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,197 @@
|
|
|
1
|
+
import { Tagged } from 'type-fest';
|
|
2
|
+
import { Language } from '../regionalization';
|
|
3
|
+
import { Asset } from './Asset';
|
|
4
|
+
import type { ChangeSet } from './ChangeSet';
|
|
5
|
+
import type { CollectionSnapshot } from './CollectionSnapshot';
|
|
6
|
+
import { Field, ListField, ObjectField, TextField } from './field';
|
|
7
|
+
import { Fields } from './Fields';
|
|
8
|
+
import { Optional } from './Optional';
|
|
9
|
+
import type { Page } from './Page';
|
|
10
|
+
import { TagGroup } from './TagGroup';
|
|
11
|
+
export declare class Collection<TFields extends Fields = Fields> {
|
|
12
|
+
readonly type: Collection.Type;
|
|
13
|
+
readonly tags: ReadonlyArray<TagGroup>;
|
|
14
|
+
readonly name: string;
|
|
15
|
+
readonly description: string;
|
|
16
|
+
readonly version: number;
|
|
17
|
+
readonly fields: TFields;
|
|
18
|
+
readonly editableFields: Fields.UnwrapOptional<TFields>;
|
|
19
|
+
private constructor();
|
|
20
|
+
modify(args: Collection.ModifyArgs<TFields>): Collection<TFields>;
|
|
21
|
+
rename(name: string): Collection<TFields>;
|
|
22
|
+
hide(...keys: ReadonlyArray<Fields.OptionalKeys<TFields>>): Collection<TFields>;
|
|
23
|
+
override(override: Fields.Override<TFields>): Collection<TFields>;
|
|
24
|
+
static create<TFields extends Fields>(args: Collection.FactoryArgs<TFields>): Collection<TFields>;
|
|
25
|
+
}
|
|
26
|
+
export declare namespace Collection {
|
|
27
|
+
type Id = Tagged<string, 'funnel.Collection.Id'>;
|
|
28
|
+
namespace Id {
|
|
29
|
+
const draft: Id;
|
|
30
|
+
}
|
|
31
|
+
type GroupId = Tagged<string, 'funnel.Collection.GroupId'>;
|
|
32
|
+
type Type = Tagged<string, 'funnel.Collection.Type'>;
|
|
33
|
+
type State = 'draft' | 'published' | 'unpublished';
|
|
34
|
+
type Update = Update.Name | Update.Tag | Update.ObjectInsert | Update.ArrayInsert | Update.ArrayDelete | Update.ArrayReorder | Update.Value;
|
|
35
|
+
namespace Update {
|
|
36
|
+
type Name = {
|
|
37
|
+
type: 'name';
|
|
38
|
+
name: string;
|
|
39
|
+
};
|
|
40
|
+
type Tag = {
|
|
41
|
+
type: 'tags';
|
|
42
|
+
tags: TagGroup.Data;
|
|
43
|
+
};
|
|
44
|
+
type Value = {
|
|
45
|
+
type: 'value';
|
|
46
|
+
path: string[];
|
|
47
|
+
value: Field.Data | ListField.Value.ForItem;
|
|
48
|
+
};
|
|
49
|
+
type ObjectInsert = {
|
|
50
|
+
type: 'object.insert';
|
|
51
|
+
path: string[];
|
|
52
|
+
value: Field.Data<ObjectField>;
|
|
53
|
+
};
|
|
54
|
+
type ArrayInsert = {
|
|
55
|
+
type: 'array.insert';
|
|
56
|
+
path: string[];
|
|
57
|
+
index: number;
|
|
58
|
+
id: string;
|
|
59
|
+
value: ListField.Value.ForItem;
|
|
60
|
+
};
|
|
61
|
+
type ArrayDelete = {
|
|
62
|
+
type: 'array.delete';
|
|
63
|
+
path: string[];
|
|
64
|
+
id: string;
|
|
65
|
+
};
|
|
66
|
+
type ArrayReorder = {
|
|
67
|
+
type: 'array.reorder';
|
|
68
|
+
path: string[];
|
|
69
|
+
ids: string[];
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
type Data<T extends Collection = Collection> = {
|
|
73
|
+
__root: 'collection';
|
|
74
|
+
id: Id;
|
|
75
|
+
groupId: GroupId;
|
|
76
|
+
type: T['type'];
|
|
77
|
+
tags: TagGroup.Data;
|
|
78
|
+
brand?: string;
|
|
79
|
+
language: Language;
|
|
80
|
+
version: number;
|
|
81
|
+
name: string;
|
|
82
|
+
fields: Data.ForFields<T['fields']>;
|
|
83
|
+
files: Asset.Linked[];
|
|
84
|
+
collections: Data.AsLink[];
|
|
85
|
+
pageIds?: Page.Id[];
|
|
86
|
+
state: State;
|
|
87
|
+
errors: boolean;
|
|
88
|
+
changeSetId?: ChangeSet.Id;
|
|
89
|
+
snapshotId?: CollectionSnapshot.Id;
|
|
90
|
+
snapshot?: CollectionSnapshot;
|
|
91
|
+
createdOn: number;
|
|
92
|
+
updatedOn: number;
|
|
93
|
+
publishedOn?: number;
|
|
94
|
+
};
|
|
95
|
+
namespace Data {
|
|
96
|
+
namespace Props {
|
|
97
|
+
type Id = Extract<All, 'id' | 'groupId' | 'type' | 'brand' | 'language' | 'version' | 'name' | 'tags'>;
|
|
98
|
+
const id: ReadonlyArray<Id>;
|
|
99
|
+
type Content = Extract<All, 'fields'>;
|
|
100
|
+
const content: ReadonlyArray<Content>;
|
|
101
|
+
type Links = Extract<All, 'files' | 'collections' | 'pageIds'>;
|
|
102
|
+
const links: ReadonlyArray<Links>;
|
|
103
|
+
type Audit = Extract<All, 'state' | 'errors' | 'changeSetId' | 'snapshotId' | 'createdOn' | 'updatedOn' | 'publishedOn'>;
|
|
104
|
+
const audit: ReadonlyArray<Audit>;
|
|
105
|
+
type Backup = Extract<All, 'snapshot'>;
|
|
106
|
+
const backup: ReadonlyArray<Backup>;
|
|
107
|
+
type All = keyof Data;
|
|
108
|
+
const all: ReadonlyArray<All>;
|
|
109
|
+
}
|
|
110
|
+
type AsDraft = Pick<Data, AsDraft.Prop>;
|
|
111
|
+
namespace AsDraft {
|
|
112
|
+
type Prop = Exclude<Props.Id, 'id'> | Extract<Props.Audit, 'changeSetId'>;
|
|
113
|
+
const props: ReadonlyArray<Prop>;
|
|
114
|
+
}
|
|
115
|
+
type AsNew = Pick<Data, AsNew.Prop>;
|
|
116
|
+
namespace AsNew {
|
|
117
|
+
type Prop = Exclude<Props.Id, 'id' | 'groupId'> | Extract<Props.Audit, 'changeSetId'>;
|
|
118
|
+
const props: ReadonlyArray<Prop>;
|
|
119
|
+
}
|
|
120
|
+
type AsNewLanguage = Pick<Data, AsNewLanguage.Prop>;
|
|
121
|
+
namespace AsNewLanguage {
|
|
122
|
+
type Prop = Extract<Props.Id, 'type' | 'brand' | 'groupId' | 'version' | 'language'> | Extract<Props.Audit, 'changeSetId'>;
|
|
123
|
+
const props: ReadonlyArray<Prop>;
|
|
124
|
+
function filter(page: AsNew | AsNewLanguage): page is AsNewLanguage;
|
|
125
|
+
}
|
|
126
|
+
type AsRef = Pick<Data, AsRef.Prop>;
|
|
127
|
+
namespace AsRef {
|
|
128
|
+
type Prop = Props.Id | Props.Audit;
|
|
129
|
+
const props: ReadonlyArray<Prop>;
|
|
130
|
+
}
|
|
131
|
+
type AsLink = Pick<Data, AsLink.Prop>;
|
|
132
|
+
namespace AsLink {
|
|
133
|
+
type Prop = Props.Id | Props.Content | Extract<Props.Links, 'pageIds'> | Props.Audit;
|
|
134
|
+
const props: ReadonlyArray<Prop>;
|
|
135
|
+
}
|
|
136
|
+
type AsContent = Pick<Data, AsContent.Prop>;
|
|
137
|
+
namespace AsContent {
|
|
138
|
+
type Prop = Props.Id | Props.Content | Props.Links | Props.Audit;
|
|
139
|
+
const props: ReadonlyArray<Prop>;
|
|
140
|
+
}
|
|
141
|
+
type AsGroup = {
|
|
142
|
+
group: {
|
|
143
|
+
groupId: GroupId;
|
|
144
|
+
type: Type;
|
|
145
|
+
brand?: string;
|
|
146
|
+
name: string;
|
|
147
|
+
instances: AsGroup.Instance[];
|
|
148
|
+
};
|
|
149
|
+
collection?: Data;
|
|
150
|
+
};
|
|
151
|
+
namespace AsGroup {
|
|
152
|
+
type Instance = Pick<Data, Instance.Prop>;
|
|
153
|
+
namespace Instance {
|
|
154
|
+
type Prop = Extract<Props.Id, 'id' | 'language' | 'version' | 'tags'>;
|
|
155
|
+
const props: ReadonlyArray<Prop>;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
type AsInline<T extends Collection = Collection> = Pick<Data<T>, AsInline.Prop>;
|
|
159
|
+
namespace AsInline {
|
|
160
|
+
type Prop = Extract<Props.Id, 'type' | 'version' | 'name' | 'tags'> | Props.Content;
|
|
161
|
+
const props: ReadonlyArray<Prop>;
|
|
162
|
+
}
|
|
163
|
+
function filter(value: any): value is Data;
|
|
164
|
+
type ForFields<T extends Fields = Fields> = {
|
|
165
|
+
[key in keyof T as T[key] extends Optional<Field.Type> ? never : key]: Field.Data.ForOptionalType<T[key]>;
|
|
166
|
+
} & {
|
|
167
|
+
[key in keyof T as T[key] extends Optional<Field.Type> ? key : never]?: Field.Data.ForOptionalType<T[key]>;
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
type LinkedData<T extends Collection = Collection> = LinkedData.FromRef<T> | LinkedData.FromInline<T>;
|
|
171
|
+
namespace LinkedData {
|
|
172
|
+
type FromRef<T extends Collection = Collection> = Omit<Data<T>, 'fields'> & {
|
|
173
|
+
fields: ForFields<T['fields']>;
|
|
174
|
+
};
|
|
175
|
+
type FromInline<T extends Collection = Collection> = Pick<Data<T>, Exclude<Data.AsInline.Prop, 'fields'>> & {
|
|
176
|
+
fields: ForFields<T['fields']>;
|
|
177
|
+
};
|
|
178
|
+
type ForFields<T extends Fields = Fields> = {
|
|
179
|
+
[key in keyof T as T[key] extends Optional<Field.Type> ? never : key]: Field.LinkedData.ForOptionalType<T[key]>;
|
|
180
|
+
} & {
|
|
181
|
+
[key in keyof T as T[key] extends Optional<Field.Type> ? key : never]?: Field.LinkedData.ForOptionalType<T[key]>;
|
|
182
|
+
} & {
|
|
183
|
+
name: Field.LinkedData<TextField>;
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
type ConstructorArgs<TFields extends Fields> = {
|
|
187
|
+
type: string;
|
|
188
|
+
name: string;
|
|
189
|
+
description: string;
|
|
190
|
+
version: number;
|
|
191
|
+
fields: TFields;
|
|
192
|
+
editableFields: Fields.UnwrapOptional<TFields>;
|
|
193
|
+
tags?: ReadonlyArray<TagGroup>;
|
|
194
|
+
};
|
|
195
|
+
type ModifyArgs<TFields extends Fields> = Partial<Pick<ConstructorArgs<TFields>, 'tags' | 'name' | 'description'>>;
|
|
196
|
+
type FactoryArgs<TFields extends Fields> = Omit<ConstructorArgs<TFields>, 'editableFields'>;
|
|
197
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Collection = void 0;
|
|
4
|
+
const errors_1 = require("../errors");
|
|
5
|
+
const utils_1 = require("../utils");
|
|
6
|
+
const Fields_1 = require("./Fields");
|
|
7
|
+
// class
|
|
8
|
+
class Collection {
|
|
9
|
+
constructor(args) {
|
|
10
|
+
var _a;
|
|
11
|
+
// fail if name key/id is included
|
|
12
|
+
if ('name' in args.fields) {
|
|
13
|
+
throw new errors_1.ArgumentError('Collection schemas reserve the "name" key for the built-in name property.');
|
|
14
|
+
}
|
|
15
|
+
// initialize instance variables
|
|
16
|
+
this.type = args.type;
|
|
17
|
+
this.tags = (_a = args.tags) !== null && _a !== void 0 ? _a : [];
|
|
18
|
+
this.name = args.name;
|
|
19
|
+
this.description = args.description;
|
|
20
|
+
this.version = args.version;
|
|
21
|
+
this.fields = args.fields;
|
|
22
|
+
this.editableFields = args.editableFields;
|
|
23
|
+
}
|
|
24
|
+
modify(args) {
|
|
25
|
+
// create new collection (re-map required fields)
|
|
26
|
+
return new Collection(Object.assign({ type: this.type, tags: this.tags, name: this.name, description: this.description, version: this.version, fields: this.fields, editableFields: this.editableFields }, args));
|
|
27
|
+
}
|
|
28
|
+
rename(name) {
|
|
29
|
+
return this.modify({ name });
|
|
30
|
+
}
|
|
31
|
+
hide(...keys) {
|
|
32
|
+
// create new collection with removed fields
|
|
33
|
+
return new Collection({
|
|
34
|
+
type: this.type,
|
|
35
|
+
name: this.name,
|
|
36
|
+
description: this.description,
|
|
37
|
+
version: this.version,
|
|
38
|
+
fields: this.fields,
|
|
39
|
+
editableFields: keys.reduce((fields, key) => {
|
|
40
|
+
// handle field if not already pruned
|
|
41
|
+
const field = fields[key];
|
|
42
|
+
if (field) {
|
|
43
|
+
// throw if field is required
|
|
44
|
+
if (field.required) {
|
|
45
|
+
throw new errors_1.InvalidOperationError(`Cannot hide required field: ${String(key)} in Collection: ${this.name}`);
|
|
46
|
+
}
|
|
47
|
+
// otherwise delete field if not already pruned
|
|
48
|
+
else {
|
|
49
|
+
delete fields[key];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// keep reducing
|
|
53
|
+
return fields;
|
|
54
|
+
}, Object.assign({}, this.editableFields))
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
override(override) {
|
|
58
|
+
// get overrides from function
|
|
59
|
+
const overrides = override(this.fields);
|
|
60
|
+
// create new collection with persisted field spec and overridden fields in unwrapped fields
|
|
61
|
+
return new Collection({
|
|
62
|
+
type: this.type,
|
|
63
|
+
name: this.name,
|
|
64
|
+
description: this.description,
|
|
65
|
+
version: this.version,
|
|
66
|
+
fields: this.fields,
|
|
67
|
+
editableFields: Object.assign(Object.assign({}, this.editableFields), overrides)
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
static create(args) {
|
|
71
|
+
// create new collection with both field spec and unwrapped fields
|
|
72
|
+
return new Collection({
|
|
73
|
+
type: args.type,
|
|
74
|
+
tags: args.tags,
|
|
75
|
+
name: args.name,
|
|
76
|
+
description: args.description,
|
|
77
|
+
version: args.version,
|
|
78
|
+
fields: args.fields,
|
|
79
|
+
editableFields: Fields_1.Fields.unwrap(args.fields)
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.Collection = Collection;
|
|
84
|
+
// extension
|
|
85
|
+
(function (Collection) {
|
|
86
|
+
let Id;
|
|
87
|
+
(function (Id) {
|
|
88
|
+
Id.draft = '__draft';
|
|
89
|
+
})(Id = Collection.Id || (Collection.Id = {}));
|
|
90
|
+
let Data;
|
|
91
|
+
(function (Data) {
|
|
92
|
+
// props (used to reduce risk of losing data across platform)
|
|
93
|
+
let Props;
|
|
94
|
+
(function (Props) {
|
|
95
|
+
Props.id = ['id', 'groupId', 'type', 'brand', 'language', 'version', 'name', 'tags'];
|
|
96
|
+
Props.content = ['fields'];
|
|
97
|
+
Props.links = ['files', 'collections', 'pageIds'];
|
|
98
|
+
Props.audit = ['state', 'errors', 'changeSetId', 'snapshotId', 'createdOn', 'updatedOn', 'publishedOn'];
|
|
99
|
+
Props.backup = ['snapshot'];
|
|
100
|
+
Props.all = [
|
|
101
|
+
...Props.id,
|
|
102
|
+
...Props.content,
|
|
103
|
+
...Props.links,
|
|
104
|
+
...Props.audit,
|
|
105
|
+
...Props.backup
|
|
106
|
+
];
|
|
107
|
+
})(Props = Data.Props || (Data.Props = {}));
|
|
108
|
+
let AsDraft;
|
|
109
|
+
(function (AsDraft) {
|
|
110
|
+
AsDraft.props = [
|
|
111
|
+
...Props.id.filter(prop => prop !== 'id'),
|
|
112
|
+
'changeSetId'
|
|
113
|
+
];
|
|
114
|
+
})(AsDraft = Data.AsDraft || (Data.AsDraft = {}));
|
|
115
|
+
let AsNew;
|
|
116
|
+
(function (AsNew) {
|
|
117
|
+
AsNew.props = [
|
|
118
|
+
...Props.id.filter(prop => prop !== 'id' && prop !== 'groupId'),
|
|
119
|
+
'changeSetId'
|
|
120
|
+
];
|
|
121
|
+
})(AsNew = Data.AsNew || (Data.AsNew = {}));
|
|
122
|
+
let AsNewLanguage;
|
|
123
|
+
(function (AsNewLanguage) {
|
|
124
|
+
AsNewLanguage.props = ['type', 'brand', 'groupId', 'version', 'language', 'changeSetId'];
|
|
125
|
+
// type guard
|
|
126
|
+
function filter(page) {
|
|
127
|
+
return 'groupId' in page;
|
|
128
|
+
}
|
|
129
|
+
AsNewLanguage.filter = filter;
|
|
130
|
+
})(AsNewLanguage = Data.AsNewLanguage || (Data.AsNewLanguage = {}));
|
|
131
|
+
let AsRef;
|
|
132
|
+
(function (AsRef) {
|
|
133
|
+
AsRef.props = [...Props.id, ...Props.audit];
|
|
134
|
+
})(AsRef = Data.AsRef || (Data.AsRef = {}));
|
|
135
|
+
let AsLink;
|
|
136
|
+
(function (AsLink) {
|
|
137
|
+
AsLink.props = [...Props.id, ...Props.content, 'pageIds', ...Props.audit];
|
|
138
|
+
})(AsLink = Data.AsLink || (Data.AsLink = {}));
|
|
139
|
+
let AsContent;
|
|
140
|
+
(function (AsContent) {
|
|
141
|
+
AsContent.props = [...Props.id, ...Props.content, ...Props.links, ...Props.audit];
|
|
142
|
+
})(AsContent = Data.AsContent || (Data.AsContent = {}));
|
|
143
|
+
let AsGroup;
|
|
144
|
+
(function (AsGroup) {
|
|
145
|
+
let Instance;
|
|
146
|
+
(function (Instance) {
|
|
147
|
+
Instance.props = ['id', 'language', 'version', 'tags'];
|
|
148
|
+
})(Instance = AsGroup.Instance || (AsGroup.Instance = {}));
|
|
149
|
+
})(AsGroup = Data.AsGroup || (Data.AsGroup = {}));
|
|
150
|
+
let AsInline;
|
|
151
|
+
(function (AsInline) {
|
|
152
|
+
AsInline.props = [
|
|
153
|
+
'type', 'version', 'name', 'tags',
|
|
154
|
+
...Props.content
|
|
155
|
+
];
|
|
156
|
+
})(AsInline = Data.AsInline || (Data.AsInline = {}));
|
|
157
|
+
// guard
|
|
158
|
+
function filter(value) {
|
|
159
|
+
return utils_1.Value.typeOf(value) === 'object'
|
|
160
|
+
&& '__root' in value
|
|
161
|
+
&& value.__root === 'collection';
|
|
162
|
+
}
|
|
163
|
+
Data.filter = filter;
|
|
164
|
+
})(Data = Collection.Data || (Collection.Data = {}));
|
|
165
|
+
})(Collection || (exports.Collection = Collection = {}));
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Collection } from './Collection';
|
|
2
|
+
export declare class CollectionModel {
|
|
3
|
+
readonly data: Collection.Data;
|
|
4
|
+
constructor(data: Collection.Data);
|
|
5
|
+
/**
|
|
6
|
+
* Synchronizes computed properties with the latest `CollectionModel` data (e.g. updating `name`)
|
|
7
|
+
*/
|
|
8
|
+
sync(): void;
|
|
9
|
+
/**
|
|
10
|
+
* Applies updates *in place* to the underlying `Collection.Data`.
|
|
11
|
+
*
|
|
12
|
+
* @param updates - a collection of updates to be applied to this collection.
|
|
13
|
+
*/
|
|
14
|
+
update(updates: ReadonlyArray<Collection.Update>): void;
|
|
15
|
+
private updateName;
|
|
16
|
+
private updateTags;
|
|
17
|
+
private updateObjectInsert;
|
|
18
|
+
private updateArrayInsert;
|
|
19
|
+
private updateArrayDelete;
|
|
20
|
+
private updateArrayReorder;
|
|
21
|
+
private updateValue;
|
|
22
|
+
private setValue;
|
|
23
|
+
private find;
|
|
24
|
+
private findInValue;
|
|
25
|
+
static from(data: Collection.Data): CollectionModel;
|
|
26
|
+
static fromDraft(data: Collection.Data.AsDraft): CollectionModel;
|
|
27
|
+
}
|
|
28
|
+
export declare namespace CollectionModel {
|
|
29
|
+
type TargetPath = `${Collection.Data.Props.All}` | `fields.${string}` | `fields.${string}.${string}` | `fields.${string}.${string}.${string}`;
|
|
30
|
+
}
|