@entifix/static 0.0.0-stage → 0.3.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/LICENSE +21 -0
- package/README.md +29 -2
- package/dist/from-records.d.ts +19 -0
- package/dist/from-records.d.ts.map +1 -0
- package/dist/from-records.js +22 -0
- package/dist/from-records.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/static-repository.d.ts +24 -0
- package/dist/static-repository.d.ts.map +1 -0
- package/dist/static-repository.js +73 -0
- package/dist/static-repository.js.map +1 -0
- package/package.json +61 -3
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 r10c Technologies
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,30 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @entifix/static
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A read-only `EntityRepository` over records bundled with the build — the content of a static-export site, served through the ordinary use cases and swappable for `@entifix/rest` the day a backend appears.
|
|
4
|
+
|
|
5
|
+
`get` and `load` have the Mongo adapter's semantics: every filter operator, groups, array membership, a dotted path into one locale of a `localized` member, multi-key sorting and 1-based paging. `save` and `delete` fail with an `EntifixLogicError`, because a static source is read-only.
|
|
6
|
+
|
|
7
|
+
Records that arrive as JSON are checked against the entity's metadata before anything is served (`validRecordsOrThrow` from `@entifix/core`): identity, `required`, member types, dates, link ids, item counts, `notBefore`, cardinality and localized completeness. Every problem is thrown together, so a broken record fails the build instead of a visitor's page.
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
const posts = staticRepositoryFromRecords(Post, postsJson, {
|
|
11
|
+
source: 'posts.json',
|
|
12
|
+
linkTargets: { tags: new Set(tagsJson.map(tag => tag.id)) },
|
|
13
|
+
});
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Install
|
|
17
|
+
|
|
18
|
+
```sh
|
|
19
|
+
pnpm add @entifix/static effect
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Entry points
|
|
23
|
+
|
|
24
|
+
| Import | What it holds |
|
|
25
|
+
| ----------------- | ----------------------------------------------------- |
|
|
26
|
+
| `@entifix/static` | `makeStaticRepository`, `staticRepositoryFromRecords` |
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
Tier 2 (adapters) of entifix — a package depends only on its own tier or below. See [the tiers](https://github.com/r10c-technologies/entifix#the-tiers-and-what-you-are-allowed-to-install). MIT licensed.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { EntityRepository } from '@entifix/business';
|
|
2
|
+
import { type Entity, type EntityConstructor, type ValidateRecordsOptions } from '@entifix/core';
|
|
3
|
+
import { type StaticRepositoryOptions } from './static-repository.js';
|
|
4
|
+
export type StaticRecordsOptions = ValidateRecordsOptions & StaticRepositoryOptions;
|
|
5
|
+
/**
|
|
6
|
+
* A static repository over untyped records — the JSON a build bundles —
|
|
7
|
+
* checked against the entity's metadata before anything is served.
|
|
8
|
+
*
|
|
9
|
+
* The mapping assigns every non-relation value raw, so a record that is wrong
|
|
10
|
+
* would otherwise reach a reader as `undefined` mid-page, or a date as a
|
|
11
|
+
* string. `validRecordsOrThrow` from core runs first instead: identity,
|
|
12
|
+
* `required`, each member's type, dates parsed, link ids against the targets
|
|
13
|
+
* given, item counts, `notBefore`, cardinality, localized completeness, the
|
|
14
|
+
* caller's rules — every problem collected, and thrown together as a
|
|
15
|
+
* `RecordValidationError`, so a broken record fails the build rather than a
|
|
16
|
+
* visitor's page.
|
|
17
|
+
*/
|
|
18
|
+
export declare function staticRepositoryFromRecords<TEntity extends Entity>(entityConstructor: EntityConstructor<TEntity>, records: readonly unknown[], options?: StaticRecordsOptions): EntityRepository;
|
|
19
|
+
//# sourceMappingURL=from-records.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"from-records.d.ts","sourceRoot":"","sources":["../src/from-records.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAE5B,MAAM,eAAe,CAAC;AAGvB,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,oBAAoB,GAAG,sBAAsB,GACvD,uBAAuB,CAAC;AAE1B;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,SAAS,MAAM,EAChE,iBAAiB,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAC7C,OAAO,EAAE,SAAS,OAAO,EAAE,EAC3B,OAAO,GAAE,oBAAyB,GACjC,gBAAgB,CAMlB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { deserializeEntityCollection, validRecordsOrThrow } from '@entifix/core';
|
|
2
|
+
import { Effect } from 'effect';
|
|
3
|
+
import { makeStaticRepository } from './static-repository.js';
|
|
4
|
+
/**
|
|
5
|
+
* A static repository over untyped records — the JSON a build bundles —
|
|
6
|
+
* checked against the entity's metadata before anything is served.
|
|
7
|
+
*
|
|
8
|
+
* The mapping assigns every non-relation value raw, so a record that is wrong
|
|
9
|
+
* would otherwise reach a reader as `undefined` mid-page, or a date as a
|
|
10
|
+
* string. `validRecordsOrThrow` from core runs first instead: identity,
|
|
11
|
+
* `required`, each member's type, dates parsed, link ids against the targets
|
|
12
|
+
* given, item counts, `notBefore`, cardinality, localized completeness, the
|
|
13
|
+
* caller's rules — every problem collected, and thrown together as a
|
|
14
|
+
* `RecordValidationError`, so a broken record fails the build rather than a
|
|
15
|
+
* visitor's page.
|
|
16
|
+
*/ export function staticRepositoryFromRecords(entityConstructor, records, options = {}) {
|
|
17
|
+
const valid = validRecordsOrThrow(entityConstructor, records, options);
|
|
18
|
+
const instances = Effect.runSync(deserializeEntityCollection(entityConstructor, valid));
|
|
19
|
+
return makeStaticRepository(entityConstructor, instances, options);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=from-records.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/from-records.ts"],"sourcesContent":["import type { EntityRepository } from '@entifix/business';\nimport {\n deserializeEntityCollection,\n type Entity,\n type EntityConstructor,\n type ValidateRecordsOptions,\n validRecordsOrThrow,\n} from '@entifix/core';\nimport { Effect } from 'effect';\n\nimport {\n makeStaticRepository,\n type StaticRepositoryOptions,\n} from './static-repository.js';\n\nexport type StaticRecordsOptions = ValidateRecordsOptions &\n StaticRepositoryOptions;\n\n/**\n * A static repository over untyped records — the JSON a build bundles —\n * checked against the entity's metadata before anything is served.\n *\n * The mapping assigns every non-relation value raw, so a record that is wrong\n * would otherwise reach a reader as `undefined` mid-page, or a date as a\n * string. `validRecordsOrThrow` from core runs first instead: identity,\n * `required`, each member's type, dates parsed, link ids against the targets\n * given, item counts, `notBefore`, cardinality, localized completeness, the\n * caller's rules — every problem collected, and thrown together as a\n * `RecordValidationError`, so a broken record fails the build rather than a\n * visitor's page.\n */\nexport function staticRepositoryFromRecords<TEntity extends Entity>(\n entityConstructor: EntityConstructor<TEntity>,\n records: readonly unknown[],\n options: StaticRecordsOptions = {},\n): EntityRepository {\n const valid = validRecordsOrThrow(entityConstructor, records, options);\n const instances = Effect.runSync(\n deserializeEntityCollection(entityConstructor, valid),\n ) as TEntity[];\n return makeStaticRepository(entityConstructor, instances, options);\n}\n"],"names":["deserializeEntityCollection","validRecordsOrThrow","Effect","makeStaticRepository","staticRepositoryFromRecords","entityConstructor","records","options","valid","instances","runSync"],"mappings":"AACA,SACEA,2BAA2B,EAI3BC,mBAAmB,QACd,gBAAgB;AACvB,SAASC,MAAM,QAAQ,SAAS;AAEhC,SACEC,oBAAoB,QAEf,yBAAyB;AAKhC;;;;;;;;;;;;CAYC,GACD,OAAO,SAASC,4BACdC,iBAA6C,EAC7CC,OAA2B,EAC3BC,UAAgC,CAAC,CAAC;IAElC,MAAMC,QAAQP,oBAAoBI,mBAAmBC,SAASC;IAC9D,MAAME,YAAYP,OAAOQ,OAAO,CAC9BV,4BAA4BK,mBAAmBG;IAEjD,OAAOL,qBAAqBE,mBAAmBI,WAAWF;AAC5D"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from './from-records.js';\nexport * from './static-repository.js';\n"],"names":[],"mappings":"AAAA,cAAc,oBAAoB;AAClC,cAAc,yBAAyB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { EntityRepository } from '@entifix/business';
|
|
2
|
+
import { type Entity, type EntityConstructor } from '@entifix/core';
|
|
3
|
+
export interface StaticRepositoryOptions {
|
|
4
|
+
/** The name an error message uses. Defaults to the entity's class name. */
|
|
5
|
+
readonly label?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* A read-only {@link EntityRepository} over records held in memory — content
|
|
9
|
+
* bundled with a static build, served through the ordinary use cases, and
|
|
10
|
+
* swappable for a REST adapter the day a backend appears.
|
|
11
|
+
*
|
|
12
|
+
* `get` and `load` carry the Mongo adapter's semantics, from core's in-memory
|
|
13
|
+
* query evaluation: every filter operator, groups, array membership, a dotted
|
|
14
|
+
* path into a localized member, multi-key sorting, and 1-based paging that
|
|
15
|
+
* defaults to ten. Both hand out copies.
|
|
16
|
+
*
|
|
17
|
+
* `save` and `delete` fail with an `EntifixLogicError`: a static source is
|
|
18
|
+
* read-only, and pretending otherwise is worse than refusing.
|
|
19
|
+
*
|
|
20
|
+
* It holds instances. Records that arrive as JSON go through
|
|
21
|
+
* {@link staticRepositoryFromRecords}, which validates them first.
|
|
22
|
+
*/
|
|
23
|
+
export declare function makeStaticRepository<TEntity extends Entity>(entityConstructor: EntityConstructor<TEntity>, records: readonly TEntity[], { label }?: StaticRepositoryOptions): EntityRepository;
|
|
24
|
+
//# sourceMappingURL=static-repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static-repository.d.ts","sourceRoot":"","sources":["../src/static-repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAOL,KAAK,MAAM,EACX,KAAK,iBAAiB,EAMvB,MAAM,eAAe,CAAC;AAkCvB,MAAM,WAAW,uBAAuB;IACtC,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,SAAS,MAAM,EACzD,iBAAiB,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAC7C,OAAO,EAAE,SAAS,OAAO,EAAE,EAC3B,EAAE,KAA8B,EAAE,GAAE,uBAA4B,GAC/D,gBAAgB,CA0DlB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { applyFiltering, applySorting, deserializeSingleEntity, EntifixConnError, EntifixLogicError, extractMetaAccessors, serializeEntity } from '@entifix/core';
|
|
2
|
+
import { Effect } from 'effect';
|
|
3
|
+
/** The Mongo adapter's defaults, which this one copies exactly. */ const DEFAULT_PAGE = 1;
|
|
4
|
+
const DEFAULT_PAGE_SIZE = 10;
|
|
5
|
+
/**
|
|
6
|
+
* A copy of a record, so a caller can never reach into the store.
|
|
7
|
+
*
|
|
8
|
+
* Through the entity's own mapping — serialize, then deserialize — as a real
|
|
9
|
+
* adapter maps every record on the way out. An entity with no accessors has no
|
|
10
|
+
* mapping to go through, so it is copied member by member instead.
|
|
11
|
+
*/ function copyOf(record) {
|
|
12
|
+
const entityConstructor = record.constructor;
|
|
13
|
+
if (extractMetaAccessors(entityConstructor).length === 0) {
|
|
14
|
+
return Effect.succeed(Object.assign(Object.create(Object.getPrototypeOf(record)), record));
|
|
15
|
+
}
|
|
16
|
+
// `undefined` only comes back for `null`/`undefined` input, and
|
|
17
|
+
// `serializeEntity` always hands over an object.
|
|
18
|
+
return deserializeSingleEntity(entityConstructor, serializeEntity(entityConstructor, record));
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* A read-only {@link EntityRepository} over records held in memory — content
|
|
22
|
+
* bundled with a static build, served through the ordinary use cases, and
|
|
23
|
+
* swappable for a REST adapter the day a backend appears.
|
|
24
|
+
*
|
|
25
|
+
* `get` and `load` carry the Mongo adapter's semantics, from core's in-memory
|
|
26
|
+
* query evaluation: every filter operator, groups, array membership, a dotted
|
|
27
|
+
* path into a localized member, multi-key sorting, and 1-based paging that
|
|
28
|
+
* defaults to ten. Both hand out copies.
|
|
29
|
+
*
|
|
30
|
+
* `save` and `delete` fail with an `EntifixLogicError`: a static source is
|
|
31
|
+
* read-only, and pretending otherwise is worse than refusing.
|
|
32
|
+
*
|
|
33
|
+
* It holds instances. Records that arrive as JSON go through
|
|
34
|
+
* {@link staticRepositoryFromRecords}, which validates them first.
|
|
35
|
+
*/ export function makeStaticRepository(entityConstructor, records, { label = entityConstructor.name } = {}) {
|
|
36
|
+
const stored = [
|
|
37
|
+
...records
|
|
38
|
+
];
|
|
39
|
+
const readOnly = (verb)=>Effect.fail(new EntifixLogicError(`Cannot ${verb} a ${label}: it is served from static content, which is read-only`, undefined, {
|
|
40
|
+
entity: label,
|
|
41
|
+
operation: verb
|
|
42
|
+
}));
|
|
43
|
+
const get = (id)=>{
|
|
44
|
+
const found = stored.find((record)=>record.id === id);
|
|
45
|
+
return found === undefined ? Effect.fail(new EntifixConnError('Entity not found', undefined, {
|
|
46
|
+
entity: label,
|
|
47
|
+
id
|
|
48
|
+
})) : copyOf(found);
|
|
49
|
+
};
|
|
50
|
+
const load = (request)=>Effect.suspend(()=>{
|
|
51
|
+
var _request_page, _request_pageSize;
|
|
52
|
+
const matched = applySorting(applyFiltering(stored, request.filtering), request.sorting);
|
|
53
|
+
const page = (_request_page = request.page) != null ? _request_page : DEFAULT_PAGE;
|
|
54
|
+
const pageSize = (_request_pageSize = request.pageSize) != null ? _request_pageSize : DEFAULT_PAGE_SIZE;
|
|
55
|
+
const start = (page - 1) * pageSize;
|
|
56
|
+
return Effect.forEach(matched.slice(start, start + pageSize), copyOf).pipe(Effect.map((items)=>({
|
|
57
|
+
items,
|
|
58
|
+
total: matched.length,
|
|
59
|
+
request
|
|
60
|
+
})));
|
|
61
|
+
});
|
|
62
|
+
// Each method closes over its own state, so nothing is required from the
|
|
63
|
+
// Effect environment; that is assignable to the port's channel, and the
|
|
64
|
+
// cast keeps its generic signatures, as entifix's other adapters do.
|
|
65
|
+
return {
|
|
66
|
+
get,
|
|
67
|
+
load,
|
|
68
|
+
save: ()=>readOnly('save'),
|
|
69
|
+
delete: ()=>readOnly('delete')
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
//# sourceMappingURL=static-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/static-repository.ts"],"sourcesContent":["import type { EntityRepository } from '@entifix/business';\nimport {\n applyFiltering,\n applySorting,\n deserializeSingleEntity,\n EntifixConnError,\n type EntifixError,\n EntifixLogicError,\n type Entity,\n type EntityConstructor,\n type EntityId,\n type EntityLoadRequest,\n type EntityPage,\n extractMetaAccessors,\n serializeEntity,\n} from '@entifix/core';\nimport { Effect } from 'effect';\n\n/** The Mongo adapter's defaults, which this one copies exactly. */\nconst DEFAULT_PAGE = 1;\nconst DEFAULT_PAGE_SIZE = 10;\n\n/**\n * A copy of a record, so a caller can never reach into the store.\n *\n * Through the entity's own mapping — serialize, then deserialize — as a real\n * adapter maps every record on the way out. An entity with no accessors has no\n * mapping to go through, so it is copied member by member instead.\n */\nfunction copyOf<TEntity extends Entity>(\n record: TEntity,\n): Effect.Effect<TEntity, EntifixError> {\n const entityConstructor = record.constructor as EntityConstructor<TEntity>;\n if (extractMetaAccessors(entityConstructor).length === 0) {\n return Effect.succeed(\n Object.assign(\n Object.create(Object.getPrototypeOf(record) as object) as TEntity,\n record,\n ),\n );\n }\n // `undefined` only comes back for `null`/`undefined` input, and\n // `serializeEntity` always hands over an object.\n return deserializeSingleEntity(\n entityConstructor,\n serializeEntity(entityConstructor, record),\n ) as Effect.Effect<TEntity, EntifixError>;\n}\n\nexport interface StaticRepositoryOptions {\n /** The name an error message uses. Defaults to the entity's class name. */\n readonly label?: string;\n}\n\n/**\n * A read-only {@link EntityRepository} over records held in memory — content\n * bundled with a static build, served through the ordinary use cases, and\n * swappable for a REST adapter the day a backend appears.\n *\n * `get` and `load` carry the Mongo adapter's semantics, from core's in-memory\n * query evaluation: every filter operator, groups, array membership, a dotted\n * path into a localized member, multi-key sorting, and 1-based paging that\n * defaults to ten. Both hand out copies.\n *\n * `save` and `delete` fail with an `EntifixLogicError`: a static source is\n * read-only, and pretending otherwise is worse than refusing.\n *\n * It holds instances. Records that arrive as JSON go through\n * {@link staticRepositoryFromRecords}, which validates them first.\n */\nexport function makeStaticRepository<TEntity extends Entity>(\n entityConstructor: EntityConstructor<TEntity>,\n records: readonly TEntity[],\n { label = entityConstructor.name }: StaticRepositoryOptions = {},\n): EntityRepository {\n const stored = [...records];\n\n const readOnly = (verb: string) =>\n Effect.fail(\n new EntifixLogicError(\n `Cannot ${verb} a ${label}: it is served from static content, which is read-only`,\n undefined,\n { entity: label, operation: verb },\n ),\n );\n\n const get = (id: EntityId) => {\n const found = stored.find(record => record.id === id);\n return found === undefined\n ? Effect.fail(\n new EntifixConnError('Entity not found', undefined, {\n entity: label,\n id,\n }),\n )\n : copyOf(found);\n };\n\n const load = (request: EntityLoadRequest<TEntity>) =>\n Effect.suspend(() => {\n const matched = applySorting(\n applyFiltering(stored, request.filtering),\n request.sorting,\n );\n const page = request.page ?? DEFAULT_PAGE;\n const pageSize = request.pageSize ?? DEFAULT_PAGE_SIZE;\n const start = (page - 1) * pageSize;\n\n return Effect.forEach(\n matched.slice(start, start + pageSize),\n copyOf,\n ).pipe(\n Effect.map(\n items =>\n ({\n items,\n total: matched.length,\n request,\n }) satisfies EntityPage<TEntity>,\n ),\n );\n });\n\n // Each method closes over its own state, so nothing is required from the\n // Effect environment; that is assignable to the port's channel, and the\n // cast keeps its generic signatures, as entifix's other adapters do.\n return {\n get,\n load,\n save: () => readOnly('save'),\n delete: () => readOnly('delete'),\n } as unknown as EntityRepository;\n}\n"],"names":["applyFiltering","applySorting","deserializeSingleEntity","EntifixConnError","EntifixLogicError","extractMetaAccessors","serializeEntity","Effect","DEFAULT_PAGE","DEFAULT_PAGE_SIZE","copyOf","record","entityConstructor","length","succeed","Object","assign","create","getPrototypeOf","makeStaticRepository","records","label","name","stored","readOnly","verb","fail","undefined","entity","operation","get","id","found","find","load","request","suspend","matched","filtering","sorting","page","pageSize","start","forEach","slice","pipe","map","items","total","save","delete"],"mappings":"AACA,SACEA,cAAc,EACdC,YAAY,EACZC,uBAAuB,EACvBC,gBAAgB,EAEhBC,iBAAiB,EAMjBC,oBAAoB,EACpBC,eAAe,QACV,gBAAgB;AACvB,SAASC,MAAM,QAAQ,SAAS;AAEhC,iEAAiE,GACjE,MAAMC,eAAe;AACrB,MAAMC,oBAAoB;AAE1B;;;;;;CAMC,GACD,SAASC,OACPC,MAAe;IAEf,MAAMC,oBAAoBD,OAAO,WAAW;IAC5C,IAAIN,qBAAqBO,mBAAmBC,MAAM,KAAK,GAAG;QACxD,OAAON,OAAOO,OAAO,CACnBC,OAAOC,MAAM,CACXD,OAAOE,MAAM,CAACF,OAAOG,cAAc,CAACP,UACpCA;IAGN;IACA,gEAAgE;IAChE,iDAAiD;IACjD,OAAOT,wBACLU,mBACAN,gBAAgBM,mBAAmBD;AAEvC;AAOA;;;;;;;;;;;;;;;CAeC,GACD,OAAO,SAASQ,qBACdP,iBAA6C,EAC7CQ,OAA2B,EAC3B,EAAEC,QAAQT,kBAAkBU,IAAI,EAA2B,GAAG,CAAC,CAAC;IAEhE,MAAMC,SAAS;WAAIH;KAAQ;IAE3B,MAAMI,WAAW,CAACC,OAChBlB,OAAOmB,IAAI,CACT,IAAItB,kBACF,CAAC,OAAO,EAAEqB,KAAK,GAAG,EAAEJ,MAAM,sDAAsD,CAAC,EACjFM,WACA;YAAEC,QAAQP;YAAOQ,WAAWJ;QAAK;IAIvC,MAAMK,MAAM,CAACC;QACX,MAAMC,QAAQT,OAAOU,IAAI,CAACtB,CAAAA,SAAUA,OAAOoB,EAAE,KAAKA;QAClD,OAAOC,UAAUL,YACbpB,OAAOmB,IAAI,CACT,IAAIvB,iBAAiB,oBAAoBwB,WAAW;YAClDC,QAAQP;YACRU;QACF,MAEFrB,OAAOsB;IACb;IAEA,MAAME,OAAO,CAACC,UACZ5B,OAAO6B,OAAO,CAAC;gBAKAD,eACIA;YALjB,MAAME,UAAUpC,aACdD,eAAeuB,QAAQY,QAAQG,SAAS,GACxCH,QAAQI,OAAO;YAEjB,MAAMC,QAAOL,gBAAAA,QAAQK,IAAI,YAAZL,gBAAgB3B;YAC7B,MAAMiC,YAAWN,oBAAAA,QAAQM,QAAQ,YAAhBN,oBAAoB1B;YACrC,MAAMiC,QAAQ,AAACF,CAAAA,OAAO,CAAA,IAAKC;YAE3B,OAAOlC,OAAOoC,OAAO,CACnBN,QAAQO,KAAK,CAACF,OAAOA,QAAQD,WAC7B/B,QACAmC,IAAI,CACJtC,OAAOuC,GAAG,CACRC,CAAAA,QACG,CAAA;oBACCA;oBACAC,OAAOX,QAAQxB,MAAM;oBACrBsB;gBACF,CAAA;QAGR;IAEF,yEAAyE;IACzE,wEAAwE;IACxE,qEAAqE;IACrE,OAAO;QACLL;QACAI;QACAe,MAAM,IAAMzB,SAAS;QACrB0B,QAAQ,IAAM1B,SAAS;IACzB;AACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,64 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@entifix/static",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "A read-only entity repository over records bundled with the build: Mongo's query semantics, records validated against entity metadata before they are served.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/r10c-technologies/entifix.git",
|
|
9
|
+
"directory": "packages/ts/static"
|
|
10
|
+
},
|
|
11
|
+
"publishConfig": {
|
|
12
|
+
"access": "public"
|
|
13
|
+
},
|
|
14
|
+
"type": "module",
|
|
15
|
+
"main": "./dist/index.js",
|
|
16
|
+
"module": "./dist/index.js",
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"exports": {
|
|
19
|
+
"./package.json": "./package.json",
|
|
20
|
+
".": {
|
|
21
|
+
"types": "./dist/index.d.ts",
|
|
22
|
+
"import": "./dist/index.js",
|
|
23
|
+
"default": "./dist/index.js"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"files": [
|
|
27
|
+
"dist",
|
|
28
|
+
"!**/*.tsbuildinfo",
|
|
29
|
+
"LICENSE"
|
|
30
|
+
],
|
|
31
|
+
"nx": {
|
|
32
|
+
"tags": [
|
|
33
|
+
"tier:2"
|
|
34
|
+
],
|
|
35
|
+
"sourceRoot": "packages/ts/static/src",
|
|
36
|
+
"targets": {
|
|
37
|
+
"build": {
|
|
38
|
+
"executor": "@nx/js:swc",
|
|
39
|
+
"outputs": [
|
|
40
|
+
"{options.outputPath}"
|
|
41
|
+
],
|
|
42
|
+
"options": {
|
|
43
|
+
"outputPath": "packages/ts/static/dist",
|
|
44
|
+
"main": "packages/ts/static/src/index.ts",
|
|
45
|
+
"tsConfig": "packages/ts/static/tsconfig.lib.json",
|
|
46
|
+
"skipTypeCheck": true,
|
|
47
|
+
"stripLeadingPaths": true
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"dependencies": {
|
|
53
|
+
"@swc/helpers": "0.5.23",
|
|
54
|
+
"@entifix/business": "0.3.0",
|
|
55
|
+
"@entifix/core": "0.3.0"
|
|
56
|
+
},
|
|
57
|
+
"devDependencies": {
|
|
58
|
+
"effect": "4.0.5",
|
|
59
|
+
"@entifix/testing-unit": "0.3.0"
|
|
60
|
+
},
|
|
61
|
+
"peerDependencies": {
|
|
62
|
+
"effect": "^4.0.5"
|
|
63
|
+
}
|
|
6
64
|
}
|