@eecho/definition 0.0.2
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/README.md +22 -0
- package/dist/api/api.d.ts +6 -0
- package/dist/api/api.d.ts.map +1 -0
- package/dist/api/api.js +15 -0
- package/dist/api/api.js.map +1 -0
- package/dist/api/definition.api.helper.d.ts +44 -0
- package/dist/api/definition.api.helper.d.ts.map +1 -0
- package/dist/api/definition.api.helper.js +45 -0
- package/dist/api/definition.api.helper.js.map +1 -0
- package/dist/definition.context.d.ts +22 -0
- package/dist/definition.context.d.ts.map +1 -0
- package/dist/definition.context.js +10 -0
- package/dist/definition.context.js.map +1 -0
- package/dist/definition.type.d.ts +34 -0
- package/dist/definition.type.d.ts.map +1 -0
- package/dist/definition.type.js +2 -0
- package/dist/definition.type.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/model/model.define.d.ts +3 -0
- package/dist/model/model.define.d.ts.map +1 -0
- package/dist/model/model.define.helper.d.ts +2 -0
- package/dist/model/model.define.helper.d.ts.map +1 -0
- package/dist/model/model.define.helper.js +2 -0
- package/dist/model/model.define.helper.js.map +1 -0
- package/dist/model/model.define.js +72 -0
- package/dist/model/model.define.js.map +1 -0
- package/dist/model/model.define.type.d.ts +70 -0
- package/dist/model/model.define.type.d.ts.map +1 -0
- package/dist/model/model.define.type.js +5 -0
- package/dist/model/model.define.type.js.map +1 -0
- package/dist/repository/definition.repository.helper.d.ts +7 -0
- package/dist/repository/definition.repository.helper.d.ts.map +1 -0
- package/dist/repository/definition.repository.helper.js +13 -0
- package/dist/repository/definition.repository.helper.js.map +1 -0
- package/dist/spec.d.ts +19 -0
- package/dist/spec.d.ts.map +1 -0
- package/dist/spec.js +2 -0
- package/dist/spec.js.map +1 -0
- package/dist/view.definition.d.ts +21 -0
- package/dist/view.definition.d.ts.map +1 -0
- package/dist/view.definition.js +10 -0
- package/dist/view.definition.js.map +1 -0
- package/package.json +29 -0
package/README.md
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# @eecho/definition
|
|
2
|
+
|
|
3
|
+
Core type definitions and schema library for the EEcho framework.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @eecho/definition
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Features
|
|
12
|
+
|
|
13
|
+
- API definition types
|
|
14
|
+
- Model definition types
|
|
15
|
+
- Repository helper functions
|
|
16
|
+
- Zod schema utilities
|
|
17
|
+
- Type-safe schema validation
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api/api.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAKxD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IACvC,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB,QAgBA"}
|
package/dist/api/api.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export function genAPIDefinition(params) {
|
|
3
|
+
const CreateAPISpecification = {
|
|
4
|
+
APIEndpoint: `${params.endpointPrefix}/create`,
|
|
5
|
+
Method: 'POST',
|
|
6
|
+
Request: {},
|
|
7
|
+
Response: {
|
|
8
|
+
body: z.object({})
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
const ReadAPISpecification = {};
|
|
12
|
+
const UpdateAPISpecification = {};
|
|
13
|
+
const DeleteAPISpecification = {};
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,MAAM,UAAU,gBAAgB,CAAC,MAGhC;IACC,MAAM,sBAAsB,GAAG;QAC7B,WAAW,EAAE,GAAG,MAAM,CAAC,cAAc,SAAS;QAC9C,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAER;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;SACnB;KACwC,CAAC;IAE5C,MAAM,oBAAoB,GAAG,EAAE,CAAC;IAChC,MAAM,sBAAsB,GAAG,EAAE,CAAC;IAClC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAEpC,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { Definition, PrimitiveDefinition } from '../model/model.define.type';
|
|
3
|
+
type APISection = 'create' | 'read' | 'update';
|
|
4
|
+
type PrimitiveSchemaMap<TDefinition extends Definition, TKeys extends keyof TDefinition = keyof TDefinition> = {
|
|
5
|
+
[K in TKeys as TDefinition[K] extends PrimitiveDefinition ? K : never]: TDefinition[K] extends PrimitiveDefinition<infer TSchema> ? TSchema : never;
|
|
6
|
+
};
|
|
7
|
+
type OptionalSchemaMap<TShape extends Record<string, z.ZodTypeAny>> = {
|
|
8
|
+
[K in keyof TShape]: z.ZodOptional<TShape[K]>;
|
|
9
|
+
};
|
|
10
|
+
type OptionalArraySchemaMap<TShape extends Record<string, z.ZodTypeAny>> = {
|
|
11
|
+
[K in keyof TShape]: z.ZodOptional<z.ZodArray<z.ZodOptional<TShape[K]>>>;
|
|
12
|
+
};
|
|
13
|
+
type PrimitiveKeysWithApiFlag<TDefinition extends Definition, TSection extends APISection, TFlag extends string> = {
|
|
14
|
+
[K in keyof TDefinition]: TDefinition[K] extends PrimitiveDefinition<any, any, infer TApi> ? TApi[TSection] extends readonly unknown[] ? TFlag extends TApi[TSection][number] ? K : never : never : never;
|
|
15
|
+
}[keyof TDefinition];
|
|
16
|
+
type PrimitiveKeysWithoutApiFlags<TDefinition extends Definition, TSection extends APISection, TFlags extends readonly string[]> = {
|
|
17
|
+
[K in keyof TDefinition]: TDefinition[K] extends PrimitiveDefinition<any, any, infer TApi> ? TApi[TSection] extends readonly unknown[] ? Extract<TFlags[number], TApi[TSection][number]> extends never ? K : never : K : never;
|
|
18
|
+
}[keyof TDefinition];
|
|
19
|
+
type PrimitiveKeysWithIndexFlag<TDefinition extends Definition, TFlag extends string> = {
|
|
20
|
+
[K in keyof TDefinition]: TDefinition[K] extends PrimitiveDefinition<any, infer TIndex> ? TFlag extends TIndex[number] ? K : never : never;
|
|
21
|
+
}[keyof TDefinition];
|
|
22
|
+
export declare function extractCreateRequiredField<TDefinition extends Definition>(params: {
|
|
23
|
+
definition: TDefinition;
|
|
24
|
+
}): PrimitiveSchemaMap<TDefinition, PrimitiveKeysWithoutApiFlags<TDefinition, "create", ["Optional", "System"]>>;
|
|
25
|
+
export declare function extractReadbleField<TDefinition extends Definition>(params: {
|
|
26
|
+
definition: TDefinition;
|
|
27
|
+
}): PrimitiveSchemaMap<TDefinition, PrimitiveKeysWithoutApiFlags<TDefinition, "read", ["Hidden", "Detail"]>>;
|
|
28
|
+
export declare function extractUpdateOption<TDefinition extends Definition>(params: {
|
|
29
|
+
definition: TDefinition;
|
|
30
|
+
}): OptionalSchemaMap<PrimitiveSchemaMap<TDefinition, PrimitiveKeysWithApiFlag<TDefinition, "update", "Updatable">>>;
|
|
31
|
+
export declare function extractSearchOption<TDefinition extends Definition>(params: {
|
|
32
|
+
definition: TDefinition;
|
|
33
|
+
}): OptionalSchemaMap<PrimitiveSchemaMap<TDefinition, PrimitiveKeysWithApiFlag<TDefinition, "read", "Searchable">>>;
|
|
34
|
+
export declare function extractSearchArrayOption<TDefinition extends Definition>(params: {
|
|
35
|
+
definition: TDefinition;
|
|
36
|
+
}): OptionalArraySchemaMap<PrimitiveSchemaMap<TDefinition, PrimitiveKeysWithApiFlag<TDefinition, "read", "SearchableArray">>>;
|
|
37
|
+
export declare function extractSortableOption<TDefinition extends Definition>(params: {
|
|
38
|
+
definition: TDefinition;
|
|
39
|
+
}): OptionalSchemaMap<PrimitiveSchemaMap<TDefinition, PrimitiveKeysWithApiFlag<TDefinition, "read", "Sortable">>>;
|
|
40
|
+
export declare function extractObjectIdFields<TDefinition extends Definition>(params: {
|
|
41
|
+
definition: TDefinition;
|
|
42
|
+
}): Array<PrimitiveKeysWithIndexFlag<TDefinition, "ObjectId">>;
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=definition.api.helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.api.helper.d.ts","sourceRoot":"","sources":["../../src/api/definition.api.helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
function getPrimitiveEntries(definition) {
|
|
2
|
+
return Object.entries(definition).filter(([, value]) => value.kind === 'primitive');
|
|
3
|
+
}
|
|
4
|
+
function hasAPIFlag(definition, section, flag) {
|
|
5
|
+
return definition.api[section].includes(flag);
|
|
6
|
+
}
|
|
7
|
+
function hasAnyAPIFlag(definition, section, flags) {
|
|
8
|
+
return flags.some((flag) => hasAPIFlag(definition, section, flag));
|
|
9
|
+
}
|
|
10
|
+
function pickPrimitiveSchemaShape(definition, predicate, transform) {
|
|
11
|
+
return Object.fromEntries(getPrimitiveEntries(definition)
|
|
12
|
+
.filter(([key, value]) => predicate(value, key))
|
|
13
|
+
.map(([key, value]) => [key, transform ? transform(value.type) : value.type]));
|
|
14
|
+
}
|
|
15
|
+
export function extractCreateRequiredField(params) {
|
|
16
|
+
const createRequiredFields = pickPrimitiveSchemaShape(params.definition, (field) => !hasAnyAPIFlag(field, 'create', ['Optional', 'System']));
|
|
17
|
+
return createRequiredFields;
|
|
18
|
+
}
|
|
19
|
+
export function extractReadbleField(params) {
|
|
20
|
+
const readableFields = pickPrimitiveSchemaShape(params.definition, (field) => !hasAnyAPIFlag(field, 'read', ['Hidden', 'Detail']));
|
|
21
|
+
return readableFields;
|
|
22
|
+
}
|
|
23
|
+
export function extractUpdateOption(params) {
|
|
24
|
+
const updatableFields = pickPrimitiveSchemaShape(params.definition, (field) => hasAPIFlag(field, 'update', 'Updatable'), (schema) => schema.optional());
|
|
25
|
+
return updatableFields;
|
|
26
|
+
}
|
|
27
|
+
export function extractSearchOption(params) {
|
|
28
|
+
const searchableFields = pickPrimitiveSchemaShape(params.definition, (field) => hasAPIFlag(field, 'read', 'Searchable'), (schema) => schema.optional());
|
|
29
|
+
return searchableFields;
|
|
30
|
+
}
|
|
31
|
+
export function extractSearchArrayOption(params) {
|
|
32
|
+
const searchableArrayFields = pickPrimitiveSchemaShape(params.definition, (field) => hasAPIFlag(field, 'read', 'SearchableArray'), (schema) => schema.optional().array().optional());
|
|
33
|
+
return searchableArrayFields;
|
|
34
|
+
}
|
|
35
|
+
export function extractSortableOption(params) {
|
|
36
|
+
const sortableFields = pickPrimitiveSchemaShape(params.definition, (field) => hasAPIFlag(field, 'read', 'Sortable'), (schema) => schema.optional());
|
|
37
|
+
return sortableFields;
|
|
38
|
+
}
|
|
39
|
+
export function extractObjectIdFields(params) {
|
|
40
|
+
const objectIdFields = getPrimitiveEntries(params.definition)
|
|
41
|
+
.filter(([, value]) => value.index.includes('ObjectId'))
|
|
42
|
+
.map(([key]) => key);
|
|
43
|
+
return objectIdFields;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=definition.api.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.api.helper.js","sourceRoot":"","sources":["../../src/api/definition.api.helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Definition } from "./model/model.define.type";
|
|
2
|
+
export interface RepositoryContextEntry {
|
|
3
|
+
model: Definition;
|
|
4
|
+
collectionName: string;
|
|
5
|
+
dbName: string;
|
|
6
|
+
}
|
|
7
|
+
interface DefinitionContext {
|
|
8
|
+
RepositoryContext: {
|
|
9
|
+
model: Definition;
|
|
10
|
+
collectionName: string;
|
|
11
|
+
dbName: string;
|
|
12
|
+
}[];
|
|
13
|
+
}
|
|
14
|
+
export declare const Context: DefinitionContext;
|
|
15
|
+
export declare function registerRepositoryContext(entry: RepositoryContextEntry): void;
|
|
16
|
+
export declare function findRepositoryContext(model: Definition): {
|
|
17
|
+
model: Definition;
|
|
18
|
+
collectionName: string;
|
|
19
|
+
dbName: string;
|
|
20
|
+
} | undefined;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=definition.context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.context.d.ts","sourceRoot":"","sources":["../src/definition.context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,UAAU,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,iBAAiB;IACzB,iBAAiB,EAAE;QACjB,KAAK,EAAE,UAAU,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC;KAChB,EAAE,CAAC;CACL;AAED,eAAO,MAAM,OAAO,EAAE,iBAErB,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,sBAAsB,QAEtE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU;WAd5C,UAAU;oBACD,MAAM;YACd,MAAM;cAcjB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export const Context = {
|
|
2
|
+
RepositoryContext: []
|
|
3
|
+
};
|
|
4
|
+
export function registerRepositoryContext(entry) {
|
|
5
|
+
Context.RepositoryContext.push(entry);
|
|
6
|
+
}
|
|
7
|
+
export function findRepositoryContext(model) {
|
|
8
|
+
return Context.RepositoryContext.find((entry) => entry.model === model);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=definition.context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.context.js","sourceRoot":"","sources":["../src/definition.context.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,MAAM,OAAO,GAAsB;IACxC,iBAAiB,EAAE,EAAE;CACtB,CAAC;AAEF,MAAM,UAAU,yBAAyB,CAAC,KAA6B;IACrE,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAiB;IACrD,OAAO,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AAC1E,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { Definition, PrimitiveDefinition, PrimitiveIndex, APIIndex } from './model/model.define.type';
|
|
3
|
+
type InferDefinitionValue<TField> = TField extends {
|
|
4
|
+
kind: 'primitive';
|
|
5
|
+
type: infer TSchema extends z.ZodTypeAny;
|
|
6
|
+
} ? z.infer<TSchema> : TField extends {
|
|
7
|
+
kind: 'array';
|
|
8
|
+
type: infer TItem;
|
|
9
|
+
} ? InferDefinitionValue<TItem>[] : TField extends {
|
|
10
|
+
kind: 'object';
|
|
11
|
+
type: infer TObject extends Definition;
|
|
12
|
+
} ? DefinitionDocument<TObject> : never;
|
|
13
|
+
type PrimitiveKeysWithIndexFlag<TDefinition extends Definition, TFlag extends PrimitiveIndex> = {
|
|
14
|
+
[K in keyof TDefinition]: TDefinition[K] extends PrimitiveDefinition<any, infer TIndices> ? TFlag extends TIndices[number] ? K : never : never;
|
|
15
|
+
}[keyof TDefinition];
|
|
16
|
+
type PrimitiveKeysWithApiFlag<TDefinition extends Definition, TSection extends keyof APIIndex, TFlag extends string> = {
|
|
17
|
+
[K in keyof TDefinition]: TDefinition[K] extends PrimitiveDefinition<any, any, infer TApi> ? TApi[TSection] extends readonly unknown[] ? TFlag extends TApi[TSection][number] ? K : never : never : never;
|
|
18
|
+
}[keyof TDefinition];
|
|
19
|
+
type SearchInput<TValue> = TValue extends string ? TValue | TValue[] : TValue;
|
|
20
|
+
export type DefinitionValue<TField> = InferDefinitionValue<TField>;
|
|
21
|
+
export type DefinitionDocument<T extends Definition> = {
|
|
22
|
+
[K in keyof T]: DefinitionValue<T[K]>;
|
|
23
|
+
};
|
|
24
|
+
export type UpdateField<T extends Definition> = {
|
|
25
|
+
[K in PrimitiveKeysWithApiFlag<T, 'update', 'Updatable'>]?: DefinitionValue<T[K]>;
|
|
26
|
+
};
|
|
27
|
+
export type SearchField<T extends Definition> = {
|
|
28
|
+
[K in PrimitiveKeysWithApiFlag<T, 'read', 'Searchable'>]?: SearchInput<DefinitionValue<T[K]>>;
|
|
29
|
+
};
|
|
30
|
+
export type IdentifierField<T extends Definition> = {
|
|
31
|
+
[K in PrimitiveKeysWithIndexFlag<T, 'Identifier'>]: DefinitionValue<T[K]>;
|
|
32
|
+
};
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=definition.type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.type.d.ts","sourceRoot":"","sources":["../src/definition.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE3G,KAAK,oBAAoB,CAAC,MAAM,IAC9B,MAAM,SAAS;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,OAAO,SAAS,CAAC,CAAC,UAAU,CAAA;CAAE,GAC1E,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAChB,MAAM,SAAS;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,KAAK,CAAA;CAAE,GACjD,oBAAoB,CAAC,KAAK,CAAC,EAAE,GAC7B,MAAM,SAAS;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,OAAO,SAAS,UAAU,CAAA;CAAE,GACvE,kBAAkB,CAAC,OAAO,CAAC,GAC3B,KAAK,CAAC;AAEhB,KAAK,0BAA0B,CAAC,WAAW,SAAS,UAAU,EAAE,KAAK,SAAS,cAAc,IAAI;KAC7F,CAAC,IAAI,MAAM,WAAW,GACrB,WAAW,CAAC,CAAC,CAAC,SAAS,mBAAmB,CAAC,GAAG,EAAE,MAAM,QAAQ,CAAC,GAC3D,KAAK,SAAS,QAAQ,CAAC,MAAM,CAAC,GAC5B,CAAC,GACD,KAAK,GACP,KAAK;CACZ,CAAC,MAAM,WAAW,CAAC,CAAC;AAErB,KAAK,wBAAwB,CAC3B,WAAW,SAAS,UAAU,EAC9B,QAAQ,SAAS,MAAM,QAAQ,EAC/B,KAAK,SAAS,MAAM,IAClB;KACD,CAAC,IAAI,MAAM,WAAW,GACrB,WAAW,CAAC,CAAC,CAAC,SAAS,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC,GAC5D,IAAI,CAAC,QAAQ,CAAC,SAAS,SAAS,OAAO,EAAE,GACvC,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAClC,CAAC,GACD,KAAK,GACP,KAAK,GACP,KAAK;CACZ,CAAC,MAAM,WAAW,CAAC,CAAC;AAErB,KAAK,WAAW,CAAC,MAAM,IAAI,MAAM,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC;AAE9E,MAAM,MAAM,eAAe,CAAC,MAAM,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAEnE,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,UAAU,IAAI;KACpD,CAAC,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,UAAU,IAAI;KAC7C,CAAC,IAAI,wBAAwB,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAClF,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,UAAU,IAAI;KAC7C,CAAC,IAAI,wBAAwB,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9F,CAAC;AAEF,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,UAAU,IAAI;KACjD,CAAC,IAAI,0BAA0B,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC1E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.type.js","sourceRoot":"","sources":["../src/definition.type.ts"],"names":[],"mappings":""}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type { DefinitionDocument, IdentifierField, SearchField, UpdateField, } from './definition.type';
|
|
2
|
+
export type { UpdateField as UpdateFields } from './definition.type';
|
|
3
|
+
export { Context } from './definition.context';
|
|
4
|
+
export { findRepositoryContext, registerRepositoryContext } from './definition.context';
|
|
5
|
+
export type { RepositoryContextEntry } from './definition.context';
|
|
6
|
+
export type { ClientAPISpecification, ServerAPISpecification } from './spec';
|
|
7
|
+
export { extractCreateRequiredField, extractReadbleField, extractUpdateOption, extractSearchOption, extractSearchArrayOption, extractSortableOption, extractObjectIdFields } from './api/definition.api.helper';
|
|
8
|
+
export { extractCreateFieldWithSystem } from './repository/definition.repository.helper';
|
|
9
|
+
export { defineModel } from './model/model.define';
|
|
10
|
+
export type { Definition } from './model/model.define.type';
|
|
11
|
+
export type { ViewDefinition } from './view.definition';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACxF,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEnE,YAAY,EAAE,sBAAsB,EAAE,sBAAsB,EAAC,MAAM,QAAQ,CAAC;AAE5E,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,4BAA4B,EAC7B,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { Context } from './definition.context';
|
|
2
|
+
export { findRepositoryContext, registerRepositoryContext } from './definition.context';
|
|
3
|
+
export { extractCreateRequiredField, extractReadbleField, extractUpdateOption, extractSearchOption, extractSearchArrayOption, extractSortableOption, extractObjectIdFields } from './api/definition.api.helper';
|
|
4
|
+
export { extractCreateFieldWithSystem } from './repository/definition.repository.helper';
|
|
5
|
+
export { defineModel } from './model/model.define';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAKxF,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,4BAA4B,EAC7B,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.define.d.ts","sourceRoot":"","sources":["../../src/model/model.define.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,cAAc,EAEd,eAAe,EAIhB,MAAM,qBAAqB,CAAC;AAkF7B,wBAAgB,WAAW,CAAC,KAAK,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAOxF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.define.helper.d.ts","sourceRoot":"","sources":["../../src/model/model.define.helper.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,EAE7B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.define.helper.js","sourceRoot":"","sources":["../../src/model/model.define.helper.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
const EMPTY_API_INDEX = {
|
|
3
|
+
index: [],
|
|
4
|
+
create: [],
|
|
5
|
+
read: [],
|
|
6
|
+
update: [],
|
|
7
|
+
delete: [],
|
|
8
|
+
};
|
|
9
|
+
function normalizeAPIIndex(api) {
|
|
10
|
+
return {
|
|
11
|
+
index: api?.index ?? EMPTY_API_INDEX.index,
|
|
12
|
+
create: api?.create ?? EMPTY_API_INDEX.create,
|
|
13
|
+
read: api?.read ?? EMPTY_API_INDEX.read,
|
|
14
|
+
update: api?.update ?? EMPTY_API_INDEX.update,
|
|
15
|
+
delete: api?.delete ?? EMPTY_API_INDEX.delete,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function definePrimitive(input, key) {
|
|
19
|
+
return {
|
|
20
|
+
...input,
|
|
21
|
+
key,
|
|
22
|
+
kind: 'primitive',
|
|
23
|
+
index: input.index ?? [],
|
|
24
|
+
api: normalizeAPIIndex(input.api),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function defineObject(input, key) {
|
|
28
|
+
return {
|
|
29
|
+
kind: 'object',
|
|
30
|
+
key,
|
|
31
|
+
type: defineModel(input.type),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function defineArray(input, key) {
|
|
35
|
+
const itemDefinition = input.type[0];
|
|
36
|
+
return {
|
|
37
|
+
kind: 'array',
|
|
38
|
+
key,
|
|
39
|
+
type: isPrimitiveDefinitionInput(itemDefinition)
|
|
40
|
+
? definePrimitive(itemDefinition, `${key}Item`)
|
|
41
|
+
: defineObject(itemDefinition, `${key}Item`),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function isZodSchema(value) {
|
|
45
|
+
return value instanceof z.ZodType || (typeof value === 'object' &&
|
|
46
|
+
value !== null &&
|
|
47
|
+
'safeParse' in value &&
|
|
48
|
+
typeof value.safeParse === 'function');
|
|
49
|
+
}
|
|
50
|
+
function isPrimitiveDefinitionInput(input) {
|
|
51
|
+
return isZodSchema(input.type);
|
|
52
|
+
}
|
|
53
|
+
function isArrayDefinitionInput(input) {
|
|
54
|
+
return Array.isArray(input.type);
|
|
55
|
+
}
|
|
56
|
+
function normalizeFieldDefinition(input, key) {
|
|
57
|
+
if (isArrayDefinitionInput(input)) {
|
|
58
|
+
return defineArray(input, key);
|
|
59
|
+
}
|
|
60
|
+
if (isPrimitiveDefinitionInput(input)) {
|
|
61
|
+
return definePrimitive(input, key);
|
|
62
|
+
}
|
|
63
|
+
return defineObject(input, key);
|
|
64
|
+
}
|
|
65
|
+
export function defineModel(input) {
|
|
66
|
+
const entries = Object.entries(input).map(([key, fieldDefinition]) => [
|
|
67
|
+
key,
|
|
68
|
+
normalizeFieldDefinition(fieldDefinition, key),
|
|
69
|
+
]);
|
|
70
|
+
return Object.fromEntries(entries);
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=model.define.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.define.js","sourceRoot":"","sources":["../../src/model/model.define.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export type PrimitiveIndex = 'Identifier' | 'ForeignIdentifier' | 'ObjectId';
|
|
3
|
+
export type CreateCapability = 'Optional' | 'System';
|
|
4
|
+
export type ReadCapability = 'Detail' | 'Hidden' | 'Searchable' | 'SystemSearchable' | 'Sortable' | 'SearchableArray';
|
|
5
|
+
export type UpdateCapability = 'Filter' | 'Updatable';
|
|
6
|
+
export interface APIIndex {
|
|
7
|
+
index: readonly never[];
|
|
8
|
+
create: readonly CreateCapability[];
|
|
9
|
+
read: readonly ReadCapability[];
|
|
10
|
+
update: readonly UpdateCapability[];
|
|
11
|
+
delete: readonly never[];
|
|
12
|
+
}
|
|
13
|
+
export interface PrimitiveDefinition<TType extends z.ZodTypeAny = z.ZodTypeAny, TIndex extends readonly PrimitiveIndex[] = readonly PrimitiveIndex[], TApi extends APIIndex = APIIndex, TKey extends string = string> {
|
|
14
|
+
type: TType;
|
|
15
|
+
index: TIndex;
|
|
16
|
+
api: TApi;
|
|
17
|
+
key: TKey;
|
|
18
|
+
kind: "primitive";
|
|
19
|
+
}
|
|
20
|
+
export interface ArrayDefinition<TType extends PrimitiveDefinition | ObjectDefinition = PrimitiveDefinition | ObjectDefinition, TKey extends string = string> {
|
|
21
|
+
type: TType;
|
|
22
|
+
key: TKey;
|
|
23
|
+
kind: "array";
|
|
24
|
+
}
|
|
25
|
+
export interface ObjectDefinition<TType extends Definition = Definition, TKey extends string = string> {
|
|
26
|
+
type: TType;
|
|
27
|
+
key: TKey;
|
|
28
|
+
kind: "object";
|
|
29
|
+
}
|
|
30
|
+
export interface Definition {
|
|
31
|
+
[field: string]: PrimitiveDefinition | ArrayDefinition | ObjectDefinition;
|
|
32
|
+
}
|
|
33
|
+
export interface InputPrimitiveDefinition<TType extends z.ZodTypeAny = z.ZodTypeAny, TIndex extends readonly PrimitiveIndex[] = readonly PrimitiveIndex[], TApi extends Partial<APIIndex> = Partial<APIIndex>> {
|
|
34
|
+
type: TType;
|
|
35
|
+
index?: TIndex;
|
|
36
|
+
api?: TApi;
|
|
37
|
+
}
|
|
38
|
+
export interface InputArrayDefinition<Titem extends InputPrimitiveDefinition | InputObjectDefinition = InputPrimitiveDefinition | InputObjectDefinition> {
|
|
39
|
+
type: readonly [Titem];
|
|
40
|
+
}
|
|
41
|
+
export interface InputObjectDefinition<Ttype extends InputDefinition = InputDefinition> {
|
|
42
|
+
type: Ttype;
|
|
43
|
+
}
|
|
44
|
+
export interface InputDefinition {
|
|
45
|
+
[field: string]: InputPrimitiveDefinition | InputArrayDefinition | InputObjectDefinition;
|
|
46
|
+
}
|
|
47
|
+
type NormalizeAPI<TApi extends Partial<APIIndex> | undefined> = {
|
|
48
|
+
index: TApi extends {
|
|
49
|
+
index: infer TIndex extends APIIndex['index'];
|
|
50
|
+
} ? TIndex : [];
|
|
51
|
+
create: TApi extends {
|
|
52
|
+
create: infer TCreate extends APIIndex['create'];
|
|
53
|
+
} ? TCreate : [];
|
|
54
|
+
read: TApi extends {
|
|
55
|
+
read: infer TRead extends APIIndex['read'];
|
|
56
|
+
} ? TRead : [];
|
|
57
|
+
update: TApi extends {
|
|
58
|
+
update: infer TUpdate extends APIIndex['update'];
|
|
59
|
+
} ? TUpdate : [];
|
|
60
|
+
delete: TApi extends {
|
|
61
|
+
delete: infer TDelete extends APIIndex['delete'];
|
|
62
|
+
} ? TDelete : [];
|
|
63
|
+
};
|
|
64
|
+
type NormalizeArrayItem<TItem, TKey extends string> = TItem extends InputPrimitiveDefinition<infer TType, infer TIndex, infer TApi> ? PrimitiveDefinition<TType, TIndex, NormalizeAPI<TApi>, `${TKey}Item`> : TItem extends InputObjectDefinition<infer TObject> ? ObjectDefinition<DefinitionFrom<TObject>, `${TKey}Item`> : never;
|
|
65
|
+
type NormalizeField<TField, TKey extends string> = TField extends InputPrimitiveDefinition<infer TType, infer TIndex, infer TApi> ? PrimitiveDefinition<TType, TIndex, NormalizeAPI<TApi>, TKey> : TField extends InputArrayDefinition<infer TItem> ? ArrayDefinition<NormalizeArrayItem<TItem, TKey>, TKey> : TField extends InputObjectDefinition<infer TObject> ? ObjectDefinition<DefinitionFrom<TObject>, TKey> : never;
|
|
66
|
+
export type DefinitionFrom<T extends InputDefinition> = {
|
|
67
|
+
[K in keyof T & string]: NormalizeField<T[K], K>;
|
|
68
|
+
};
|
|
69
|
+
export {};
|
|
70
|
+
//# sourceMappingURL=model.define.type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.define.type.d.ts","sourceRoot":"","sources":["../../src/model/model.define.type.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.define.type.js","sourceRoot":"","sources":["../../src/model/model.define.type.ts"],"names":[],"mappings":"AAgCC,CAAC;AAuCD,CAAC;AAUD,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Definition, PrimitiveDefinition, APIIndex } from '../model/model.define.type';
|
|
2
|
+
export declare function extractCreateFieldWithSystem<TDefinition extends Definition>(params: {
|
|
3
|
+
definition: TDefinition;
|
|
4
|
+
}): { [K in keyof TDefinition as TDefinition[K] extends PrimitiveDefinition ? TDefinition[K]["api"] extends {
|
|
5
|
+
create: infer Indices;
|
|
6
|
+
} ? Indices extends APIIndex["create"] ? "Optional" extends Indices[number] ? never : K : K : K : K]: TDefinition[K]["type"]; };
|
|
7
|
+
//# sourceMappingURL=definition.repository.helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.repository.helper.d.ts","sourceRoot":"","sources":["../../src/repository/definition.repository.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEvF,wBAAgB,4BAA4B,CAAC,WAAW,SAAS,UAAU,EAAE,MAAM,EAAE;IAAE,UAAU,EAAE,WAAW,CAAA;CAAE,GAUvF,GACpB,CAAC,IAAI,MAAM,WAAW,IACrB,WAAW,CAAC,CAAC,CAAC,SAAS,mBAAmB,GACtC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS;IAAE,MAAM,EAAE,MAAM,OAAO,CAAA;CAAE,GACrD,OAAO,SAAS,QAAQ,CAAC,QAAQ,CAAC,GAChC,UAAU,SAAS,OAAO,CAAC,MAAM,CAAC,GAChC,KAAK,GACL,CAAC,GACH,CAAC,GACH,CAAC,GACH,CAAC,GACH,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAC3B,CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function extractCreateFieldWithSystem(params) {
|
|
2
|
+
const { definition } = params;
|
|
3
|
+
const createFields = Object.fromEntries(Object.entries(definition).filter(([_, value]) => {
|
|
4
|
+
// Optional만 제외하고, System은 포함
|
|
5
|
+
if (value.kind === 'primitive' && value.api?.create?.includes("Optional"))
|
|
6
|
+
return false;
|
|
7
|
+
else
|
|
8
|
+
return true;
|
|
9
|
+
}).map(([key, value]) => ([key, value.type])));
|
|
10
|
+
return createFields;
|
|
11
|
+
}
|
|
12
|
+
;
|
|
13
|
+
//# sourceMappingURL=definition.repository.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.repository.helper.js","sourceRoot":"","sources":["../../src/repository/definition.repository.helper.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,4BAA4B,CAAiC,MAAmC;IAC9G,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAC9B,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CACrC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAC,EAAE;QAC9C,6BAA6B;QAC7B,IAAG,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC;YAAE,OAAO,KAAK,CAAA;;YACjF,OAAO,IAAI,CAAC;IACnB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAC,EAAE,CAAA,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAC5C,CAAC;IAEF,OAAO,YAYN,CAAC;AACJ,CAAC;AAAA,CAAC"}
|
package/dist/spec.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
interface APISpecification {
|
|
3
|
+
APIEndpoint: string;
|
|
4
|
+
Method: "GET" | "POST" | "PATCH" | "DELETE" | "PUT";
|
|
5
|
+
Request: {
|
|
6
|
+
queryParams?: z.ZodTypeAny;
|
|
7
|
+
body?: z.ZodTypeAny;
|
|
8
|
+
};
|
|
9
|
+
Response: {
|
|
10
|
+
body: z.ZodTypeAny;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export interface ClientAPISpecification extends APISpecification {
|
|
14
|
+
operationId: string;
|
|
15
|
+
}
|
|
16
|
+
export interface ServerAPISpecification extends APISpecification {
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=spec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,UAAU,gBAAgB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACpD,OAAO,EAAE;QACP,WAAW,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC;QAC3B,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC;KACrB,CAAC;IACF,QAAQ,EAAE;QACR,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;CAAG"}
|
package/dist/spec.js
ADDED
package/dist/spec.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Definition, PrimitiveDefinition } from './model/model.define.type';
|
|
2
|
+
export interface ViewDefinition {
|
|
3
|
+
baseModel: Definition;
|
|
4
|
+
viewDefinition: {
|
|
5
|
+
[field: string]: PrimitiveDefinition & {
|
|
6
|
+
model?: Definition;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
relations: {
|
|
10
|
+
relationModel: Definition;
|
|
11
|
+
baseKey: string;
|
|
12
|
+
relationKey: string;
|
|
13
|
+
}[];
|
|
14
|
+
index?: [];
|
|
15
|
+
}
|
|
16
|
+
export declare function registerModel(params: {
|
|
17
|
+
definition: Definition;
|
|
18
|
+
collectionName: string;
|
|
19
|
+
dbName: string;
|
|
20
|
+
}): void;
|
|
21
|
+
//# sourceMappingURL=view.definition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.definition.d.ts","sourceRoot":"","sources":["../src/view.definition.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAG5E,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,UAAU,CAAC;IACtB,cAAc,EAAE;QACd,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG;YACrC,KAAK,CAAC,EAAE,UAAU,CAAC;SACpB,CAAC;KACH,CAAC;IACF,SAAS,EAAE;QACT,aAAa,EAAE,UAAU,CAAC;QAC1B,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;KACrB,EAAE,CAAC;IACJ,KAAK,CAAC,EAAE,EAAE,CAAC;CACZ;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE;IACpC,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,QAMA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { registerRepositoryContext } from './definition.context';
|
|
2
|
+
;
|
|
3
|
+
export function registerModel(params) {
|
|
4
|
+
registerRepositoryContext({
|
|
5
|
+
model: params.definition,
|
|
6
|
+
collectionName: params.collectionName,
|
|
7
|
+
dbName: params.dbName,
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=view.definition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.definition.js","sourceRoot":"","sources":["../src/view.definition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAiBhE,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,MAI7B;IACC,yBAAyB,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC,UAAU;QACxB,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@eecho/definition",
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"description": "EEcho API definition types and schemas",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist/**/*"
|
|
10
|
+
],
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "tsc -p tsconfig.build.json",
|
|
13
|
+
"clean": "node -e \"require('fs').rmSync('dist', { recursive: true, force: true })\"",
|
|
14
|
+
"prepublishOnly": "npm run clean && npm run build",
|
|
15
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
16
|
+
},
|
|
17
|
+
"author": "",
|
|
18
|
+
"license": "ISC",
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"zod": "^4.1.12"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"typescript": "^5.0.0"
|
|
24
|
+
},
|
|
25
|
+
"publishConfig": {
|
|
26
|
+
"access": "public",
|
|
27
|
+
"registry": "https://registry.npmjs.org/"
|
|
28
|
+
}
|
|
29
|
+
}
|