diff --git a/stack--current/3-advanced--multi/rich-text-format/src/index.ts b/stack--current/3-advanced--multi/rich-text-format/src/index.ts index 3eb86fcf..895643b3 100644 --- a/stack--current/3-advanced--multi/rich-text-format/src/index.ts +++ b/stack--current/3-advanced--multi/rich-text-format/src/index.ts @@ -9,6 +9,7 @@ export * from './type-guards.js' export * from './walk.js' export * from './renderers/common.js' export * from './sugar/builder.js' +export * from './utils/index.js' // for convenience of the consumer export { Enum } from 'typescript-string-enums' diff --git a/stack--current/3-advanced--multi/rich-text-format/src/utils/index.ts b/stack--current/3-advanced--multi/rich-text-format/src/utils/index.ts new file mode 100644 index 00000000..c5ade7ab --- /dev/null +++ b/stack--current/3-advanced--multi/rich-text-format/src/utils/index.ts @@ -0,0 +1,3 @@ + +export * from './normalize.js' +export * from './promote.js' diff --git a/stack--current/3-advanced--multi/rich-text-format/src/utils/promote.ts b/stack--current/3-advanced--multi/rich-text-format/src/utils/promote.ts index 99984283..143df6de 100644 --- a/stack--current/3-advanced--multi/rich-text-format/src/utils/promote.ts +++ b/stack--current/3-advanced--multi/rich-text-format/src/utils/promote.ts @@ -1,3 +1,5 @@ +import { type Immutable } from '@offirmo-private/ts-types' + import { NodeType, type NodeLike, @@ -22,8 +24,15 @@ function promoteꓽto_node($raw: NodeLike): Node { return $raw } +function promoteꓽto_nodeⵧimmutable( + $raw: Immutable> +): Immutable> { + return promoteꓽto_node($raw as any) +} + ///////////////////////////////////////////////// export { promoteꓽto_node, + promoteꓽto_nodeⵧimmutable, } diff --git a/stack--current/5-incubator/active--no-pkg/bite-sized/lists/serious-memes/mental-models.md b/stack--current/5-incubator/active--no-pkg/bite-sized/lists/serious-memes/mental-models.md index 1fa0f62c..585912dc 100644 --- a/stack--current/5-incubator/active--no-pkg/bite-sized/lists/serious-memes/mental-models.md +++ b/stack--current/5-incubator/active--no-pkg/bite-sized/lists/serious-memes/mental-models.md @@ -122,6 +122,7 @@ don't expect perfection -> trigger self-consciousness = counter-productive doublespeak: People often say the opposite of what they mean, especially in political language. It allows people to lie while looking like they’re telling the truth. As George Orwell famously wrote in 1984, “War is peace. Freedom is slavery. Ignorance is strength.” drive by due diligence +dysthymia https://en.wikipedia.org/wiki/Dysthymia effective altruism effet projecteur effet rétroviseur diff --git a/stack--current/9-rpg/xx-notes/common/notes--civilization.md b/stack--current/9-rpg/xx-notes/common/notes--civilization.md index b45e2699..7e4f3b8b 100644 --- a/stack--current/9-rpg/xx-notes/common/notes--civilization.md +++ b/stack--current/9-rpg/xx-notes/common/notes--civilization.md @@ -20,3 +20,11 @@ Satellite (State): In this case, the satellites are separate nation states but t https://en.wikipedia.org/wiki/Three-sector_model + +https://en.wikipedia.org/wiki/Grand_strategy + +https://en.wikipedia.org/wiki/Political_history_of_the_world + +https://en.wikipedia.org/wiki/Debtors%27_prison + +https://en.wikipedia.org/wiki/The_Memorial_of_Saint_Helena diff --git a/stack--current/9-rpg/xx-notes/common/notes--warfare.md b/stack--current/9-rpg/xx-notes/common/notes--warfare.md index 86a7b3a0..978b4136 100644 --- a/stack--current/9-rpg/xx-notes/common/notes--warfare.md +++ b/stack--current/9-rpg/xx-notes/common/notes--warfare.md @@ -2,3 +2,5 @@ https://worldofwarcraft.blizzard.com/en-us/news/21952451/midgame-moves-adapt-survive-and-thrive > Some teams rely heavily on securing a victory shortly after the match begins, while others intend to drag it out as long as possible until they can capitalize on heavy dampening in what essentially becomes a war of attrition. Your goal is to identify these setups, and react by surviving and disrupting that initial rush or by drawing out the enemy team long before dampening sets in and they can slowly rot you down. + ++++ https://worldbuilding.stackexchange.com/questions/255642/how-does-an-explorer-civilization-survive-the-dark-forest-scenario diff --git a/stack--current/9-rpg/xx-notes/setting--scifi/notes.md b/stack--current/9-rpg/xx-notes/setting--scifi/notes.md index e2796ab2..7c044b0a 100644 --- a/stack--current/9-rpg/xx-notes/setting--scifi/notes.md +++ b/stack--current/9-rpg/xx-notes/setting--scifi/notes.md @@ -13,3 +13,8 @@ nuclear waste disposal (see Universal Principles of Design "Archetypes" p. 25) o escape dying star to multiple galactic arms + + +https://worldbuilding.stackexchange.com/questions/255642/how-does-an-explorer-civilization-survive-the-dark-forest-scenario + +https://worldbuilding.stackexchange.com/questions/253616/why-isnt-the-solar-system-infested-with-space-pirates diff --git a/stack--current/A-apps--core/the-boring-rpg/l3-interfaces/src/actions/index.ts b/stack--current/A-apps--core/the-boring-rpg/l3-interfaces/src/actions/index.ts index 9976c828..cac20ab1 100644 --- a/stack--current/A-apps--core/the-boring-rpg/l3-interfaces/src/actions/index.ts +++ b/stack--current/A-apps--core/the-boring-rpg/l3-interfaces/src/actions/index.ts @@ -3,6 +3,7 @@ import { type Immutable } from '@offirmo-private/ts-types' import { UUID } from '@offirmo-private/uuid' import { TimestampUTCMs } from '@offirmo-private/timestamps' +import { type PendingEngagementUId } from '@oh-my-rpg/state--engagement' import { type State, type StartSessionParams, @@ -34,11 +35,10 @@ export type ActionType = Enum // eslint-disable-line no-redec ///////////////////// -// TODO all those actions should be in the state package! (v2) export interface BaseAction { //v: 1 // not sure needed now_ms?: TimestampUTCMs // not recommended! better inferred at dispatch! But can be useful for tests or replay. - expected_revisions: { + expected_revisions?: { [k:string]: number } } @@ -89,6 +89,7 @@ export interface ActionRedeemCode extends BaseAction { export interface ActionAcknowledgeEngagementMsgSeen extends BaseAction, AcknowledgeEngagementMsgSeen { type: typeof ActionType.acknowledge_engagement_msg_seen + uids: Array } export interface ActionUpdateToNow extends BaseAction {