@ngrx/signals 18.0.0-rc.1 → 18.0.0-rc.3

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.
Files changed (69) hide show
  1. package/entities/src/entity-config.d.ts +17 -0
  2. package/entities/src/helpers.d.ts +9 -9
  3. package/entities/src/index.d.ts +2 -1
  4. package/entities/src/models.d.ts +4 -7
  5. package/entities/src/updaters/add-entities.d.ts +3 -3
  6. package/entities/src/updaters/add-entity.d.ts +3 -3
  7. package/entities/src/updaters/set-all-entities.d.ts +3 -3
  8. package/entities/src/updaters/set-entities.d.ts +3 -3
  9. package/entities/src/updaters/set-entity.d.ts +3 -3
  10. package/entities/src/updaters/update-all-entities.d.ts +14 -3
  11. package/entities/src/updaters/update-entities.d.ts +45 -11
  12. package/entities/src/updaters/update-entity.d.ts +23 -6
  13. package/entities/src/with-entities.d.ts +8 -20
  14. package/esm2022/entities/src/entity-config.mjs +4 -0
  15. package/esm2022/entities/src/helpers.mjs +28 -12
  16. package/esm2022/entities/src/index.mjs +2 -1
  17. package/esm2022/entities/src/models.mjs +1 -1
  18. package/esm2022/entities/src/updaters/add-entities.mjs +4 -4
  19. package/esm2022/entities/src/updaters/add-entity.mjs +4 -4
  20. package/esm2022/entities/src/updaters/set-all-entities.mjs +4 -4
  21. package/esm2022/entities/src/updaters/set-entities.mjs +4 -4
  22. package/esm2022/entities/src/updaters/set-entity.mjs +4 -4
  23. package/esm2022/entities/src/updaters/update-all-entities.mjs +4 -3
  24. package/esm2022/entities/src/updaters/update-entities.mjs +4 -3
  25. package/esm2022/entities/src/updaters/update-entity.mjs +4 -3
  26. package/esm2022/entities/src/with-entities.mjs +1 -1
  27. package/esm2022/rxjs-interop/src/rx-method.mjs +1 -1
  28. package/esm2022/src/index.mjs +2 -3
  29. package/esm2022/src/signal-state.mjs +7 -7
  30. package/esm2022/src/signal-store-assertions.mjs +15 -0
  31. package/esm2022/src/signal-store-feature.mjs +1 -1
  32. package/esm2022/src/signal-store-models.mjs +1 -1
  33. package/esm2022/src/signal-store.mjs +16 -13
  34. package/esm2022/src/state-source.mjs +48 -0
  35. package/esm2022/src/with-computed.mjs +8 -9
  36. package/esm2022/src/with-hooks.mjs +8 -8
  37. package/esm2022/src/with-methods.mjs +7 -11
  38. package/esm2022/src/with-state.mjs +9 -12
  39. package/fesm2022/ngrx-signals-entities.mjs +48 -25
  40. package/fesm2022/ngrx-signals-entities.mjs.map +1 -1
  41. package/fesm2022/ngrx-signals-rxjs-interop.mjs.map +1 -1
  42. package/fesm2022/ngrx-signals.mjs +98 -63
  43. package/fesm2022/ngrx-signals.mjs.map +1 -1
  44. package/migrations/18_0_0-rc_3-protected-state/index.js +93 -0
  45. package/migrations/18_0_0-rc_3-protected-state/index.js.map +1 -0
  46. package/migrations/18_0_0-rc_3-writablestatesource/index.js +43 -0
  47. package/migrations/18_0_0-rc_3-writablestatesource/index.js.map +1 -0
  48. package/migrations/migration.json +12 -1
  49. package/package.json +1 -1
  50. package/rxjs-interop/src/rx-method.d.ts +1 -2
  51. package/src/index.d.ts +4 -5
  52. package/src/signal-state.d.ts +2 -3
  53. package/src/signal-store-assertions.d.ts +2 -0
  54. package/src/signal-store-feature.d.ts +26 -19
  55. package/src/signal-store-models.d.ts +9 -28
  56. package/src/signal-store.d.ts +139 -88
  57. package/src/state-source.d.ts +18 -0
  58. package/src/with-computed.d.ts +5 -3
  59. package/src/with-hooks.d.ts +4 -4
  60. package/src/with-methods.d.ts +5 -3
  61. package/src/with-state.d.ts +6 -2
  62. package/esm2022/src/get-state.mjs +0 -5
  63. package/esm2022/src/helpers.mjs +0 -9
  64. package/esm2022/src/patch-state.mjs +0 -8
  65. package/esm2022/src/state-signal.mjs +0 -2
  66. package/src/get-state.d.ts +0 -2
  67. package/src/helpers.d.ts +0 -1
  68. package/src/patch-state.d.ts +0 -4
  69. package/src/state-signal.d.ts +0 -5
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var schematics_core_1 = require("../../schematics-core");
4
+ var ts = require("typescript");
5
+ var schematics_core_2 = require("../../schematics-core");
6
+ function migrateWritableStateSource() {
7
+ return function (tree, ctx) {
8
+ (0, schematics_core_1.visitTSSourceFiles)(tree, function (sourceFile) {
9
+ var signalStoreImportedName = findImportedName(sourceFile);
10
+ if (!signalStoreImportedName) {
11
+ return;
12
+ }
13
+ var changes = [];
14
+ visitCallExpression(sourceFile, signalStoreImportedName, function (node) {
15
+ if (node.arguments.length > 0) {
16
+ if (ts.isObjectLiteralExpression(node.arguments[0])) {
17
+ // signalStore({ providedIn: 'root' })
18
+ var providedInProperty = node.arguments[0].properties[0];
19
+ if (ts.isPropertyAssignment(providedInProperty) &&
20
+ ts.isIdentifier(providedInProperty.name) &&
21
+ providedInProperty.name.text === 'providedIn') {
22
+ changes.push((0, schematics_core_1.createReplaceChange)(sourceFile, providedInProperty, providedInProperty.getText(), "".concat(providedInProperty.getText(), ", protectedState: false")));
23
+ }
24
+ }
25
+ else {
26
+ // signalStore(withState({}))
27
+ var firstFeature = node.arguments[0];
28
+ changes.push((0, schematics_core_1.createReplaceChange)(sourceFile, firstFeature, firstFeature.getText(), "{ protectedState: false }, ".concat(firstFeature.getText())));
29
+ }
30
+ }
31
+ else {
32
+ // signalStore()
33
+ changes.push((0, schematics_core_1.createReplaceChange)(sourceFile, node, node.getText(), "".concat(signalStoreImportedName, "({ protectedState: false })")));
34
+ }
35
+ });
36
+ if (changes.length) {
37
+ (0, schematics_core_2.commitChanges)(tree, sourceFile.fileName, changes);
38
+ ctx.logger.info("[@ngrx/signals] Disable protected state in ".concat(sourceFile.fileName));
39
+ }
40
+ });
41
+ };
42
+ }
43
+ exports.default = migrateWritableStateSource;
44
+ function visitCallExpression(node, name, callback) {
45
+ if (ts.isCallExpression(node) &&
46
+ ts.isIdentifier(node.expression) &&
47
+ node.expression.text === name) {
48
+ callback(node);
49
+ }
50
+ ts.forEachChild(node, function (child) {
51
+ visitCallExpression(child, name, callback);
52
+ });
53
+ }
54
+ function visitImportDeclaration(node, callback) {
55
+ if (ts.isImportDeclaration(node)) {
56
+ callback(node);
57
+ }
58
+ ts.forEachChild(node, function (child) {
59
+ visitImportDeclaration(child, callback);
60
+ });
61
+ }
62
+ function findImportedName(source) {
63
+ var importedName = '';
64
+ visitImportDeclaration(source, function (importDeclaration) {
65
+ var _a;
66
+ if (importDeclaration.moduleSpecifier.getText().includes('@ngrx/signals')) {
67
+ if (importedName) {
68
+ return;
69
+ }
70
+ var namedBindings = (_a = importDeclaration.importClause) === null || _a === void 0 ? void 0 : _a.namedBindings;
71
+ if (namedBindings && ts.isNamedImports(namedBindings)) {
72
+ var foundImportedName = namedBindings.elements
73
+ .map(function (importSpecifier) {
74
+ if (importSpecifier.propertyName &&
75
+ importSpecifier.propertyName.text === 'signalStore') {
76
+ return importSpecifier.name.text;
77
+ }
78
+ else if (importSpecifier.name.text === 'signalStore') {
79
+ return 'signalStore';
80
+ }
81
+ return undefined;
82
+ })
83
+ .find(Boolean);
84
+ if (foundImportedName) {
85
+ importedName = foundImportedName;
86
+ return;
87
+ }
88
+ }
89
+ }
90
+ });
91
+ return importedName;
92
+ }
93
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../modules/signals/migrations/18_0_0-rc_3-protected-state/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Change,\n createReplaceChange,\n visitTSSourceFiles,\n} from '../../schematics-core';\nimport { Rule, SchematicContext, Tree } from '@angular-devkit/schematics';\nimport * as ts from 'typescript';\nimport { commitChanges } from '../../schematics-core';\n\nexport default function migrateWritableStateSource(): Rule {\n return (tree: Tree, ctx: SchematicContext) => {\n visitTSSourceFiles(tree, (sourceFile) => {\n const signalStoreImportedName = findImportedName(sourceFile);\n if (!signalStoreImportedName) {\n return;\n }\n\n const changes: Change[] = [];\n visitCallExpression(sourceFile, signalStoreImportedName, (node) => {\n if (node.arguments.length > 0) {\n if (ts.isObjectLiteralExpression(node.arguments[0])) {\n // signalStore({ providedIn: 'root' })\n const providedInProperty = node.arguments[0].properties[0];\n\n if (\n ts.isPropertyAssignment(providedInProperty) &&\n ts.isIdentifier(providedInProperty.name) &&\n providedInProperty.name.text === 'providedIn'\n ) {\n changes.push(\n createReplaceChange(\n sourceFile,\n providedInProperty,\n providedInProperty.getText(),\n `${providedInProperty.getText()}, protectedState: false`\n )\n );\n }\n } else {\n // signalStore(withState({}))\n const firstFeature = node.arguments[0];\n changes.push(\n createReplaceChange(\n sourceFile,\n firstFeature,\n firstFeature.getText(),\n `{ protectedState: false }, ${firstFeature.getText()}`\n )\n );\n }\n } else {\n // signalStore()\n changes.push(\n createReplaceChange(\n sourceFile,\n node,\n node.getText(),\n `${signalStoreImportedName}({ protectedState: false })`\n )\n );\n }\n });\n\n if (changes.length) {\n commitChanges(tree, sourceFile.fileName, changes);\n ctx.logger.info(\n `[@ngrx/signals] Disable protected state in ${sourceFile.fileName}`\n );\n }\n });\n };\n}\n\nfunction visitCallExpression(\n node: ts.Node,\n name: string,\n callback: (callExpression: ts.CallExpression) => void\n) {\n if (\n ts.isCallExpression(node) &&\n ts.isIdentifier(node.expression) &&\n node.expression.text === name\n ) {\n callback(node);\n }\n\n ts.forEachChild(node, (child) => {\n visitCallExpression(child, name, callback);\n });\n}\n\nfunction visitImportDeclaration(\n node: ts.Node,\n callback: (importDeclaration: ts.ImportDeclaration) => void\n) {\n if (ts.isImportDeclaration(node)) {\n callback(node);\n }\n\n ts.forEachChild(node, (child) => {\n visitImportDeclaration(child, callback);\n });\n}\n\nfunction findImportedName(source: ts.SourceFile) {\n let importedName = '';\n visitImportDeclaration(source, (importDeclaration) => {\n if (importDeclaration.moduleSpecifier.getText().includes('@ngrx/signals')) {\n if (importedName) {\n return;\n }\n\n const namedBindings = importDeclaration.importClause?.namedBindings;\n if (namedBindings && ts.isNamedImports(namedBindings)) {\n const foundImportedName = namedBindings.elements\n .map((importSpecifier) => {\n if (\n importSpecifier.propertyName &&\n importSpecifier.propertyName.text === 'signalStore'\n ) {\n return importSpecifier.name.text;\n } else if (importSpecifier.name.text === 'signalStore') {\n return 'signalStore';\n }\n return undefined;\n })\n .find(Boolean);\n\n if (foundImportedName) {\n importedName = foundImportedName;\n return;\n }\n }\n }\n });\n\n return importedName;\n}\n"]}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.migrateWritableStateSource = void 0;
4
+ var ts = require("typescript");
5
+ var schematics_1 = require("@angular-devkit/schematics");
6
+ var schematics_core_1 = require("../../schematics-core");
7
+ function migrateWritableStateSource() {
8
+ return function (tree, ctx) {
9
+ var updateCounter = 0;
10
+ ctx.logger.info("[@ngrx/signals] Migrating 'StateSignal' to 'WritableStateSource'");
11
+ (0, schematics_core_1.visitTSSourceFiles)(tree, function (sourceFile) {
12
+ var changes = (0, schematics_core_1.replaceImport)(sourceFile, sourceFile.fileName, '@ngrx/signals', 'StateSignal', 'WritableStateSource');
13
+ if (changes.length) {
14
+ visitIdentifiers(sourceFile, function (node) {
15
+ if (node.getText() === 'StateSignal' &&
16
+ !ts.isImportSpecifier(node.parent)) {
17
+ changes.push((0, schematics_core_1.createReplaceChange)(sourceFile, node, 'StateSignal', 'WritableStateSource'));
18
+ updateCounter++;
19
+ }
20
+ });
21
+ }
22
+ (0, schematics_core_1.commitChanges)(tree, sourceFile.fileName, changes);
23
+ });
24
+ if (updateCounter) {
25
+ ctx.logger.info("[@ngrx/signals] Updated ".concat(updateCounter, " references from 'StateSignal' to 'WritableStateSource'"));
26
+ }
27
+ else {
28
+ ctx.logger.info("[@ngrx/signals] No 'StateSignal' refences found to, skipping the migration");
29
+ }
30
+ };
31
+ }
32
+ exports.migrateWritableStateSource = migrateWritableStateSource;
33
+ function visitIdentifiers(node, visitor) {
34
+ if (ts.isIdentifier(node)) {
35
+ visitor(node);
36
+ }
37
+ ts.forEachChild(node, function (childNode) { return visitIdentifiers(childNode, visitor); });
38
+ }
39
+ function default_1() {
40
+ return (0, schematics_1.chain)([migrateWritableStateSource()]);
41
+ }
42
+ exports.default = default_1;
43
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../modules/signals/migrations/18_0_0-rc_3-writablestatesource/index.ts"],"names":[],"mappings":";;;AAAA,+BAAiC;AACjC,yDAKoC;AACpC,yDAK+B;AAG/B,SAAgB,0BAA0B;IACxC,OAAO,UAAC,IAAU,EAAE,GAAqB;QACvC,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,GAAG,CAAC,MAAM,CAAC,IAAI,CACb,kEAAkE,CACnE,CAAC;QAEF,IAAA,oCAAkB,EAAC,IAAI,EAAE,UAAC,UAAU;YAClC,IAAM,OAAO,GAAG,IAAA,+BAAa,EAC3B,UAAU,EACV,UAAU,CAAC,QAAgB,EAC3B,eAAe,EACf,aAAa,EACb,qBAAqB,CACtB,CAAC;YAEF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,gBAAgB,CAAC,UAAU,EAAE,UAAC,IAAI;oBAChC,IACE,IAAI,CAAC,OAAO,EAAE,KAAK,aAAa;wBAChC,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,EAClC,CAAC;wBACD,OAAO,CAAC,IAAI,CACV,IAAA,qCAAmB,EACjB,UAAU,EACV,IAAI,EACJ,aAAa,EACb,qBAAqB,CACtB,CACF,CAAC;wBACF,aAAa,EAAE,CAAC;oBAClB,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAED,IAAA,+BAAa,EAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,IAAI,aAAa,EAAE,CAAC;YAClB,GAAG,CAAC,MAAM,CAAC,IAAI,CACb,kCAA2B,aAAa,4DAAyD,CAClG,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,IAAI,CACb,4EAA4E,CAC7E,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAhDD,gEAgDC;AAED,SAAS,gBAAgB,CACvB,IAAa,EACb,OAAsC;IAEtC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAED,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,UAAC,SAAS,IAAK,OAAA,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,EAApC,CAAoC,CAAC,CAAC;AAC7E,CAAC;AAED;IACE,OAAO,IAAA,kBAAK,EAAC,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAFD,4BAEC","sourcesContent":["import * as ts from 'typescript';\nimport {\n Tree,\n Rule,\n chain,\n SchematicContext,\n} from '@angular-devkit/schematics';\nimport {\n commitChanges,\n createReplaceChange,\n replaceImport,\n visitTSSourceFiles,\n} from '../../schematics-core';\nimport { Path } from '@angular-devkit/core';\n\nexport function migrateWritableStateSource(): Rule {\n return (tree: Tree, ctx: SchematicContext) => {\n let updateCounter = 0;\n ctx.logger.info(\n `[@ngrx/signals] Migrating 'StateSignal' to 'WritableStateSource'`\n );\n\n visitTSSourceFiles(tree, (sourceFile) => {\n const changes = replaceImport(\n sourceFile,\n sourceFile.fileName as Path,\n '@ngrx/signals',\n 'StateSignal',\n 'WritableStateSource'\n );\n\n if (changes.length) {\n visitIdentifiers(sourceFile, (node) => {\n if (\n node.getText() === 'StateSignal' &&\n !ts.isImportSpecifier(node.parent)\n ) {\n changes.push(\n createReplaceChange(\n sourceFile,\n node,\n 'StateSignal',\n 'WritableStateSource'\n )\n );\n updateCounter++;\n }\n });\n }\n\n commitChanges(tree, sourceFile.fileName, changes);\n });\n\n if (updateCounter) {\n ctx.logger.info(\n `[@ngrx/signals] Updated ${updateCounter} references from 'StateSignal' to 'WritableStateSource'`\n );\n } else {\n ctx.logger.info(\n `[@ngrx/signals] No 'StateSignal' refences found to, skipping the migration`\n );\n }\n };\n}\n\nfunction visitIdentifiers(\n node: ts.Node,\n visitor: (node: ts.Identifier) => void\n) {\n if (ts.isIdentifier(node)) {\n visitor(node);\n }\n\n ts.forEachChild(node, (childNode) => visitIdentifiers(childNode, visitor));\n}\n\nexport default function (): Rule {\n return chain([migrateWritableStateSource()]);\n}\n"]}
@@ -1,4 +1,15 @@
1
1
  {
2
2
  "$schema": "../../../node_modules/@angular-devkit/schematics/collection-schema.json",
3
- "schematics": {}
3
+ "schematics": {
4
+ "18_0_0-rc_3-protected-state": {
5
+ "description": "Make the state of all existing SignalStores unprotected",
6
+ "version": "18.0.0-rc.3",
7
+ "factory": "./18_0_0-rc_3-protected-state/index"
8
+ },
9
+ "18_0_0-rc_3-writablestatesource": {
10
+ "description": "Replace StateSignal usages with WritableStateSource",
11
+ "version": "18.0.0-rc.3",
12
+ "factory": "./18_0_0-rc_3-writablestatesource/index"
13
+ }
14
+ }
4
15
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngrx/signals",
3
- "version": "18.0.0-rc.1",
3
+ "version": "18.0.0-rc.3",
4
4
  "description": "Reactive Store and Set of Utilities for Angular Signals",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,7 +1,6 @@
1
1
  import { Injector, Signal } from '@angular/core';
2
2
  import { Observable, Unsubscribable } from 'rxjs';
3
- type RxMethodInput<Input> = Input | Observable<Input> | Signal<Input>;
4
- type RxMethod<Input> = ((input: RxMethodInput<Input>) => Unsubscribable) & Unsubscribable;
3
+ type RxMethod<Input> = ((input: Input | Signal<Input> | Observable<Input>) => Unsubscribable) & Unsubscribable;
5
4
  export declare function rxMethod<Input>(generator: (source$: Observable<Input>) => Observable<unknown>, config?: {
6
5
  injector?: Injector;
7
6
  }): RxMethod<Input>;
package/src/index.d.ts CHANGED
@@ -1,11 +1,10 @@
1
1
  export { DeepSignal } from './deep-signal';
2
- export { getState } from './get-state';
3
- export { PartialStateUpdater, patchState } from './patch-state';
4
- export { signalState } from './signal-state';
2
+ export { signalState, SignalState } from './signal-state';
5
3
  export { signalStore } from './signal-store';
6
4
  export { signalStoreFeature, type } from './signal-store-feature';
7
- export { SignalStoreFeature } from './signal-store-models';
8
- export { StateSignal } from './state-signal';
5
+ export { EmptyFeatureResult, SignalStoreFeature, SignalStoreFeatureResult, StateSignals, } from './signal-store-models';
6
+ export { getState, PartialStateUpdater, patchState, StateSource, watchState, WritableStateSource, } from './state-source';
7
+ export { Prettify } from './ts-helpers';
9
8
  export { withComputed } from './with-computed';
10
9
  export { withHooks } from './with-hooks';
11
10
  export { withMethods } from './with-methods';
@@ -1,5 +1,4 @@
1
- import { StateSignal } from './state-signal';
1
+ import { WritableStateSource } from './state-source';
2
2
  import { DeepSignal } from './deep-signal';
3
- type SignalState<State extends object> = DeepSignal<State> & StateSignal<State>;
3
+ export type SignalState<State extends object> = DeepSignal<State> & WritableStateSource<State>;
4
4
  export declare function signalState<State extends object>(initialState: State): SignalState<State>;
5
- export {};
@@ -0,0 +1,2 @@
1
+ import { InnerSignalStore } from './signal-store-models';
2
+ export declare function assertUniqueStoreMembers(store: InnerSignalStore, newMemberKeys: string[]): void;
@@ -1,22 +1,29 @@
1
- import { EmptyFeatureResult, MergeFeatureResults, SignalStoreFeature, SignalStoreFeatureResult } from './signal-store-models';
1
+ import { EmptyFeatureResult, SignalStoreFeature, SignalStoreFeatureResult } from './signal-store-models';
2
2
  import { Prettify } from './ts-helpers';
3
+ type PrettifyFeatureResult<Result extends SignalStoreFeatureResult> = Prettify<{
4
+ state: Prettify<Result['state']>;
5
+ computed: Prettify<Result['computed']>;
6
+ methods: Prettify<Result['methods']>;
7
+ }>;
3
8
  export declare function signalStoreFeature<F1 extends SignalStoreFeatureResult>(f1: SignalStoreFeature<EmptyFeatureResult, F1>): SignalStoreFeature<EmptyFeatureResult, F1>;
4
- export declare function signalStoreFeature<F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult>(f1: SignalStoreFeature<EmptyFeatureResult, F1>, f2: SignalStoreFeature<{} & F1, F2>): SignalStoreFeature<EmptyFeatureResult, MergeFeatureResults<[F1, F2]>>;
5
- export declare function signalStoreFeature<F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult, F3 extends SignalStoreFeatureResult>(f1: SignalStoreFeature<EmptyFeatureResult, F1>, f2: SignalStoreFeature<{} & F1, F2>, f3: SignalStoreFeature<MergeFeatureResults<[F1, F2]>, F3>): SignalStoreFeature<EmptyFeatureResult, MergeFeatureResults<[F1, F2, F3]>>;
6
- export declare function signalStoreFeature<F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult, F3 extends SignalStoreFeatureResult, F4 extends SignalStoreFeatureResult>(f1: SignalStoreFeature<EmptyFeatureResult, F1>, f2: SignalStoreFeature<{} & F1, F2>, f3: SignalStoreFeature<MergeFeatureResults<[F1, F2]>, F3>, f4: SignalStoreFeature<MergeFeatureResults<[F1, F2, F3]>, F4>): SignalStoreFeature<EmptyFeatureResult, MergeFeatureResults<[F1, F2, F3, F4]>>;
7
- export declare function signalStoreFeature<F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult, F3 extends SignalStoreFeatureResult, F4 extends SignalStoreFeatureResult, F5 extends SignalStoreFeatureResult>(f1: SignalStoreFeature<EmptyFeatureResult, F1>, f2: SignalStoreFeature<{} & F1, F2>, f3: SignalStoreFeature<MergeFeatureResults<[F1, F2]>, F3>, f4: SignalStoreFeature<MergeFeatureResults<[F1, F2, F3]>, F4>, f5: SignalStoreFeature<MergeFeatureResults<[F1, F2, F3, F4]>, F5>): SignalStoreFeature<EmptyFeatureResult, MergeFeatureResults<[F1, F2, F3, F4, F5]>>;
8
- export declare function signalStoreFeature<F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult, F3 extends SignalStoreFeatureResult, F4 extends SignalStoreFeatureResult, F5 extends SignalStoreFeatureResult, F6 extends SignalStoreFeatureResult>(f1: SignalStoreFeature<EmptyFeatureResult, F1>, f2: SignalStoreFeature<{} & F1, F2>, f3: SignalStoreFeature<MergeFeatureResults<[F1, F2]>, F3>, f4: SignalStoreFeature<MergeFeatureResults<[F1, F2, F3]>, F4>, f5: SignalStoreFeature<MergeFeatureResults<[F1, F2, F3, F4]>, F5>, f6: SignalStoreFeature<MergeFeatureResults<[F1, F2, F3, F4, F5]>, F6>): SignalStoreFeature<EmptyFeatureResult, MergeFeatureResults<[F1, F2, F3, F4, F5, F6]>>;
9
- export declare function signalStoreFeature<Input extends Partial<SignalStoreFeatureResult>, F1 extends SignalStoreFeatureResult>(input: Input, f1: SignalStoreFeature<Prettify<EmptyFeatureResult & Input>, F1>): SignalStoreFeature<Prettify<EmptyFeatureResult & Input>, F1>;
10
- export declare function signalStoreFeature<Input extends Partial<SignalStoreFeatureResult>, F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult>(input: Input, f1: SignalStoreFeature<Prettify<EmptyFeatureResult & Input>, F1>, f2: SignalStoreFeature<MergeFeatureResults<[Prettify<EmptyFeatureResult & Input>, F1]>, F2>): SignalStoreFeature<Prettify<EmptyFeatureResult & Input>, MergeFeatureResults<[F1, F2]>>;
11
- export declare function signalStoreFeature<Input extends Partial<SignalStoreFeatureResult>, F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult, F3 extends SignalStoreFeatureResult>(input: Input, f1: SignalStoreFeature<Prettify<EmptyFeatureResult & Input>, F1>, f2: SignalStoreFeature<MergeFeatureResults<[Prettify<EmptyFeatureResult & Input>, F1]>, F2>, f3: SignalStoreFeature<MergeFeatureResults<[Prettify<EmptyFeatureResult & Input>, F1, F2]>, F3>): SignalStoreFeature<Prettify<EmptyFeatureResult & Input>, MergeFeatureResults<[F1, F2, F3]>>;
12
- export declare function signalStoreFeature<Input extends Partial<SignalStoreFeatureResult>, F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult, F3 extends SignalStoreFeatureResult, F4 extends SignalStoreFeatureResult>(Input: Input, f1: SignalStoreFeature<Prettify<EmptyFeatureResult & Input>, F1>, f2: SignalStoreFeature<MergeFeatureResults<[Prettify<EmptyFeatureResult & Input>, F1]>, F2>, f3: SignalStoreFeature<MergeFeatureResults<[Prettify<EmptyFeatureResult & Input>, F1, F2]>, F3>, f4: SignalStoreFeature<MergeFeatureResults<[Prettify<EmptyFeatureResult & Input>, F1, F2, F3]>, F4>): SignalStoreFeature<Prettify<EmptyFeatureResult & Input>, MergeFeatureResults<[F1, F2, F3, F4]>>;
13
- export declare function signalStoreFeature<Input extends Partial<SignalStoreFeatureResult>, F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult, F3 extends SignalStoreFeatureResult, F4 extends SignalStoreFeatureResult, F5 extends SignalStoreFeatureResult>(input: Input, f1: SignalStoreFeature<Prettify<EmptyFeatureResult & Input>, F1>, f2: SignalStoreFeature<MergeFeatureResults<[Prettify<EmptyFeatureResult & Input>, F1]>, F2>, f3: SignalStoreFeature<MergeFeatureResults<[Prettify<EmptyFeatureResult & Input>, F1, F2]>, F3>, f4: SignalStoreFeature<MergeFeatureResults<[Prettify<EmptyFeatureResult & Input>, F1, F2, F3]>, F4>, f5: SignalStoreFeature<MergeFeatureResults<[Prettify<EmptyFeatureResult & Input>, F1, F2, F3, F4]>, F5>): SignalStoreFeature<Prettify<EmptyFeatureResult & Input>, MergeFeatureResults<[F1, F2, F3, F4, F5]>>;
14
- export declare function signalStoreFeature<Input extends Partial<SignalStoreFeatureResult>, F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult, F3 extends SignalStoreFeatureResult, F4 extends SignalStoreFeatureResult, F5 extends SignalStoreFeatureResult, F6 extends SignalStoreFeatureResult>(input: Input, f1: SignalStoreFeature<Prettify<EmptyFeatureResult & Input>, F1>, f2: SignalStoreFeature<MergeFeatureResults<[Prettify<EmptyFeatureResult & Input>, F1]>, F2>, f3: SignalStoreFeature<MergeFeatureResults<[Prettify<EmptyFeatureResult & Input>, F1, F2]>, F3>, f4: SignalStoreFeature<MergeFeatureResults<[Prettify<EmptyFeatureResult & Input>, F1, F2, F3]>, F4>, f5: SignalStoreFeature<MergeFeatureResults<[Prettify<EmptyFeatureResult & Input>, F1, F2, F3, F4]>, F5>, f6: SignalStoreFeature<MergeFeatureResults<[
15
- Prettify<EmptyFeatureResult & Input>,
16
- F1,
17
- F2,
18
- F3,
19
- F4,
20
- F5
21
- ]>, F6>): SignalStoreFeature<Prettify<EmptyFeatureResult & Input>, MergeFeatureResults<[F1, F2, F3, F4, F5, F6]>>;
9
+ export declare function signalStoreFeature<F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult>(f1: SignalStoreFeature<EmptyFeatureResult, F1>, f2: SignalStoreFeature<{} & F1, F2>): SignalStoreFeature<EmptyFeatureResult, PrettifyFeatureResult<F1 & F2>>;
10
+ export declare function signalStoreFeature<F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult, F3 extends SignalStoreFeatureResult>(f1: SignalStoreFeature<EmptyFeatureResult, F1>, f2: SignalStoreFeature<{} & F1, F2>, f3: SignalStoreFeature<F1 & F2, F3>): SignalStoreFeature<EmptyFeatureResult, PrettifyFeatureResult<F1 & F2 & F3>>;
11
+ export declare function signalStoreFeature<F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult, F3 extends SignalStoreFeatureResult, F4 extends SignalStoreFeatureResult>(f1: SignalStoreFeature<EmptyFeatureResult, F1>, f2: SignalStoreFeature<{} & F1, F2>, f3: SignalStoreFeature<F1 & F2, F3>, f4: SignalStoreFeature<F1 & F2 & F3, F4>): SignalStoreFeature<EmptyFeatureResult, PrettifyFeatureResult<F1 & F2 & F3 & F4>>;
12
+ export declare function signalStoreFeature<F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult, F3 extends SignalStoreFeatureResult, F4 extends SignalStoreFeatureResult, F5 extends SignalStoreFeatureResult>(f1: SignalStoreFeature<EmptyFeatureResult, F1>, f2: SignalStoreFeature<{} & F1, F2>, f3: SignalStoreFeature<F1 & F2, F3>, f4: SignalStoreFeature<F1 & F2 & F3, F4>, f5: SignalStoreFeature<F1 & F2 & F3 & F4, F5>): SignalStoreFeature<EmptyFeatureResult, PrettifyFeatureResult<F1 & F2 & F3 & F4 & F5>>;
13
+ export declare function signalStoreFeature<F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult, F3 extends SignalStoreFeatureResult, F4 extends SignalStoreFeatureResult, F5 extends SignalStoreFeatureResult, F6 extends SignalStoreFeatureResult>(f1: SignalStoreFeature<EmptyFeatureResult, F1>, f2: SignalStoreFeature<{} & F1, F2>, f3: SignalStoreFeature<F1 & F2, F3>, f4: SignalStoreFeature<F1 & F2 & F3, F4>, f5: SignalStoreFeature<F1 & F2 & F3 & F4, F5>, f6: SignalStoreFeature<F1 & F2 & F3 & F4 & F5, F6>): SignalStoreFeature<EmptyFeatureResult, PrettifyFeatureResult<F1 & F2 & F3 & F4 & F5 & F6>>;
14
+ export declare function signalStoreFeature<F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult, F3 extends SignalStoreFeatureResult, F4 extends SignalStoreFeatureResult, F5 extends SignalStoreFeatureResult, F6 extends SignalStoreFeatureResult, F7 extends SignalStoreFeatureResult>(f1: SignalStoreFeature<EmptyFeatureResult, F1>, f2: SignalStoreFeature<{} & F1, F2>, f3: SignalStoreFeature<F1 & F2, F3>, f4: SignalStoreFeature<F1 & F2 & F3, F4>, f5: SignalStoreFeature<F1 & F2 & F3 & F4, F5>, f6: SignalStoreFeature<F1 & F2 & F3 & F4 & F5, F6>, f7: SignalStoreFeature<F1 & F2 & F3 & F4 & F5 & F6, F7>): SignalStoreFeature<EmptyFeatureResult, PrettifyFeatureResult<F1 & F2 & F3 & F4 & F5 & F6 & F7>>;
15
+ export declare function signalStoreFeature<F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult, F3 extends SignalStoreFeatureResult, F4 extends SignalStoreFeatureResult, F5 extends SignalStoreFeatureResult, F6 extends SignalStoreFeatureResult, F7 extends SignalStoreFeatureResult, F8 extends SignalStoreFeatureResult>(f1: SignalStoreFeature<EmptyFeatureResult, F1>, f2: SignalStoreFeature<{} & F1, F2>, f3: SignalStoreFeature<F1 & F2, F3>, f4: SignalStoreFeature<F1 & F2 & F3, F4>, f5: SignalStoreFeature<F1 & F2 & F3 & F4, F5>, f6: SignalStoreFeature<F1 & F2 & F3 & F4 & F5, F6>, f7: SignalStoreFeature<F1 & F2 & F3 & F4 & F5 & F6, F7>, f8: SignalStoreFeature<F1 & F2 & F3 & F4 & F5 & F6 & F7, F8>): SignalStoreFeature<EmptyFeatureResult, PrettifyFeatureResult<F1 & F2 & F3 & F4 & F5 & F6 & F7 & F8>>;
16
+ export declare function signalStoreFeature<F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult, F3 extends SignalStoreFeatureResult, F4 extends SignalStoreFeatureResult, F5 extends SignalStoreFeatureResult, F6 extends SignalStoreFeatureResult, F7 extends SignalStoreFeatureResult, F8 extends SignalStoreFeatureResult, F9 extends SignalStoreFeatureResult>(f1: SignalStoreFeature<EmptyFeatureResult, F1>, f2: SignalStoreFeature<{} & F1, F2>, f3: SignalStoreFeature<F1 & F2, F3>, f4: SignalStoreFeature<F1 & F2 & F3, F4>, f5: SignalStoreFeature<F1 & F2 & F3 & F4, F5>, f6: SignalStoreFeature<F1 & F2 & F3 & F4 & F5, F6>, f7: SignalStoreFeature<F1 & F2 & F3 & F4 & F5 & F6, F7>, f8: SignalStoreFeature<F1 & F2 & F3 & F4 & F5 & F6 & F7, F8>, f9: SignalStoreFeature<F1 & F2 & F3 & F4 & F5 & F6 & F7 & F8, F9>): SignalStoreFeature<EmptyFeatureResult, PrettifyFeatureResult<F1 & F2 & F3 & F4 & F5 & F6 & F7 & F8 & F9>>;
17
+ export declare function signalStoreFeature<F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult, F3 extends SignalStoreFeatureResult, F4 extends SignalStoreFeatureResult, F5 extends SignalStoreFeatureResult, F6 extends SignalStoreFeatureResult, F7 extends SignalStoreFeatureResult, F8 extends SignalStoreFeatureResult, F9 extends SignalStoreFeatureResult, F10 extends SignalStoreFeatureResult>(f1: SignalStoreFeature<EmptyFeatureResult, F1>, f2: SignalStoreFeature<{} & F1, F2>, f3: SignalStoreFeature<F1 & F2, F3>, f4: SignalStoreFeature<F1 & F2 & F3, F4>, f5: SignalStoreFeature<F1 & F2 & F3 & F4, F5>, f6: SignalStoreFeature<F1 & F2 & F3 & F4 & F5, F6>, f7: SignalStoreFeature<F1 & F2 & F3 & F4 & F5 & F6, F7>, f8: SignalStoreFeature<F1 & F2 & F3 & F4 & F5 & F6 & F7, F8>, f9: SignalStoreFeature<F1 & F2 & F3 & F4 & F5 & F6 & F7 & F8, F9>, f10: SignalStoreFeature<F1 & F2 & F3 & F4 & F5 & F6 & F7 & F8 & F9, F10>): SignalStoreFeature<EmptyFeatureResult, PrettifyFeatureResult<F1 & F2 & F3 & F4 & F5 & F6 & F7 & F8 & F9 & F10>>;
18
+ export declare function signalStoreFeature<Input extends Partial<SignalStoreFeatureResult>, F1 extends SignalStoreFeatureResult>(input: Input, f1: SignalStoreFeature<EmptyFeatureResult & NoInfer<Input>, F1>): SignalStoreFeature<Prettify<EmptyFeatureResult & Input>, F1>;
19
+ export declare function signalStoreFeature<Input extends Partial<SignalStoreFeatureResult>, F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult>(input: Input, f1: SignalStoreFeature<EmptyFeatureResult & NoInfer<Input>, F1>, f2: SignalStoreFeature<NoInfer<Input> & F1, F2>): SignalStoreFeature<Prettify<EmptyFeatureResult & Input>, PrettifyFeatureResult<F1 & F2>>;
20
+ export declare function signalStoreFeature<Input extends Partial<SignalStoreFeatureResult>, F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult, F3 extends SignalStoreFeatureResult>(input: Input, f1: SignalStoreFeature<EmptyFeatureResult & NoInfer<Input>, F1>, f2: SignalStoreFeature<NoInfer<Input> & F1, F2>, f3: SignalStoreFeature<NoInfer<Input> & F1 & F2, F3>): SignalStoreFeature<Prettify<EmptyFeatureResult & Input>, PrettifyFeatureResult<F1 & F2 & F3>>;
21
+ export declare function signalStoreFeature<Input extends Partial<SignalStoreFeatureResult>, F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult, F3 extends SignalStoreFeatureResult, F4 extends SignalStoreFeatureResult>(Input: Input, f1: SignalStoreFeature<EmptyFeatureResult & NoInfer<Input>, F1>, f2: SignalStoreFeature<NoInfer<Input> & F1, F2>, f3: SignalStoreFeature<NoInfer<Input> & F1 & F2, F3>, f4: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3, F4>): SignalStoreFeature<Prettify<EmptyFeatureResult & Input>, PrettifyFeatureResult<F1 & F2 & F3 & F4>>;
22
+ export declare function signalStoreFeature<Input extends Partial<SignalStoreFeatureResult>, F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult, F3 extends SignalStoreFeatureResult, F4 extends SignalStoreFeatureResult, F5 extends SignalStoreFeatureResult>(input: Input, f1: SignalStoreFeature<EmptyFeatureResult & NoInfer<Input>, F1>, f2: SignalStoreFeature<NoInfer<Input> & F1, F2>, f3: SignalStoreFeature<NoInfer<Input> & F1 & F2, F3>, f4: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3, F4>, f5: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3 & F4, F5>): SignalStoreFeature<Prettify<EmptyFeatureResult & Input>, PrettifyFeatureResult<F1 & F2 & F3 & F4 & F5>>;
23
+ export declare function signalStoreFeature<Input extends Partial<SignalStoreFeatureResult>, F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult, F3 extends SignalStoreFeatureResult, F4 extends SignalStoreFeatureResult, F5 extends SignalStoreFeatureResult, F6 extends SignalStoreFeatureResult>(input: Input, f1: SignalStoreFeature<EmptyFeatureResult & NoInfer<Input>, F1>, f2: SignalStoreFeature<NoInfer<Input> & F1, F2>, f3: SignalStoreFeature<NoInfer<Input> & F1 & F2, F3>, f4: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3, F4>, f5: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3 & F4, F5>, f6: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3 & F4 & F5, F6>): SignalStoreFeature<Prettify<EmptyFeatureResult & Input>, PrettifyFeatureResult<F1 & F2 & F3 & F4 & F5 & F6>>;
24
+ export declare function signalStoreFeature<Input extends Partial<SignalStoreFeatureResult>, F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult, F3 extends SignalStoreFeatureResult, F4 extends SignalStoreFeatureResult, F5 extends SignalStoreFeatureResult, F6 extends SignalStoreFeatureResult, F7 extends SignalStoreFeatureResult>(input: Input, f1: SignalStoreFeature<EmptyFeatureResult & NoInfer<Input>, F1>, f2: SignalStoreFeature<NoInfer<Input> & F1, F2>, f3: SignalStoreFeature<NoInfer<Input> & F1 & F2, F3>, f4: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3, F4>, f5: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3 & F4, F5>, f6: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3 & F4 & F5, F6>, f7: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3 & F4 & F5 & F6, F7>): SignalStoreFeature<Prettify<EmptyFeatureResult & Input>, PrettifyFeatureResult<F1 & F2 & F3 & F4 & F5 & F6 & F7>>;
25
+ export declare function signalStoreFeature<Input extends Partial<SignalStoreFeatureResult>, F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult, F3 extends SignalStoreFeatureResult, F4 extends SignalStoreFeatureResult, F5 extends SignalStoreFeatureResult, F6 extends SignalStoreFeatureResult, F7 extends SignalStoreFeatureResult, F8 extends SignalStoreFeatureResult>(input: Input, f1: SignalStoreFeature<EmptyFeatureResult & NoInfer<Input>, F1>, f2: SignalStoreFeature<NoInfer<Input> & F1, F2>, f3: SignalStoreFeature<NoInfer<Input> & F1 & F2, F3>, f4: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3, F4>, f5: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3 & F4, F5>, f6: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3 & F4 & F5, F6>, f7: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3 & F4 & F5 & F6, F7>, f8: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3 & F4 & F5 & F6 & F7, F8>): SignalStoreFeature<Prettify<EmptyFeatureResult & Input>, PrettifyFeatureResult<F1 & F2 & F3 & F4 & F5 & F6 & F7 & F8>>;
26
+ export declare function signalStoreFeature<Input extends Partial<SignalStoreFeatureResult>, F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult, F3 extends SignalStoreFeatureResult, F4 extends SignalStoreFeatureResult, F5 extends SignalStoreFeatureResult, F6 extends SignalStoreFeatureResult, F7 extends SignalStoreFeatureResult, F8 extends SignalStoreFeatureResult, F9 extends SignalStoreFeatureResult>(input: Input, f1: SignalStoreFeature<EmptyFeatureResult & NoInfer<Input>, F1>, f2: SignalStoreFeature<NoInfer<Input> & F1, F2>, f3: SignalStoreFeature<NoInfer<Input> & F1 & F2, F3>, f4: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3, F4>, f5: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3 & F4, F5>, f6: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3 & F4 & F5, F6>, f7: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3 & F4 & F5 & F6, F7>, f8: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3 & F4 & F5 & F6 & F7, F8>, f9: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3 & F4 & F5 & F6 & F7 & F8, F9>): SignalStoreFeature<Prettify<EmptyFeatureResult & Input>, PrettifyFeatureResult<F1 & F2 & F3 & F4 & F5 & F6 & F7 & F8 & F9>>;
27
+ export declare function signalStoreFeature<Input extends Partial<SignalStoreFeatureResult>, F1 extends SignalStoreFeatureResult, F2 extends SignalStoreFeatureResult, F3 extends SignalStoreFeatureResult, F4 extends SignalStoreFeatureResult, F5 extends SignalStoreFeatureResult, F6 extends SignalStoreFeatureResult, F7 extends SignalStoreFeatureResult, F8 extends SignalStoreFeatureResult, F9 extends SignalStoreFeatureResult, F10 extends SignalStoreFeatureResult>(input: Input, f1: SignalStoreFeature<EmptyFeatureResult & NoInfer<Input>, F1>, f2: SignalStoreFeature<NoInfer<Input> & F1, F2>, f3: SignalStoreFeature<NoInfer<Input> & F1 & F2, F3>, f4: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3, F4>, f5: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3 & F4, F5>, f6: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3 & F4 & F5, F6>, f7: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3 & F4 & F5 & F6, F7>, f8: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3 & F4 & F5 & F6 & F7, F8>, f9: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3 & F4 & F5 & F6 & F7 & F8, F9>, f10: SignalStoreFeature<NoInfer<Input> & F1 & F2 & F3 & F4 & F5 & F6 & F7 & F8 & F9, F10>): SignalStoreFeature<Prettify<EmptyFeatureResult & Input>, PrettifyFeatureResult<F1 & F2 & F3 & F4 & F5 & F6 & F7 & F8 & F9 & F10>>;
22
28
  export declare function type<T>(): T;
29
+ export {};
@@ -1,49 +1,30 @@
1
1
  import { Signal } from '@angular/core';
2
2
  import { DeepSignal } from './deep-signal';
3
- import { StateSignal } from './state-signal';
3
+ import { WritableStateSource } from './state-source';
4
4
  import { IsKnownRecord, Prettify } from './ts-helpers';
5
- export type SignalStoreConfig = {
6
- providedIn: 'root';
7
- };
8
- export type SignalStoreSlices<State> = IsKnownRecord<Prettify<State>> extends true ? {
5
+ export type StateSignals<State> = IsKnownRecord<Prettify<State>> extends true ? {
9
6
  [Key in keyof State]: IsKnownRecord<State[Key]> extends true ? DeepSignal<State[Key]> : Signal<State[Key]>;
10
7
  } : {};
11
- export type SignalStoreProps<FeatureResult extends SignalStoreFeatureResult> = Prettify<SignalStoreSlices<FeatureResult['state']> & FeatureResult['signals'] & FeatureResult['methods']>;
12
8
  export type SignalsDictionary = Record<string, Signal<unknown>>;
13
9
  export type MethodsDictionary = Record<string, Function>;
14
10
  export type SignalStoreHooks = {
15
11
  onInit?: () => void;
16
12
  onDestroy?: () => void;
17
13
  };
18
- export type InnerSignalStore<State extends object = object, Signals extends SignalsDictionary = SignalsDictionary, Methods extends MethodsDictionary = MethodsDictionary> = {
19
- slices: SignalStoreSlices<State>;
20
- signals: Signals;
14
+ export type InnerSignalStore<State extends object = object, ComputedSignals extends SignalsDictionary = SignalsDictionary, Methods extends MethodsDictionary = MethodsDictionary> = {
15
+ stateSignals: StateSignals<State>;
16
+ computedSignals: ComputedSignals;
21
17
  methods: Methods;
22
18
  hooks: SignalStoreHooks;
23
- } & StateSignal<State>;
19
+ } & WritableStateSource<State>;
24
20
  export type SignalStoreFeatureResult = {
25
21
  state: object;
26
- signals: SignalsDictionary;
22
+ computed: SignalsDictionary;
27
23
  methods: MethodsDictionary;
28
24
  };
29
25
  export type EmptyFeatureResult = {
30
26
  state: {};
31
- signals: {};
27
+ computed: {};
32
28
  methods: {};
33
29
  };
34
- export type SignalStoreFeature<Input extends SignalStoreFeatureResult = SignalStoreFeatureResult, Output extends SignalStoreFeatureResult = SignalStoreFeatureResult> = (store: InnerSignalStore<Input['state'], Input['signals'], Input['methods']>) => InnerSignalStore<Output['state'], Output['signals'], Output['methods']>;
35
- export type MergeFeatureResults<FeatureResults extends SignalStoreFeatureResult[]> = FeatureResults extends [] ? EmptyFeatureResult : FeatureResults extends [infer First extends SignalStoreFeatureResult] ? First : FeatureResults extends [
36
- infer First extends SignalStoreFeatureResult,
37
- infer Second extends SignalStoreFeatureResult
38
- ] ? MergeTwoFeatureResults<First, Second> : FeatureResults extends [
39
- infer First extends SignalStoreFeatureResult,
40
- infer Second extends SignalStoreFeatureResult,
41
- ...infer Rest extends SignalStoreFeatureResult[]
42
- ] ? MergeFeatureResults<[MergeTwoFeatureResults<First, Second>, ...Rest]> : never;
43
- type FeatureResultKeys<FeatureResult extends SignalStoreFeatureResult> = keyof FeatureResult['state'] | keyof FeatureResult['signals'] | keyof FeatureResult['methods'];
44
- type MergeTwoFeatureResults<First extends SignalStoreFeatureResult, Second extends SignalStoreFeatureResult> = {
45
- state: Omit<First['state'], FeatureResultKeys<Second>>;
46
- signals: Omit<First['signals'], FeatureResultKeys<Second>>;
47
- methods: Omit<First['methods'], FeatureResultKeys<Second>>;
48
- } & Second;
49
- export {};
30
+ export type SignalStoreFeature<Input extends SignalStoreFeatureResult = SignalStoreFeatureResult, Output extends SignalStoreFeatureResult = SignalStoreFeatureResult> = (store: InnerSignalStore<Input['state'], Input['computed'], Input['methods']>) => InnerSignalStore<Output['state'], Output['computed'], Output['methods']>;