@aglyn/aglyn 1.0.0-beta.153 → 1.0.0-beta.155
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/package.json +10 -10
- package/src/lib/app-utils/collection-entries.d.ts +18 -6
- package/src/lib/app-utils/collection-entries.js +14 -14
- package/src/lib/app-utils/collection-entries.js.map +1 -1
- package/src/lib/app-utils/collection-entry-date.d.ts +49 -4
- package/src/lib/app-utils/collection-entry-date.js +80 -11
- package/src/lib/app-utils/collection-entry-date.js.map +1 -1
- package/src/lib/foundation/definitions/org-billing.types.d.ts +18 -0
- package/src/lib/foundation/definitions/org-billing.types.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aglyn/aglyn",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.155",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"homepage": "https://aglyn.com",
|
|
6
6
|
"repository": {
|
|
@@ -33,15 +33,15 @@
|
|
|
33
33
|
"./package.json": "./package.json"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@aglyn/shared-data-enums": "1.0.0-beta.
|
|
37
|
-
"@aglyn/shared-data-mdi": "1.0.0-beta.
|
|
38
|
-
"@aglyn/shared-data-types": "1.0.0-beta.
|
|
39
|
-
"@aglyn/shared-util-email": "1.0.0-beta.
|
|
40
|
-
"@aglyn/shared-util-http": "1.0.0-beta.
|
|
41
|
-
"@aglyn/shared-util-logger": "1.0.0-beta.
|
|
42
|
-
"@aglyn/shared-util-timestamp": "1.0.0-beta.
|
|
43
|
-
"@aglyn/shared-util-tools": "1.0.0-beta.
|
|
44
|
-
"@aglyn/shared-util-vendor": "1.0.0-beta.
|
|
36
|
+
"@aglyn/shared-data-enums": "1.0.0-beta.155",
|
|
37
|
+
"@aglyn/shared-data-mdi": "1.0.0-beta.155",
|
|
38
|
+
"@aglyn/shared-data-types": "1.0.0-beta.155",
|
|
39
|
+
"@aglyn/shared-util-email": "1.0.0-beta.155",
|
|
40
|
+
"@aglyn/shared-util-http": "1.0.0-beta.155",
|
|
41
|
+
"@aglyn/shared-util-logger": "1.0.0-beta.155",
|
|
42
|
+
"@aglyn/shared-util-timestamp": "1.0.0-beta.155",
|
|
43
|
+
"@aglyn/shared-util-tools": "1.0.0-beta.155",
|
|
44
|
+
"@aglyn/shared-util-vendor": "1.0.0-beta.155",
|
|
45
45
|
"@data-driven-forms/react-form-renderer": "^4.2.0",
|
|
46
46
|
"@msgpack/msgpack": "^3.1.3",
|
|
47
47
|
"@types/unist": "^3.0.3",
|
|
@@ -413,7 +413,9 @@ export declare function resolveEntryCategoryName(entry: Pick<CollectionEntryReco
|
|
|
413
413
|
* drift: the same entry has to read the same way whether the author bound the
|
|
414
414
|
* tokens by hand or let the server fill the block in.
|
|
415
415
|
*/
|
|
416
|
-
export declare function collectionEntryMetaValues(entry: CollectionEntryRecord, categories?: readonly CollectionCategory[], dateFormat?: CollectionEntryDateFormat
|
|
416
|
+
export declare function collectionEntryMetaValues(entry: CollectionEntryRecord, categories?: readonly CollectionCategory[], dateFormat?: CollectionEntryDateFormat,
|
|
417
|
+
/** The site's zone (AGL-3237); UTC when a site has not named one. */
|
|
418
|
+
timeZone?: string): {
|
|
417
419
|
date: string;
|
|
418
420
|
author: string;
|
|
419
421
|
category: string;
|
|
@@ -448,7 +450,9 @@ export declare function collectionEntryAuthorValues(entry: CollectionEntryRecord
|
|
|
448
450
|
* entries block. `entry.url` resolves to the entry's auto-route so links
|
|
449
451
|
* (`Read more`, titles) work without hardcoding the collection slug.
|
|
450
452
|
*/
|
|
451
|
-
export declare function collectionEntryTokens(entry: CollectionEntryRecord, collectionSlug: string, categories?: CollectionCategory[]
|
|
453
|
+
export declare function collectionEntryTokens(entry: CollectionEntryRecord, collectionSlug: string, categories?: CollectionCategory[],
|
|
454
|
+
/** The site's zone (AGL-3237); UTC when a site has not named one. */
|
|
455
|
+
timeZone?: string): Record<string, string>;
|
|
452
456
|
/**
|
|
453
457
|
* Category/tag membership check (AGL-582), shared by the Collection entries
|
|
454
458
|
* filter props and the query-less list surfaces. Matching is trimmed and
|
|
@@ -684,7 +688,9 @@ export declare function buildCollectionCategoryLinks(options: {
|
|
|
684
688
|
* the date especially): a suggestion for a post is the same post as the card
|
|
685
689
|
* below it and must not be able to disagree with it about its date.
|
|
686
690
|
*/
|
|
687
|
-
export declare function buildCollectionSearchIndex(entries: readonly CollectionEntryRecord[], collectionSlug: string, categories?: readonly CollectionCategory[]
|
|
691
|
+
export declare function buildCollectionSearchIndex(entries: readonly CollectionEntryRecord[], collectionSlug: string, categories?: readonly CollectionCategory[],
|
|
692
|
+
/** The site's zone (AGL-3237); UTC when a site has not named one. */
|
|
693
|
+
timeZone?: string): CollectionEntrySearchItem[];
|
|
688
694
|
/**
|
|
689
695
|
* Does this tree render the collection `collectionSlug` away from the
|
|
690
696
|
* collection's own routes?
|
|
@@ -728,7 +734,9 @@ export declare function nodesRenderCollection(nodes: Record<NodeId, AglynNodeSch
|
|
|
728
734
|
* matching entries renders zero rows — never the unsubstituted template.
|
|
729
735
|
* - Inputs are never mutated; template nodes stay in the map unreferenced.
|
|
730
736
|
*/
|
|
731
|
-
export declare function expandCollectionEntries<N extends AglynNodeSchema = AglynNodeSchema>(nodes: Record<NodeId, N>, sourcesBySlug: Record<string, CollectionEntriesSource | undefined>, defaultSlug?: string
|
|
737
|
+
export declare function expandCollectionEntries<N extends AglynNodeSchema = AglynNodeSchema>(nodes: Record<NodeId, N>, sourcesBySlug: Record<string, CollectionEntriesSource | undefined>, defaultSlug?: string,
|
|
738
|
+
/** The site's zone (AGL-3237); UTC when a site has not named one. */
|
|
739
|
+
timeZone?: string): Record<NodeId, N>;
|
|
732
740
|
/**
|
|
733
741
|
* Category Pills blocks (AGL-1321): stamps each `collectionCategories` node
|
|
734
742
|
* with its collection's pill row as a serializable `items` prop the component
|
|
@@ -808,7 +816,9 @@ export declare function expandCollectionSearch<N extends AglynNodeSchema = Aglyn
|
|
|
808
816
|
*
|
|
809
817
|
* Inputs are never mutated.
|
|
810
818
|
*/
|
|
811
|
-
export declare function expandCollectionEntryMeta<N extends AglynNodeSchema = AglynNodeSchema>(nodes: Record<NodeId, N>, entry: CollectionEntryRecord | null | undefined, categories?: readonly CollectionCategory[]
|
|
819
|
+
export declare function expandCollectionEntryMeta<N extends AglynNodeSchema = AglynNodeSchema>(nodes: Record<NodeId, N>, entry: CollectionEntryRecord | null | undefined, categories?: readonly CollectionCategory[],
|
|
820
|
+
/** The site's zone (AGL-3237); UTC when a site has not named one. */
|
|
821
|
+
timeZone?: string): Record<NodeId, N>;
|
|
812
822
|
/**
|
|
813
823
|
* Fill Entry Author cards from the routed entry's author record (AGL-2486),
|
|
814
824
|
* on the same terms {@link expandCollectionEntryMeta} fills the byline:
|
|
@@ -921,5 +931,7 @@ export declare function selectRelatedEntries(entries: CollectionEntryRecord[], c
|
|
|
921
931
|
* stay untouched, so the component's sample cards (editing surfaces) or its
|
|
922
932
|
* empty site render apply. Inputs are never mutated.
|
|
923
933
|
*/
|
|
924
|
-
export declare function expandCollectionRelated<N extends AglynNodeSchema = AglynNodeSchema>(nodes: Record<NodeId, N>, source: CollectionEntriesSource | undefined, currentEntry: CollectionEntryRecord | null | undefined
|
|
934
|
+
export declare function expandCollectionRelated<N extends AglynNodeSchema = AglynNodeSchema>(nodes: Record<NodeId, N>, source: CollectionEntriesSource | undefined, currentEntry: CollectionEntryRecord | null | undefined,
|
|
935
|
+
/** The site's zone (AGL-3237); UTC when a site has not named one. */
|
|
936
|
+
timeZone?: string): Record<NodeId, N>;
|
|
925
937
|
export default expandCollectionEntries;
|
|
@@ -271,11 +271,11 @@ categories) {
|
|
|
271
271
|
* Extracted so the token map and {@link expandCollectionEntryMeta} cannot
|
|
272
272
|
* drift: the same entry has to read the same way whether the author bound the
|
|
273
273
|
* tokens by hand or let the server fill the block in.
|
|
274
|
-
*/ export function collectionEntryMetaValues(entry, categories, dateFormat) {
|
|
274
|
+
*/ export function collectionEntryMetaValues(entry, categories, dateFormat, /** The site's zone (AGL-3237); UTC when a site has not named one. */ timeZone) {
|
|
275
275
|
var _resolveEntryCategoryName, _entry_tags;
|
|
276
276
|
var _entry_author;
|
|
277
277
|
return {
|
|
278
|
-
date: formatCollectionEntryDate(entry.publishedAt, dateFormat),
|
|
278
|
+
date: formatCollectionEntryDate(entry.publishedAt, dateFormat, undefined, timeZone),
|
|
279
279
|
// The per-entry byline the editor already collects (AGL-686). It was
|
|
280
280
|
// reachable in the entry's JSON-LD and nowhere on the page, which is what
|
|
281
281
|
// made the frame's byline unauthorable (AGL-1459).
|
|
@@ -340,9 +340,9 @@ categories) {
|
|
|
340
340
|
* globally on entry-template screens and per-clone inside the Collection
|
|
341
341
|
* entries block. `entry.url` resolves to the entry's auto-route so links
|
|
342
342
|
* (`Read more`, titles) work without hardcoding the collection slug.
|
|
343
|
-
*/ export function collectionEntryTokens(entry, collectionSlug, categories) {
|
|
343
|
+
*/ export function collectionEntryTokens(entry, collectionSlug, categories, /** The site's zone (AGL-3237); UTC when a site has not named one. */ timeZone) {
|
|
344
344
|
var _entry_collectionSlug, _entry_title, _entry_excerpt, _entry_body, _entry_coverImage, _entry_coverVideo, _entry_slug, _entry_slug1, _entry_collectionName;
|
|
345
|
-
const meta = collectionEntryMetaValues(entry, categories);
|
|
345
|
+
const meta = collectionEntryMetaValues(entry, categories, undefined, timeZone);
|
|
346
346
|
const author = collectionEntryAuthorValues(entry);
|
|
347
347
|
// The entry's OWN collection wins over the routed one (AGL-2518) — see
|
|
348
348
|
// `CollectionEntryRecord.collectionSlug`. Unset on every single-collection
|
|
@@ -749,7 +749,7 @@ const POSITIVE_INTEGER = /^[1-9]\d*$/;
|
|
|
749
749
|
* clones. Through the same three resolvers Related posts uses (AGL-1926 for
|
|
750
750
|
* the date especially): a suggestion for a post is the same post as the card
|
|
751
751
|
* below it and must not be able to disagree with it about its date.
|
|
752
|
-
*/ export function buildCollectionSearchIndex(entries, collectionSlug, categories) {
|
|
752
|
+
*/ export function buildCollectionSearchIndex(entries, collectionSlug, categories, /** The site's zone (AGL-3237); UTC when a site has not named one. */ timeZone) {
|
|
753
753
|
return entries.map((entry)=>{
|
|
754
754
|
var _entry_title, _entry_excerpt, _entry_collectionSlug;
|
|
755
755
|
var _entry_publishedAt;
|
|
@@ -760,7 +760,7 @@ const POSITIVE_INTEGER = /^[1-9]\d*$/;
|
|
|
760
760
|
}, entry.slug ? {
|
|
761
761
|
url: `/${((_entry_collectionSlug = entry.collectionSlug) != null ? _entry_collectionSlug : '').trim() || collectionSlug}/${entry.slug}`
|
|
762
762
|
} : {}, ((_entry_publishedAt = entry.publishedAt) == null ? void 0 : _entry_publishedAt.seconds) ? {
|
|
763
|
-
date: formatCollectionEntryDate(entry.publishedAt)
|
|
763
|
+
date: formatCollectionEntryDate(entry.publishedAt, undefined, undefined, timeZone)
|
|
764
764
|
} : {}, categoryName ? {
|
|
765
765
|
category: categoryName
|
|
766
766
|
} : {});
|
|
@@ -838,7 +838,7 @@ const POSITIVE_INTEGER = /^[1-9]\d*$/;
|
|
|
838
838
|
* collection must never take a screen down). A known collection with no
|
|
839
839
|
* matching entries renders zero rows — never the unsubstituted template.
|
|
840
840
|
* - Inputs are never mutated; template nodes stay in the map unreferenced.
|
|
841
|
-
*/ export function expandCollectionEntries(nodes, sourcesBySlug, defaultSlug) {
|
|
841
|
+
*/ export function expandCollectionEntries(nodes, sourcesBySlug, defaultSlug, /** The site's zone (AGL-3237); UTC when a site has not named one. */ timeZone) {
|
|
842
842
|
const containers = Object.entries(nodes).filter(([, node])=>(node == null ? void 0 : node.componentId) === COLLECTION_ENTRIES_COMPONENT_ID);
|
|
843
843
|
if (!containers.length) return nodes;
|
|
844
844
|
const next = _extends({}, nodes);
|
|
@@ -955,7 +955,7 @@ const POSITIVE_INTEGER = /^[1-9]\d*$/;
|
|
|
955
955
|
// binding under a chosen format, which is the case this exists for.
|
|
956
956
|
for (const [cloneId, cloneNode] of Object.entries(cloned)){
|
|
957
957
|
var _cloneNode_props;
|
|
958
|
-
const fill = (cloneNode == null ? void 0 : cloneNode.componentId) === COLLECTION_ENTRY_META_COMPONENT_ID ? entryMetaFill(cloneNode, entry, source.categories) : (cloneNode == null ? void 0 : cloneNode.componentId) === COLLECTION_ENTRY_AUTHOR_COMPONENT_ID ? entryAuthorFill(cloneNode, entry) : undefined;
|
|
958
|
+
const fill = (cloneNode == null ? void 0 : cloneNode.componentId) === COLLECTION_ENTRY_META_COMPONENT_ID ? entryMetaFill(cloneNode, entry, source.categories, timeZone) : (cloneNode == null ? void 0 : cloneNode.componentId) === COLLECTION_ENTRY_AUTHOR_COMPONENT_ID ? entryAuthorFill(cloneNode, entry) : undefined;
|
|
959
959
|
if (!fill || !Object.keys(fill).length) continue;
|
|
960
960
|
cloned[cloneId] = _extends({}, cloneNode, {
|
|
961
961
|
props: _extends({}, (_cloneNode_props = cloneNode.props) != null ? _cloneNode_props : {}, fill)
|
|
@@ -1130,14 +1130,14 @@ const POSITIVE_INTEGER = /^[1-9]\d*$/;
|
|
|
1130
1130
|
* typed still wins, unchanged.
|
|
1131
1131
|
*
|
|
1132
1132
|
* Inputs are never mutated.
|
|
1133
|
-
*/ export function expandCollectionEntryMeta(nodes, entry, categories) {
|
|
1133
|
+
*/ export function expandCollectionEntryMeta(nodes, entry, categories, /** The site's zone (AGL-3237); UTC when a site has not named one. */ timeZone) {
|
|
1134
1134
|
if (!entry) return nodes;
|
|
1135
1135
|
const containers = Object.entries(nodes).filter(([id, node])=>(node == null ? void 0 : node.componentId) === COLLECTION_ENTRY_META_COMPONENT_ID && !id.startsWith(COLLECTION_ENTRIES_NODE_ID_PREFIX));
|
|
1136
1136
|
if (!containers.length) return nodes;
|
|
1137
1137
|
const next = _extends({}, nodes);
|
|
1138
1138
|
for (const [containerId, container] of containers){
|
|
1139
1139
|
var _container_props;
|
|
1140
|
-
const filled = entryMetaFill(container, entry, categories);
|
|
1140
|
+
const filled = entryMetaFill(container, entry, categories, timeZone);
|
|
1141
1141
|
if (!Object.keys(filled).length) continue;
|
|
1142
1142
|
next[containerId] = _extends({}, container, {
|
|
1143
1143
|
props: _extends({}, (_container_props = container.props) != null ? _container_props : {}, filled)
|
|
@@ -1156,7 +1156,7 @@ const POSITIVE_INTEGER = /^[1-9]\d*$/;
|
|
|
1156
1156
|
*
|
|
1157
1157
|
* Returns only the keys that change; an empty object means "leave this node
|
|
1158
1158
|
* exactly as authored".
|
|
1159
|
-
*/ function entryMetaFill(container, entry, categories) {
|
|
1159
|
+
*/ function entryMetaFill(container, entry, categories, /** The site's zone (AGL-3237); UTC when a site has not named one. */ timeZone) {
|
|
1160
1160
|
{
|
|
1161
1161
|
var _container_props, _ref, _props_author;
|
|
1162
1162
|
var _entry_author;
|
|
@@ -1164,7 +1164,7 @@ const POSITIVE_INTEGER = /^[1-9]\d*$/;
|
|
|
1164
1164
|
// Per node: the format is a prop, so two blocks on one template can read
|
|
1165
1165
|
// their dates differently.
|
|
1166
1166
|
const dateFormat = normalizeCollectionEntryDateFormat(props['dateFormat']);
|
|
1167
|
-
const values = collectionEntryMetaValues(entry, categories, dateFormat);
|
|
1167
|
+
const values = collectionEntryMetaValues(entry, categories, dateFormat, timeZone);
|
|
1168
1168
|
const filled = {};
|
|
1169
1169
|
for (const key of [
|
|
1170
1170
|
'date',
|
|
@@ -1376,7 +1376,7 @@ const POSITIVE_INTEGER = /^[1-9]\d*$/;
|
|
|
1376
1376
|
* markup). Runs only on entry renders; without an entry context the nodes
|
|
1377
1377
|
* stay untouched, so the component's sample cards (editing surfaces) or its
|
|
1378
1378
|
* empty site render apply. Inputs are never mutated.
|
|
1379
|
-
*/ export function expandCollectionRelated(nodes, source, currentEntry) {
|
|
1379
|
+
*/ export function expandCollectionRelated(nodes, source, currentEntry, /** The site's zone (AGL-3237); UTC when a site has not named one. */ timeZone) {
|
|
1380
1380
|
if (!source || !currentEntry) return nodes;
|
|
1381
1381
|
const containers = Object.entries(nodes).filter(([, node])=>(node == null ? void 0 : node.componentId) === COLLECTION_RELATED_COMPONENT_ID);
|
|
1382
1382
|
if (!containers.length) return nodes;
|
|
@@ -1397,7 +1397,7 @@ const POSITIVE_INTEGER = /^[1-9]\d*$/;
|
|
|
1397
1397
|
title: (_entry_title = entry.title) != null ? _entry_title : '',
|
|
1398
1398
|
url: `/${source.slug}/${(_entry_slug = entry.slug) != null ? _entry_slug : ''}`
|
|
1399
1399
|
}, ((_entry_publishedAt = entry.publishedAt) == null ? void 0 : _entry_publishedAt.seconds) ? {
|
|
1400
|
-
date: formatCollectionEntryDate(entry.publishedAt, dateFormat)
|
|
1400
|
+
date: formatCollectionEntryDate(entry.publishedAt, dateFormat, undefined, timeZone)
|
|
1401
1401
|
} : {}, entry.excerpt ? {
|
|
1402
1402
|
excerpt: entry.excerpt
|
|
1403
1403
|
} : {}, entry.coverImage ? {
|