🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

@kuindji/conditional-string

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@kuindji/conditional-string - npm Package Compare versions

Comparing version
1.0.0
to
1.0.1
+33
-1
dist/conditionalString.d.ts

@@ -68,4 +68,36 @@ /**

export type ConditionalStringResult<Template extends string, Data extends Record<string, unknown>> = ProcessConditionalString<Template, Data>;
export declare function conditionalString<Template extends string, Data extends Record<string, unknown>>(template: Template, data: Data): ConditionalStringResult<Template, Data>;
/**
* A typed version of conditionalString where the Data type is pre-specified
* for return type computation, but runtime data values are not constrained.
*
* This allows specifying a "static" type like `{ flag: true }` for the return type,
* while accepting runtime data like `{ flag: boolean }`.
*/
type TypedConditionalString<StaticData extends Record<string, unknown>> = <Template extends string>(template: Template, data: {
[K in keyof StaticData]: unknown;
}) => ConditionalStringResult<Template, StaticData>;
/**
* Interface for the conditionalString function with the .typed() method.
*/
interface ConditionalStringFn {
/**
* Process a template with inferred types for both Template and Data.
*/
<Template extends string, Data extends Record<string, unknown>>(template: Template, data: Data): ConditionalStringResult<Template, Data>;
/**
* Create a typed version of conditionalString with a pre-specified Data type.
* Use this when you want to explicitly type the data parameter while still
* inferring the Template type from the template string.
*
* @example
* ```ts
* type MyData = { showName: boolean; count: number };
* const result = conditionalString.with<MyData>()(template, data);
* // Data is typed as MyData, Template is inferred
* ```
*/
with<Data extends Record<string, unknown>>(): TypedConditionalString<Data>;
}
export declare const conditionalString: ConditionalStringFn;
export default conditionalString;
//# sourceMappingURL=conditionalString.d.ts.map
+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"conditionalString.d.ts","sourceRoot":"","sources":["../src/conditionalString.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"conditionalString.d.ts","sourceRoot":"","sources":["../src/conditionalString.ts"],"names":[],"mappings":"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"}

@@ -20,6 +20,6 @@ /**

*/
// ============================================================================
// Runtime implementation
// ============================================================================
export function conditionalString(template, data) {
/**
* Core implementation of the conditional string processing.
*/
function processConditionalString(template, data) {
// Pattern matches /*if:condition*/ ... /*endif*/

@@ -47,2 +47,11 @@ // Uses negative lookahead to match innermost conditions first (no nested /*if: inside)

/**
* Creates a typed version of conditionalString with a pre-specified Data type.
*/
function createTypedConditionalString() {
return (template, data) => {
return processConditionalString(template, data);
};
}
export const conditionalString = Object.assign(processConditionalString, { with: createTypedConditionalString });
/**
* Get a nested value from an object using dot notation.

@@ -49,0 +58,0 @@ * @example getNestedValue({ user: { isAdmin: true } }, "user.isAdmin") // true

@@ -1,1 +0,1 @@

{"version":3,"file":"conditionalString.js","sourceRoot":"","sources":["../src/conditionalString.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAyHH,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E,MAAM,UAAU,iBAAiB,CAG/B,QAAkB,EAAE,IAAU;IAC5B,iDAAiD;IACjD,uFAAuF;IACvF,0EAA0E;IAC1E,MAAM,OAAO,GACT,8DAA8D,CAAC;IAEnE,IAAI,MAAM,GAAW,QAAQ,CAAC;IAC9B,IAAI,UAAU,GAAG,IAAI,CAAC;IAEtB,gEAAgE;IAChE,OAAO,UAAU,EAAE,CAAC;QAChB,UAAU,GAAG,KAAK,CAAC;QAEnB,MAAM,GAAG,MAAM,CAAC,OAAO,CACnB,OAAO,EACP,CAAC,CAAC,EAAE,SAAiB,EAAE,OAAe,EAAE,EAAE;YACtC,UAAU,GAAG,IAAI,CAAC;YAElB,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACvD,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YAEhC,6DAA6D;YAC7D,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,CAAC,CACJ,CAAC;IACN,CAAC;IAED,OAAO,MAA4D,CAAC;AACxE,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CAAC,GAA4B,EAAE,IAAY;IAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,OAAO,GAAY,GAAG,CAAC;IAE3B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC5C,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,OAAO,GAAI,OAAmC,CAAC,GAAG,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,eAAe,iBAAiB,CAAC"}
{"version":3,"file":"conditionalString.js","sourceRoot":"","sources":["../src/conditionalString.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAsKH;;GAEG;AACH,SAAS,wBAAwB,CAG/B,QAAkB,EAAE,IAAU;IAC5B,iDAAiD;IACjD,uFAAuF;IACvF,0EAA0E;IAC1E,MAAM,OAAO,GACT,8DAA8D,CAAC;IAEnE,IAAI,MAAM,GAAW,QAAQ,CAAC;IAC9B,IAAI,UAAU,GAAG,IAAI,CAAC;IAEtB,gEAAgE;IAChE,OAAO,UAAU,EAAE,CAAC;QAChB,UAAU,GAAG,KAAK,CAAC;QAEnB,MAAM,GAAG,MAAM,CAAC,OAAO,CACnB,OAAO,EACP,CAAC,CAAC,EAAE,SAAiB,EAAE,OAAe,EAAE,EAAE;YACtC,UAAU,GAAG,IAAI,CAAC;YAElB,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACvD,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YAEhC,6DAA6D;YAC7D,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,CAAC,CACJ,CAAC;IACN,CAAC;IAED,OAAO,MAA4D,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,SAAS,4BAA4B;IAGjC,OAAO,CACH,QAAkB,EAClB,IAA2C,EACE,EAAE;QAC/C,OAAO,wBAAwB,CAAC,QAAQ,EAAE,IAAkB,CAAC,CAAC;IAClE,CAAC,CAAC;AACN,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAwB,MAAM,CAAC,MAAM,CAC/D,wBAAwB,EACxB,EAAE,IAAI,EAAE,4BAA4B,EAAE,CACzC,CAAC;AAEF;;;GAGG;AACH,SAAS,cAAc,CAAC,GAA4B,EAAE,IAAY;IAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,OAAO,GAAY,GAAG,CAAC;IAE3B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC5C,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,OAAO,GAAI,OAAmC,CAAC,GAAG,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,eAAe,iBAAiB,CAAC"}
{
"name": "@kuindji/conditional-string",
"version": "1.0.0",
"version": "1.0.1",
"description": "Type-safe conditional string template parser with compile-time inference",

@@ -5,0 +5,0 @@ "author": "Ivan Kuindzhi",

@@ -8,2 +8,3 @@ # @kuindji/conditional-string

- **Compile-time type safety**: Results are inferred at the type level based on condition values
- **Static type override**: Use `.with<Data>()` to specify static types for return type computation
- **Simple syntax**: Uses comment syntax `/*if:condition*/.../*endif*/` that works with any string

@@ -169,2 +170,34 @@ - **Negation support**: Use `!` prefix for negated conditions

### Static Type Override with `.with<Data>()`
When you need to specify a static type for return type computation while allowing runtime values to vary, use the `.with<Data>()` method:
```typescript
import { conditionalString } from "@kuindji/conditional-string";
// Runtime value determined dynamically
const showAdmin = Math.random() > 0.5;
const template = `User /*if:isAdmin*/[ADMIN]/*endif*/`;
// Using .with<Data>() to specify static type for return type computation
const result = conditionalString.with<{ isAdmin: true }>()(
template,
{ isAdmin: showAdmin }, // Runtime value can be boolean
);
// Return type is computed as if isAdmin is always true: "User [ADMIN]"
// But runtime result depends on actual showAdmin value
```
This is useful when:
- You want predictable return types regardless of runtime values
- You're building type-safe query builders where the schema is known at compile time
- You need to decouple type computation from runtime data
The `.with<Data>()` method:
- Uses `Data` for **return type computation**
- Accepts runtime data with matching keys but **unrestricted value types**
- Template type is still **inferred automatically**
## Truthy/Falsy Values

@@ -188,5 +221,5 @@

### `conditionalString<Template, Data>(template: Template, data: Data): ConditionalStringResult<Template, Data>`
### `conditionalString<Template, Data>(template, data)`
Processes a string template with conditional comments.
Processes a string template with conditional comments. Both `Template` and `Data` types are inferred.

@@ -198,4 +231,34 @@ **Parameters:**

**Returns:** The processed string with conditionals resolved
**Returns:** `ConditionalStringResult<Template, Data>` - The processed string with conditionals resolved
---
### `conditionalString.with<StaticData>()(template, data)`
Creates a typed version where `StaticData` is used for return type computation, but runtime data values are unrestricted.
**Type Parameters:**
- `StaticData`: The type used for computing the return type
**Parameters:**
- `template`: The string with conditional comments (type is inferred)
- `data`: An object with keys matching `StaticData`, but values can be any type
**Returns:** `ConditionalStringResult<Template, StaticData>` - The processed string with type computed using `StaticData`
**Example:**
```typescript
// Static type says isAdmin is true, so return type includes "[ADMIN]"
// Runtime data can have isAdmin as any boolean
const result = conditionalString.with<{ isAdmin: true }>()(
`User /*if:isAdmin*/[ADMIN]/*endif*/`,
{ isAdmin: someRuntimeBoolean },
);
```
---
### `ConditionalStringResult<Template, Data>`

@@ -202,0 +265,0 @@