afnm-types 0.6.51 → 0.6.52-v2

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.
@@ -10,9 +10,10 @@
10
10
  export type AvatarEffectId = 'glitch';
11
11
  export interface AvatarEffectShader {
12
12
  /**
13
- * Fragment shader source. Must accept the same base uniforms as the default
14
- * fragment shader (u_texA, u_texB, u_mix, u_aspectA, u_aspectB,
15
- * u_canvasAspect) plus u_time (float, seconds since the effect started).
13
+ * Fragment shader source (GLSL ES 3.00, must begin with `#version 300 es`).
14
+ * Must accept the same uniforms as the base shader: u_texA, u_texB, u_mix,
15
+ * u_aspectA, u_aspectB, u_canvasAspect, u_time (seconds since effect started).
16
+ * Use `in vec2 v_uv` and `out vec4 fragColor` instead of the ES 1.00 forms.
16
17
  */
17
18
  fragSrc: string;
18
19
  }
@@ -11,9 +11,9 @@
11
11
  // Replicates the hand-authored glitch art style: strong persistent chromatic
12
12
  // aberration (cyan/magenta fringing always visible), periodic brightness
13
13
  // washout, and horizontal scanline tears during burst events.
14
- const GLITCH_FRAG_SRC = `
14
+ const GLITCH_FRAG_SRC = `#version 300 es
15
15
  precision mediump float;
16
- varying vec2 v_uv;
16
+ in vec2 v_uv;
17
17
  uniform sampler2D u_texA;
18
18
  uniform sampler2D u_texB;
19
19
  uniform float u_mix;
@@ -21,6 +21,7 @@ uniform float u_aspectA;
21
21
  uniform float u_aspectB;
22
22
  uniform float u_canvasAspect;
23
23
  uniform float u_time;
24
+ out vec4 fragColor;
24
25
 
25
26
  float hash(float n) {
26
27
  return fract(sin(n) * 43758.5453);
@@ -39,7 +40,7 @@ vec4 sampleContain(sampler2D tex, vec2 uv, float texAspect) {
39
40
  if (mapped.x < 0.0 || mapped.x > 1.0 || mapped.y < 0.0 || mapped.y > 1.0) {
40
41
  return vec4(0.0);
41
42
  }
42
- return texture2D(tex, mapped);
43
+ return texture(tex, mapped);
43
44
  }
44
45
 
45
46
  void main() {
@@ -86,7 +87,7 @@ void main() {
86
87
  float blowout = decay * 0.45;
87
88
  col.rgb = mix(col.rgb, vec3(1.0), blowout * col.a);
88
89
 
89
- gl_FragColor = col;
90
+ fragColor = col;
90
91
  }`;
91
92
  // ─── Registry ─────────────────────────────────────────────────────────────────
92
93
  /**
package/dist/buff.d.ts CHANGED
@@ -9,7 +9,7 @@ interface BaseTechniqueCondition {
9
9
  /**
10
10
  * When true, triggered effects (triggeredBuffEffects) on this buff will still
11
11
  * run even when this condition fails. The condition still blocks normal
12
- * onTechniqueEffects and onRoundEffects.
12
+ * beforeTechniqueEffects, afterTechniqueEffects, and onRoundEffects.
13
13
  */
14
14
  allowTriggers?: boolean;
15
15
  }
@@ -84,8 +84,10 @@ export interface Buff {
84
84
  noneType?: string;
85
85
  secondaryType?: TechniqueElement | 'origin';
86
86
  enhancement?: number;
87
- onTechniqueEffects: BuffEffect[];
88
- onRoundEffects: BuffEffect[];
87
+ beforeTechniqueEffects?: BuffEffect[];
88
+ afterTechniqueEffects?: BuffEffect[];
89
+ onStackGainEffects?: BuffEffect[];
90
+ onRoundEffects?: BuffEffect[];
89
91
  onRoundStartEffects?: BuffEffect[];
90
92
  onCombatStartEffects?: BuffEffect[];
91
93
  interceptBuffEffects?: {
@@ -131,7 +133,6 @@ export interface Buff {
131
133
  effects?: BuffEffect[];
132
134
  }[];
133
135
  priority?: number;
134
- afterTechnique?: boolean;
135
136
  combatImage?: BuffCombatImage;
136
137
  maxStacks?: number;
137
138
  upgradeKey?: string;
@@ -1,7 +1,7 @@
1
1
  import { BreakthroughState } from './breakthrough';
2
2
  import { PhysicalStatistic } from './stat';
3
3
  import { KnownTechnique } from './technique';
4
- import { StoredStance, StoredStyle } from './entity';
4
+ import { StoredStance, StoredStyle, AutoUseLoadout } from './entity';
5
5
  import { TechniqueElement } from './element';
6
6
  import { ItemDesc } from './item';
7
7
  /**
@@ -97,9 +97,11 @@ export interface NormalizedBuildSubmission {
97
97
  offensive?: string;
98
98
  aggressive?: string;
99
99
  };
100
- /** Optional combat modifiers chosen by the submitter applied symmetrically to both sides. */
100
+ /** Optional combat modifiers chosen by the submitter, applied symmetrically to both sides. */
101
101
  combatModifiers?: ChallengeModifiers;
102
- /** Manifested figment (lifeform companion) at time of submission added as a party member during challenge fights. */
102
+ /** Active auto-use item loadout at time of submission, applied as conditional pills during challenge fights. */
103
+ currentAutoUseLoadout?: AutoUseLoadout;
104
+ /** Manifested figment (lifeform companion) at time of submission, added as a party member during challenge fights. */
103
105
  lifeform?: {
104
106
  primarySpecies: string;
105
107
  secondarySpecies: string;
@@ -882,6 +882,28 @@ function extractFromFile(filePath) {
882
882
  }
883
883
  }
884
884
  }
885
+ // Find shorthand property assignments where the variable name IS the property name
886
+ // e.g., `const description = 'text'; const item = { description }` (shorthand for description: description)
887
+ if (typescript_1.default.isShorthandPropertyAssignment(node)) {
888
+ const propName = node.name.text;
889
+ if ((0, config_js_1.isTranslatableProperty)(propName)) {
890
+ // Resolve the variable name to its string value
891
+ const resolved = (0, resolvers_js_1.resolveImportedString)(filePath, propName) || (0, resolvers_js_1.tryResolveExpression)(filePath, propName);
892
+ if (resolved && resolved.trim().length > 0 && !(0, config_js_1.isCamelCase)(resolved)) {
893
+ const { parentName, objectType, nestedPath } = getParentObjectInfo(node, filePath);
894
+ const contextField = nestedPath ? `${nestedPath}/${propName}` : propName;
895
+ results.push({
896
+ text: resolved,
897
+ file: filePath,
898
+ line: (0, template_processor_js_1.getLineNumber)(sourceFile, node.getStart()),
899
+ context: `data-${contextField}-resolved`,
900
+ original: propName,
901
+ parentId: parentName,
902
+ objectType,
903
+ });
904
+ }
905
+ }
906
+ }
885
907
  // Find array literals
886
908
  // Skip DIRECT exported arrays - they're handled by extractFromToNameMaps with proper context
887
909
  // e.g., export const combatSpeeds = ["Manual", ...] - skip
@@ -32,6 +32,7 @@ export type GameButtonFC = React.ForwardRefRenderFunction<HTMLButtonElement, But
32
32
  export type GameIconButtonFC = React.ForwardRefRenderFunction<HTMLButtonElement, IconButtonProps & {
33
33
  hoverSfx?: SoundEffectName;
34
34
  clickSfx?: SoundEffectName;
35
+ tooltip?: ReactNode;
35
36
  }>;
36
37
  export type GameCloseButtonFC = React.ForwardRefRenderFunction<HTMLButtonElement, Omit<IconButtonProps & {
37
38
  hoverSfx?: SoundEffectName;
package/dist/element.js CHANGED
@@ -32,7 +32,7 @@ export const elementToColour = {
32
32
  celestial: 'radial-gradient(white 30%, black)',
33
33
  cloud: 'radial-gradient(teal 50%, black)',
34
34
  blossom: 'radial-gradient(#d654b9 50%, black)',
35
- none: 'radial-gradient(rgb(14, 14, 14) 50%, black)',
35
+ none: 'radial-gradient(rgb(53, 53, 53) 50%, black 85%)',
36
36
  };
37
37
  export const elementToColourRaw = {
38
38
  weapon: 'steelblue',
package/dist/entity.d.ts CHANGED
@@ -62,7 +62,10 @@ export interface PlayerEntity {
62
62
  clothing: ItemDesc | undefined;
63
63
  talismans: (ItemDesc | undefined)[];
64
64
  artefacts: (ItemDesc | undefined)[];
65
- autoUseItems?: (string | undefined)[];
65
+ /** @deprecated legacy only, do not use in new code */
66
+ autoUseItems?: (AutoUseItem | string | undefined)[];
67
+ currentAutoUseLoadout?: AutoUseLoadout;
68
+ storedAutoUseLoadouts?: AutoUseLoadout[];
66
69
  quickAccess?: (string | undefined)[];
67
70
  cauldron: ItemDesc | undefined;
68
71
  flame: ItemDesc | undefined;
@@ -329,7 +332,7 @@ export interface CombatEntity {
329
332
  partyId?: string;
330
333
  /** When true, critchance is forced to 0 for this entity (used in training ground) */
331
334
  noCrit?: boolean;
332
- /** Cached hash for getVariablesFromEntity cleared whenever stats or buffs mutate */
335
+ /** Cached hash for getVariablesFromEntity. Cleared whenever stats or buffs mutate. */
333
336
  _cachedHash?: string;
334
337
  }
335
338
  export type StanceRule = SingleStance | RandomStance;
@@ -358,13 +361,31 @@ export interface ConditionalCycle {
358
361
  }>;
359
362
  operator: 'AND' | 'OR';
360
363
  }
364
+ export interface AutoUseCondition {
365
+ condition: string;
366
+ check: '<' | '==' | '>' | '!=';
367
+ value: number;
368
+ }
369
+ export interface AutoUseItem {
370
+ item?: string;
371
+ conditions?: AutoUseCondition[];
372
+ maxCount?: number;
373
+ }
374
+ export interface AutoUseLoadout {
375
+ id: string;
376
+ name: string;
377
+ autoName?: boolean;
378
+ slots: AutoUseItem[];
379
+ }
361
380
  export interface StoredStyle {
362
381
  name: string;
363
382
  id: string;
364
383
  autoName?: boolean;
365
384
  stances: StoredStance[];
366
385
  conditionalCycles?: ConditionalCycle[];
367
- autoUseItems?: (string | undefined)[];
386
+ /** @deprecated legacy only, do not use in new code */
387
+ autoUseItems?: (AutoUseItem | string | undefined)[];
388
+ autoUseLoadoutId?: string;
368
389
  }
369
390
  export type StoredRule = OpenerStoredRule | RotationStoredRule | ConditionalStoredRule | ConditionalRotationStoredRule;
370
391
  export interface OpenerStoredRule {
@@ -15,4 +15,4 @@
15
15
  * };
16
16
  * }
17
17
  */
18
- export declare const GAME_VERSION = "0.6.51";
18
+ export declare const GAME_VERSION = "0.6.52";
@@ -15,4 +15,4 @@
15
15
  * };
16
16
  * }
17
17
  */
18
- export const GAME_VERSION = "0.6.51";
18
+ export const GAME_VERSION = "0.6.52";
package/dist/mod.d.ts CHANGED
@@ -44,6 +44,7 @@ import type { Sex } from './entity';
44
44
  import type { DamageType } from './DamageType';
45
45
  import { AvatarEffectShader } from './avatarEffects';
46
46
  import type { Translatable, TranslatableString } from '../types/translatable';
47
+ import type { SaveFileInfo } from './electron';
47
48
  /**
48
49
  * Sprite images for a custom player character.
49
50
  * All images should be strings (either mod:// URLs for mod assets, or data: URLs).
@@ -480,6 +481,17 @@ export interface ModAPI {
480
481
  * @param reputation - (Optional) Required reputation tier
481
482
  */
482
483
  addItemToGuild: (item: Item, stacks: number, guild: string, rank: number, valueModifier?: number, reputation?: ReputationTier) => void;
484
+ /**
485
+ * Add an item to the sect favour exchange shop.
486
+ * @param item - Item to add
487
+ * @param stacks - Number of stacks available
488
+ * @param realm - Required realm tier to purchase
489
+ * @param valueModifier - (Optional) Price multiplier (default 1.0)
490
+ * @param reputation - (Optional) Required reputation tier
491
+ * @example
492
+ * addToSectShop(myItem, 3, 'qiCondensation');
493
+ */
494
+ addToSectShop: (item: Item, stacks: number, realm: Realm, valueModifier?: number, reputation?: ReputationTier) => void;
483
495
  /**
484
496
  * Add a crafting recipe to the sect recipe library.
485
497
  * @param item - Recipe item configuration
@@ -1638,7 +1650,7 @@ export interface ModAPI {
1638
1650
  * @param defenderProtection - Defender's protection stat
1639
1651
  * @returns Final damage value
1640
1652
  */
1641
- calculateDamage: (attackPower: number, defenderDefense: number, defenderDr: number, defenderDefenseFactor: number, maxReduction: number, defenderVulnerability: number, realm: Realm, realmProgress: RealmProgress, defenderProtection: number) => number;
1653
+ calculateDamage: (attackPower: number, defenderDefense: number, defenderDr: number, defenderDefenseFactor: number, maxReduction: number, defenderVulnerability: number, realm: Realm, realmProgress: RealmProgress, defenderProtection: number, cultivatorResistance: number) => number;
1642
1654
  /**
1643
1655
  * Format a number for display (e.g. 1000 -> "1,000").
1644
1656
  * @param number - Number to format
@@ -1911,6 +1923,24 @@ export interface ModAPI {
1911
1923
  * };
1912
1924
  */
1913
1925
  tr: (key: string, variables?: Record<string, Translatable | number>, context?: string) => TranslatableString;
1926
+ /**
1927
+ * Save the current game state to a character-scoped backup file.
1928
+ * Throws if no save is loaded or if the write fails.
1929
+ * @param filename - Name of the backup file (e.g. 'quicksave-001.json')
1930
+ */
1931
+ makeSave: (filename: string) => Promise<void>;
1932
+ /**
1933
+ * Load game state from a character-scoped backup file, replacing current state.
1934
+ * Throws if no save is loaded or if the file cannot be read.
1935
+ * @param filename - Name of the backup file to load
1936
+ */
1937
+ loadSave: (filename: string) => Promise<void>;
1938
+ /**
1939
+ * List all backup save files available for the current character.
1940
+ * Throws if no save is loaded.
1941
+ * @returns Array of backup file metadata
1942
+ */
1943
+ listSaves: () => Promise<SaveFileInfo[]>;
1914
1944
  };
1915
1945
  hooks: {
1916
1946
  /**
@@ -2098,15 +2128,15 @@ export interface ModAPI {
2098
2128
  }) => void;
2099
2129
  /**
2100
2130
  * Hook fired after every Redux state update. Receives the action type, the
2101
- * state before the action was applied, and the state after. Return a modified
2102
- * copy of `stateAfter` to override what is stored, or return `stateAfter`
2103
- * unchanged to leave the update as-is.
2131
+ * state before the action was applied, the state after, and a readonly copy of
2132
+ * the action payload. Return a modified copy of `stateAfter` to override what
2133
+ * is stored, or return `stateAfter` unchanged to leave the update as-is.
2104
2134
  *
2105
2135
  * This is called inside the reducer — keep the implementation fast and avoid
2106
2136
  * side-effects. Thrown exceptions are caught and logged.
2107
2137
  *
2108
2138
  * @example
2109
- * modAPI.hooks.onReduxAction((actionType, before, after) => {
2139
+ * modAPI.hooks.onReduxAction((actionType, before, after, payload) => {
2110
2140
  * if (actionType === 'inventory/addItem') {
2111
2141
  * // double every item added in hard mode
2112
2142
  * if (after.gameData.flags?.hard_mode) {
@@ -2116,7 +2146,34 @@ export interface ModAPI {
2116
2146
  * return after;
2117
2147
  * });
2118
2148
  */
2119
- onReduxAction: (interceptor: (actionType: string, stateBefore: RootState, stateAfter: RootState) => RootState) => void;
2149
+ onReduxAction: (interceptor: (actionType: string, stateBefore: RootState, stateAfter: RootState, payload: Readonly<unknown>) => RootState) => void;
2150
+ /**
2151
+ * Hook fired before a Redux action is passed to the reducer. Allows
2152
+ * intercepting and modifying the action payload, or dropping the action
2153
+ * entirely.
2154
+ *
2155
+ * Return a modified payload to replace the original (any non-null value,
2156
+ * including `undefined`, replaces the current payload), or return `null` to
2157
+ * drop the action (the reducer will not be called and the state will remain
2158
+ * unchanged). When multiple interceptors are chained, each one receives the
2159
+ * payload returned by the previous one.
2160
+ *
2161
+ * This is called before the reducer — keep the implementation fast and avoid
2162
+ * side-effects. Thrown exceptions are caught and logged.
2163
+ *
2164
+ * @example
2165
+ * modAPI.hooks.onReduxActionPayload((actionType, payload) => {
2166
+ * if (actionType === 'inventory/removeItem') {
2167
+ * const p = payload as { name: string; stacks: number };
2168
+ * // prevent blueprint removal by zeroing the stack count
2169
+ * if (modAPI.gameData.items[p.name]?.kind === 'blueprint') {
2170
+ * return { ...p, stacks: 0 };
2171
+ * }
2172
+ * }
2173
+ * return payload;
2174
+ * });
2175
+ */
2176
+ onReduxActionPayload: (interceptor: (actionType: string, payload: unknown) => unknown | null) => void;
2120
2177
  };
2121
2178
  /**
2122
2179
  * Inject UI into a named slot (dialog title or screen name).
package/dist/stat.d.ts CHANGED
@@ -3,7 +3,7 @@ import type { TechniqueElement } from './element';
3
3
  export declare const physicalStatistics: readonly ["eyes", "meridians", "dantian", "muscles", "digestion", "flesh"];
4
4
  export declare const socialStatistics: readonly ["age", "lifespan", "charisma", "battlesense", "craftskill", "artefactslots", "talismanslots", "condenseEfficiency", "pillsPerRound"];
5
5
  export declare const craftingStatistics: readonly ["maxpool", "pool", "maxtoxicity", "toxicity", "resistance", "itemEffectiveness", "control", "intensity", "critchance", "critmultiplier", "pillsPerRound", "poolCostPercentage", "stabilityCostPercentage", "successChanceBonus", "poolCostFlat"];
6
- export declare const combatStatistics: readonly ["maxhp", "hp", "maxbarrier", "barrier", "maxtoxicity", "toxicity", "resistance", "pillsPerRound", "itemEffectiveness", "power", "artefactpower", "critchance", "defense", "protection", "dr", "barrierMitigation", "lifesteal", "critmultiplier", "vulnerability", "weakness", "fistBoost", "blossomBoost", "weaponBoost", "cloudBoost", "bloodBoost", "celestialBoost", "fistAffinity", "blossomAffinity", "weaponAffinity", "cloudAffinity", "bloodAffinity", "celestialAffinity", "noneAffinity", "qiDroplets", "fistDisabled", "bloodDisabled", "blossomDisabled", "cloudDisabled", "celestialDisabled", "weaponDisabled", "noneDisabled", "pillsDisabled", "dropletsDisabled", "fistResistance", "blossomResistance", "weaponResistance", "cloudResistance", "bloodResistance", "celestialResistance", "damageBoost", "healingBoost", "barrierBoost", "overheal", "barrierBleed", "formationPartRecovery", "overcrit"];
6
+ export declare const combatStatistics: readonly ["maxhp", "hp", "maxbarrier", "barrier", "maxtoxicity", "toxicity", "resistance", "pillsPerRound", "itemEffectiveness", "power", "artefactpower", "critchance", "defense", "protection", "dr", "barrierMitigation", "lifesteal", "critmultiplier", "vulnerability", "weakness", "fistBoost", "blossomBoost", "weaponBoost", "cloudBoost", "bloodBoost", "celestialBoost", "fistAffinity", "blossomAffinity", "weaponAffinity", "cloudAffinity", "bloodAffinity", "celestialAffinity", "noneAffinity", "qiDroplets", "fistDisabled", "bloodDisabled", "blossomDisabled", "cloudDisabled", "celestialDisabled", "weaponDisabled", "noneDisabled", "pillsDisabled", "dropletsDisabled", "fistResistance", "blossomResistance", "weaponResistance", "cloudResistance", "bloodResistance", "celestialResistance", "damageBoost", "healingBoost", "barrierBoost", "overheal", "barrierBleed", "formationPartRecovery", "overcrit", "cultivatorResistance"];
7
7
  export type PhysicalStatistic = (typeof physicalStatistics)[number];
8
8
  export type SocialStatistic = (typeof socialStatistics)[number];
9
9
  export type CraftingStatistic = (typeof craftingStatistics)[number];
package/dist/stat.js CHANGED
@@ -91,6 +91,7 @@ export const combatStatistics = [
91
91
  'barrierBleed',
92
92
  'formationPartRecovery',
93
93
  'overcrit',
94
+ 'cultivatorResistance',
94
95
  ];
95
96
  export const baseStatNumber = 10;
96
97
  export const expectedHpPerFlesh = 1000;
@@ -115,7 +116,7 @@ export const combatStatToName = {
115
116
  power: 'Power',
116
117
  artefactpower: 'Artefact Power',
117
118
  critchance: 'Crit Chance',
118
- defense: 'Defense',
119
+ defense: 'Armour',
119
120
  protection: 'Protection',
120
121
  dr: 'Damage Resistance',
121
122
  barrierMitigation: 'Barrier Effectiveness',
@@ -161,6 +162,7 @@ export const combatStatToName = {
161
162
  barrierBleed: 'Barrier Bleed',
162
163
  formationPartRecovery: 'Formation Part Recovery',
163
164
  overcrit: 'Overcrit',
165
+ cultivatorResistance: 'Cultivator Resistance',
164
166
  };
165
167
  export const combatStatToDescription = {
166
168
  maxhp: 'The amount of damage you can take before you are unable to continue.',
@@ -219,6 +221,7 @@ export const combatStatToDescription = {
219
221
  barrierBleed: '',
220
222
  formationPartRecovery: '',
221
223
  overcrit: '',
224
+ cultivatorResistance: '',
222
225
  };
223
226
  // Uncommon stats that need auxiliary tooltips when they appear on buffs
224
227
  // These descriptions only show as aux tooltips in buff tooltips, not in the stats dialog
@@ -69,6 +69,7 @@ interface BaseTechniqueEffect {
69
69
  condition?: TechniqueCondition;
70
70
  triggerKey?: string;
71
71
  isAdditionalTooltip?: boolean;
72
+ cantUpgrade?: boolean;
72
73
  }
73
74
  interface BuffSelfTechniqueEffect extends BaseTechniqueEffect {
74
75
  kind: 'buffSelf';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "afnm-types",
3
- "version": "0.6.51",
3
+ "version": "0.6.52-v2",
4
4
  "description": "Type definitions for Ascend From Nine Mountains",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -1,33 +0,0 @@
1
- import type { ReactNode } from 'react';
2
- import type { AppDispatch } from '../store';
3
- import type { BreakthroughState } from './breakthrough';
4
- import type { SoundEffectName } from './audio';
5
- import type { Item } from './item';
6
- import type { PlayerEntity } from './entity';
7
- import type { InventoryState } from './reduxState';
8
- interface OpenItem {
9
- item: Item;
10
- data: unknown;
11
- onComplete: () => void;
12
- }
13
- export interface ItemActionContext {
14
- item: Item;
15
- player: PlayerEntity;
16
- inventory: InventoryState;
17
- breakthrough: BreakthroughState;
18
- flags: Record<string, number | string | boolean>;
19
- dispatch: AppDispatch;
20
- setResult: (result: ReactNode) => void;
21
- setClicked: (clicked: boolean) => void;
22
- setOpenItem?: (openItem: OpenItem) => void;
23
- setDoEnchant?: (doEnchant: boolean) => void;
24
- setDoUpgrade?: (doUpgrade: boolean) => void;
25
- setDoAppearanceChange?: (doAppearanceChange: boolean) => void;
26
- playSfx: (sound: SoundEffectName) => void;
27
- usageRestricted: boolean;
28
- }
29
- export interface ItemActionResult {
30
- buttons: ReactNode[];
31
- }
32
- export type ItemActionHandler = (context: ItemActionContext) => ItemActionResult;
33
- export {};
@@ -1 +0,0 @@
1
- export {};
package/dist/manual.d.ts DELETED
@@ -1,8 +0,0 @@
1
- import { Realm } from './realm';
2
- export interface Manual {
3
- name: string;
4
- icon: string;
5
- realm: Realm;
6
- techniques: string[];
7
- stance: string[];
8
- }
package/dist/manual.js DELETED
@@ -1 +0,0 @@
1
- export {};
@@ -1,9 +0,0 @@
1
- /**
2
- * Type Tests - These files ensure type compatibility across the codebase
3
- * If any of these fail to compile, it means we have a type mismatch
4
- */
5
- import type { RootState as StoreRootState } from '../store';
6
- import type { RootState as TypesRootState } from './reduxState';
7
- type TestExactMatch = StoreRootState extends TypesRootState ? TypesRootState extends StoreRootState ? true : false : false;
8
- export type RootStateIsConsistent = TestExactMatch;
9
- export {};