@jfdevelops/react-layout 0.17.4 → 0.18.0
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/create-config/component-keys.cjs +44 -0
- package/dist/create-config/component-keys.cjs.map +1 -0
- package/dist/create-config/component-keys.mjs +39 -0
- package/dist/create-config/component-keys.mjs.map +1 -0
- package/dist/create-config/define-layout.cjs +42 -5
- package/dist/create-config/define-layout.cjs.map +1 -1
- package/dist/create-config/define-layout.d.cts +12 -10
- package/dist/create-config/define-layout.d.cts.map +1 -1
- package/dist/create-config/define-layout.d.mts +12 -10
- package/dist/create-config/define-layout.d.mts.map +1 -1
- package/dist/create-config/define-layout.mjs +43 -6
- package/dist/create-config/define-layout.mjs.map +1 -1
- package/dist/create-config/for-paths/builder.cjs +192 -0
- package/dist/create-config/for-paths/builder.cjs.map +1 -0
- package/dist/create-config/for-paths/builder.d.cts +77 -0
- package/dist/create-config/for-paths/builder.d.cts.map +1 -0
- package/dist/create-config/for-paths/builder.d.mts +77 -0
- package/dist/create-config/for-paths/builder.d.mts.map +1 -0
- package/dist/create-config/for-paths/builder.mjs +192 -0
- package/dist/create-config/for-paths/builder.mjs.map +1 -0
- package/dist/create-config/for-paths/get-component-for-path.cjs +55 -0
- package/dist/create-config/for-paths/get-component-for-path.cjs.map +1 -0
- package/dist/create-config/for-paths/get-component-for-path.d.cts +55 -0
- package/dist/create-config/for-paths/get-component-for-path.d.cts.map +1 -0
- package/dist/create-config/for-paths/get-component-for-path.d.mts +55 -0
- package/dist/create-config/for-paths/get-component-for-path.d.mts.map +1 -0
- package/dist/create-config/for-paths/get-component-for-path.mjs +55 -0
- package/dist/create-config/for-paths/get-component-for-path.mjs.map +1 -0
- package/dist/create-config/for-paths/index.d.cts +2 -0
- package/dist/create-config/for-paths/index.d.mts +2 -0
- package/dist/create-config/for-resource.cjs.map +1 -1
- package/dist/create-config/for-resource.d.cts +19 -19
- package/dist/create-config/for-resource.d.cts.map +1 -1
- package/dist/create-config/for-resource.d.mts +19 -19
- package/dist/create-config/for-resource.d.mts.map +1 -1
- package/dist/create-config/for-resource.mjs.map +1 -1
- package/dist/create-config/for-resources/scoped-layout.d.cts +14 -14
- package/dist/create-config/for-resources/scoped-layout.d.cts.map +1 -1
- package/dist/create-config/for-resources/scoped-layout.d.mts +14 -14
- package/dist/create-config/for-resources/scoped-layout.d.mts.map +1 -1
- package/dist/create-config/get-component.cjs +60 -11
- package/dist/create-config/get-component.cjs.map +1 -1
- package/dist/create-config/get-component.d.cts +75 -6
- package/dist/create-config/get-component.d.cts.map +1 -1
- package/dist/create-config/get-component.d.mts +75 -6
- package/dist/create-config/get-component.d.mts.map +1 -1
- package/dist/create-config/get-component.mjs +61 -11
- package/dist/create-config/get-component.mjs.map +1 -1
- package/dist/create-config/index.d.cts +6 -1
- package/dist/create-config/index.d.mts +6 -1
- package/dist/create-config/is-sub-resource-key.cjs +15 -0
- package/dist/create-config/is-sub-resource-key.cjs.map +1 -0
- package/dist/create-config/is-sub-resource-key.d.cts +30 -0
- package/dist/create-config/is-sub-resource-key.d.cts.map +1 -0
- package/dist/create-config/is-sub-resource-key.d.mts +30 -0
- package/dist/create-config/is-sub-resource-key.d.mts.map +1 -0
- package/dist/create-config/is-sub-resource-key.mjs +15 -0
- package/dist/create-config/is-sub-resource-key.mjs.map +1 -0
- package/dist/create-config/paths/generate.cjs +77 -0
- package/dist/create-config/paths/generate.cjs.map +1 -0
- package/dist/create-config/paths/generate.mjs +77 -0
- package/dist/create-config/paths/generate.mjs.map +1 -0
- package/dist/create-config/paths/index.d.cts +2 -0
- package/dist/create-config/paths/index.d.mts +2 -0
- package/dist/create-config/paths/introspect.cjs +123 -0
- package/dist/create-config/paths/introspect.cjs.map +1 -0
- package/dist/create-config/paths/introspect.mjs +118 -0
- package/dist/create-config/paths/introspect.mjs.map +1 -0
- package/dist/create-config/paths/resolve.cjs +130 -0
- package/dist/create-config/paths/resolve.cjs.map +1 -0
- package/dist/create-config/paths/resolve.mjs +129 -0
- package/dist/create-config/paths/resolve.mjs.map +1 -0
- package/dist/create-config/paths/types.d.cts +104 -0
- package/dist/create-config/paths/types.d.cts.map +1 -0
- package/dist/create-config/paths/types.d.mts +104 -0
- package/dist/create-config/paths/types.d.mts.map +1 -0
- package/dist/create-config/paths/variables.cjs +32 -0
- package/dist/create-config/paths/variables.cjs.map +1 -0
- package/dist/create-config/paths/variables.d.cts +32 -0
- package/dist/create-config/paths/variables.d.cts.map +1 -0
- package/dist/create-config/paths/variables.d.mts +32 -0
- package/dist/create-config/paths/variables.d.mts.map +1 -0
- package/dist/create-config/paths/variables.mjs +29 -0
- package/dist/create-config/paths/variables.mjs.map +1 -0
- package/dist/create-config/types.d.cts +28 -8
- package/dist/create-config/types.d.cts.map +1 -1
- package/dist/create-config/types.d.mts +28 -8
- package/dist/create-config/types.d.mts.map +1 -1
- package/dist/errors/invalid-component.cjs +21 -0
- package/dist/errors/invalid-component.cjs.map +1 -0
- package/dist/errors/invalid-component.d.cts +18 -0
- package/dist/errors/invalid-component.d.cts.map +1 -0
- package/dist/errors/invalid-component.d.mts +18 -0
- package/dist/errors/invalid-component.d.mts.map +1 -0
- package/dist/errors/invalid-component.mjs +21 -0
- package/dist/errors/invalid-component.mjs.map +1 -0
- package/dist/errors/invalid-config.cjs +13 -0
- package/dist/errors/invalid-config.cjs.map +1 -0
- package/dist/errors/invalid-config.d.cts +15 -0
- package/dist/errors/invalid-config.d.cts.map +1 -0
- package/dist/errors/invalid-config.d.mts +15 -0
- package/dist/errors/invalid-config.d.mts.map +1 -0
- package/dist/errors/invalid-config.mjs +13 -0
- package/dist/errors/invalid-config.mjs.map +1 -0
- package/dist/errors/invalid-path.cjs +18 -0
- package/dist/errors/invalid-path.cjs.map +1 -0
- package/dist/errors/invalid-path.d.cts +16 -0
- package/dist/errors/invalid-path.d.cts.map +1 -0
- package/dist/errors/invalid-path.d.mts +16 -0
- package/dist/errors/invalid-path.d.mts.map +1 -0
- package/dist/errors/invalid-path.mjs +18 -0
- package/dist/errors/invalid-path.mjs.map +1 -0
- package/dist/errors/invalid-resource.cjs +18 -0
- package/dist/errors/invalid-resource.cjs.map +1 -0
- package/dist/errors/invalid-resource.d.cts +16 -0
- package/dist/errors/invalid-resource.d.cts.map +1 -0
- package/dist/errors/invalid-resource.d.mts +16 -0
- package/dist/errors/invalid-resource.d.mts.map +1 -0
- package/dist/errors/invalid-resource.mjs +18 -0
- package/dist/errors/invalid-resource.mjs.map +1 -0
- package/dist/errors/invalid-sub-resource.cjs +18 -0
- package/dist/errors/invalid-sub-resource.cjs.map +1 -0
- package/dist/errors/invalid-sub-resource.d.cts +17 -0
- package/dist/errors/invalid-sub-resource.d.cts.map +1 -0
- package/dist/errors/invalid-sub-resource.d.mts +17 -0
- package/dist/errors/invalid-sub-resource.d.mts.map +1 -0
- package/dist/errors/invalid-sub-resource.mjs +18 -0
- package/dist/errors/invalid-sub-resource.mjs.map +1 -0
- package/dist/errors/missing-path-variable.cjs +18 -0
- package/dist/errors/missing-path-variable.cjs.map +1 -0
- package/dist/errors/missing-path-variable.d.cts +16 -0
- package/dist/errors/missing-path-variable.d.cts.map +1 -0
- package/dist/errors/missing-path-variable.d.mts +16 -0
- package/dist/errors/missing-path-variable.d.mts.map +1 -0
- package/dist/errors/missing-path-variable.mjs +18 -0
- package/dist/errors/missing-path-variable.mjs.map +1 -0
- package/dist/errors/react-layout-error.cjs +56 -0
- package/dist/errors/react-layout-error.cjs.map +1 -0
- package/dist/errors/react-layout-error.d.cts +46 -0
- package/dist/errors/react-layout-error.d.cts.map +1 -0
- package/dist/errors/react-layout-error.d.mts +46 -0
- package/dist/errors/react-layout-error.d.mts.map +1 -0
- package/dist/errors/react-layout-error.mjs +54 -0
- package/dist/errors/react-layout-error.mjs.map +1 -0
- package/dist/index.cjs +15 -0
- package/dist/index.d.cts +14 -2
- package/dist/index.d.mts +14 -2
- package/dist/index.mjs +8 -1
- package/dist/props.d.cts +14 -4
- package/dist/props.d.cts.map +1 -1
- package/dist/props.d.mts +14 -4
- package/dist/props.d.mts.map +1 -1
- package/dist/resource.cjs.map +1 -1
- package/dist/resource.d.cts +2 -2
- package/dist/resource.d.cts.map +1 -1
- package/dist/resource.d.mts +2 -2
- package/dist/resource.d.mts.map +1 -1
- package/dist/resource.mjs.map +1 -1
- package/dist/utils.d.cts +2 -1
- package/dist/utils.d.cts.map +1 -1
- package/dist/utils.d.mts +2 -1
- package/dist/utils.d.mts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
//#region src/errors/react-layout-error.d.ts
|
|
2
|
+
/** Options used to assign a stable code and scope to a React Layout error. */
|
|
3
|
+
type CreateReactLayoutErrorOptions<Code extends string = string, Scope extends string = string> = {
|
|
4
|
+
code: Code;
|
|
5
|
+
scope: Scope;
|
|
6
|
+
};
|
|
7
|
+
/** Shared context carried by every React Layout error. */
|
|
8
|
+
interface ReactLayoutErrorContext<Scope extends string> extends Record<string, unknown> {
|
|
9
|
+
scope: Scope;
|
|
10
|
+
}
|
|
11
|
+
/** Renders an error message from its scope and structured context. */
|
|
12
|
+
type ErrorMessageRenderer<Scope extends string, Context extends ReactLayoutErrorContext<Scope>> = (scope: Scope, context: Context) => string;
|
|
13
|
+
/** Constructor and invariant API returned by the React Layout error factory. */
|
|
14
|
+
interface CreatedReactLayoutError<Code extends string, Scope extends string, Context extends ReactLayoutErrorContext<Scope>> {
|
|
15
|
+
invariant: <Condition>(condition: Condition, context: Omit<Context, 'scope'> | (() => Omit<Context, 'scope'>)) => asserts condition;
|
|
16
|
+
new (context: Omit<Context, 'scope'>): ReactLayoutError<Code, Scope, Context> & {
|
|
17
|
+
readonly code: Code;
|
|
18
|
+
readonly scope: Scope;
|
|
19
|
+
renderMessage(renderer?: ErrorMessageRenderer<Scope, Context>): string;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/** Adds a default renderer to a React Layout error definition. */
|
|
23
|
+
interface ReactLayoutErrorRendererFactory<Code extends string, Scope extends string> {
|
|
24
|
+
<Context extends ReactLayoutErrorContext<Scope>>(defaultRenderer: ErrorMessageRenderer<Scope, Context>): CreatedReactLayoutError<Code, Scope, Context>;
|
|
25
|
+
}
|
|
26
|
+
/** Base data class for errors thrown by React Layout. */
|
|
27
|
+
declare abstract class ReactLayoutError<Code extends string = string, Scope extends string = string, Context extends ReactLayoutErrorContext<Scope> = ReactLayoutErrorContext<Scope>> extends Error {
|
|
28
|
+
abstract readonly code: Code;
|
|
29
|
+
readonly scope: Scope;
|
|
30
|
+
readonly context: Context;
|
|
31
|
+
static invariant<Condition, Context extends Record<string, unknown>>(this: new (context: Context) => Error, condition: Condition, context: Context | (() => Context)): asserts condition;
|
|
32
|
+
constructor(context: Context);
|
|
33
|
+
abstract renderMessage(renderer?: ErrorMessageRenderer<Scope, Context>): string;
|
|
34
|
+
toJSON(): {
|
|
35
|
+
name: string;
|
|
36
|
+
code: Code;
|
|
37
|
+
scope: Scope;
|
|
38
|
+
message: string;
|
|
39
|
+
context: unknown;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/** Creates a context-only React Layout error class with a default renderer. */
|
|
43
|
+
declare function createReactLayoutError<const Options extends CreateReactLayoutErrorOptions>(options: Options): ReactLayoutErrorRendererFactory<Options['code'], Options['scope']>;
|
|
44
|
+
//#endregion
|
|
45
|
+
export { CreateReactLayoutErrorOptions, CreatedReactLayoutError, ErrorMessageRenderer, ReactLayoutError, ReactLayoutErrorContext, ReactLayoutErrorRendererFactory, createReactLayoutError };
|
|
46
|
+
//# sourceMappingURL=react-layout-error.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-layout-error.d.cts","names":[],"sources":["../../src/errors/react-layout-error.ts"],"mappings":";;KACY,6BAAA;EAIV,IAAA,EAAM,IAAA;EACN,KAAA,EAAO,KAAK;AAAA;;UAIG,uBAAA,+BACP,MAAM;EACd,KAAA,EAAO,KAAA;AAAA;;KAIG,oBAAA,uCAEM,uBAAA,CAAwB,KAAA,MACrC,KAAA,EAAO,KAAA,EAAO,OAAA,EAAS,OAAA;;UAGX,uBAAA,4DAGC,uBAAA,CAAwB,KAAA;EAExC,SAAA,cACE,SAAA,EAAW,SAAA,EACX,OAAA,EAAS,IAAA,CAAK,OAAA,oBAA2B,IAAA,CAAK,OAAA,wBACnC,SAAA;EAAA,KACR,OAAA,EAAS,IAAA,CAAK,OAAA,aAAoB,gBAAA,CACrC,IAAA,EACA,KAAA,EACA,OAAA;IAAA,SAES,IAAA,EAAM,IAAA;IAAA,SACN,KAAA,EAAO,KAAA;IAChB,aAAA,CAAc,QAAA,GAAW,oBAAA,CAAqB,KAAA,EAAO,OAAA;EAAA;AAAA;;UAKxC,+BAAA;EAAA,iBAIE,uBAAA,CAAwB,KAAA,GACvC,eAAA,EAAiB,oBAAA,CAAqB,KAAA,EAAO,OAAA,IAC5C,uBAAA,CAAwB,IAAA,EAAM,KAAA,EAAO,OAAA;AAAA;;uBAyBpB,gBAAA,8EAGJ,uBAAA,CAAwB,KAAA,IACtC,uBAAA,CAAwB,KAAA,WAClB,KAAA;EAAA,kBACU,IAAA,EAAM,IAAA;EAAA,SACf,KAAA,EAAO,KAAA;EAAA,SACP,OAAA,EAAS,OAAA;EAAA,OAEX,SAAA,4BAEW,MAAA,mBAEhB,IAAA,OAAW,OAAA,EAAS,OAAA,KAAY,KAAA,EAChC,SAAA,EAAW,SAAA,EACX,OAAA,EAAS,OAAA,UAAiB,OAAA,YACjB,SAAA;cAMC,OAAA,EAAS,OAAA;EAAA,SASZ,aAAA,CACP,QAAA,GAAW,oBAAA,CAAqB,KAAA,EAAO,OAAA;EAGzC,MAAA;;;;;;;;;iBAYc,sBAAA,uBACQ,6BAAA,EAEtB,OAAA,EAAS,OAAA,GACR,+BAAA,CAAgC,OAAA,UAAiB,OAAA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
//#region src/errors/react-layout-error.d.ts
|
|
2
|
+
/** Options used to assign a stable code and scope to a React Layout error. */
|
|
3
|
+
type CreateReactLayoutErrorOptions<Code extends string = string, Scope extends string = string> = {
|
|
4
|
+
code: Code;
|
|
5
|
+
scope: Scope;
|
|
6
|
+
};
|
|
7
|
+
/** Shared context carried by every React Layout error. */
|
|
8
|
+
interface ReactLayoutErrorContext<Scope extends string> extends Record<string, unknown> {
|
|
9
|
+
scope: Scope;
|
|
10
|
+
}
|
|
11
|
+
/** Renders an error message from its scope and structured context. */
|
|
12
|
+
type ErrorMessageRenderer<Scope extends string, Context extends ReactLayoutErrorContext<Scope>> = (scope: Scope, context: Context) => string;
|
|
13
|
+
/** Constructor and invariant API returned by the React Layout error factory. */
|
|
14
|
+
interface CreatedReactLayoutError<Code extends string, Scope extends string, Context extends ReactLayoutErrorContext<Scope>> {
|
|
15
|
+
invariant: <Condition>(condition: Condition, context: Omit<Context, 'scope'> | (() => Omit<Context, 'scope'>)) => asserts condition;
|
|
16
|
+
new (context: Omit<Context, 'scope'>): ReactLayoutError<Code, Scope, Context> & {
|
|
17
|
+
readonly code: Code;
|
|
18
|
+
readonly scope: Scope;
|
|
19
|
+
renderMessage(renderer?: ErrorMessageRenderer<Scope, Context>): string;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/** Adds a default renderer to a React Layout error definition. */
|
|
23
|
+
interface ReactLayoutErrorRendererFactory<Code extends string, Scope extends string> {
|
|
24
|
+
<Context extends ReactLayoutErrorContext<Scope>>(defaultRenderer: ErrorMessageRenderer<Scope, Context>): CreatedReactLayoutError<Code, Scope, Context>;
|
|
25
|
+
}
|
|
26
|
+
/** Base data class for errors thrown by React Layout. */
|
|
27
|
+
declare abstract class ReactLayoutError<Code extends string = string, Scope extends string = string, Context extends ReactLayoutErrorContext<Scope> = ReactLayoutErrorContext<Scope>> extends Error {
|
|
28
|
+
abstract readonly code: Code;
|
|
29
|
+
readonly scope: Scope;
|
|
30
|
+
readonly context: Context;
|
|
31
|
+
static invariant<Condition, Context extends Record<string, unknown>>(this: new (context: Context) => Error, condition: Condition, context: Context | (() => Context)): asserts condition;
|
|
32
|
+
constructor(context: Context);
|
|
33
|
+
abstract renderMessage(renderer?: ErrorMessageRenderer<Scope, Context>): string;
|
|
34
|
+
toJSON(): {
|
|
35
|
+
name: string;
|
|
36
|
+
code: Code;
|
|
37
|
+
scope: Scope;
|
|
38
|
+
message: string;
|
|
39
|
+
context: unknown;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/** Creates a context-only React Layout error class with a default renderer. */
|
|
43
|
+
declare function createReactLayoutError<const Options extends CreateReactLayoutErrorOptions>(options: Options): ReactLayoutErrorRendererFactory<Options['code'], Options['scope']>;
|
|
44
|
+
//#endregion
|
|
45
|
+
export { CreateReactLayoutErrorOptions, CreatedReactLayoutError, ErrorMessageRenderer, ReactLayoutError, ReactLayoutErrorContext, ReactLayoutErrorRendererFactory, createReactLayoutError };
|
|
46
|
+
//# sourceMappingURL=react-layout-error.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-layout-error.d.mts","names":[],"sources":["../../src/errors/react-layout-error.ts"],"mappings":";;KACY,6BAAA;EAIV,IAAA,EAAM,IAAA;EACN,KAAA,EAAO,KAAK;AAAA;;UAIG,uBAAA,+BACP,MAAM;EACd,KAAA,EAAO,KAAA;AAAA;;KAIG,oBAAA,uCAEM,uBAAA,CAAwB,KAAA,MACrC,KAAA,EAAO,KAAA,EAAO,OAAA,EAAS,OAAA;;UAGX,uBAAA,4DAGC,uBAAA,CAAwB,KAAA;EAExC,SAAA,cACE,SAAA,EAAW,SAAA,EACX,OAAA,EAAS,IAAA,CAAK,OAAA,oBAA2B,IAAA,CAAK,OAAA,wBACnC,SAAA;EAAA,KACR,OAAA,EAAS,IAAA,CAAK,OAAA,aAAoB,gBAAA,CACrC,IAAA,EACA,KAAA,EACA,OAAA;IAAA,SAES,IAAA,EAAM,IAAA;IAAA,SACN,KAAA,EAAO,KAAA;IAChB,aAAA,CAAc,QAAA,GAAW,oBAAA,CAAqB,KAAA,EAAO,OAAA;EAAA;AAAA;;UAKxC,+BAAA;EAAA,iBAIE,uBAAA,CAAwB,KAAA,GACvC,eAAA,EAAiB,oBAAA,CAAqB,KAAA,EAAO,OAAA,IAC5C,uBAAA,CAAwB,IAAA,EAAM,KAAA,EAAO,OAAA;AAAA;;uBAyBpB,gBAAA,8EAGJ,uBAAA,CAAwB,KAAA,IACtC,uBAAA,CAAwB,KAAA,WAClB,KAAA;EAAA,kBACU,IAAA,EAAM,IAAA;EAAA,SACf,KAAA,EAAO,KAAA;EAAA,SACP,OAAA,EAAS,OAAA;EAAA,OAEX,SAAA,4BAEW,MAAA,mBAEhB,IAAA,OAAW,OAAA,EAAS,OAAA,KAAY,KAAA,EAChC,SAAA,EAAW,SAAA,EACX,OAAA,EAAS,OAAA,UAAiB,OAAA,YACjB,SAAA;cAMC,OAAA,EAAS,OAAA;EAAA,SASZ,aAAA,CACP,QAAA,GAAW,oBAAA,CAAqB,KAAA,EAAO,OAAA;EAGzC,MAAA;;;;;;;;;iBAYc,sBAAA,uBACQ,6BAAA,EAEtB,OAAA,EAAS,OAAA,GACR,+BAAA,CAAgC,OAAA,UAAiB,OAAA"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
//#region src/errors/react-layout-error.ts
|
|
2
|
+
function makeJsonSafe(value) {
|
|
3
|
+
if (value === void 0) return null;
|
|
4
|
+
if (Array.isArray(value)) return value.map(makeJsonSafe);
|
|
5
|
+
if (value && typeof value === "object") return Object.fromEntries(Object.entries(value).map(([key, nestedValue]) => [key, makeJsonSafe(nestedValue)]));
|
|
6
|
+
return value;
|
|
7
|
+
}
|
|
8
|
+
/** Base data class for errors thrown by React Layout. */
|
|
9
|
+
var ReactLayoutError = class extends Error {
|
|
10
|
+
scope;
|
|
11
|
+
context;
|
|
12
|
+
static invariant(condition, context) {
|
|
13
|
+
if (!condition) throw new this(typeof context === "function" ? context() : context);
|
|
14
|
+
}
|
|
15
|
+
constructor(context) {
|
|
16
|
+
super();
|
|
17
|
+
this.name = new.target.name;
|
|
18
|
+
this.scope = context.scope;
|
|
19
|
+
this.context = context;
|
|
20
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
21
|
+
}
|
|
22
|
+
toJSON() {
|
|
23
|
+
return {
|
|
24
|
+
name: this.name,
|
|
25
|
+
code: this.code,
|
|
26
|
+
scope: this.scope,
|
|
27
|
+
message: this.message,
|
|
28
|
+
context: makeJsonSafe(this.context)
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
/** Creates a context-only React Layout error class with a default renderer. */
|
|
33
|
+
function createReactLayoutError(options) {
|
|
34
|
+
return function createErrorWithRenderer(defaultRenderer) {
|
|
35
|
+
return class ReactLayoutErrorWithCode extends ReactLayoutError {
|
|
36
|
+
code = options.code;
|
|
37
|
+
constructor(context) {
|
|
38
|
+
const resolvedContext = {
|
|
39
|
+
...context,
|
|
40
|
+
scope: options.scope
|
|
41
|
+
};
|
|
42
|
+
super(resolvedContext);
|
|
43
|
+
this.message = this.renderMessage();
|
|
44
|
+
}
|
|
45
|
+
renderMessage(renderer) {
|
|
46
|
+
return (renderer ?? defaultRenderer)(this.scope, this.context);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
//#endregion
|
|
53
|
+
export { ReactLayoutError, createReactLayoutError };
|
|
54
|
+
//# sourceMappingURL=react-layout-error.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-layout-error.mjs","names":[],"sources":["../../src/errors/react-layout-error.ts"],"sourcesContent":["/** Options used to assign a stable code and scope to a React Layout error. */\nexport type CreateReactLayoutErrorOptions<\n Code extends string = string,\n Scope extends string = string,\n> = {\n code: Code;\n scope: Scope;\n};\n\n/** Shared context carried by every React Layout error. */\nexport interface ReactLayoutErrorContext<Scope extends string>\n extends Record<string, unknown> {\n scope: Scope;\n}\n\n/** Renders an error message from its scope and structured context. */\nexport type ErrorMessageRenderer<\n Scope extends string,\n Context extends ReactLayoutErrorContext<Scope>,\n> = (scope: Scope, context: Context) => string;\n\n/** Constructor and invariant API returned by the React Layout error factory. */\nexport interface CreatedReactLayoutError<\n Code extends string,\n Scope extends string,\n Context extends ReactLayoutErrorContext<Scope>,\n> {\n invariant: <Condition>(\n condition: Condition,\n context: Omit<Context, 'scope'> | (() => Omit<Context, 'scope'>),\n ) => asserts condition;\n new (context: Omit<Context, 'scope'>): ReactLayoutError<\n Code,\n Scope,\n Context\n > & {\n readonly code: Code;\n readonly scope: Scope;\n renderMessage(renderer?: ErrorMessageRenderer<Scope, Context>): string;\n };\n}\n\n/** Adds a default renderer to a React Layout error definition. */\nexport interface ReactLayoutErrorRendererFactory<\n Code extends string,\n Scope extends string,\n> {\n <Context extends ReactLayoutErrorContext<Scope>>(\n defaultRenderer: ErrorMessageRenderer<Scope, Context>,\n ): CreatedReactLayoutError<Code, Scope, Context>;\n}\n\nfunction makeJsonSafe(value: unknown): unknown {\n if (value === undefined) {\n return null;\n }\n\n if (Array.isArray(value)) {\n return value.map(makeJsonSafe);\n }\n\n if (value && typeof value === 'object') {\n return Object.fromEntries(\n Object.entries(value).map(([key, nestedValue]) => [\n key,\n makeJsonSafe(nestedValue),\n ]),\n );\n }\n\n return value;\n}\n\n/** Base data class for errors thrown by React Layout. */\nexport abstract class ReactLayoutError<\n Code extends string = string,\n Scope extends string = string,\n Context extends ReactLayoutErrorContext<Scope> =\n ReactLayoutErrorContext<Scope>,\n> extends Error {\n abstract readonly code: Code;\n readonly scope: Scope;\n readonly context: Context;\n\n static invariant<\n Condition,\n Context extends Record<string, unknown>,\n >(\n this: new (context: Context) => Error,\n condition: Condition,\n context: Context | (() => Context),\n ): asserts condition {\n if (!condition) {\n throw new this(typeof context === 'function' ? context() : context);\n }\n }\n\n constructor(context: Context) {\n super();\n this.name = new.target.name;\n this.scope = context.scope;\n this.context = context;\n\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n abstract renderMessage(\n renderer?: ErrorMessageRenderer<Scope, Context>,\n ): string;\n\n toJSON() {\n return {\n name: this.name,\n code: this.code,\n scope: this.scope,\n message: this.message,\n context: makeJsonSafe(this.context),\n };\n }\n}\n\n/** Creates a context-only React Layout error class with a default renderer. */\nexport function createReactLayoutError<\n const Options extends CreateReactLayoutErrorOptions,\n>(\n options: Options,\n): ReactLayoutErrorRendererFactory<Options['code'], Options['scope']> {\n return function createErrorWithRenderer<\n Context extends ReactLayoutErrorContext<Options['scope']>,\n >(defaultRenderer: ErrorMessageRenderer<Options['scope'], Context>) {\n return class ReactLayoutErrorWithCode extends ReactLayoutError<\n Options['code'],\n Options['scope'],\n Context\n > {\n readonly code = options.code;\n\n constructor(context: Omit<Context, 'scope'>) {\n const resolvedContext = {\n ...context,\n scope: options.scope,\n } as Context;\n\n super(resolvedContext);\n this.message = this.renderMessage();\n }\n\n renderMessage(\n renderer?: ErrorMessageRenderer<Options['scope'], Context>,\n ) {\n return (renderer ?? defaultRenderer)(this.scope, this.context);\n }\n };\n };\n}\n"],"mappings":";AAoDA,SAAS,aAAa,OAAyB;CAC7C,IAAI,UAAU,QACZ,OAAO;CAGT,IAAI,MAAM,QAAQ,KAAK,GACrB,OAAO,MAAM,IAAI,YAAY;CAG/B,IAAI,SAAS,OAAO,UAAU,UAC5B,OAAO,OAAO,YACZ,OAAO,QAAQ,KAAK,EAAE,KAAK,CAAC,KAAK,iBAAiB,CAChD,KACA,aAAa,WAAW,CAC1B,CAAC,CACH;CAGF,OAAO;AACT;;AAGA,IAAsB,mBAAtB,cAKU,MAAM;CAEd,AAAS;CACT,AAAS;CAET,OAAO,UAKL,WACA,SACmB;EACnB,IAAI,CAAC,WACH,MAAM,IAAI,KAAK,OAAO,YAAY,aAAa,QAAQ,IAAI,OAAO;CAEtE;CAEA,YAAY,SAAkB;EAC5B,MAAM;EACN,KAAK,OAAO,IAAI,OAAO;EACvB,KAAK,QAAQ,QAAQ;EACrB,KAAK,UAAU;EAEf,OAAO,eAAe,MAAM,IAAI,OAAO,SAAS;CAClD;CAMA,SAAS;EACP,OAAO;GACL,MAAM,KAAK;GACX,MAAM,KAAK;GACX,OAAO,KAAK;GACZ,SAAS,KAAK;GACd,SAAS,aAAa,KAAK,OAAO;EACpC;CACF;AACF;;AAGA,SAAgB,uBAGd,SACoE;CACpE,OAAO,SAAS,wBAEd,iBAAkE;EAClE,OAAO,MAAM,iCAAiC,iBAI5C;GACA,AAAS,OAAO,QAAQ;GAExB,YAAY,SAAiC;IAC3C,MAAM,kBAAkB;KACtB,GAAG;KACH,OAAO,QAAQ;IACjB;IAEA,MAAM,eAAe;IACrB,KAAK,UAAU,KAAK,cAAc;GACpC;GAEA,cACE,UACA;IACA,QAAQ,YAAY,iBAAiB,KAAK,OAAO,KAAK,OAAO;GAC/D;EACF;CACF;AACF"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,22 +1,36 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
2
|
const require_resource = require('./resource.cjs');
|
|
3
3
|
const require_utils = require('./utils.cjs');
|
|
4
|
+
const require_react_layout_error = require('./errors/react-layout-error.cjs');
|
|
5
|
+
const require_invalid_config = require('./errors/invalid-config.cjs');
|
|
6
|
+
const require_invalid_path = require('./errors/invalid-path.cjs');
|
|
7
|
+
const require_invalid_resource = require('./errors/invalid-resource.cjs');
|
|
8
|
+
const require_invalid_sub_resource = require('./errors/invalid-sub-resource.cjs');
|
|
9
|
+
const require_invalid_component = require('./errors/invalid-component.cjs');
|
|
10
|
+
const require_missing_path_variable = require('./errors/missing-path-variable.cjs');
|
|
4
11
|
const require_define_layout = require('./create-config/define-layout.cjs');
|
|
5
12
|
let _jfdevelops_react_layout_composables = require("@jfdevelops/react-layout-composables");
|
|
6
13
|
let _jfdevelops_react_layout_validator = require("@jfdevelops/react-layout-validator");
|
|
7
14
|
|
|
15
|
+
exports.InvalidComponentError = require_invalid_component.InvalidComponentError;
|
|
16
|
+
exports.InvalidConfigError = require_invalid_config.InvalidConfigError;
|
|
17
|
+
exports.InvalidPathError = require_invalid_path.InvalidPathError;
|
|
18
|
+
exports.InvalidResourceError = require_invalid_resource.InvalidResourceError;
|
|
19
|
+
exports.InvalidSubResourceError = require_invalid_sub_resource.InvalidSubResourceError;
|
|
8
20
|
Object.defineProperty(exports, 'LayoutComposablePresetProvider', {
|
|
9
21
|
enumerable: true,
|
|
10
22
|
get: function () {
|
|
11
23
|
return _jfdevelops_react_layout_composables.LayoutComposablePresetProvider;
|
|
12
24
|
}
|
|
13
25
|
});
|
|
26
|
+
exports.MissingPathVariableError = require_missing_path_variable.MissingPathVariableError;
|
|
14
27
|
Object.defineProperty(exports, 'PropError', {
|
|
15
28
|
enumerable: true,
|
|
16
29
|
get: function () {
|
|
17
30
|
return _jfdevelops_react_layout_validator.PropError;
|
|
18
31
|
}
|
|
19
32
|
});
|
|
33
|
+
exports.ReactLayoutError = require_react_layout_error.ReactLayoutError;
|
|
20
34
|
Object.defineProperty(exports, 'collectComposablePresetEntries', {
|
|
21
35
|
enumerable: true,
|
|
22
36
|
get: function () {
|
|
@@ -47,6 +61,7 @@ Object.defineProperty(exports, 'createProp', {
|
|
|
47
61
|
return _jfdevelops_react_layout_validator.createProp;
|
|
48
62
|
}
|
|
49
63
|
});
|
|
64
|
+
exports.createReactLayoutError = require_react_layout_error.createReactLayoutError;
|
|
50
65
|
Object.defineProperty(exports, 'defineComposableComponent', {
|
|
51
66
|
enumerable: true,
|
|
52
67
|
get: function () {
|
package/dist/index.d.cts
CHANGED
|
@@ -1,7 +1,19 @@
|
|
|
1
1
|
import { BaseComponent, MergeIntersection, Show, UnionToIntersection, pick } from "./utils.cjs";
|
|
2
2
|
import { LayoutResourceKey, NormalizeResource, NormalizeResources, ResourceDefinition, ResourceEnum, ResourceLayoutComponentProps, ResourceTree, normalizeResource, normalizeResources, toResourceEnum } from "./resource.cjs";
|
|
3
|
-
import { InPropsDefinition, InPropsFunction, InPropsObject, InPropsOptions, IncludedProps, InferredInProps, LayoutRenderProps, MergedLayoutInProps, PropsContextRender, PropsRenderDefinition, ResolvedIncludedProps, ResolvedIncludedPropsAsDefined } from "./props.cjs";
|
|
3
|
+
import { InPropsDefinition, InPropsFunction, InPropsObject, InPropsOptions, IncludedPropBehavior, IncludedProps, InferredInProps, LayoutRenderProps, MergedLayoutInProps, PropsContextRender, PropsRenderDefinition, ResolvedIncludedComponentProps, ResolvedIncludedConfigProps, ResolvedIncludedProps, ResolvedIncludedPropsAsDefined } from "./props.cjs";
|
|
4
|
+
import { ParameterizedResourcePath, PathVariables } from "./create-config/paths/types.cjs";
|
|
5
|
+
import { CreateGetComponentForPath, GetComponentForPath, ResolvedPathValue } from "./create-config/for-paths/get-component-for-path.cjs";
|
|
6
|
+
import { ForPaths, ForPathsRenderContext, RenderedPathComponent, RenderedPathComponentHOF, TargetPathBuilder } from "./create-config/for-paths/builder.cjs";
|
|
7
|
+
import { IsSubResourceKey } from "./create-config/is-sub-resource-key.cjs";
|
|
8
|
+
import { ComponentTypes, CreatedResourceConfig } from "./create-config/get-component.cjs";
|
|
4
9
|
import { defineResourceLayout } from "./create-config/define-layout.cjs";
|
|
10
|
+
import { CreateReactLayoutErrorOptions, CreatedReactLayoutError, ErrorMessageRenderer, ReactLayoutError, ReactLayoutErrorContext, ReactLayoutErrorRendererFactory, createReactLayoutError } from "./errors/react-layout-error.cjs";
|
|
11
|
+
import { InvalidConfigContext, InvalidConfigError } from "./errors/invalid-config.cjs";
|
|
12
|
+
import { InvalidPathContext, InvalidPathError } from "./errors/invalid-path.cjs";
|
|
13
|
+
import { InvalidResourceContext, InvalidResourceError } from "./errors/invalid-resource.cjs";
|
|
14
|
+
import { InvalidSubResourceContext, InvalidSubResourceError } from "./errors/invalid-sub-resource.cjs";
|
|
15
|
+
import { InvalidComponentContext, InvalidComponentError } from "./errors/invalid-component.cjs";
|
|
16
|
+
import { MissingPathVariableContext, MissingPathVariableError } from "./errors/missing-path-variable.cjs";
|
|
5
17
|
import { AnyComposableComponent, ComposableComponent, ComposableComponentCallable, ComposableComponents, ComposableNameContext, ComposablePresetComponent, ComposablePresetComponentCallProps, ComposablePresetMeta, ComposablePresetProps, ComposableResourceLayout, CreateLayoutComposable, DefinedComposableComponentRecord, LayoutComposablePresetProvider, LayoutComposablesFactory, MakeComposable, MakeComposableOptions, MergePresetProps, PresetPropsFromComposable, RequiredPresetLayoutProps, RequiredPresetRenderProps, ResolveLayoutComposables, collectComposablePresetEntries, createComposableComponent, createLayoutComposableFactory, defineComposableComponent, makeComposable, resolveComposablePresetProps, resolveLayoutComposables } from "@jfdevelops/react-layout-composables";
|
|
6
18
|
import { AnyBuiltPropDefinition, ExtractDefinitionValue, PropError, PropErrorOptions, ResolveLayoutProps, ResolveLayoutPropsAsDefined, ResolveProps, ResolvedBuiltPropShape, createPrimitivePropBuilder, createProp, isPropDefinitionShape, resolvePropDefinitionValues, validateProps } from "@jfdevelops/react-layout-validator";
|
|
7
|
-
export { type AnyBuiltPropDefinition, type AnyComposableComponent, type BaseComponent, type ComposableComponent, type ComposableComponentCallable, type ComposableComponents, type ComposableNameContext, type ComposablePresetComponent, type ComposablePresetComponentCallProps, type ComposablePresetMeta, type ComposablePresetProps, type ComposableResourceLayout, type CreateLayoutComposable, type DefinedComposableComponentRecord, type ExtractDefinitionValue, type InPropsDefinition, type InPropsFunction, type InPropsObject, type InPropsOptions, type IncludedProps, type InferredInProps, LayoutComposablePresetProvider, type LayoutComposablesFactory, type LayoutRenderProps, type LayoutResourceKey, type MakeComposable, type MakeComposableOptions, type MergeIntersection, type MergePresetProps, type MergedLayoutInProps, type NormalizeResource, type NormalizeResources, type PresetPropsFromComposable, PropError, type PropErrorOptions, type PropsContextRender, type PropsRenderDefinition, type RequiredPresetLayoutProps, type RequiredPresetRenderProps, type ResolveLayoutComposables, type ResolveLayoutProps, type ResolveLayoutPropsAsDefined, type ResolveProps, type ResolvedBuiltPropShape, type ResolvedIncludedProps, type ResolvedIncludedPropsAsDefined, type ResourceDefinition, type ResourceEnum, type ResourceLayoutComponentProps, type ResourceTree, type Show, type UnionToIntersection, collectComposablePresetEntries, createComposableComponent, createLayoutComposableFactory, createPrimitivePropBuilder, createProp, defineComposableComponent, defineResourceLayout, isPropDefinitionShape, makeComposable, normalizeResource, normalizeResources, pick, resolveComposablePresetProps, resolveLayoutComposables, resolvePropDefinitionValues, toResourceEnum, validateProps };
|
|
19
|
+
export { type AnyBuiltPropDefinition, type AnyComposableComponent, type BaseComponent, type ComponentTypes, type ComposableComponent, type ComposableComponentCallable, type ComposableComponents, type ComposableNameContext, type ComposablePresetComponent, type ComposablePresetComponentCallProps, type ComposablePresetMeta, type ComposablePresetProps, type ComposableResourceLayout, type CreateGetComponentForPath, type CreateLayoutComposable, type CreateReactLayoutErrorOptions, type CreatedReactLayoutError, type CreatedResourceConfig, type DefinedComposableComponentRecord, type ErrorMessageRenderer, type ExtractDefinitionValue, type ForPaths, type ForPathsRenderContext, type GetComponentForPath, type InPropsDefinition, type InPropsFunction, type InPropsObject, type InPropsOptions, type IncludedPropBehavior, type IncludedProps, type InferredInProps, type InvalidComponentContext, InvalidComponentError, type InvalidConfigContext, InvalidConfigError, type InvalidPathContext, InvalidPathError, type InvalidResourceContext, InvalidResourceError, type InvalidSubResourceContext, InvalidSubResourceError, type IsSubResourceKey, LayoutComposablePresetProvider, type LayoutComposablesFactory, type LayoutRenderProps, type LayoutResourceKey, type MakeComposable, type MakeComposableOptions, type MergeIntersection, type MergePresetProps, type MergedLayoutInProps, type MissingPathVariableContext, MissingPathVariableError, type NormalizeResource, type NormalizeResources, type ParameterizedResourcePath, type PathVariables, type PresetPropsFromComposable, PropError, type PropErrorOptions, type PropsContextRender, type PropsRenderDefinition, ReactLayoutError, type ReactLayoutErrorContext, type ReactLayoutErrorRendererFactory, type RenderedPathComponent, type RenderedPathComponentHOF, type RequiredPresetLayoutProps, type RequiredPresetRenderProps, type ResolveLayoutComposables, type ResolveLayoutProps, type ResolveLayoutPropsAsDefined, type ResolveProps, type ResolvedBuiltPropShape, type ResolvedIncludedComponentProps, type ResolvedIncludedConfigProps, type ResolvedIncludedProps, type ResolvedIncludedPropsAsDefined, type ResolvedPathValue, type ResourceDefinition, type ResourceEnum, type ResourceLayoutComponentProps, type ResourceTree, type Show, type TargetPathBuilder, type UnionToIntersection, collectComposablePresetEntries, createComposableComponent, createLayoutComposableFactory, createPrimitivePropBuilder, createProp, createReactLayoutError, defineComposableComponent, defineResourceLayout, isPropDefinitionShape, makeComposable, normalizeResource, normalizeResources, pick, resolveComposablePresetProps, resolveLayoutComposables, resolvePropDefinitionValues, toResourceEnum, validateProps };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,7 +1,19 @@
|
|
|
1
1
|
import { BaseComponent, MergeIntersection, Show, UnionToIntersection, pick } from "./utils.mjs";
|
|
2
2
|
import { LayoutResourceKey, NormalizeResource, NormalizeResources, ResourceDefinition, ResourceEnum, ResourceLayoutComponentProps, ResourceTree, normalizeResource, normalizeResources, toResourceEnum } from "./resource.mjs";
|
|
3
|
-
import { InPropsDefinition, InPropsFunction, InPropsObject, InPropsOptions, IncludedProps, InferredInProps, LayoutRenderProps, MergedLayoutInProps, PropsContextRender, PropsRenderDefinition, ResolvedIncludedProps, ResolvedIncludedPropsAsDefined } from "./props.mjs";
|
|
3
|
+
import { InPropsDefinition, InPropsFunction, InPropsObject, InPropsOptions, IncludedPropBehavior, IncludedProps, InferredInProps, LayoutRenderProps, MergedLayoutInProps, PropsContextRender, PropsRenderDefinition, ResolvedIncludedComponentProps, ResolvedIncludedConfigProps, ResolvedIncludedProps, ResolvedIncludedPropsAsDefined } from "./props.mjs";
|
|
4
|
+
import { ParameterizedResourcePath, PathVariables } from "./create-config/paths/types.mjs";
|
|
5
|
+
import { CreateGetComponentForPath, GetComponentForPath, ResolvedPathValue } from "./create-config/for-paths/get-component-for-path.mjs";
|
|
6
|
+
import { ForPaths, ForPathsRenderContext, RenderedPathComponent, RenderedPathComponentHOF, TargetPathBuilder } from "./create-config/for-paths/builder.mjs";
|
|
7
|
+
import { IsSubResourceKey } from "./create-config/is-sub-resource-key.mjs";
|
|
8
|
+
import { ComponentTypes, CreatedResourceConfig } from "./create-config/get-component.mjs";
|
|
4
9
|
import { defineResourceLayout } from "./create-config/define-layout.mjs";
|
|
10
|
+
import { CreateReactLayoutErrorOptions, CreatedReactLayoutError, ErrorMessageRenderer, ReactLayoutError, ReactLayoutErrorContext, ReactLayoutErrorRendererFactory, createReactLayoutError } from "./errors/react-layout-error.mjs";
|
|
11
|
+
import { InvalidConfigContext, InvalidConfigError } from "./errors/invalid-config.mjs";
|
|
12
|
+
import { InvalidPathContext, InvalidPathError } from "./errors/invalid-path.mjs";
|
|
13
|
+
import { InvalidResourceContext, InvalidResourceError } from "./errors/invalid-resource.mjs";
|
|
14
|
+
import { InvalidSubResourceContext, InvalidSubResourceError } from "./errors/invalid-sub-resource.mjs";
|
|
15
|
+
import { InvalidComponentContext, InvalidComponentError } from "./errors/invalid-component.mjs";
|
|
16
|
+
import { MissingPathVariableContext, MissingPathVariableError } from "./errors/missing-path-variable.mjs";
|
|
5
17
|
import { AnyComposableComponent, ComposableComponent, ComposableComponentCallable, ComposableComponents, ComposableNameContext, ComposablePresetComponent, ComposablePresetComponentCallProps, ComposablePresetMeta, ComposablePresetProps, ComposableResourceLayout, CreateLayoutComposable, DefinedComposableComponentRecord, LayoutComposablePresetProvider, LayoutComposablesFactory, MakeComposable, MakeComposableOptions, MergePresetProps, PresetPropsFromComposable, RequiredPresetLayoutProps, RequiredPresetRenderProps, ResolveLayoutComposables, collectComposablePresetEntries, createComposableComponent, createLayoutComposableFactory, defineComposableComponent, makeComposable, resolveComposablePresetProps, resolveLayoutComposables } from "@jfdevelops/react-layout-composables";
|
|
6
18
|
import { AnyBuiltPropDefinition, ExtractDefinitionValue, PropError, PropErrorOptions, ResolveLayoutProps, ResolveLayoutPropsAsDefined, ResolveProps, ResolvedBuiltPropShape, createPrimitivePropBuilder, createProp, isPropDefinitionShape, resolvePropDefinitionValues, validateProps } from "@jfdevelops/react-layout-validator";
|
|
7
|
-
export { type AnyBuiltPropDefinition, type AnyComposableComponent, type BaseComponent, type ComposableComponent, type ComposableComponentCallable, type ComposableComponents, type ComposableNameContext, type ComposablePresetComponent, type ComposablePresetComponentCallProps, type ComposablePresetMeta, type ComposablePresetProps, type ComposableResourceLayout, type CreateLayoutComposable, type DefinedComposableComponentRecord, type ExtractDefinitionValue, type InPropsDefinition, type InPropsFunction, type InPropsObject, type InPropsOptions, type IncludedProps, type InferredInProps, LayoutComposablePresetProvider, type LayoutComposablesFactory, type LayoutRenderProps, type LayoutResourceKey, type MakeComposable, type MakeComposableOptions, type MergeIntersection, type MergePresetProps, type MergedLayoutInProps, type NormalizeResource, type NormalizeResources, type PresetPropsFromComposable, PropError, type PropErrorOptions, type PropsContextRender, type PropsRenderDefinition, type RequiredPresetLayoutProps, type RequiredPresetRenderProps, type ResolveLayoutComposables, type ResolveLayoutProps, type ResolveLayoutPropsAsDefined, type ResolveProps, type ResolvedBuiltPropShape, type ResolvedIncludedProps, type ResolvedIncludedPropsAsDefined, type ResourceDefinition, type ResourceEnum, type ResourceLayoutComponentProps, type ResourceTree, type Show, type UnionToIntersection, collectComposablePresetEntries, createComposableComponent, createLayoutComposableFactory, createPrimitivePropBuilder, createProp, defineComposableComponent, defineResourceLayout, isPropDefinitionShape, makeComposable, normalizeResource, normalizeResources, pick, resolveComposablePresetProps, resolveLayoutComposables, resolvePropDefinitionValues, toResourceEnum, validateProps };
|
|
19
|
+
export { type AnyBuiltPropDefinition, type AnyComposableComponent, type BaseComponent, type ComponentTypes, type ComposableComponent, type ComposableComponentCallable, type ComposableComponents, type ComposableNameContext, type ComposablePresetComponent, type ComposablePresetComponentCallProps, type ComposablePresetMeta, type ComposablePresetProps, type ComposableResourceLayout, type CreateGetComponentForPath, type CreateLayoutComposable, type CreateReactLayoutErrorOptions, type CreatedReactLayoutError, type CreatedResourceConfig, type DefinedComposableComponentRecord, type ErrorMessageRenderer, type ExtractDefinitionValue, type ForPaths, type ForPathsRenderContext, type GetComponentForPath, type InPropsDefinition, type InPropsFunction, type InPropsObject, type InPropsOptions, type IncludedPropBehavior, type IncludedProps, type InferredInProps, type InvalidComponentContext, InvalidComponentError, type InvalidConfigContext, InvalidConfigError, type InvalidPathContext, InvalidPathError, type InvalidResourceContext, InvalidResourceError, type InvalidSubResourceContext, InvalidSubResourceError, type IsSubResourceKey, LayoutComposablePresetProvider, type LayoutComposablesFactory, type LayoutRenderProps, type LayoutResourceKey, type MakeComposable, type MakeComposableOptions, type MergeIntersection, type MergePresetProps, type MergedLayoutInProps, type MissingPathVariableContext, MissingPathVariableError, type NormalizeResource, type NormalizeResources, type ParameterizedResourcePath, type PathVariables, type PresetPropsFromComposable, PropError, type PropErrorOptions, type PropsContextRender, type PropsRenderDefinition, ReactLayoutError, type ReactLayoutErrorContext, type ReactLayoutErrorRendererFactory, type RenderedPathComponent, type RenderedPathComponentHOF, type RequiredPresetLayoutProps, type RequiredPresetRenderProps, type ResolveLayoutComposables, type ResolveLayoutProps, type ResolveLayoutPropsAsDefined, type ResolveProps, type ResolvedBuiltPropShape, type ResolvedIncludedComponentProps, type ResolvedIncludedConfigProps, type ResolvedIncludedProps, type ResolvedIncludedPropsAsDefined, type ResolvedPathValue, type ResourceDefinition, type ResourceEnum, type ResourceLayoutComponentProps, type ResourceTree, type Show, type TargetPathBuilder, type UnionToIntersection, collectComposablePresetEntries, createComposableComponent, createLayoutComposableFactory, createPrimitivePropBuilder, createProp, createReactLayoutError, defineComposableComponent, defineResourceLayout, isPropDefinitionShape, makeComposable, normalizeResource, normalizeResources, pick, resolveComposablePresetProps, resolveLayoutComposables, resolvePropDefinitionValues, toResourceEnum, validateProps };
|
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import { normalizeResource, normalizeResources, toResourceEnum } from "./resource.mjs";
|
|
2
2
|
import { pick } from "./utils.mjs";
|
|
3
|
+
import { ReactLayoutError, createReactLayoutError } from "./errors/react-layout-error.mjs";
|
|
4
|
+
import { InvalidConfigError } from "./errors/invalid-config.mjs";
|
|
5
|
+
import { InvalidPathError } from "./errors/invalid-path.mjs";
|
|
6
|
+
import { InvalidResourceError } from "./errors/invalid-resource.mjs";
|
|
7
|
+
import { InvalidSubResourceError } from "./errors/invalid-sub-resource.mjs";
|
|
8
|
+
import { InvalidComponentError } from "./errors/invalid-component.mjs";
|
|
9
|
+
import { MissingPathVariableError } from "./errors/missing-path-variable.mjs";
|
|
3
10
|
import { defineResourceLayout } from "./create-config/define-layout.mjs";
|
|
4
11
|
import { LayoutComposablePresetProvider, collectComposablePresetEntries, createComposableComponent, createLayoutComposableFactory, defineComposableComponent, makeComposable, resolveComposablePresetProps, resolveLayoutComposables } from "@jfdevelops/react-layout-composables";
|
|
5
12
|
import { PropError, createPrimitivePropBuilder, createProp, isPropDefinitionShape, resolvePropDefinitionValues, validateProps } from "@jfdevelops/react-layout-validator";
|
|
6
13
|
|
|
7
|
-
export { LayoutComposablePresetProvider, PropError, collectComposablePresetEntries, createComposableComponent, createLayoutComposableFactory, createPrimitivePropBuilder, createProp, defineComposableComponent, defineResourceLayout, isPropDefinitionShape, makeComposable, normalizeResource, normalizeResources, pick, resolveComposablePresetProps, resolveLayoutComposables, resolvePropDefinitionValues, toResourceEnum, validateProps };
|
|
14
|
+
export { InvalidComponentError, InvalidConfigError, InvalidPathError, InvalidResourceError, InvalidSubResourceError, LayoutComposablePresetProvider, MissingPathVariableError, PropError, ReactLayoutError, collectComposablePresetEntries, createComposableComponent, createLayoutComposableFactory, createPrimitivePropBuilder, createProp, createReactLayoutError, defineComposableComponent, defineResourceLayout, isPropDefinitionShape, makeComposable, normalizeResource, normalizeResources, pick, resolveComposablePresetProps, resolveLayoutComposables, resolvePropDefinitionValues, toResourceEnum, validateProps };
|
package/dist/props.d.cts
CHANGED
|
@@ -40,14 +40,24 @@ type RequiredVariant = true | 'required';
|
|
|
40
40
|
*/
|
|
41
41
|
type PropsType<Variant extends RequiredVariant = true> = Variant | 'optional';
|
|
42
42
|
type InternalPropsType = PropsType<'required'>;
|
|
43
|
+
/** Controls where an included layout prop is supplied and whether it is required there. */
|
|
44
|
+
type IncludedPropBehavior = {
|
|
45
|
+
visibility: 'optional' | 'required';
|
|
46
|
+
passthrough: 'component' | 'config';
|
|
47
|
+
};
|
|
48
|
+
type IncludedPropType = PropsType | IncludedPropBehavior;
|
|
43
49
|
/**
|
|
44
50
|
* A map of props to include in the layout.
|
|
45
51
|
*/
|
|
46
|
-
type IncludedProps<T extends object> = { [K in keyof T & string]?:
|
|
52
|
+
type IncludedProps<T extends object> = { [K in keyof T & string]?: IncludedPropType };
|
|
47
53
|
type PropsKeys<Props extends InPropsObject, T> = T & keyof Props;
|
|
48
|
-
type
|
|
49
|
-
type
|
|
54
|
+
type IncludedPropVisibility<Value> = Value extends IncludedPropBehavior ? Value['visibility'] : Value extends true | 'required' ? 'required' : Value extends 'optional' ? 'optional' : never;
|
|
55
|
+
type IncludedPropPassthrough<Value> = Value extends IncludedPropBehavior ? Value['passthrough'] : Value extends true | 'required' ? 'config' : Value extends 'optional' ? 'component' | 'config' : never;
|
|
56
|
+
type GetPropsKey<IncludeProps extends object, Visibility extends InternalPropsType, Passthrough extends IncludedPropBehavior['passthrough'] | 'render' = 'render'> = { [Key in keyof IncludeProps]: IncludedPropVisibility<IncludeProps[Key]> extends Visibility ? Passthrough extends 'render' ? Key : Passthrough extends IncludedPropPassthrough<IncludeProps[Key]> ? Key : never : never }[keyof IncludeProps];
|
|
57
|
+
type SelectedIncludedProps<Props extends InPropsObject, IncludeProps extends IncludedProps<Props>, Visibility extends InternalPropsType, Passthrough extends IncludedPropBehavior['passthrough'] | 'render' = 'render'> = Pick<Props, PropsKeys<Props, GetPropsKey<IncludeProps, Visibility, Passthrough>>>;
|
|
50
58
|
type ResolvedIncludedProps<Props extends InPropsObject, IncludeProps extends IncludedProps<Props>> = ResolveLayoutProps<SelectedIncludedProps<Props, IncludeProps, 'required'>> & Partial<ResolveLayoutProps<SelectedIncludedProps<Props, IncludeProps, 'optional'>>>;
|
|
59
|
+
type ResolvedIncludedConfigProps<Props extends InPropsObject, IncludeProps extends IncludedProps<Props>> = ResolveLayoutProps<SelectedIncludedProps<Props, IncludeProps, 'required', 'config'>> & Partial<ResolveLayoutProps<SelectedIncludedProps<Props, IncludeProps, 'optional', 'config'>>>;
|
|
60
|
+
type ResolvedIncludedComponentProps<Props extends InPropsObject, IncludeProps extends IncludedProps<Props>> = ResolveLayoutProps<SelectedIncludedProps<Props, IncludeProps, 'required', 'component'>> & Partial<ResolveLayoutProps<SelectedIncludedProps<Props, IncludeProps, 'optional', 'component'>>>;
|
|
51
61
|
/**
|
|
52
62
|
* Like {@link ResolvedIncludedProps}, but keeps included prop keys exactly as
|
|
53
63
|
* declared (no `JSX.Element` capitalization).
|
|
@@ -55,5 +65,5 @@ type ResolvedIncludedProps<Props extends InPropsObject, IncludeProps extends Inc
|
|
|
55
65
|
type ResolvedIncludedPropsAsDefined<Props extends InPropsObject, IncludeProps extends IncludedProps<Props>> = ResolveLayoutPropsAsDefined<SelectedIncludedProps<Props, IncludeProps, 'required'>> & Partial<ResolveLayoutPropsAsDefined<SelectedIncludedProps<Props, IncludeProps, 'optional'>>>;
|
|
56
66
|
type LayoutRenderProps<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, Composables extends ComposableComponents = {}, IncludeProps extends IncludedProps<MergedLayoutInProps<Resources, Options, Composables>> = {}, CustomProps extends InPropsObject = {}> = Show<ResolveProps<CustomProps> & ResolvedIncludedProps<MergedLayoutInProps<Resources, Options, Composables>, IncludeProps>>;
|
|
57
67
|
//#endregion
|
|
58
|
-
export { InPropsDefinition, InPropsFunction, type InPropsObject, InPropsOptions, IncludedProps, InferredInProps, LayoutRenderProps, MergedLayoutInProps, PropsContextRender, PropsRenderDefinition, ResolvedIncludedProps, ResolvedIncludedPropsAsDefined };
|
|
68
|
+
export { InPropsDefinition, InPropsFunction, type InPropsObject, InPropsOptions, IncludedPropBehavior, IncludedProps, InferredInProps, LayoutRenderProps, MergedLayoutInProps, PropsContextRender, PropsRenderDefinition, ResolvedIncludedComponentProps, ResolvedIncludedConfigProps, ResolvedIncludedProps, ResolvedIncludedPropsAsDefined };
|
|
59
69
|
//# sourceMappingURL=props.d.cts.map
|
package/dist/props.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"props.d.cts","names":[],"sources":["../src/props.ts"],"mappings":";;;;;;AAsBA;;;;;AAAA,KAAY,kBAAA,4CACV,KAAA,EAAO,WAAA,EACP,OAAA,EAAS,OAAA,KACN,MAAA;;;;;;;;;;;;UAaY,qBAAA,SACP,aAAA,iBACM,KAAA,SAAc,aAAA,GAAgB,YAAA,CAAa,KAAA;EAIzD,KAAA,GAAQ,KAAA;EACR,MAAA,EAAQ,kBAAA,CAAmB,WAAA,EAAa,OAAA,EAAS,MAAA;AAAA;AAAA,KAGvC,cAAA,mBACQ,aAAA,CAAc,kBAAA;EAGhC,IAAA,EAAM,kBAAA,CAAmB,IAAA;EACzB,QAAA,EAAU,eAAA,CAAgB,YAAA,CAAa,SAAA;AAAA;AAAA,KAE7B,eAAA,mBACQ,aAAA,CAAc,kBAAA,2BAEhC,KAAA,EAAO,IAAA,CAAK,cAAA,CAAe,SAAA,EAAW,IAAA,OACnC,aAAA;AAAA,KACO,iBAAA,mBACQ,aAAA,CAAc,kBAAA,KAC9B,aAAA,GAAgB,eAAA,CAAgB,SAAA;AAAA,KACxB,eAAA,mBACQ,aAAA,CAAc,kBAAA,mBAChB,iBAAA,CAAkB,SAAA,KAChC,OAAA,SAAgB,eAAA,CAAgB,SAAA,IAAa,UAAA,CAAW,OAAA,IAAW,OAAA;AAAA,KAC3D,mBAAA,mBACQ,aAAA,CAAc,kBAAA,mBAChB,iBAAA,CAAkB,SAAA,uBACd,oBAAA,IAEpB,eAAA,CAAgB,SAAA,EAAW,OAAA,UAAiB,aAAA,GACxC,eAAA,CAAgB,SAAA,EAAW,OAAA,IAAW,gBAAA,CAAiB,WAAA;AAAA,KAEjD,eAAA;;;;;KAKP,SAAA,iBAA0B,eAAA,WAA0B,OAAO;AAAA,KAC3D,iBAAA,GAAoB,SAAS;;;;
|
|
1
|
+
{"version":3,"file":"props.d.cts","names":[],"sources":["../src/props.ts"],"mappings":"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"}
|
package/dist/props.d.mts
CHANGED
|
@@ -40,14 +40,24 @@ type RequiredVariant = true | 'required';
|
|
|
40
40
|
*/
|
|
41
41
|
type PropsType<Variant extends RequiredVariant = true> = Variant | 'optional';
|
|
42
42
|
type InternalPropsType = PropsType<'required'>;
|
|
43
|
+
/** Controls where an included layout prop is supplied and whether it is required there. */
|
|
44
|
+
type IncludedPropBehavior = {
|
|
45
|
+
visibility: 'optional' | 'required';
|
|
46
|
+
passthrough: 'component' | 'config';
|
|
47
|
+
};
|
|
48
|
+
type IncludedPropType = PropsType | IncludedPropBehavior;
|
|
43
49
|
/**
|
|
44
50
|
* A map of props to include in the layout.
|
|
45
51
|
*/
|
|
46
|
-
type IncludedProps<T extends object> = { [K in keyof T & string]?:
|
|
52
|
+
type IncludedProps<T extends object> = { [K in keyof T & string]?: IncludedPropType };
|
|
47
53
|
type PropsKeys<Props extends InPropsObject, T> = T & keyof Props;
|
|
48
|
-
type
|
|
49
|
-
type
|
|
54
|
+
type IncludedPropVisibility<Value> = Value extends IncludedPropBehavior ? Value['visibility'] : Value extends true | 'required' ? 'required' : Value extends 'optional' ? 'optional' : never;
|
|
55
|
+
type IncludedPropPassthrough<Value> = Value extends IncludedPropBehavior ? Value['passthrough'] : Value extends true | 'required' ? 'config' : Value extends 'optional' ? 'component' | 'config' : never;
|
|
56
|
+
type GetPropsKey<IncludeProps extends object, Visibility extends InternalPropsType, Passthrough extends IncludedPropBehavior['passthrough'] | 'render' = 'render'> = { [Key in keyof IncludeProps]: IncludedPropVisibility<IncludeProps[Key]> extends Visibility ? Passthrough extends 'render' ? Key : Passthrough extends IncludedPropPassthrough<IncludeProps[Key]> ? Key : never : never }[keyof IncludeProps];
|
|
57
|
+
type SelectedIncludedProps<Props extends InPropsObject, IncludeProps extends IncludedProps<Props>, Visibility extends InternalPropsType, Passthrough extends IncludedPropBehavior['passthrough'] | 'render' = 'render'> = Pick<Props, PropsKeys<Props, GetPropsKey<IncludeProps, Visibility, Passthrough>>>;
|
|
50
58
|
type ResolvedIncludedProps<Props extends InPropsObject, IncludeProps extends IncludedProps<Props>> = ResolveLayoutProps<SelectedIncludedProps<Props, IncludeProps, 'required'>> & Partial<ResolveLayoutProps<SelectedIncludedProps<Props, IncludeProps, 'optional'>>>;
|
|
59
|
+
type ResolvedIncludedConfigProps<Props extends InPropsObject, IncludeProps extends IncludedProps<Props>> = ResolveLayoutProps<SelectedIncludedProps<Props, IncludeProps, 'required', 'config'>> & Partial<ResolveLayoutProps<SelectedIncludedProps<Props, IncludeProps, 'optional', 'config'>>>;
|
|
60
|
+
type ResolvedIncludedComponentProps<Props extends InPropsObject, IncludeProps extends IncludedProps<Props>> = ResolveLayoutProps<SelectedIncludedProps<Props, IncludeProps, 'required', 'component'>> & Partial<ResolveLayoutProps<SelectedIncludedProps<Props, IncludeProps, 'optional', 'component'>>>;
|
|
51
61
|
/**
|
|
52
62
|
* Like {@link ResolvedIncludedProps}, but keeps included prop keys exactly as
|
|
53
63
|
* declared (no `JSX.Element` capitalization).
|
|
@@ -55,5 +65,5 @@ type ResolvedIncludedProps<Props extends InPropsObject, IncludeProps extends Inc
|
|
|
55
65
|
type ResolvedIncludedPropsAsDefined<Props extends InPropsObject, IncludeProps extends IncludedProps<Props>> = ResolveLayoutPropsAsDefined<SelectedIncludedProps<Props, IncludeProps, 'required'>> & Partial<ResolveLayoutPropsAsDefined<SelectedIncludedProps<Props, IncludeProps, 'optional'>>>;
|
|
56
66
|
type LayoutRenderProps<Resources extends ReadonlyArray<ResourceDefinition>, Options extends InPropsDefinition<Resources>, Composables extends ComposableComponents = {}, IncludeProps extends IncludedProps<MergedLayoutInProps<Resources, Options, Composables>> = {}, CustomProps extends InPropsObject = {}> = Show<ResolveProps<CustomProps> & ResolvedIncludedProps<MergedLayoutInProps<Resources, Options, Composables>, IncludeProps>>;
|
|
57
67
|
//#endregion
|
|
58
|
-
export { InPropsDefinition, InPropsFunction, type InPropsObject, InPropsOptions, IncludedProps, InferredInProps, LayoutRenderProps, MergedLayoutInProps, PropsContextRender, PropsRenderDefinition, ResolvedIncludedProps, ResolvedIncludedPropsAsDefined };
|
|
68
|
+
export { InPropsDefinition, InPropsFunction, type InPropsObject, InPropsOptions, IncludedPropBehavior, IncludedProps, InferredInProps, LayoutRenderProps, MergedLayoutInProps, PropsContextRender, PropsRenderDefinition, ResolvedIncludedComponentProps, ResolvedIncludedConfigProps, ResolvedIncludedProps, ResolvedIncludedPropsAsDefined };
|
|
59
69
|
//# sourceMappingURL=props.d.mts.map
|
package/dist/props.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"props.d.mts","names":[],"sources":["../src/props.ts"],"mappings":";;;;;;AAsBA;;;;;AAAA,KAAY,kBAAA,4CACV,KAAA,EAAO,WAAA,EACP,OAAA,EAAS,OAAA,KACN,MAAA;;;;;;;;;;;;UAaY,qBAAA,SACP,aAAA,iBACM,KAAA,SAAc,aAAA,GAAgB,YAAA,CAAa,KAAA;EAIzD,KAAA,GAAQ,KAAA;EACR,MAAA,EAAQ,kBAAA,CAAmB,WAAA,EAAa,OAAA,EAAS,MAAA;AAAA;AAAA,KAGvC,cAAA,mBACQ,aAAA,CAAc,kBAAA;EAGhC,IAAA,EAAM,kBAAA,CAAmB,IAAA;EACzB,QAAA,EAAU,eAAA,CAAgB,YAAA,CAAa,SAAA;AAAA;AAAA,KAE7B,eAAA,mBACQ,aAAA,CAAc,kBAAA,2BAEhC,KAAA,EAAO,IAAA,CAAK,cAAA,CAAe,SAAA,EAAW,IAAA,OACnC,aAAA;AAAA,KACO,iBAAA,mBACQ,aAAA,CAAc,kBAAA,KAC9B,aAAA,GAAgB,eAAA,CAAgB,SAAA;AAAA,KACxB,eAAA,mBACQ,aAAA,CAAc,kBAAA,mBAChB,iBAAA,CAAkB,SAAA,KAChC,OAAA,SAAgB,eAAA,CAAgB,SAAA,IAAa,UAAA,CAAW,OAAA,IAAW,OAAA;AAAA,KAC3D,mBAAA,mBACQ,aAAA,CAAc,kBAAA,mBAChB,iBAAA,CAAkB,SAAA,uBACd,oBAAA,IAEpB,eAAA,CAAgB,SAAA,EAAW,OAAA,UAAiB,aAAA,GACxC,eAAA,CAAgB,SAAA,EAAW,OAAA,IAAW,gBAAA,CAAiB,WAAA;AAAA,KAEjD,eAAA;;;;;KAKP,SAAA,iBAA0B,eAAA,WAA0B,OAAO;AAAA,KAC3D,iBAAA,GAAoB,SAAS;;;;
|
|
1
|
+
{"version":3,"file":"props.d.mts","names":[],"sources":["../src/props.ts"],"mappings":"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"}
|
package/dist/resource.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.cjs","names":[],"sources":["../src/resource.ts"],"sourcesContent":["import { ReactNode } from 'react';\nimport { NonEmptyReadonlyArray } from '@jfdevelops/react-layout-validator';\nimport { MergeIntersection, UnionToIntersection } from './utils';\n\nexport type ResourceDefinition =\n | string\n | {\n value: string;\n subResources: ReadonlyArray<\n ResourceDefinition & {\n /**\n * Whether to allow any string as a sub resource.\n *\n * @default false\n */\n allowAnyString?: boolean;\n }\n >;\n };\n\nexport type ResourceTree = Record<\n string,\n {\n subResources: ResourceTree;\n }\n>;\n\nexport type NormalizeResource<Resource extends ResourceDefinition> =\n Resource extends string\n ? {\n [Key in Resource]: {\n subResources: {};\n };\n }\n : Resource extends {\n value: infer Value extends string;\n subResources: infer SubResources extends\n ReadonlyArray<ResourceDefinition>;\n }\n ? {\n [Key in Value]: {\n subResources: NormalizeResources<SubResources>;\n };\n }\n : never;\n\nexport type NormalizeResources<\n Resources extends ReadonlyArray<ResourceDefinition>,\n> = MergeIntersection<\n UnionToIntersection<NormalizeResource<Resources[number]>>\n>;\nexport type ResourceLayoutComponentProps = {\n children: ReactNode;\n};\n\nfunction normalizeResourceTree(resource: ResourceDefinition): ResourceTree {\n if (typeof resource === 'string') {\n return {\n [resource]: {\n subResources: {},\n },\n };\n }\n\n const { value, subResources } = resource;\n\n return {\n [value]: {\n subResources: normalizeResourcesTree(subResources),\n },\n };\n}\n\nfunction normalizeResourcesTree(\n resources: ReadonlyArray<ResourceDefinition>,\n): ResourceTree {\n const normalizedResources: ResourceTree = {};\n\n for (const resource of resources) {\n Object.assign(normalizedResources, normalizeResourceTree(resource));\n }\n\n return normalizedResources;\n}\n\nexport function normalizeResource(resource: ResourceDefinition): ResourceTree {\n return normalizeResourceTree(resource);\n}\n\nexport function normalizeResources<\n Resources extends ReadonlyArray<ResourceDefinition>,\n>(resources: Resources): NormalizeResources<Resources> {\n return normalizeResourcesTree(resources) as NormalizeResources<Resources>;\n}\n\nexport function createIsValidResourceFn<\n Resources extends ReadonlyArray<ResourceDefinition>,\n>(resources: Resources) {\n return (value: unknown): value is LayoutResourceKey<Resources> => {\n return (\n typeof value === 'string' &&\n Object.keys(normalizeResources(resources)).includes(value)\n );\n };\n}\n\ntype ResourceDefinitionValue<Resource extends ResourceDefinition> =\n Resource extends string\n ? Resource\n : Resource extends { value: infer Value extends string }\n ? Value\n : never;\n\n/**\n * Top-level resource names declared in a `resources` array. Preserves string\n * literal unions for const resource definitions (unlike `keyof` on the\n * normalized resource tree, which tends to widen to `string` in hovers).\n */\nexport type LayoutResourceKey<\n Resources extends ReadonlyArray<ResourceDefinition>,\n> = ResourceDefinitionValue<Resources[number]>;\n\nexport type ResourceDefinitionForKey<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Key extends string,\n> = Extract<Resources[number], Key | { value: Key }>;\n\n/** `subResources` array declared on a layout resource. */\nexport type SubResourceDefinitionsFor<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Resource extends LayoutResourceKey<Resources>,\n> =\n ResourceDefinitionForKey<Resources, Resource> extends {\n subResources: infer SubResources extends ReadonlyArray<ResourceDefinition>;\n }\n ? SubResources\n : readonly [];\n\ntype CanNestSubResourceParam<\n MaxDepth extends number,\n DepthAcc extends readonly unknown[],\n> = [...DepthAcc, unknown]['length'] extends MaxDepth ? false : true;\n\n/**\n * `subResource` route param: a slug at the current depth, or `{
|
|
1
|
+
{"version":3,"file":"resource.cjs","names":[],"sources":["../src/resource.ts"],"sourcesContent":["import { ReactNode } from 'react';\nimport { NonEmptyReadonlyArray } from '@jfdevelops/react-layout-validator';\nimport { MergeIntersection, UnionToIntersection } from './utils';\n\nexport type ResourceDefinition =\n | string\n | {\n value: string;\n subResources: ReadonlyArray<\n ResourceDefinition & {\n /**\n * Whether to allow any string as a sub resource.\n *\n * @default false\n */\n allowAnyString?: boolean;\n }\n >;\n };\n\nexport type ResourceTree = Record<\n string,\n {\n subResources: ResourceTree;\n }\n>;\n\nexport type NormalizeResource<Resource extends ResourceDefinition> =\n Resource extends string\n ? {\n [Key in Resource]: {\n subResources: {};\n };\n }\n : Resource extends {\n value: infer Value extends string;\n subResources: infer SubResources extends\n ReadonlyArray<ResourceDefinition>;\n }\n ? {\n [Key in Value]: {\n subResources: NormalizeResources<SubResources>;\n };\n }\n : never;\n\nexport type NormalizeResources<\n Resources extends ReadonlyArray<ResourceDefinition>,\n> = MergeIntersection<\n UnionToIntersection<NormalizeResource<Resources[number]>>\n>;\nexport type ResourceLayoutComponentProps = {\n children: ReactNode;\n};\n\nfunction normalizeResourceTree(resource: ResourceDefinition): ResourceTree {\n if (typeof resource === 'string') {\n return {\n [resource]: {\n subResources: {},\n },\n };\n }\n\n const { value, subResources } = resource;\n\n return {\n [value]: {\n subResources: normalizeResourcesTree(subResources),\n },\n };\n}\n\nfunction normalizeResourcesTree(\n resources: ReadonlyArray<ResourceDefinition>,\n): ResourceTree {\n const normalizedResources: ResourceTree = {};\n\n for (const resource of resources) {\n Object.assign(normalizedResources, normalizeResourceTree(resource));\n }\n\n return normalizedResources;\n}\n\nexport function normalizeResource(resource: ResourceDefinition): ResourceTree {\n return normalizeResourceTree(resource);\n}\n\nexport function normalizeResources<\n Resources extends ReadonlyArray<ResourceDefinition>,\n>(resources: Resources): NormalizeResources<Resources> {\n return normalizeResourcesTree(resources) as NormalizeResources<Resources>;\n}\n\nexport function createIsValidResourceFn<\n Resources extends ReadonlyArray<ResourceDefinition>,\n>(resources: Resources) {\n return (value: unknown): value is LayoutResourceKey<Resources> => {\n return (\n typeof value === 'string' &&\n Object.keys(normalizeResources(resources)).includes(value)\n );\n };\n}\n\ntype ResourceDefinitionValue<Resource extends ResourceDefinition> =\n Resource extends string\n ? Resource\n : Resource extends { value: infer Value extends string }\n ? Value\n : never;\n\n/**\n * Top-level resource names declared in a `resources` array. Preserves string\n * literal unions for const resource definitions (unlike `keyof` on the\n * normalized resource tree, which tends to widen to `string` in hovers).\n */\nexport type LayoutResourceKey<\n Resources extends ReadonlyArray<ResourceDefinition>,\n> = ResourceDefinitionValue<Resources[number]>;\n\nexport type ResourceDefinitionForKey<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Key extends string,\n> = Extract<Resources[number], Key | { value: Key }>;\n\n/** `subResources` array declared on a layout resource. */\nexport type SubResourceDefinitionsFor<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Resource extends LayoutResourceKey<Resources>,\n> =\n ResourceDefinitionForKey<Resources, Resource> extends {\n subResources: infer SubResources extends ReadonlyArray<ResourceDefinition>;\n }\n ? SubResources\n : readonly [];\n\ntype CanNestSubResourceParam<\n MaxDepth extends number,\n DepthAcc extends readonly unknown[],\n> = [...DepthAcc, unknown]['length'] extends MaxDepth ? false : true;\n\n/**\n * `subResource` route param: a slug at the current depth, or `{ value, subResource }`\n * when that slug has nested `subResources` in the layout tree and `MaxDepth` allows it.\n */\nexport type RecursiveSubResourceParam<\n Resources extends ReadonlyArray<ResourceDefinition>,\n SubDefs extends ReadonlyArray<ResourceDefinition>,\n MaxDepth extends number = 6,\n DepthAcc extends readonly unknown[] = readonly [],\n> =\n LayoutResourceKey<SubDefs> extends infer Key\n ? Key extends LayoutResourceKey<SubDefs>\n ? CanNestSubResourceParam<MaxDepth, DepthAcc> extends true\n ? ResourceDefinitionForKey<SubDefs, Key> extends {\n subResources: infer Nested extends\n ReadonlyArray<ResourceDefinition>;\n }\n ? [LayoutResourceKey<Nested>] extends [never]\n ? Key\n :\n | Key\n | {\n value: Key;\n subResource: RecursiveSubResourceParam<\n Resources,\n Nested,\n MaxDepth,\n readonly [...DepthAcc, unknown]\n >;\n }\n : Key\n : Key\n : never\n : never;\n\n/** Recursive `subResource` values for a layout resource (full tree depth). */\nexport type SubResourceParamForResource<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Resource extends LayoutResourceKey<Resources>,\n> = [SubResourceDefinitionsFor<Resources, Resource>] extends [readonly []]\n ? never\n : RecursiveSubResourceParam<\n Resources,\n SubResourceDefinitionsFor<Resources, Resource>\n >;\n\nexport type GetSubResourceKeys<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Resource extends LayoutResourceKey<Resources>,\n> =\n ResourceDefinitionForKey<Resources, Resource> extends {\n subResources: infer SubResources extends ReadonlyArray<ResourceDefinition>;\n }\n ? LayoutResourceKey<SubResources>\n : never;\nexport type ResourceEnum<Resources extends ReadonlyArray<ResourceDefinition>> =\n NonEmptyReadonlyArray<LayoutResourceKey<Resources>>;\nexport function toResourceEnum<\n Resources extends ReadonlyArray<ResourceDefinition>,\n>(resources: NormalizeResources<Resources>) {\n const keys = Object.keys(resources);\n\n if (keys.length === 0) {\n throw new Error('No resources provided');\n }\n\n return keys as unknown as ResourceEnum<Resources>;\n}\n"],"mappings":";;AAuDA,SAAS,sBAAsB,UAA4C;CACzE,IAAI,OAAO,aAAa,UACtB,OAAO,GACJ,WAAW,EACV,cAAc,CAAC,EACjB,EACF;CAGF,MAAM,EAAE,OAAO,iBAAiB;CAEhC,OAAO,GACJ,QAAQ,EACP,cAAc,uBAAuB,YAAY,EACnD,EACF;AACF;AAEA,SAAS,uBACP,WACc;CACd,MAAM,sBAAoC,CAAC;CAE3C,KAAK,MAAM,YAAY,WACrB,OAAO,OAAO,qBAAqB,sBAAsB,QAAQ,CAAC;CAGpE,OAAO;AACT;AAEA,SAAgB,kBAAkB,UAA4C;CAC5E,OAAO,sBAAsB,QAAQ;AACvC;AAEA,SAAgB,mBAEd,WAAqD;CACrD,OAAO,uBAAuB,SAAS;AACzC;AA2GA,SAAgB,eAEd,WAA0C;CAC1C,MAAM,OAAO,OAAO,KAAK,SAAS;CAElC,IAAI,KAAK,WAAW,GAClB,MAAM,IAAI,MAAM,uBAAuB;CAGzC,OAAO;AACT"}
|
package/dist/resource.d.cts
CHANGED
|
@@ -49,13 +49,13 @@ type SubResourceDefinitionsFor<Resources extends ReadonlyArray<ResourceDefinitio
|
|
|
49
49
|
} ? SubResources : readonly [];
|
|
50
50
|
type CanNestSubResourceParam<MaxDepth extends number, DepthAcc extends readonly unknown[]> = [...DepthAcc, unknown]['length'] extends MaxDepth ? false : true;
|
|
51
51
|
/**
|
|
52
|
-
* `subResource` route param: a slug at the current depth, or `{
|
|
52
|
+
* `subResource` route param: a slug at the current depth, or `{ value, subResource }`
|
|
53
53
|
* when that slug has nested `subResources` in the layout tree and `MaxDepth` allows it.
|
|
54
54
|
*/
|
|
55
55
|
type RecursiveSubResourceParam<Resources extends ReadonlyArray<ResourceDefinition>, SubDefs extends ReadonlyArray<ResourceDefinition>, MaxDepth extends number = 6, DepthAcc extends readonly unknown[] = readonly []> = LayoutResourceKey<SubDefs> extends infer Key ? Key extends LayoutResourceKey<SubDefs> ? CanNestSubResourceParam<MaxDepth, DepthAcc> extends true ? ResourceDefinitionForKey<SubDefs, Key> extends {
|
|
56
56
|
subResources: infer Nested extends ReadonlyArray<ResourceDefinition>;
|
|
57
57
|
} ? [LayoutResourceKey<Nested>] extends [never] ? Key : Key | {
|
|
58
|
-
|
|
58
|
+
value: Key;
|
|
59
59
|
subResource: RecursiveSubResourceParam<Resources, Nested, MaxDepth, readonly [...DepthAcc, unknown]>;
|
|
60
60
|
} : Key : Key : never : never;
|
|
61
61
|
/** Recursive `subResource` values for a layout resource (full tree depth). */
|
package/dist/resource.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.d.cts","names":[],"sources":["../src/resource.ts"],"mappings":";;;;;KAIY,kBAAA;EAGN,KAAA;EACA,YAAA,EAAc,aAAa,CACzB,kBAAA;IALsB;;;;;IAWpB,cAAA;EAAA;AAAA;AAAA,KAKE,YAAA,GAAe,MAAM;EAG7B,YAAA,EAAc,YAAA;AAAA;AAAA,KAIN,iBAAA,kBAAmC,kBAAA,IAC7C,QAAA,4BAEc,QAAA;EACN,YAAA;AAAA,MAGJ,QAAA;EACI,KAAA;EACA,YAAA,6BACE,aAAA,CAAc,kBAAA;AAAA,cAGR,KAAA;EACN,YAAA,EAAc,kBAAA,CAAmB,YAAA;AAAA;AAAA,KAKjC,kBAAA,mBACQ,aAAA,CAAc,kBAAA,KAC9B,iBAAA,CACF,mBAAA,CAAoB,iBAAA,CAAkB,SAAA;AAAA,KAE5B,4BAAA;EACV,QAAA,EAAU,SAAS;AAAA;AAAA,iBAiCL,iBAAA,CAAkB,QAAA,EAAU,kBAAA,GAAqB,YAAY;AAAA,iBAI7D,kBAAA,mBACI,aAAA,CAAc,kBAAA,GAChC,SAAA,EAAW,SAAA,GAAY,kBAAA,CAAmB,SAAA;AAAA,KAevC,uBAAA,kBAAyC,kBAAA,IAC5C,QAAA,kBACI,QAAA,GACA,QAAA;EAAmB,KAAA;AAAA,IACjB,KAAA;;;;;;KAQI,iBAAA,mBACQ,aAAA,CAAc,kBAAA,KAC9B,uBAAA,CAAwB,SAAA;AAAA,KAEhB,wBAAA,mBACQ,aAAA,CAAc,kBAAA,yBAE9B,OAAA,CAAQ,SAAA,UAAmB,GAAA;EAAQ,KAAA,EAAO,GAAA;AAAA;;KAGlC,yBAAA,mBACQ,aAAA,CAAc,kBAAA,oBACf,iBAAA,CAAkB,SAAA,KAEnC,wBAAA,CAAyB,SAAA,EAAW,QAAA;EAClC,YAAA,6BAAyC,aAAA,CAAc,kBAAA;AAAA,IAErD,YAAA;AAAA,KAGD,uBAAA,qEAGG,QAAA,6BAAqC,QAAQ;;;;;KAMzC,yBAAA,mBACQ,aAAA,CAAc,kBAAA,mBAChB,aAAA,CAAc,kBAAA,qFAI9B,iBAAA,CAAkB,OAAA,sBACd,GAAA,SAAY,iBAAA,CAAkB,OAAA,IAC5B,uBAAA,CAAwB,QAAA,EAAU,QAAA,iBAChC,wBAAA,CAAyB,OAAA,EAAS,GAAA;EAChC,YAAA,uBACE,aAAA,CAAc,kBAAA;AAAA,KAEf,iBAAA,CAAkB,MAAA,qBACjB,GAAA,GAEI,GAAA;EAEE,
|
|
1
|
+
{"version":3,"file":"resource.d.cts","names":[],"sources":["../src/resource.ts"],"mappings":";;;;;KAIY,kBAAA;EAGN,KAAA;EACA,YAAA,EAAc,aAAa,CACzB,kBAAA;IALsB;;;;;IAWpB,cAAA;EAAA;AAAA;AAAA,KAKE,YAAA,GAAe,MAAM;EAG7B,YAAA,EAAc,YAAA;AAAA;AAAA,KAIN,iBAAA,kBAAmC,kBAAA,IAC7C,QAAA,4BAEc,QAAA;EACN,YAAA;AAAA,MAGJ,QAAA;EACI,KAAA;EACA,YAAA,6BACE,aAAA,CAAc,kBAAA;AAAA,cAGR,KAAA;EACN,YAAA,EAAc,kBAAA,CAAmB,YAAA;AAAA;AAAA,KAKjC,kBAAA,mBACQ,aAAA,CAAc,kBAAA,KAC9B,iBAAA,CACF,mBAAA,CAAoB,iBAAA,CAAkB,SAAA;AAAA,KAE5B,4BAAA;EACV,QAAA,EAAU,SAAS;AAAA;AAAA,iBAiCL,iBAAA,CAAkB,QAAA,EAAU,kBAAA,GAAqB,YAAY;AAAA,iBAI7D,kBAAA,mBACI,aAAA,CAAc,kBAAA,GAChC,SAAA,EAAW,SAAA,GAAY,kBAAA,CAAmB,SAAA;AAAA,KAevC,uBAAA,kBAAyC,kBAAA,IAC5C,QAAA,kBACI,QAAA,GACA,QAAA;EAAmB,KAAA;AAAA,IACjB,KAAA;;;;;;KAQI,iBAAA,mBACQ,aAAA,CAAc,kBAAA,KAC9B,uBAAA,CAAwB,SAAA;AAAA,KAEhB,wBAAA,mBACQ,aAAA,CAAc,kBAAA,yBAE9B,OAAA,CAAQ,SAAA,UAAmB,GAAA;EAAQ,KAAA,EAAO,GAAA;AAAA;;KAGlC,yBAAA,mBACQ,aAAA,CAAc,kBAAA,oBACf,iBAAA,CAAkB,SAAA,KAEnC,wBAAA,CAAyB,SAAA,EAAW,QAAA;EAClC,YAAA,6BAAyC,aAAA,CAAc,kBAAA;AAAA,IAErD,YAAA;AAAA,KAGD,uBAAA,qEAGG,QAAA,6BAAqC,QAAQ;;;;;KAMzC,yBAAA,mBACQ,aAAA,CAAc,kBAAA,mBAChB,aAAA,CAAc,kBAAA,qFAI9B,iBAAA,CAAkB,OAAA,sBACd,GAAA,SAAY,iBAAA,CAAkB,OAAA,IAC5B,uBAAA,CAAwB,QAAA,EAAU,QAAA,iBAChC,wBAAA,CAAyB,OAAA,EAAS,GAAA;EAChC,YAAA,uBACE,aAAA,CAAc,kBAAA;AAAA,KAEf,iBAAA,CAAkB,MAAA,qBACjB,GAAA,GAEI,GAAA;EAEE,KAAA,EAAO,GAAA;EACP,WAAA,EAAa,yBAAA,CACX,SAAA,EACA,MAAA,EACA,QAAA,eACa,QAAA;AAAA,IAGvB,GAAA,GACF,GAAA;;KAKE,2BAAA,mBACQ,aAAA,CAAc,kBAAA,oBACf,iBAAA,CAAkB,SAAA,MAChC,yBAAA,CAA0B,SAAA,EAAW,QAAA,mCAEtC,yBAAA,CACE,SAAA,EACA,yBAAA,CAA0B,SAAA,EAAW,QAAA;AAAA,KAY/B,YAAA,mBAA+B,aAAA,CAAc,kBAAA,KACvD,qBAAA,CAAsB,iBAAA,CAAkB,SAAA;AAAA,iBAC1B,cAAA,mBACI,aAAA,CAAc,kBAAA,GAChC,SAAA,EAAW,kBAAA,CAAmB,SAAA,IAOJ,YAAA,CAAa,SAAA"}
|
package/dist/resource.d.mts
CHANGED
|
@@ -49,13 +49,13 @@ type SubResourceDefinitionsFor<Resources extends ReadonlyArray<ResourceDefinitio
|
|
|
49
49
|
} ? SubResources : readonly [];
|
|
50
50
|
type CanNestSubResourceParam<MaxDepth extends number, DepthAcc extends readonly unknown[]> = [...DepthAcc, unknown]['length'] extends MaxDepth ? false : true;
|
|
51
51
|
/**
|
|
52
|
-
* `subResource` route param: a slug at the current depth, or `{
|
|
52
|
+
* `subResource` route param: a slug at the current depth, or `{ value, subResource }`
|
|
53
53
|
* when that slug has nested `subResources` in the layout tree and `MaxDepth` allows it.
|
|
54
54
|
*/
|
|
55
55
|
type RecursiveSubResourceParam<Resources extends ReadonlyArray<ResourceDefinition>, SubDefs extends ReadonlyArray<ResourceDefinition>, MaxDepth extends number = 6, DepthAcc extends readonly unknown[] = readonly []> = LayoutResourceKey<SubDefs> extends infer Key ? Key extends LayoutResourceKey<SubDefs> ? CanNestSubResourceParam<MaxDepth, DepthAcc> extends true ? ResourceDefinitionForKey<SubDefs, Key> extends {
|
|
56
56
|
subResources: infer Nested extends ReadonlyArray<ResourceDefinition>;
|
|
57
57
|
} ? [LayoutResourceKey<Nested>] extends [never] ? Key : Key | {
|
|
58
|
-
|
|
58
|
+
value: Key;
|
|
59
59
|
subResource: RecursiveSubResourceParam<Resources, Nested, MaxDepth, readonly [...DepthAcc, unknown]>;
|
|
60
60
|
} : Key : Key : never : never;
|
|
61
61
|
/** Recursive `subResource` values for a layout resource (full tree depth). */
|
package/dist/resource.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.d.mts","names":[],"sources":["../src/resource.ts"],"mappings":";;;;;KAIY,kBAAA;EAGN,KAAA;EACA,YAAA,EAAc,aAAa,CACzB,kBAAA;IALsB;;;;;IAWpB,cAAA;EAAA;AAAA;AAAA,KAKE,YAAA,GAAe,MAAM;EAG7B,YAAA,EAAc,YAAA;AAAA;AAAA,KAIN,iBAAA,kBAAmC,kBAAA,IAC7C,QAAA,4BAEc,QAAA;EACN,YAAA;AAAA,MAGJ,QAAA;EACI,KAAA;EACA,YAAA,6BACE,aAAA,CAAc,kBAAA;AAAA,cAGR,KAAA;EACN,YAAA,EAAc,kBAAA,CAAmB,YAAA;AAAA;AAAA,KAKjC,kBAAA,mBACQ,aAAA,CAAc,kBAAA,KAC9B,iBAAA,CACF,mBAAA,CAAoB,iBAAA,CAAkB,SAAA;AAAA,KAE5B,4BAAA;EACV,QAAA,EAAU,SAAS;AAAA;AAAA,iBAiCL,iBAAA,CAAkB,QAAA,EAAU,kBAAA,GAAqB,YAAY;AAAA,iBAI7D,kBAAA,mBACI,aAAA,CAAc,kBAAA,GAChC,SAAA,EAAW,SAAA,GAAY,kBAAA,CAAmB,SAAA;AAAA,KAevC,uBAAA,kBAAyC,kBAAA,IAC5C,QAAA,kBACI,QAAA,GACA,QAAA;EAAmB,KAAA;AAAA,IACjB,KAAA;;;;;;KAQI,iBAAA,mBACQ,aAAA,CAAc,kBAAA,KAC9B,uBAAA,CAAwB,SAAA;AAAA,KAEhB,wBAAA,mBACQ,aAAA,CAAc,kBAAA,yBAE9B,OAAA,CAAQ,SAAA,UAAmB,GAAA;EAAQ,KAAA,EAAO,GAAA;AAAA;;KAGlC,yBAAA,mBACQ,aAAA,CAAc,kBAAA,oBACf,iBAAA,CAAkB,SAAA,KAEnC,wBAAA,CAAyB,SAAA,EAAW,QAAA;EAClC,YAAA,6BAAyC,aAAA,CAAc,kBAAA;AAAA,IAErD,YAAA;AAAA,KAGD,uBAAA,qEAGG,QAAA,6BAAqC,QAAQ;;;;;KAMzC,yBAAA,mBACQ,aAAA,CAAc,kBAAA,mBAChB,aAAA,CAAc,kBAAA,qFAI9B,iBAAA,CAAkB,OAAA,sBACd,GAAA,SAAY,iBAAA,CAAkB,OAAA,IAC5B,uBAAA,CAAwB,QAAA,EAAU,QAAA,iBAChC,wBAAA,CAAyB,OAAA,EAAS,GAAA;EAChC,YAAA,uBACE,aAAA,CAAc,kBAAA;AAAA,KAEf,iBAAA,CAAkB,MAAA,qBACjB,GAAA,GAEI,GAAA;EAEE,
|
|
1
|
+
{"version":3,"file":"resource.d.mts","names":[],"sources":["../src/resource.ts"],"mappings":";;;;;KAIY,kBAAA;EAGN,KAAA;EACA,YAAA,EAAc,aAAa,CACzB,kBAAA;IALsB;;;;;IAWpB,cAAA;EAAA;AAAA;AAAA,KAKE,YAAA,GAAe,MAAM;EAG7B,YAAA,EAAc,YAAA;AAAA;AAAA,KAIN,iBAAA,kBAAmC,kBAAA,IAC7C,QAAA,4BAEc,QAAA;EACN,YAAA;AAAA,MAGJ,QAAA;EACI,KAAA;EACA,YAAA,6BACE,aAAA,CAAc,kBAAA;AAAA,cAGR,KAAA;EACN,YAAA,EAAc,kBAAA,CAAmB,YAAA;AAAA;AAAA,KAKjC,kBAAA,mBACQ,aAAA,CAAc,kBAAA,KAC9B,iBAAA,CACF,mBAAA,CAAoB,iBAAA,CAAkB,SAAA;AAAA,KAE5B,4BAAA;EACV,QAAA,EAAU,SAAS;AAAA;AAAA,iBAiCL,iBAAA,CAAkB,QAAA,EAAU,kBAAA,GAAqB,YAAY;AAAA,iBAI7D,kBAAA,mBACI,aAAA,CAAc,kBAAA,GAChC,SAAA,EAAW,SAAA,GAAY,kBAAA,CAAmB,SAAA;AAAA,KAevC,uBAAA,kBAAyC,kBAAA,IAC5C,QAAA,kBACI,QAAA,GACA,QAAA;EAAmB,KAAA;AAAA,IACjB,KAAA;;;;;;KAQI,iBAAA,mBACQ,aAAA,CAAc,kBAAA,KAC9B,uBAAA,CAAwB,SAAA;AAAA,KAEhB,wBAAA,mBACQ,aAAA,CAAc,kBAAA,yBAE9B,OAAA,CAAQ,SAAA,UAAmB,GAAA;EAAQ,KAAA,EAAO,GAAA;AAAA;;KAGlC,yBAAA,mBACQ,aAAA,CAAc,kBAAA,oBACf,iBAAA,CAAkB,SAAA,KAEnC,wBAAA,CAAyB,SAAA,EAAW,QAAA;EAClC,YAAA,6BAAyC,aAAA,CAAc,kBAAA;AAAA,IAErD,YAAA;AAAA,KAGD,uBAAA,qEAGG,QAAA,6BAAqC,QAAQ;;;;;KAMzC,yBAAA,mBACQ,aAAA,CAAc,kBAAA,mBAChB,aAAA,CAAc,kBAAA,qFAI9B,iBAAA,CAAkB,OAAA,sBACd,GAAA,SAAY,iBAAA,CAAkB,OAAA,IAC5B,uBAAA,CAAwB,QAAA,EAAU,QAAA,iBAChC,wBAAA,CAAyB,OAAA,EAAS,GAAA;EAChC,YAAA,uBACE,aAAA,CAAc,kBAAA;AAAA,KAEf,iBAAA,CAAkB,MAAA,qBACjB,GAAA,GAEI,GAAA;EAEE,KAAA,EAAO,GAAA;EACP,WAAA,EAAa,yBAAA,CACX,SAAA,EACA,MAAA,EACA,QAAA,eACa,QAAA;AAAA,IAGvB,GAAA,GACF,GAAA;;KAKE,2BAAA,mBACQ,aAAA,CAAc,kBAAA,oBACf,iBAAA,CAAkB,SAAA,MAChC,yBAAA,CAA0B,SAAA,EAAW,QAAA,mCAEtC,yBAAA,CACE,SAAA,EACA,yBAAA,CAA0B,SAAA,EAAW,QAAA;AAAA,KAY/B,YAAA,mBAA+B,aAAA,CAAc,kBAAA,KACvD,qBAAA,CAAsB,iBAAA,CAAkB,SAAA;AAAA,iBAC1B,cAAA,mBACI,aAAA,CAAc,kBAAA,GAChC,SAAA,EAAW,kBAAA,CAAmB,SAAA,IAOJ,YAAA,CAAa,SAAA"}
|
package/dist/resource.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.mjs","names":[],"sources":["../src/resource.ts"],"sourcesContent":["import { ReactNode } from 'react';\nimport { NonEmptyReadonlyArray } from '@jfdevelops/react-layout-validator';\nimport { MergeIntersection, UnionToIntersection } from './utils';\n\nexport type ResourceDefinition =\n | string\n | {\n value: string;\n subResources: ReadonlyArray<\n ResourceDefinition & {\n /**\n * Whether to allow any string as a sub resource.\n *\n * @default false\n */\n allowAnyString?: boolean;\n }\n >;\n };\n\nexport type ResourceTree = Record<\n string,\n {\n subResources: ResourceTree;\n }\n>;\n\nexport type NormalizeResource<Resource extends ResourceDefinition> =\n Resource extends string\n ? {\n [Key in Resource]: {\n subResources: {};\n };\n }\n : Resource extends {\n value: infer Value extends string;\n subResources: infer SubResources extends\n ReadonlyArray<ResourceDefinition>;\n }\n ? {\n [Key in Value]: {\n subResources: NormalizeResources<SubResources>;\n };\n }\n : never;\n\nexport type NormalizeResources<\n Resources extends ReadonlyArray<ResourceDefinition>,\n> = MergeIntersection<\n UnionToIntersection<NormalizeResource<Resources[number]>>\n>;\nexport type ResourceLayoutComponentProps = {\n children: ReactNode;\n};\n\nfunction normalizeResourceTree(resource: ResourceDefinition): ResourceTree {\n if (typeof resource === 'string') {\n return {\n [resource]: {\n subResources: {},\n },\n };\n }\n\n const { value, subResources } = resource;\n\n return {\n [value]: {\n subResources: normalizeResourcesTree(subResources),\n },\n };\n}\n\nfunction normalizeResourcesTree(\n resources: ReadonlyArray<ResourceDefinition>,\n): ResourceTree {\n const normalizedResources: ResourceTree = {};\n\n for (const resource of resources) {\n Object.assign(normalizedResources, normalizeResourceTree(resource));\n }\n\n return normalizedResources;\n}\n\nexport function normalizeResource(resource: ResourceDefinition): ResourceTree {\n return normalizeResourceTree(resource);\n}\n\nexport function normalizeResources<\n Resources extends ReadonlyArray<ResourceDefinition>,\n>(resources: Resources): NormalizeResources<Resources> {\n return normalizeResourcesTree(resources) as NormalizeResources<Resources>;\n}\n\nexport function createIsValidResourceFn<\n Resources extends ReadonlyArray<ResourceDefinition>,\n>(resources: Resources) {\n return (value: unknown): value is LayoutResourceKey<Resources> => {\n return (\n typeof value === 'string' &&\n Object.keys(normalizeResources(resources)).includes(value)\n );\n };\n}\n\ntype ResourceDefinitionValue<Resource extends ResourceDefinition> =\n Resource extends string\n ? Resource\n : Resource extends { value: infer Value extends string }\n ? Value\n : never;\n\n/**\n * Top-level resource names declared in a `resources` array. Preserves string\n * literal unions for const resource definitions (unlike `keyof` on the\n * normalized resource tree, which tends to widen to `string` in hovers).\n */\nexport type LayoutResourceKey<\n Resources extends ReadonlyArray<ResourceDefinition>,\n> = ResourceDefinitionValue<Resources[number]>;\n\nexport type ResourceDefinitionForKey<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Key extends string,\n> = Extract<Resources[number], Key | { value: Key }>;\n\n/** `subResources` array declared on a layout resource. */\nexport type SubResourceDefinitionsFor<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Resource extends LayoutResourceKey<Resources>,\n> =\n ResourceDefinitionForKey<Resources, Resource> extends {\n subResources: infer SubResources extends ReadonlyArray<ResourceDefinition>;\n }\n ? SubResources\n : readonly [];\n\ntype CanNestSubResourceParam<\n MaxDepth extends number,\n DepthAcc extends readonly unknown[],\n> = [...DepthAcc, unknown]['length'] extends MaxDepth ? false : true;\n\n/**\n * `subResource` route param: a slug at the current depth, or `{
|
|
1
|
+
{"version":3,"file":"resource.mjs","names":[],"sources":["../src/resource.ts"],"sourcesContent":["import { ReactNode } from 'react';\nimport { NonEmptyReadonlyArray } from '@jfdevelops/react-layout-validator';\nimport { MergeIntersection, UnionToIntersection } from './utils';\n\nexport type ResourceDefinition =\n | string\n | {\n value: string;\n subResources: ReadonlyArray<\n ResourceDefinition & {\n /**\n * Whether to allow any string as a sub resource.\n *\n * @default false\n */\n allowAnyString?: boolean;\n }\n >;\n };\n\nexport type ResourceTree = Record<\n string,\n {\n subResources: ResourceTree;\n }\n>;\n\nexport type NormalizeResource<Resource extends ResourceDefinition> =\n Resource extends string\n ? {\n [Key in Resource]: {\n subResources: {};\n };\n }\n : Resource extends {\n value: infer Value extends string;\n subResources: infer SubResources extends\n ReadonlyArray<ResourceDefinition>;\n }\n ? {\n [Key in Value]: {\n subResources: NormalizeResources<SubResources>;\n };\n }\n : never;\n\nexport type NormalizeResources<\n Resources extends ReadonlyArray<ResourceDefinition>,\n> = MergeIntersection<\n UnionToIntersection<NormalizeResource<Resources[number]>>\n>;\nexport type ResourceLayoutComponentProps = {\n children: ReactNode;\n};\n\nfunction normalizeResourceTree(resource: ResourceDefinition): ResourceTree {\n if (typeof resource === 'string') {\n return {\n [resource]: {\n subResources: {},\n },\n };\n }\n\n const { value, subResources } = resource;\n\n return {\n [value]: {\n subResources: normalizeResourcesTree(subResources),\n },\n };\n}\n\nfunction normalizeResourcesTree(\n resources: ReadonlyArray<ResourceDefinition>,\n): ResourceTree {\n const normalizedResources: ResourceTree = {};\n\n for (const resource of resources) {\n Object.assign(normalizedResources, normalizeResourceTree(resource));\n }\n\n return normalizedResources;\n}\n\nexport function normalizeResource(resource: ResourceDefinition): ResourceTree {\n return normalizeResourceTree(resource);\n}\n\nexport function normalizeResources<\n Resources extends ReadonlyArray<ResourceDefinition>,\n>(resources: Resources): NormalizeResources<Resources> {\n return normalizeResourcesTree(resources) as NormalizeResources<Resources>;\n}\n\nexport function createIsValidResourceFn<\n Resources extends ReadonlyArray<ResourceDefinition>,\n>(resources: Resources) {\n return (value: unknown): value is LayoutResourceKey<Resources> => {\n return (\n typeof value === 'string' &&\n Object.keys(normalizeResources(resources)).includes(value)\n );\n };\n}\n\ntype ResourceDefinitionValue<Resource extends ResourceDefinition> =\n Resource extends string\n ? Resource\n : Resource extends { value: infer Value extends string }\n ? Value\n : never;\n\n/**\n * Top-level resource names declared in a `resources` array. Preserves string\n * literal unions for const resource definitions (unlike `keyof` on the\n * normalized resource tree, which tends to widen to `string` in hovers).\n */\nexport type LayoutResourceKey<\n Resources extends ReadonlyArray<ResourceDefinition>,\n> = ResourceDefinitionValue<Resources[number]>;\n\nexport type ResourceDefinitionForKey<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Key extends string,\n> = Extract<Resources[number], Key | { value: Key }>;\n\n/** `subResources` array declared on a layout resource. */\nexport type SubResourceDefinitionsFor<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Resource extends LayoutResourceKey<Resources>,\n> =\n ResourceDefinitionForKey<Resources, Resource> extends {\n subResources: infer SubResources extends ReadonlyArray<ResourceDefinition>;\n }\n ? SubResources\n : readonly [];\n\ntype CanNestSubResourceParam<\n MaxDepth extends number,\n DepthAcc extends readonly unknown[],\n> = [...DepthAcc, unknown]['length'] extends MaxDepth ? false : true;\n\n/**\n * `subResource` route param: a slug at the current depth, or `{ value, subResource }`\n * when that slug has nested `subResources` in the layout tree and `MaxDepth` allows it.\n */\nexport type RecursiveSubResourceParam<\n Resources extends ReadonlyArray<ResourceDefinition>,\n SubDefs extends ReadonlyArray<ResourceDefinition>,\n MaxDepth extends number = 6,\n DepthAcc extends readonly unknown[] = readonly [],\n> =\n LayoutResourceKey<SubDefs> extends infer Key\n ? Key extends LayoutResourceKey<SubDefs>\n ? CanNestSubResourceParam<MaxDepth, DepthAcc> extends true\n ? ResourceDefinitionForKey<SubDefs, Key> extends {\n subResources: infer Nested extends\n ReadonlyArray<ResourceDefinition>;\n }\n ? [LayoutResourceKey<Nested>] extends [never]\n ? Key\n :\n | Key\n | {\n value: Key;\n subResource: RecursiveSubResourceParam<\n Resources,\n Nested,\n MaxDepth,\n readonly [...DepthAcc, unknown]\n >;\n }\n : Key\n : Key\n : never\n : never;\n\n/** Recursive `subResource` values for a layout resource (full tree depth). */\nexport type SubResourceParamForResource<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Resource extends LayoutResourceKey<Resources>,\n> = [SubResourceDefinitionsFor<Resources, Resource>] extends [readonly []]\n ? never\n : RecursiveSubResourceParam<\n Resources,\n SubResourceDefinitionsFor<Resources, Resource>\n >;\n\nexport type GetSubResourceKeys<\n Resources extends ReadonlyArray<ResourceDefinition>,\n Resource extends LayoutResourceKey<Resources>,\n> =\n ResourceDefinitionForKey<Resources, Resource> extends {\n subResources: infer SubResources extends ReadonlyArray<ResourceDefinition>;\n }\n ? LayoutResourceKey<SubResources>\n : never;\nexport type ResourceEnum<Resources extends ReadonlyArray<ResourceDefinition>> =\n NonEmptyReadonlyArray<LayoutResourceKey<Resources>>;\nexport function toResourceEnum<\n Resources extends ReadonlyArray<ResourceDefinition>,\n>(resources: NormalizeResources<Resources>) {\n const keys = Object.keys(resources);\n\n if (keys.length === 0) {\n throw new Error('No resources provided');\n }\n\n return keys as unknown as ResourceEnum<Resources>;\n}\n"],"mappings":";AAuDA,SAAS,sBAAsB,UAA4C;CACzE,IAAI,OAAO,aAAa,UACtB,OAAO,GACJ,WAAW,EACV,cAAc,CAAC,EACjB,EACF;CAGF,MAAM,EAAE,OAAO,iBAAiB;CAEhC,OAAO,GACJ,QAAQ,EACP,cAAc,uBAAuB,YAAY,EACnD,EACF;AACF;AAEA,SAAS,uBACP,WACc;CACd,MAAM,sBAAoC,CAAC;CAE3C,KAAK,MAAM,YAAY,WACrB,OAAO,OAAO,qBAAqB,sBAAsB,QAAQ,CAAC;CAGpE,OAAO;AACT;AAEA,SAAgB,kBAAkB,UAA4C;CAC5E,OAAO,sBAAsB,QAAQ;AACvC;AAEA,SAAgB,mBAEd,WAAqD;CACrD,OAAO,uBAAuB,SAAS;AACzC;AA2GA,SAAgB,eAEd,WAA0C;CAC1C,MAAM,OAAO,OAAO,KAAK,SAAS;CAElC,IAAI,KAAK,WAAW,GAClB,MAAM,IAAI,MAAM,uBAAuB;CAGzC,OAAO;AACT"}
|
package/dist/utils.d.cts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
//#region src/utils.d.ts
|
|
2
2
|
type Show<T> = T extends ((...args: infer Arguments) => infer Result) ? ((...args: Arguments) => Result) & { [Key in keyof T]: T[Key] } : { [K in keyof T]: T[K] } & {};
|
|
3
3
|
type MergeIntersection<T> = { [Key in keyof T]: T[Key] };
|
|
4
|
+
type IsUnion<T, U = T> = T extends unknown ? [U] extends [T] ? false : true : never;
|
|
4
5
|
type UnionToIntersection<Union> = (Union extends unknown ? (value: Union) => void : never) extends ((value: infer Intersection) => void) ? Intersection : never;
|
|
5
6
|
type Updater<T> = T | ((prev: T) => T);
|
|
6
7
|
interface BaseComponent<Name extends string, Props = {}> {
|
|
@@ -16,5 +17,5 @@ interface BaseComponent<Name extends string, Props = {}> {
|
|
|
16
17
|
}
|
|
17
18
|
declare function pick<T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
|
|
18
19
|
//#endregion
|
|
19
|
-
export { BaseComponent, MergeIntersection, Show, UnionToIntersection, Updater, pick };
|
|
20
|
+
export { BaseComponent, IsUnion, MergeIntersection, Show, UnionToIntersection, Updater, pick };
|
|
20
21
|
//# sourceMappingURL=utils.d.cts.map
|
package/dist/utils.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.cts","names":[],"sources":["../src/utils.ts"],"mappings":";KAAY,IAAA,MAAU,CAAA,cAAc,IAAA,2CAC3B,IAAA,EAAM,SAAA,KAAc,MAAA,oBAA0B,CAAA,GAAI,CAAA,CAAE,GAAA,oBAC3C,CAAA,GAAI,CAAA,CAAE,CAAA;AAAA,KACZ,iBAAA,sBACI,CAAA,GAAI,CAAA,CAAE,GAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"utils.d.cts","names":[],"sources":["../src/utils.ts"],"mappings":";KAAY,IAAA,MAAU,CAAA,cAAc,IAAA,2CAC3B,IAAA,EAAM,SAAA,KAAc,MAAA,oBAA0B,CAAA,GAAI,CAAA,CAAE,GAAA,oBAC3C,CAAA,GAAI,CAAA,CAAE,CAAA;AAAA,KACZ,iBAAA,sBACI,CAAA,GAAI,CAAA,CAAE,GAAA;AAAA,KAEV,OAAA,QAAe,CAAA,IAAK,CAAA,oBAC3B,CAAA,WAAY,CAAA;AAAA,KAIL,mBAAA,WACV,KAAA,oBAAyB,KAAA,EAAO,KAAK,6BAC5B,KAAA,iCACP,YAAA;AAAA,KAEQ,OAAA,MAAa,CAAA,KAAM,IAAA,EAAM,CAAA,KAAM,CAAA;AAAA,UAK1B,aAAA;EArBA;;;EAyBf,WAAA,EAAa,IAAA;EAzBqD;;;;EA8BlE,KAAA,EAAO,KAAK;AAAA;AAAA,iBAGE,IAAA,mCAAuC,CAAA,EAAG,GAAA,EAAK,CAAA,EAAG,IAAA,EAAM,CAAA,KAAG,IAAA,CAAA,CAAA,EAAA,CAAA"}
|
package/dist/utils.d.mts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
//#region src/utils.d.ts
|
|
2
2
|
type Show<T> = T extends ((...args: infer Arguments) => infer Result) ? ((...args: Arguments) => Result) & { [Key in keyof T]: T[Key] } : { [K in keyof T]: T[K] } & {};
|
|
3
3
|
type MergeIntersection<T> = { [Key in keyof T]: T[Key] };
|
|
4
|
+
type IsUnion<T, U = T> = T extends unknown ? [U] extends [T] ? false : true : never;
|
|
4
5
|
type UnionToIntersection<Union> = (Union extends unknown ? (value: Union) => void : never) extends ((value: infer Intersection) => void) ? Intersection : never;
|
|
5
6
|
type Updater<T> = T | ((prev: T) => T);
|
|
6
7
|
interface BaseComponent<Name extends string, Props = {}> {
|
|
@@ -16,5 +17,5 @@ interface BaseComponent<Name extends string, Props = {}> {
|
|
|
16
17
|
}
|
|
17
18
|
declare function pick<T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
|
|
18
19
|
//#endregion
|
|
19
|
-
export { BaseComponent, MergeIntersection, Show, UnionToIntersection, Updater, pick };
|
|
20
|
+
export { BaseComponent, IsUnion, MergeIntersection, Show, UnionToIntersection, Updater, pick };
|
|
20
21
|
//# sourceMappingURL=utils.d.mts.map
|