@fougere/cli 0.8.2-alpha.0 → 0.8.4-alpha.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.
@@ -1,7 +1,7 @@
1
1
  import { createLocalRunner, identityFromEnv } from '@fougere/core';
2
- import { watchPathsOf } from '@fougere/core/node';
2
+ import { watchPathsOf } from '@fougere/compiler';
3
3
  import { installLoader } from '../../src/loader.js';
4
- import type { Conventions } from '@fougere/core/node';
4
+ import type { Conventions } from '@fougere/core';
5
5
  import { bootAppFromConfig } from '@fougere/defaults';
6
6
  import { serve } from '@fougere/transport-http';
7
7
  import { watch } from 'node:fs';
package/dist/bin.js CHANGED
@@ -1,7 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  /** fougere CLI — a Fougere app powered by citty. */
3
3
  import { createApp, setLogLevel, envLevel } from '@fougere/core';
4
- import { scanProject, getModuleLoader, frondDirsOf, DEFAULT_CONVENTIONS } from '@fougere/core/node';
4
+ import { scanProject } from '@fougere/compiler';
5
+ import { frondDirsOf, DEFAULT_CONVENTIONS } from '@fougere/core';
6
+ import { getModuleLoader } from '@fougere/core/node';
5
7
  import { readdir, stat } from 'node:fs/promises';
6
8
  import { join } from 'node:path';
7
9
  import { createContainer } from '@fougere/container';
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AACA,6BAA6B;AAC7B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,KAAK,EAAE,OAAO,EAAU,MAAM,OAAO,CAAC;AAM7C,6DAA6D;AAC7D,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CA2CpD"}
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AACA,6BAA6B;AAC7B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,KAAK,EAAE,OAAO,EAAU,MAAM,OAAO,CAAC;AAM7C,6DAA6D;AAC7D,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CA4CpD"}
package/dist/bridge.js CHANGED
@@ -10,11 +10,12 @@ export function entityToArgs(fields) {
10
10
  // Axes-derived ingress membership; the CLI additionally skips ALL relations
11
11
  // (a ref is not a flag — supplying related rows is not a CLI gesture).
12
12
  for (const [key, field] of Object.entries(Visibility.of(fields).input)) {
13
- if (Role.of(field).relation)
13
+ if (Role.of(field).isRelation)
14
14
  continue;
15
15
  // A `default(v)` travels as the create rule `{ value }` — citty shows it.
16
16
  const defaultValue = Lifecycle.of(field).literal?.value;
17
17
  const { base: shape, nullable } = Shapes.of(field.shape);
18
+ const type = Shapes.typeOf(field.shape);
18
19
  const common = {
19
20
  description: field.meta?.description,
20
21
  required: !nullable && Lifecycle.of(field).requiredAtCreate,
@@ -31,14 +32,28 @@ export function entityToArgs(fields) {
31
32
  && common.required
32
33
  && key !== 'force'
33
34
  && options === undefined
34
- && shape?.type !== 'boolean'
35
- && !(shape?.type === 'string' && shape.format === 'date-time');
35
+ && type !== 'boolean'
36
+ && type !== 'date';
36
37
  if (positional)
37
38
  positionalIndex++;
38
- args[toKebab(key) === key ? key : toKebab(key)] = argFor(shape?.type, common, defaultValue, options, positional);
39
+ args[toKebab(key) === key ? key : toKebab(key)] = argFor(type, common, defaultValue, options, positional);
39
40
  }
40
41
  return args;
41
42
  }
43
+ /**
44
+ * Which types carry a declared default onto the CLI. A `boolean` is answered above, with
45
+ * its own default; an `object` and an `array` are named and bare.
46
+ */
47
+ const CARRIES_DEFAULT = {
48
+ number: true,
49
+ integer: true,
50
+ text: true,
51
+ date: true,
52
+ choice: true,
53
+ boolean: false,
54
+ object: false,
55
+ array: false,
56
+ };
42
57
  /** One arg, built WITH its `type`. */
43
58
  function argFor(type, common, defaultValue, options, positional) {
44
59
  if (type === 'boolean') {
@@ -46,9 +61,7 @@ function argFor(type, common, defaultValue, options, positional) {
46
61
  ? { ...common, type: 'boolean' }
47
62
  : { ...common, type: 'boolean', default: defaultValue };
48
63
  }
49
- // Only these three shapes carry a default onto the CLI; anything else is named and bare.
50
- const carriesDefault = type === 'number' || type === 'integer' || type === 'string';
51
- const withDefault = carriesDefault && defaultValue !== undefined
64
+ const withDefault = type && CARRIES_DEFAULT[type] && defaultValue !== undefined
52
65
  ? { default: String(defaultValue) }
53
66
  : {};
54
67
  if (options)
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}
package/dist/loader.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Conventions } from '@fougere/core/node';
1
+ import type { Conventions } from '@fougere/core';
2
2
  /** The loader every command needs. */
3
3
  export declare function installLoader(root: string, reread?: boolean): Promise<Conventions>;
4
4
  //# sourceMappingURL=loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,sCAAsC;AACtC,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CActF"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,sCAAsC;AACtC,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CActF"}
package/dist/loader.js CHANGED
@@ -1,4 +1,6 @@
1
- import { setModuleLoader, loadConfig, resolveConventions, frondAliases, } from '@fougere/core/node';
1
+ import { frondAliases } from '@fougere/compiler';
2
+ import { resolveConventions } from '@fougere/core';
3
+ import { setModuleLoader, loadConfig } from '@fougere/core/node';
2
4
  /** The loader every command needs. */
3
5
  export async function installLoader(root, reread = false) {
4
6
  const { createJiti } = await import('jiti');
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAAE,UAAU,EAAE,kBAAkB,EAAE,YAAY,GAC9D,MAAM,oBAAoB,CAAC;AAG5B,sCAAsC;AACtC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,MAAM,GAAG,KAAK;IAC9D,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,eAAe,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAqC,CAAC,CAAC;IAEzF,MAAM,WAAW,GAAG,kBAAkB,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE;QACvC,cAAc,EAAE,IAAI;QACpB,KAAK,EAAE,MAAM,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC;QAC5C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1C,CAAC,CAAC;IACH,eAAe,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAqC,CAAC,CAAC;IAEzF,OAAO,WAAW,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGjE,sCAAsC;AACtC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,MAAM,GAAG,KAAK;IAC9D,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,eAAe,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAqC,CAAC,CAAC;IAEzF,MAAM,WAAW,GAAG,kBAAkB,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE;QACvC,cAAc,EAAE,IAAI;QACpB,KAAK,EAAE,MAAM,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC;QAC5C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1C,CAAC,CAAC;IACH,eAAe,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAqC,CAAC,CAAC;IAEzF,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { mkdir, writeFile } from 'node:fs/promises';
2
2
  import { dirname, relative, resolve } from 'node:path';
3
- import { emitScan } from '@fougere/core/node';
3
+ import { emitScan } from '@fougere/compiler';
4
4
  import ProjectScan from '../services/ProjectScan.js';
5
5
  import type Build from '../entities/Build.js';
6
6
 
@@ -6,9 +6,8 @@ import {
6
6
  resolveEffectiveOperations,
7
7
  type ScanDiagnostic,
8
8
  } from '@fougere/core';
9
- import {
10
- adaptersOf, crossFrondImports, handlerDeclarations, outsideConventions, resolveConventions,
11
- } from '@fougere/core/node';
9
+ import { adaptersOf, crossFrondImports, handlerDeclarations, outsideConventions } from '@fougere/compiler';
10
+ import { resolveConventions } from '@fougere/core';
12
11
  import ProjectScan from '../services/ProjectScan.js';
13
12
 
14
13
  /** One thing that does not hold, in the terms of whoever has to fix it. */
@@ -161,11 +160,13 @@ export default class CheckHandler {
161
160
  });
162
161
  }
163
162
 
163
+ const conventions = resolveConventions(config.conventions);
164
+
164
165
  /**
165
166
  * What no convention names. Reported before the declarations below, because a frond
166
167
  * with nowhere to put a word is why the word ends up in a handler.
167
168
  */
168
- for (const unplaced of await outsideConventions(fronds, resolveConventions(config.conventions))) {
169
+ for (const unplaced of await outsideConventions(fronds, conventions)) {
169
170
  findings.push({
170
171
  severity: 'warning',
171
172
  code: unplaced.rule,
@@ -180,7 +181,7 @@ export default class CheckHandler {
180
181
  * what it costs is the next caller — a test, a second operation, another handler —
181
182
  * that cannot reach it without moving it first.
182
183
  */
183
- for (const held of await handlerDeclarations(fronds)) {
184
+ for (const held of await handlerDeclarations(fronds, conventions)) {
184
185
  findings.push({
185
186
  severity: 'warning',
186
187
  code: held.rule,
@@ -1,7 +1,7 @@
1
1
  import { type FougereConfig, type ScanResult } from '@fougere/core';
2
- import {
3
- scanProject, frondAliases, setModuleLoader, loadConfig, resolveConventions,
4
- } from '@fougere/core/node';
2
+ import { scanProject, frondAliases } from '@fougere/compiler';
3
+ import { resolveConventions } from '@fougere/core';
4
+ import { setModuleLoader, loadConfig } from '@fougere/core/node';
5
5
  import { resolve } from 'node:path';
6
6
 
7
7
  /**
@@ -1,7 +1,8 @@
1
1
  import { execSync } from 'node:child_process';
2
2
  import { existsSync, mkdirSync, writeFileSync, readFileSync, readdirSync, unlinkSync } from 'node:fs';
3
3
  import { join, basename } from 'node:path';
4
- import { loadConfig, resolveConventions, frondPackage } from '@fougere/core/node';
4
+ import { resolveConventions, frondPackage } from '@fougere/core';
5
+ import { loadConfig } from '@fougere/core/node';
5
6
 
6
7
  export default class BuildFrondHandler {
7
8
  // cwd is ambient in a CLI — not a DI service (the container resolves by type).
@@ -7,9 +7,8 @@ import { FacadeTypes } from '../../../src/typescript/FacadeTypes.js';
7
7
  // lived in this file and went stale the day an op stopped being a bare name: nothing
8
8
  // compared the copy to the original, so the drift cost nothing until someone read it.
9
9
  import { assertIdentityCard, type IdentityCard } from '@fougere/core';
10
- import {
11
- type Conventions, loadConfig, resolveConventions, frondPackage,
12
- } from '@fougere/core/node';
10
+ import { type Conventions, resolveConventions, frondPackage } from '@fougere/core';
11
+ import { loadConfig } from '@fougere/core/node';
13
12
 
14
13
  function assertSafeName(kind: string, name: string): void {
15
14
  if (typeof name !== 'string' || !/^[A-Za-z_$][A-Za-z0-9_$-]*$/.test(name)) {
@@ -1,7 +1,7 @@
1
1
  import { cpSync, existsSync, renameSync, readFileSync, writeFileSync, readdirSync } from 'node:fs';
2
2
  import { dirname, join } from 'node:path';
3
3
  import { fileURLToPath } from 'node:url';
4
- import { type Conventions, DEFAULT_CONVENTIONS, frondPackage } from '@fougere/core/node';
4
+ import { type Conventions, DEFAULT_CONVENTIONS, frondPackage } from '@fougere/core';
5
5
 
6
6
  /**
7
7
  * The monorepo's `packages/`, found by its workspace marker rather than counted
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fougere/cli",
3
- "version": "0.8.2-alpha.0",
3
+ "version": "0.8.4-alpha.0",
4
4
  "description": "The Fougere CLI — compose a workspace, serve a frond, call an operation.",
5
5
  "keywords": [
6
6
  "fougere",
@@ -42,12 +42,13 @@
42
42
  "jiti": "^2.4.2",
43
43
  "picocolors": "^1.1.1",
44
44
  "safe-regex": "^2.1.1",
45
- "@fougere/container": "0.8.2-alpha.0",
46
- "@fougere/adapter-sql": "0.8.2-alpha.0",
47
- "@fougere/core": "0.8.2-alpha.0",
48
- "@fougere/schema": "0.8.2-alpha.0",
49
- "@fougere/transport-http": "0.8.2-alpha.0",
50
- "@fougere/defaults": "0.8.2-alpha.0"
45
+ "@fougere/core": "0.8.4-alpha.0",
46
+ "@fougere/container": "0.8.4-alpha.0",
47
+ "@fougere/schema": "0.8.4-alpha.0",
48
+ "@fougere/compiler": "0.8.4-alpha.0",
49
+ "@fougere/adapter-sql": "0.8.4-alpha.0",
50
+ "@fougere/transport-http": "0.8.4-alpha.0",
51
+ "@fougere/defaults": "0.8.4-alpha.0"
51
52
  },
52
53
  "devDependencies": {
53
54
  "vitest": "^4.1.0"
package/src/bin.ts CHANGED
@@ -1,7 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  /** fougere CLI — a Fougere app powered by citty. */
3
3
  import { createApp, setLogLevel, envLevel, type ScanResult } from '@fougere/core';
4
- import { scanProject, getModuleLoader, frondDirsOf, DEFAULT_CONVENTIONS } from '@fougere/core/node';
4
+ import { scanProject } from '@fougere/compiler';
5
+ import { frondDirsOf, DEFAULT_CONVENTIONS } from '@fougere/core';
6
+ import { getModuleLoader } from '@fougere/core/node';
5
7
  import { readdir, stat } from 'node:fs/promises';
6
8
  import { join } from 'node:path';
7
9
  import { createContainer } from '@fougere/container';
package/src/bridge.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Lifecycle, Role } from '@fougere/schema';
2
2
  /** Entity → citty bridge. */
3
3
  import type { Fields } from '@fougere/schema';
4
- import { Shapes, Visibility } from '@fougere/schema';
4
+ import { Shapes, Visibility, type ShapeType } from '@fougere/schema';
5
5
  import type { ArgsDef, ArgDef } from 'citty';
6
6
 
7
7
  function toKebab(name: string): string {
@@ -16,11 +16,12 @@ export function entityToArgs(fields: Fields): ArgsDef {
16
16
  // Axes-derived ingress membership; the CLI additionally skips ALL relations
17
17
  // (a ref is not a flag — supplying related rows is not a CLI gesture).
18
18
  for (const [key, field] of Object.entries(Visibility.of(fields).input)) {
19
- if (Role.of(field).relation) continue;
19
+ if (Role.of(field).isRelation) continue;
20
20
 
21
21
  // A `default(v)` travels as the create rule `{ value }` — citty shows it.
22
22
  const defaultValue = Lifecycle.of(field).literal?.value;
23
23
  const { base: shape, nullable } = Shapes.of(field.shape);
24
+ const type = Shapes.typeOf(field.shape);
24
25
  const common = {
25
26
  description: field.meta?.description,
26
27
  required: !nullable && Lifecycle.of(field).requiredAtCreate,
@@ -38,12 +39,12 @@ export function entityToArgs(fields: Fields): ArgsDef {
38
39
  && common.required
39
40
  && key !== 'force'
40
41
  && options === undefined
41
- && shape?.type !== 'boolean'
42
- && !(shape?.type === 'string' && shape.format === 'date-time');
42
+ && type !== 'boolean'
43
+ && type !== 'date';
43
44
  if (positional) positionalIndex++;
44
45
 
45
46
  args[toKebab(key) === key ? key : toKebab(key)] = argFor(
46
- shape?.type,
47
+ type,
47
48
  common,
48
49
  defaultValue,
49
50
  options,
@@ -54,9 +55,24 @@ export function entityToArgs(fields: Fields): ArgsDef {
54
55
  return args;
55
56
  }
56
57
 
58
+ /**
59
+ * Which types carry a declared default onto the CLI. A `boolean` is answered above, with
60
+ * its own default; an `object` and an `array` are named and bare.
61
+ */
62
+ const CARRIES_DEFAULT: Record<ShapeType, boolean> = {
63
+ number: true,
64
+ integer: true,
65
+ text: true,
66
+ date: true,
67
+ choice: true,
68
+ boolean: false,
69
+ object: false,
70
+ array: false,
71
+ };
72
+
57
73
  /** One arg, built WITH its `type`. */
58
74
  function argFor(
59
- type: string | undefined,
75
+ type: ShapeType | undefined,
60
76
  common: { description?: string; required: boolean },
61
77
  defaultValue: unknown,
62
78
  options: string[] | undefined,
@@ -68,9 +84,7 @@ function argFor(
68
84
  : { ...common, type: 'boolean', default: defaultValue as boolean };
69
85
  }
70
86
 
71
- // Only these three shapes carry a default onto the CLI; anything else is named and bare.
72
- const carriesDefault = type === 'number' || type === 'integer' || type === 'string';
73
- const withDefault = carriesDefault && defaultValue !== undefined
87
+ const withDefault = type && CARRIES_DEFAULT[type] && defaultValue !== undefined
74
88
  ? { default: String(defaultValue) }
75
89
  : {};
76
90
 
package/src/loader.ts CHANGED
@@ -1,7 +1,7 @@
1
- import {
2
- setModuleLoader, loadConfig, resolveConventions, frondAliases,
3
- } from '@fougere/core/node';
4
- import type { Conventions } from '@fougere/core/node';
1
+ import { frondAliases } from '@fougere/compiler';
2
+ import { resolveConventions } from '@fougere/core';
3
+ import { setModuleLoader, loadConfig } from '@fougere/core/node';
4
+ import type { Conventions } from '@fougere/core';
5
5
 
6
6
  /** The loader every command needs. */
7
7
  export async function installLoader(root: string, reread = false): Promise<Conventions> {
@@ -13,6 +13,7 @@
13
13
  "better-sqlite3": "^13.0.3",
14
14
  "kysely": "^0.28.17",
15
15
  "jiti": "^2.4.2",
16
- "@fougere/container": "latest"
16
+ "@fougere/container": "latest",
17
+ "@fougere/compiler": "latest"
17
18
  }
18
19
  }
@@ -9,7 +9,8 @@
9
9
  */
10
10
  import { createJiti } from 'jiti';
11
11
  import { createLocalRunner, Logger } from '@fougere/core';
12
- import { setModuleLoader, frondAliases } from '@fougere/core/node';
12
+ import { frondAliases } from '@fougere/compiler';
13
+ import { setModuleLoader } from '@fougere/core/node';
13
14
  import { bootAppFromConfig } from '@fougere/defaults';
14
15
  import { serve } from '@fougere/transport-http';
15
16