@entifix/rest 0.8.0 → 0.9.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/README.md CHANGED
@@ -27,14 +27,18 @@ const repository = Context.make(EntityRepositoryTag, {
27
27
  delete: buildEntityRestAdapterDelete(Book, options),
28
28
  });
29
29
 
30
+ const counter = Context.make(EntityFacetCounterTag, {
31
+ count: buildEntityRestAdapterFacets(Book, options), // GET <entity>/$facets
32
+ });
33
+
30
34
  const status = buildTransactionStatusReader(options); // a TransactionStatusReader
31
35
  ```
32
36
 
33
37
  ## Entry points
34
38
 
35
- | Import | What it holds |
36
- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
37
- | `@entifix/rest` | `buildEntityRestAdapterGet` / `Load` / `Save` / `Delete`, `makeEntityMetadataSource`, `buildTransactionStatusReader`, `performHttpRequestThroughFetch` |
39
+ | Import | What it holds |
40
+ | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
41
+ | `@entifix/rest` | `buildEntityRestAdapterGet` / `Load` / `Save` / `Delete` / `Facets`, `makeEntityMetadataSource`, `buildTransactionStatusReader`, `performHttpRequestThroughFetch` |
38
42
 
39
43
  ---
40
44
 
@@ -0,0 +1,11 @@
1
+ import { type Entity, type EntityConstructor, type EntityFacetQuery } from '@entifix/core';
2
+ import { Effect } from 'effect';
3
+ import { BuildEntityRestOptions } from '../types.js';
4
+ /**
5
+ * The `count` of an `EntityFacetCounter`, over a service's
6
+ * `GET <entity>/$facets` — the load adapter's sibling, on the same base URL and
7
+ * the same query protocol, so what this composes is what the service parses
8
+ * back. The caller binds it to the port, as it binds `load` to the repository.
9
+ */
10
+ export declare const buildEntityRestAdapterFacets: <TEntity extends Entity>(entityConstructor: EntityConstructor<TEntity>, { uriConfig, configuration }: BuildEntityRestOptions) => <T extends Entity>(queries: readonly EntityFacetQuery<T>[]) => Effect.Effect<Readonly<Record<string, readonly import("@entifix/core").EntityFacetValue[]>>, import("@entifix/core").EntifixBuildError | import("@entifix/core").EntifixConnError, never>;
11
+ //# sourceMappingURL=build-entity-rest-adapter-facets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-entity-rest-adapter-facets.d.ts","sourceRoot":"","sources":["../../../../src/adapters/entity-rest/build-entity-rest-adapter-facets/build-entity-rest-adapter-facets.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,MAAM,EACX,KAAK,iBAAiB,EAEtB,KAAK,gBAAgB,EAItB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIhC,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,GACtC,OAAO,SAAS,MAAM,EACrB,mBAAmB,iBAAiB,CAAC,OAAO,CAAC,EAC7C,8BAA8B,sBAAsB,MAErD,CAAC,SAAS,MAAM,EAAE,SAAS,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,8LAoBtD,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { envelopeEntityName, readEntityFacetsEnvelope, serializeFacetQueryParams } from '@entifix/core';
2
+ import { Effect } from 'effect';
3
+ import { performHttpRequestThroughFetch } from '../../../clients/fetch/index.js';
4
+ import { buildEntityRestAdapterMixins as adapterMixins } from '../build-entity-rest-adapter-mixins/index.js';
5
+ /**
6
+ * The `count` of an `EntityFacetCounter`, over a service's
7
+ * `GET <entity>/$facets` — the load adapter's sibling, on the same base URL and
8
+ * the same query protocol, so what this composes is what the service parses
9
+ * back. The caller binds it to the port, as it binds `load` to the repository.
10
+ */ export const buildEntityRestAdapterFacets = (entityConstructor, { uriConfig, configuration })=>(queries)=>Effect.gen(function*() {
11
+ // Asking for nothing is answered without a round trip; the service
12
+ // would refuse an empty request.
13
+ if (queries.length === 0) return {};
14
+ const baseUrl = yield* adapterMixins.buildEntityBaseUrl(configuration, {
15
+ uriConfig
16
+ }, envelopeEntityName(entityConstructor));
17
+ const query = serializeFacetQueryParams(queries).toString();
18
+ const response = yield* performHttpRequestThroughFetch(adapterMixins.buildEntityRequest({
19
+ method: 'GET',
20
+ url: `${baseUrl}/$facets?${query}`
21
+ }));
22
+ return yield* readEntityFacetsEnvelope(entityConstructor, response.body);
23
+ });
24
+
25
+ //# sourceMappingURL=build-entity-rest-adapter-facets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/adapters/entity-rest/build-entity-rest-adapter-facets/build-entity-rest-adapter-facets.ts"],"sourcesContent":["import {\n type Entity,\n type EntityConstructor,\n type EntityFacetCounts,\n type EntityFacetQuery,\n envelopeEntityName,\n readEntityFacetsEnvelope,\n serializeFacetQueryParams,\n} from '@entifix/core';\nimport { Effect } from 'effect';\n\nimport { performHttpRequestThroughFetch } from '../../../clients/fetch/index.js';\nimport { buildEntityRestAdapterMixins as adapterMixins } from '../build-entity-rest-adapter-mixins/index.js';\nimport { BuildEntityRestOptions } from '../types.js';\n\n/**\n * The `count` of an `EntityFacetCounter`, over a service's\n * `GET <entity>/$facets` — the load adapter's sibling, on the same base URL and\n * the same query protocol, so what this composes is what the service parses\n * back. The caller binds it to the port, as it binds `load` to the repository.\n */\nexport const buildEntityRestAdapterFacets =\n <TEntity extends Entity>(\n entityConstructor: EntityConstructor<TEntity>,\n { uriConfig, configuration }: BuildEntityRestOptions,\n ) =>\n <T extends Entity>(queries: readonly EntityFacetQuery<T>[]) =>\n Effect.gen(function* () {\n // Asking for nothing is answered without a round trip; the service\n // would refuse an empty request.\n if (queries.length === 0) return {} as EntityFacetCounts;\n\n const baseUrl = yield* adapterMixins.buildEntityBaseUrl(\n configuration,\n { uriConfig },\n envelopeEntityName(entityConstructor),\n );\n\n const query = serializeFacetQueryParams(queries).toString();\n const response = yield* performHttpRequestThroughFetch(\n adapterMixins.buildEntityRequest({\n method: 'GET',\n url: `${baseUrl}/$facets?${query}`,\n }),\n );\n return yield* readEntityFacetsEnvelope(entityConstructor, response.body);\n });\n"],"names":["envelopeEntityName","readEntityFacetsEnvelope","serializeFacetQueryParams","Effect","performHttpRequestThroughFetch","buildEntityRestAdapterMixins","adapterMixins","buildEntityRestAdapterFacets","entityConstructor","uriConfig","configuration","queries","gen","length","baseUrl","buildEntityBaseUrl","query","toString","response","buildEntityRequest","method","url","body"],"mappings":"AAAA,SAKEA,kBAAkB,EAClBC,wBAAwB,EACxBC,yBAAyB,QACpB,gBAAgB;AACvB,SAASC,MAAM,QAAQ,SAAS;AAEhC,SAASC,8BAA8B,QAAQ,kCAAkC;AACjF,SAASC,gCAAgCC,aAAa,QAAQ,+CAA+C;AAG7G;;;;;CAKC,GACD,OAAO,MAAMC,+BACX,CACEC,mBACA,EAAEC,SAAS,EAAEC,aAAa,EAA0B,GAEtD,CAAmBC,UACjBR,OAAOS,GAAG,CAAC;YACT,mEAAmE;YACnE,iCAAiC;YACjC,IAAID,QAAQE,MAAM,KAAK,GAAG,OAAO,CAAC;YAElC,MAAMC,UAAU,OAAOR,cAAcS,kBAAkB,CACrDL,eACA;gBAAED;YAAU,GACZT,mBAAmBQ;YAGrB,MAAMQ,QAAQd,0BAA0BS,SAASM,QAAQ;YACzD,MAAMC,WAAW,OAAOd,+BACtBE,cAAca,kBAAkB,CAAC;gBAC/BC,QAAQ;gBACRC,KAAK,GAAGP,QAAQ,SAAS,EAAEE,OAAO;YACpC;YAEF,OAAO,OAAOf,yBAAyBO,mBAAmBU,SAASI,IAAI;QACzE,GAAG"}
@@ -0,0 +1,2 @@
1
+ export * from './build-entity-rest-adapter-facets.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/entity-rest/build-entity-rest-adapter-facets/index.ts"],"names":[],"mappings":"AAAA,cAAc,uCAAuC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './build-entity-rest-adapter-facets.js';
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/adapters/entity-rest/build-entity-rest-adapter-facets/index.ts"],"sourcesContent":["export * from './build-entity-rest-adapter-facets.js';\n"],"names":[],"mappings":"AAAA,cAAc,wCAAwC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './adapters/entity-metadata/make-entity-metadata-source/index.js';
2
2
  export * from './adapters/entity-rest/build-entity-rest-adapter-delete/index.js';
3
+ export * from './adapters/entity-rest/build-entity-rest-adapter-facets/index.js';
3
4
  export * from './adapters/entity-rest/build-entity-rest-adapter-get/index.js';
4
5
  export * from './adapters/entity-rest/build-entity-rest-adapter-load/index.js';
5
6
  export * from './adapters/entity-rest/build-entity-rest-adapter-save/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iEAAiE,CAAC;AAChF,cAAc,kEAAkE,CAAC;AACjF,cAAc,+DAA+D,CAAC;AAC9E,cAAc,gEAAgE,CAAC;AAC/E,cAAc,gEAAgE,CAAC;AAC/E,cAAc,iCAAiC,CAAC;AAChD,cAAc,wEAAwE,CAAC;AACvF,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iEAAiE,CAAC;AAChF,cAAc,kEAAkE,CAAC;AACjF,cAAc,kEAAkE,CAAC;AACjF,cAAc,+DAA+D,CAAC;AAC9E,cAAc,gEAAgE,CAAC;AAC/E,cAAc,gEAAgE,CAAC;AAC/E,cAAc,iCAAiC,CAAC;AAChD,cAAc,wEAAwE,CAAC;AACvF,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iCAAiC,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './adapters/entity-metadata/make-entity-metadata-source/index.js';
2
2
  export * from './adapters/entity-rest/build-entity-rest-adapter-delete/index.js';
3
+ export * from './adapters/entity-rest/build-entity-rest-adapter-facets/index.js';
3
4
  export * from './adapters/entity-rest/build-entity-rest-adapter-get/index.js';
4
5
  export * from './adapters/entity-rest/build-entity-rest-adapter-load/index.js';
5
6
  export * from './adapters/entity-rest/build-entity-rest-adapter-save/index.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from './adapters/entity-metadata/make-entity-metadata-source/index.js';\nexport * from './adapters/entity-rest/build-entity-rest-adapter-delete/index.js';\nexport * from './adapters/entity-rest/build-entity-rest-adapter-get/index.js';\nexport * from './adapters/entity-rest/build-entity-rest-adapter-load/index.js';\nexport * from './adapters/entity-rest/build-entity-rest-adapter-save/index.js';\nexport * from './adapters/entity-rest/types.js';\nexport * from './adapters/transaction-status/build-transaction-status-reader/index.js';\nexport * from './clients/fetch/index.js';\nexport * from './clients/types.js';\nexport * from './configuration-client/index.js';\n"],"names":[],"mappings":"AAAA,cAAc,kEAAkE;AAChF,cAAc,mEAAmE;AACjF,cAAc,gEAAgE;AAC9E,cAAc,iEAAiE;AAC/E,cAAc,iEAAiE;AAC/E,cAAc,kCAAkC;AAChD,cAAc,yEAAyE;AACvF,cAAc,2BAA2B;AACzC,cAAc,qBAAqB;AACnC,cAAc,kCAAkC"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from './adapters/entity-metadata/make-entity-metadata-source/index.js';\nexport * from './adapters/entity-rest/build-entity-rest-adapter-delete/index.js';\nexport * from './adapters/entity-rest/build-entity-rest-adapter-facets/index.js';\nexport * from './adapters/entity-rest/build-entity-rest-adapter-get/index.js';\nexport * from './adapters/entity-rest/build-entity-rest-adapter-load/index.js';\nexport * from './adapters/entity-rest/build-entity-rest-adapter-save/index.js';\nexport * from './adapters/entity-rest/types.js';\nexport * from './adapters/transaction-status/build-transaction-status-reader/index.js';\nexport * from './clients/fetch/index.js';\nexport * from './clients/types.js';\nexport * from './configuration-client/index.js';\n"],"names":[],"mappings":"AAAA,cAAc,kEAAkE;AAChF,cAAc,mEAAmE;AACjF,cAAc,mEAAmE;AACjF,cAAc,gEAAgE;AAC9E,cAAc,iEAAiE;AAC/E,cAAc,iEAAiE;AAC/E,cAAc,kCAAkC;AAChD,cAAc,yEAAyE;AACvF,cAAc,2BAA2B;AACzC,cAAc,qBAAqB;AACnC,cAAc,kCAAkC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@entifix/rest",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "HTTP entity adapter for the browser: get, load, save and delete against an entifix service, plus served metadata and transaction status.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -51,12 +51,12 @@
51
51
  },
52
52
  "dependencies": {
53
53
  "@swc/helpers": "0.5.23",
54
- "@entifix/core": "0.8.0",
55
- "@entifix/transactions": "0.8.0"
54
+ "@entifix/core": "0.9.0",
55
+ "@entifix/transactions": "0.9.0"
56
56
  },
57
57
  "devDependencies": {
58
58
  "effect": "4.0.5",
59
- "@entifix/testing-unit": "0.8.0"
59
+ "@entifix/testing-unit": "0.9.0"
60
60
  },
61
61
  "peerDependencies": {
62
62
  "effect": "^4.0.5"