@wavehouse/chtypes 2.0.0-dev.1 → 2.0.0-dev.11

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.
Files changed (145) hide show
  1. package/CHANGELOG.md +97 -0
  2. package/README.md +5 -1
  3. package/dist/abi2/buildinfo.d.ts +1 -1
  4. package/dist/abi2/buildinfo.js +3 -3
  5. package/dist/abi2/buildinfo.js.map +1 -1
  6. package/dist/abi2/calls.gen.d.ts +5 -5
  7. package/dist/abi2/calls.gen.d.ts.map +1 -1
  8. package/dist/abi2/calls.gen.js +11 -11
  9. package/dist/abi2/calls.gen.js.map +1 -1
  10. package/dist/abi2/decls.gen.d.ts +2 -1
  11. package/dist/abi2/decls.gen.d.ts.map +1 -1
  12. package/dist/abi2/decls.gen.js +78 -20
  13. package/dist/abi2/decls.gen.js.map +1 -1
  14. package/dist/abi2/errmap.gen.js +1 -1
  15. package/dist/abi2/errors.d.ts +21 -40
  16. package/dist/abi2/errors.d.ts.map +1 -1
  17. package/dist/abi2/errors.js +20 -44
  18. package/dist/abi2/errors.js.map +1 -1
  19. package/dist/abi2/index.d.ts +2 -2
  20. package/dist/abi2/index.d.ts.map +1 -1
  21. package/dist/abi2/index.js +1 -1
  22. package/dist/abi2/index.js.map +1 -1
  23. package/dist/abi2/libc.gen.d.ts +2 -0
  24. package/dist/abi2/libc.gen.d.ts.map +1 -1
  25. package/dist/abi2/libc.gen.js +11 -1
  26. package/dist/abi2/libc.gen.js.map +1 -1
  27. package/dist/abi2/loader.d.ts +4 -2
  28. package/dist/abi2/loader.d.ts.map +1 -1
  29. package/dist/abi2/loader.js +2 -2
  30. package/dist/abi2/loader.js.map +1 -1
  31. package/dist/abi2/raw.d.ts.map +1 -1
  32. package/dist/abi2/raw.js +4 -1
  33. package/dist/abi2/raw.js.map +1 -1
  34. package/dist/abi2/vocab.gen.d.ts +90 -1
  35. package/dist/abi2/vocab.gen.d.ts.map +1 -1
  36. package/dist/abi2/vocab.gen.js +144 -4
  37. package/dist/abi2/vocab.gen.js.map +1 -1
  38. package/dist/cli.d.ts +11 -5
  39. package/dist/cli.d.ts.map +1 -1
  40. package/dist/cli.js +130 -20
  41. package/dist/cli.js.map +1 -1
  42. package/dist/documents.d.ts +100 -7
  43. package/dist/documents.d.ts.map +1 -1
  44. package/dist/documents.js +135 -8
  45. package/dist/documents.js.map +1 -1
  46. package/dist/env.d.ts +8 -1
  47. package/dist/env.d.ts.map +1 -1
  48. package/dist/env.js +17 -8
  49. package/dist/env.js.map +1 -1
  50. package/dist/index.d.ts +10 -7
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +8 -5
  53. package/dist/index.js.map +1 -1
  54. package/dist/library.d.ts +13 -2
  55. package/dist/library.d.ts.map +1 -1
  56. package/dist/library.js +24 -5
  57. package/dist/library.js.map +1 -1
  58. package/dist/ocifetch/channel.d.ts +84 -0
  59. package/dist/ocifetch/channel.d.ts.map +1 -1
  60. package/dist/ocifetch/channel.js +157 -2
  61. package/dist/ocifetch/channel.js.map +1 -1
  62. package/dist/ocifetch/constants.gen.d.ts +28 -0
  63. package/dist/ocifetch/constants.gen.d.ts.map +1 -1
  64. package/dist/ocifetch/constants.gen.js +30 -1
  65. package/dist/ocifetch/constants.gen.js.map +1 -1
  66. package/dist/ocifetch/dsse.d.ts +5 -1
  67. package/dist/ocifetch/dsse.d.ts.map +1 -1
  68. package/dist/ocifetch/dsse.js +10 -3
  69. package/dist/ocifetch/dsse.js.map +1 -1
  70. package/dist/ocifetch/ensure.d.ts +68 -8
  71. package/dist/ocifetch/ensure.d.ts.map +1 -1
  72. package/dist/ocifetch/ensure.js +305 -66
  73. package/dist/ocifetch/ensure.js.map +1 -1
  74. package/dist/ocifetch/errors.d.ts +101 -25
  75. package/dist/ocifetch/errors.d.ts.map +1 -1
  76. package/dist/ocifetch/errors.js +74 -36
  77. package/dist/ocifetch/errors.js.map +1 -1
  78. package/dist/ocifetch/hold.d.ts +66 -0
  79. package/dist/ocifetch/hold.d.ts.map +1 -0
  80. package/dist/ocifetch/hold.js +150 -0
  81. package/dist/ocifetch/hold.js.map +1 -0
  82. package/dist/ocifetch/http.d.ts +10 -2
  83. package/dist/ocifetch/http.d.ts.map +1 -1
  84. package/dist/ocifetch/http.js +31 -12
  85. package/dist/ocifetch/http.js.map +1 -1
  86. package/dist/ocifetch/index.d.ts +10 -5
  87. package/dist/ocifetch/index.d.ts.map +1 -1
  88. package/dist/ocifetch/index.js +8 -3
  89. package/dist/ocifetch/index.js.map +1 -1
  90. package/dist/ocifetch/localverify.d.ts +3 -1
  91. package/dist/ocifetch/localverify.d.ts.map +1 -1
  92. package/dist/ocifetch/localverify.js +6 -1
  93. package/dist/ocifetch/localverify.js.map +1 -1
  94. package/dist/ocifetch/lock.d.ts +2 -1
  95. package/dist/ocifetch/lock.d.ts.map +1 -1
  96. package/dist/ocifetch/lock.js +7 -5
  97. package/dist/ocifetch/lock.js.map +1 -1
  98. package/dist/ocifetch/oci.d.ts +45 -3
  99. package/dist/ocifetch/oci.d.ts.map +1 -1
  100. package/dist/ocifetch/oci.js +125 -58
  101. package/dist/ocifetch/oci.js.map +1 -1
  102. package/dist/ocifetch/prune.d.ts +48 -0
  103. package/dist/ocifetch/prune.d.ts.map +1 -0
  104. package/dist/ocifetch/prune.js +383 -0
  105. package/dist/ocifetch/prune.js.map +1 -0
  106. package/dist/ocifetch/referrers.d.ts +24 -0
  107. package/dist/ocifetch/referrers.d.ts.map +1 -1
  108. package/dist/ocifetch/referrers.js +92 -5
  109. package/dist/ocifetch/referrers.js.map +1 -1
  110. package/dist/ocifetch/resolve.d.ts +37 -0
  111. package/dist/ocifetch/resolve.d.ts.map +1 -0
  112. package/dist/ocifetch/resolve.js +90 -0
  113. package/dist/ocifetch/resolve.js.map +1 -0
  114. package/dist/ocifetch/retired.d.ts +61 -0
  115. package/dist/ocifetch/retired.d.ts.map +1 -0
  116. package/dist/ocifetch/retired.js +236 -0
  117. package/dist/ocifetch/retired.js.map +1 -0
  118. package/dist/ocifetch/revocation.d.ts +151 -0
  119. package/dist/ocifetch/revocation.d.ts.map +1 -0
  120. package/dist/ocifetch/revocation.js +481 -0
  121. package/dist/ocifetch/revocation.js.map +1 -0
  122. package/dist/ocifetch/types.d.ts +18 -2
  123. package/dist/ocifetch/types.d.ts.map +1 -1
  124. package/dist/ocifetch/types.js.map +1 -1
  125. package/dist/registry.d.ts +80 -3
  126. package/dist/registry.d.ts.map +1 -1
  127. package/dist/registry.js +168 -9
  128. package/dist/registry.js.map +1 -1
  129. package/dist/schema.d.ts +52 -9
  130. package/dist/schema.d.ts.map +1 -1
  131. package/dist/schema.js +6 -6
  132. package/dist/schema.js.map +1 -1
  133. package/dist/server.d.ts +27 -0
  134. package/dist/server.d.ts.map +1 -0
  135. package/dist/server.js +35 -0
  136. package/dist/server.js.map +1 -0
  137. package/dist/settings.d.ts +101 -9
  138. package/dist/settings.d.ts.map +1 -1
  139. package/dist/settings.js +201 -27
  140. package/dist/settings.js.map +1 -1
  141. package/dist/setup.d.ts +3 -2
  142. package/dist/setup.d.ts.map +1 -1
  143. package/dist/setup.js +2 -3
  144. package/dist/setup.js.map +1 -1
  145. package/package.json +2 -2
@@ -15,6 +15,20 @@
15
15
  * 5. loader steps 1-6, once per image; step 7 under the process setup
16
16
  * 6. the image's Library, whose `resolved` is the record that first opened it
17
17
  *
18
+ * registry.fetch(request) (public issue #492)
19
+ * ensure(request, fetch options) for this host, and nothing opened: no
20
+ * image loaded, no setup touched, nothing memoized or in `libraries()`.
21
+ *
22
+ * One fetch per request at a time: an open that misses the cache and may fetch
23
+ * and a `fetch` of the same request share the fetch in progress, and each gets
24
+ * its answer; a failed fetch is never remembered.
25
+ *
26
+ * Every build the registry opens or fetches is held by this process until it
27
+ * exits (`hold`, the shared flock on the entry's `verified.json`), so
28
+ * `chtypes prune` never removes it meanwhile (public issue #494). A build a
29
+ * concurrent prune removed between the lookup and the hold is looked up (or
30
+ * fetched) again, once.
31
+ *
18
32
  * This is the 2.0.0-dev registry: its fetch layer speaks the ABI v2 dev channel
19
33
  * (`./ocifetch/channel.ts`; `spec/abi-v2/docs.md`, rules r5 and r6). A pinning
20
34
  * option (`frozen`, `lockPath`, `lockWrite`, `update`) is refused at
@@ -27,9 +41,55 @@
27
41
  * installed build a floating request means is the fetch layer's.
28
42
  */
29
43
  import { type Library } from './library.js';
30
- import { type FetchV1Options, type Resolved } from './ocifetch/index.js';
31
- /** The fetch layer's options (bases, cache directory, system directories, trusted keys, token, allow-unsigned, offline, frozen, lock path, ...) without its test-only hooks. */
32
- export type FetchOptions = Omit<FetchV1Options, 'beforeIndexRename' | 'httpLog' | 'clock'>;
44
+ import { type Resolved } from './ocifetch/index.js';
45
+ /**
46
+ * What the fetch layer is configured with (`docs/guides/fetch-v1.md`; `docs/reference/bindings-v1.md` §6), under
47
+ * the same names as Go's, Python's and Rust's fields, each falling back to its environment variable and then to
48
+ * the fetch layer's own default. The fetch layer's test hooks are not here, and a registry opens libraries for
49
+ * this host only (`chtypes fetch --platform` names another).
50
+ */
51
+ export interface FetchOptions {
52
+ /** Base URLs, most preferred first; overrides `CHTYPES_ARTIFACTS_URL` and the built-in list. */
53
+ readonly bases?: readonly string[] | undefined;
54
+ /** The cache (`CHTYPES_CACHE`). */
55
+ readonly cacheDir?: string | undefined;
56
+ /** Read-only system directories searched after the cache; undefined is the built-in list, `[]` none. */
57
+ readonly systemDirs?: readonly string[] | undefined;
58
+ /** Raw 32-byte ed25519 public keys, each as 64 hex characters (`CHTYPES_TRUSTED_KEYS`'s spelling); the key id is derived. A non-empty list REPLACES the default trust. */
59
+ readonly trustedKeys?: readonly string[] | undefined;
60
+ /** Proceed, with a warning, when no signed statement verifies (`CHTYPES_ALLOW_UNSIGNED`). */
61
+ readonly allowUnsigned?: boolean | undefined;
62
+ /** Sent as `Authorization: Bearer <token>` to configured base hosts only (`CHTYPES_DOWNLOAD_TOKEN`). */
63
+ readonly token?: string | undefined;
64
+ /** The cache only, no request; on when this is true or `CHTYPES_OFFLINE` is `1` (public issue #528). */
65
+ readonly offline?: boolean | undefined;
66
+ /** Fetch exactly the lock's pinned digests. */
67
+ readonly frozen?: boolean | undefined;
68
+ /** The lock file. */
69
+ readonly lockPath?: string | undefined;
70
+ /** Write (or update) the lock after a successful fetch. */
71
+ readonly lockWrite?: boolean | undefined;
72
+ /** Re-resolve every locked request and rewrite the lock. */
73
+ readonly update?: boolean | undefined;
74
+ /** Strict mode (public issue #486): every fault of the cache and of an existing system dir is a `CacheUnusableError`. Unset reads `CHTYPES_CACHE_STRICT`. */
75
+ readonly strictCache?: boolean | undefined;
76
+ /** Use a build a verified revocation refuses, with one warning naming the advisory (fetch-v1.md, "Build-level revocation"). Per call, never an environment variable, and never with a lock or an update. */
77
+ readonly allowRevoked?: boolean | undefined;
78
+ /** A revocation status that cannot be read is the transport's error rather than one warning. */
79
+ readonly requireRevocationCheck?: boolean | undefined;
80
+ }
81
+ /**
82
+ * The cache root a fetch, list or `chtypes where` with `options` would use: `options.cacheDir`, else
83
+ * `CHTYPES_CACHE` (each used through its `v2-dev` subroot, rule r5 of `spec/abi-v2/docs.md`), else `${XDG_CACHE_HOME:-~/.cache}/chtypes/v2-dev`. It is the
84
+ * fetch layer's own resolution and the first entry of {@link searchDirs}; it creates nothing and reads no cache.
85
+ */
86
+ export declare function cacheRoot(options?: FetchOptions): string;
87
+ /**
88
+ * Every directory a lookup reads for installed builds, in the order it reads them: the cache root first, then
89
+ * each read-only system directory (`options.systemDirs`; undefined is the built-in list, `[]` none). The order is
90
+ * the fetch layer's own, and on a tie the earlier directory wins. It creates nothing and touches no file.
91
+ */
92
+ export declare function searchDirs(options?: FetchOptions): readonly string[];
33
93
  export interface RegistryOptions {
34
94
  readonly fetch?: FetchOptions | undefined;
35
95
  /** Fetch on a miss. Defaults to the `CHTYPES_AUTOFETCH` environment variable, and is off when that is unset. */
@@ -37,6 +97,13 @@ export interface RegistryOptions {
37
97
  /** Requests opened at construction, in list order. They never fetch, even with autofetch on. */
38
98
  readonly preload?: readonly string[] | undefined;
39
99
  }
100
+ /**
101
+ * Test only: `hook` is called with the request each time an open or a `fetch`
102
+ * of `registry` starts waiting on a fetch, its own or another's, so a test can
103
+ * hold a fetch until every caller it starts is waiting on it, on events rather
104
+ * than a clock. `undefined` removes it. Not part of the public API.
105
+ */
106
+ export declare function onFetchWaitForTests(registry: Registry, hook: ((request: string) => void) | undefined): void;
40
107
  export declare class Registry {
41
108
  #private;
42
109
  private constructor();
@@ -46,6 +113,16 @@ export declare class Registry {
46
113
  for(request: string): Promise<Library>;
47
114
  /** What is installed: the fetch layer's own listing. */
48
115
  installed(): Promise<readonly Resolved[]>;
116
+ /**
117
+ * Resolve, fetch, verify and install the build `request` names into the cache, as `chtypes fetch` does, and open
118
+ * nothing: no library is loaded and the process setup is untouched, so it needs no `setup` (public issue #492). It
119
+ * honors the registry's fetch options (offline, the cache, and under a production channel the bases, the trust and
120
+ * the lock), and it shares one fetch with a concurrent open or `fetch` of the same request. The `Resolved` names the
121
+ * installed version, build, digests and library path. The build is held by this process until it exits, so no
122
+ * `chtypes prune` removes it meanwhile (public issue #494). A refused spelling is a `UsageError`, as for `for`;
123
+ * every other failure is the fetch layer's own error, an `ArtifactError` with its code.
124
+ */
125
+ fetch(request: string): Promise<Resolved>;
49
126
  /** The libraries this registry has opened, in order of first open. */
50
127
  libraries(): readonly Library[];
51
128
  }
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAKH,OAAO,EAAE,KAAK,OAAO,EAAa,MAAM,cAAc,CAAC;AACvD,OAAO,EAGL,KAAK,cAAc,EAQnB,KAAK,QAAQ,EAId,MAAM,qBAAqB,CAAC;AAK7B,gLAAgL;AAChL,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,CAAC;AAE3F,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IAC1C,gHAAgH;IAChH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,gGAAgG;IAChG,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CAClD;AAiBD,qBAAa,QAAQ;;IAMnB,OAAO,eAGN;IAED,iKAAiK;IACjK,OAAa,IAAI,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAalE;IAED,uHAAuH;IACjH,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG3C;IAED,wDAAwD;IAClD,SAAS,IAAI,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC,CAE9C;IAED,sEAAsE;IACtE,SAAS,IAAI,SAAS,OAAO,EAAE,CAE9B;CAkEF"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAKH,OAAO,EAAE,KAAK,OAAO,EAAa,MAAM,cAAc,CAAC;AACvD,OAAO,EAgBL,KAAK,QAAQ,EAKd,MAAM,qBAAqB,CAAC;AAK7B;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,gGAAgG;IAChG,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/C,mCAAmC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,wGAAwG;IACxG,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACpD,0KAA0K;IAC1K,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACrD,6FAA6F;IAC7F,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7C,wGAAwG;IACxG,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,wGAAwG;IACxG,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,qBAAqB;IACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,2DAA2D;IAC3D,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,6JAA6J;IAC7J,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3C,4MAA4M;IAC5M,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5C,gGAAgG;IAChG,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACvD;AA0BD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE,YAAiB,GAAG,MAAM,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,OAAO,GAAE,YAAiB,GAAG,SAAS,MAAM,EAAE,CAExE;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IAC1C,gHAAgH;IAChH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,gGAAgG;IAChG,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CAClD;AAoBD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,CAG3G;AAED,qBAAa,QAAQ;;IAQnB,OAAO,eAMN;IAED,iKAAiK;IACjK,OAAa,IAAI,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAalE;IAED,uHAAuH;IACjH,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG3C;IAED,wDAAwD;IAClD,SAAS,IAAI,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC,CAE9C;IAED;;;;;;;;OAQG;IACG,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAU9C;IAED,sEAAsE;IACtE,SAAS,IAAI,SAAS,OAAO,EAAE,CAE9B;CAmHF"}
package/dist/registry.js CHANGED
@@ -15,6 +15,20 @@
15
15
  * 5. loader steps 1-6, once per image; step 7 under the process setup
16
16
  * 6. the image's Library, whose `resolved` is the record that first opened it
17
17
  *
18
+ * registry.fetch(request) (public issue #492)
19
+ * ensure(request, fetch options) for this host, and nothing opened: no
20
+ * image loaded, no setup touched, nothing memoized or in `libraries()`.
21
+ *
22
+ * One fetch per request at a time: an open that misses the cache and may fetch
23
+ * and a `fetch` of the same request share the fetch in progress, and each gets
24
+ * its answer; a failed fetch is never remembered.
25
+ *
26
+ * Every build the registry opens or fetches is held by this process until it
27
+ * exits (`hold`, the shared flock on the entry's `verified.json`), so
28
+ * `chtypes prune` never removes it meanwhile (public issue #494). A build a
29
+ * concurrent prune removed between the lookup and the hold is looked up (or
30
+ * fetched) again, once.
31
+ *
18
32
  * This is the 2.0.0-dev registry: its fetch layer speaks the ABI v2 dev channel
19
33
  * (`./ocifetch/channel.ts`; `spec/abi-v2/docs.md`, rules r5 and r6). A pinning
20
34
  * option (`frozen`, `lockPath`, `lockWrite`, `update`) is refused at
@@ -27,13 +41,65 @@
27
41
  * installed build a floating request means is the fetch layer's.
28
42
  */
29
43
  import os from 'node:os';
30
- import { LoaderCorruptError, openAbi2 } from './abi2/index.js';
44
+ import { corruptRefusal, openAbi2 } from './abi2/index.js';
31
45
  import { usageError } from './abi2/index.js';
32
46
  import { libraryOf } from './library.js';
33
- import { ArtifactMissingError, ensure, hostPlatformKey, isFilesystemError, listInstalled, missingNotes, PinningRefusedError, refusePinning, resolveInstalled, satisfiesRequest, withNotes, } from './ocifetch/index.js';
47
+ import { activeChannel, ArtifactMissingError, cacheRoot as fetchCacheRoot, ensure, checkInstalled, hold, hostPlatformKey, isFilesystemError, listInstalled, missingNotes, PinningRefusedError, refusePinning, removedWhileHeld, resolveInstalled, satisfiesRequest, searchDirs as fetchSearchDirs, withNotes, } from './ocifetch/index.js';
34
48
  import { ENV_AUTOFETCH_NAME, SPELLING_REGEX } from './ocifetch/constants.gen.js';
35
- import { withEnvironment } from './env.js';
49
+ import { trustedKeysOfHex, withEnvironment } from './env.js';
36
50
  import { commitSetup, latchSetup, settleFailedOpen, setupGeneration } from './setup.js';
51
+ /** The public options as the fetch layer's own: each set field copied, and the trusted keys read from hex. */
52
+ function fetchLayerOptions(options = {}) {
53
+ const out = {};
54
+ if (options.bases !== undefined)
55
+ out.bases = options.bases;
56
+ if (options.cacheDir !== undefined)
57
+ out.cacheDir = options.cacheDir;
58
+ if (options.systemDirs !== undefined)
59
+ out.systemDirs = options.systemDirs;
60
+ if (options.trustedKeys !== undefined) {
61
+ // A channel that honors no trust override ignores the option, with its one
62
+ // warning, whatever it holds (rule r6), as every binding does.
63
+ out.trustedKeys = activeChannel().overridable ? trustedKeysOfHex(options.trustedKeys, 'the trustedKeys option') : [];
64
+ }
65
+ if (options.allowUnsigned !== undefined)
66
+ out.allowUnsigned = options.allowUnsigned;
67
+ if (options.token !== undefined)
68
+ out.token = options.token;
69
+ if (options.offline !== undefined)
70
+ out.offline = options.offline;
71
+ if (options.frozen !== undefined)
72
+ out.frozen = options.frozen;
73
+ if (options.lockPath !== undefined)
74
+ out.lockPath = options.lockPath;
75
+ if (options.lockWrite !== undefined)
76
+ out.lockWrite = options.lockWrite;
77
+ if (options.update !== undefined)
78
+ out.update = options.update;
79
+ if (options.strictCache !== undefined)
80
+ out.strictCache = options.strictCache;
81
+ if (options.allowRevoked !== undefined)
82
+ out.allowRevoked = options.allowRevoked;
83
+ if (options.requireRevocationCheck !== undefined)
84
+ out.requireRevocationCheck = options.requireRevocationCheck;
85
+ return out;
86
+ }
87
+ /**
88
+ * The cache root a fetch, list or `chtypes where` with `options` would use: `options.cacheDir`, else
89
+ * `CHTYPES_CACHE` (each used through its `v2-dev` subroot, rule r5 of `spec/abi-v2/docs.md`), else `${XDG_CACHE_HOME:-~/.cache}/chtypes/v2-dev`. It is the
90
+ * fetch layer's own resolution and the first entry of {@link searchDirs}; it creates nothing and reads no cache.
91
+ */
92
+ export function cacheRoot(options = {}) {
93
+ return fetchCacheRoot(options.cacheDir);
94
+ }
95
+ /**
96
+ * Every directory a lookup reads for installed builds, in the order it reads them: the cache root first, then
97
+ * each read-only system directory (`options.systemDirs`; undefined is the built-in list, `[]` none). The order is
98
+ * the fetch layer's own, and on a tie the earlier directory wins. It creates nothing and touches no file.
99
+ */
100
+ export function searchDirs(options = {}) {
101
+ return fetchSearchDirs(fetchLayerOptions(options));
102
+ }
37
103
  function envFlag(name) {
38
104
  const v = process.env[name];
39
105
  return v !== undefined && ['1', 'true', 'yes', 'on'].includes(v.trim().toLowerCase());
@@ -44,19 +110,38 @@ function checkSpelling(request) {
44
110
  throw usageError(`${JSON.stringify(request)} is not a version spelling: give two, three or four dotted parts (26.8, 26.8.15, 26.8.15.10), with no "v" prefix and no channel suffix`);
45
111
  }
46
112
  }
113
+ /** The test hook a registry calls each time an open or a `fetch` starts waiting on a fetch, its own or another's; see `onFetchWaitForTests`. */
114
+ const fetchWaitHooks = new WeakMap();
115
+ /**
116
+ * Test only: `hook` is called with the request each time an open or a `fetch`
117
+ * of `registry` starts waiting on a fetch, its own or another's, so a test can
118
+ * hold a fetch until every caller it starts is waiting on it, on events rather
119
+ * than a clock. `undefined` removes it. Not part of the public API.
120
+ */
121
+ export function onFetchWaitForTests(registry, hook) {
122
+ if (hook === undefined)
123
+ fetchWaitHooks.delete(registry);
124
+ else
125
+ fetchWaitHooks.set(registry, hook);
126
+ }
47
127
  export class Registry {
48
128
  #fetch;
49
129
  #autofetch;
50
130
  #memo = new Map();
51
131
  #opened = [];
132
+ /** The fetches in progress, by request: every open that misses the cache and every `fetch` of the request waits on the one there. */
133
+ #fetches = new Map();
52
134
  constructor(options) {
53
- this.#fetch = withEnvironment(options.fetch ?? {});
135
+ // The environment fills what the caller left unset. CHTYPES_TARGET names
136
+ // `chtypes fetch`'s platform, never a registry's: it opens for this host.
137
+ const { platform: _cliOnly, ...fetch } = withEnvironment(fetchLayerOptions(options.fetch));
138
+ this.#fetch = fetch;
54
139
  this.#autofetch = options.autofetch ?? envFlag(ENV_AUTOFETCH_NAME);
55
140
  }
56
141
  /** Construct a registry. It opens nothing, except each `preload` request, in list order. A pinning fetch option is refused here, as a `UsageError` (rule r6). */
57
142
  static async open(options = {}) {
58
143
  try {
59
- refusePinning(options.fetch ?? {});
144
+ refusePinning(fetchLayerOptions(options.fetch));
60
145
  }
61
146
  catch (err) {
62
147
  if (err instanceof PinningRefusedError)
@@ -79,6 +164,27 @@ export class Registry {
79
164
  async installed() {
80
165
  return listInstalled(this.#fetch);
81
166
  }
167
+ /**
168
+ * Resolve, fetch, verify and install the build `request` names into the cache, as `chtypes fetch` does, and open
169
+ * nothing: no library is loaded and the process setup is untouched, so it needs no `setup` (public issue #492). It
170
+ * honors the registry's fetch options (offline, the cache, and under a production channel the bases, the trust and
171
+ * the lock), and it shares one fetch with a concurrent open or `fetch` of the same request. The `Resolved` names the
172
+ * installed version, build, digests and library path. The build is held by this process until it exits, so no
173
+ * `chtypes prune` removes it meanwhile (public issue #494). A refused spelling is a `UsageError`, as for `for`;
174
+ * every other failure is the fetch layer's own error, an `ArtifactError` with its code.
175
+ */
176
+ async fetch(request) {
177
+ checkSpelling(request); // misuse, refused before anything is attempted
178
+ if (hostPlatformKey(os.platform(), os.arch()) === undefined) {
179
+ throw new ArtifactMissingError(`chtypes: no artifact is published for this host (${os.platform()}-${os.arch()})`);
180
+ }
181
+ try {
182
+ return await this.#ensureHeld(request);
183
+ }
184
+ catch (err) {
185
+ throw typedFilesystemError(err);
186
+ }
187
+ }
82
188
  /** The libraries this registry has opened, in order of first open. */
83
189
  libraries() {
84
190
  return [...this.#opened];
@@ -102,15 +208,15 @@ export class Registry {
102
208
  return opening;
103
209
  }
104
210
  async #openRequest(request, mayFetch) {
105
- const platform = this.#fetch.platform ?? hostPlatformKey(os.platform(), os.arch());
211
+ const platform = hostPlatformKey(os.platform(), os.arch());
106
212
  if (platform === undefined) {
107
213
  throw new ArtifactMissingError(`chtypes: no artifact is published for this host (${os.platform()}-${os.arch()})`);
108
214
  }
109
215
  let resolved;
110
216
  try {
111
- resolved = await resolveInstalled(request, platform, this.#fetch);
217
+ resolved = await this.#lookupHeld(request, platform);
112
218
  if (resolved === undefined && mayFetch)
113
- resolved = await ensure(request, this.#fetch);
219
+ resolved = await this.#ensureHeld(request);
114
220
  }
115
221
  catch (err) {
116
222
  throw typedFilesystemError(err);
@@ -133,7 +239,7 @@ export class Registry {
133
239
  // own build_info must report a version within the request, whatever the
134
240
  // cache answered. The image stays loaded for the requests it does answer.
135
241
  if (!satisfiesRequest(request, library.version)) {
136
- throw new LoaderCorruptError({
242
+ throw corruptRefusal({
137
243
  reason: 'build_info_mismatch:clickhouse_version',
138
244
  path: resolved.libraryPath,
139
245
  want: request,
@@ -142,6 +248,59 @@ export class Registry {
142
248
  }
143
249
  return library;
144
250
  }
251
+ /**
252
+ * The installed lookup, then this process's hold on the build it found (`hold`), taken before anything reads the
253
+ * library. A build a concurrent prune removed between the two is looked up again, once; removed twice, it is a
254
+ * miss.
255
+ */
256
+ async #lookupHeld(request, platform) {
257
+ for (let attempt = 0; attempt < 2; attempt++) {
258
+ const resolved = await resolveInstalled(request, platform, this.#fetch);
259
+ if (resolved === undefined)
260
+ return undefined;
261
+ // The installed-build revocation check (check_installed; fetch-v1.md,
262
+ // "Build-level revocation"), before anything reads the library: at most one
263
+ // per build per process, its warnings printed once on stderr.
264
+ const checked = await checkInstalled(resolved, this.#fetch);
265
+ for (const w of checked.warnings)
266
+ process.stderr.write(`${w}\n`);
267
+ if (checked.error !== undefined)
268
+ throw checked.error;
269
+ if (hold(resolved.dir) !== 'vanished')
270
+ return resolved;
271
+ }
272
+ return undefined;
273
+ }
274
+ /**
275
+ * The request's one fetch (`#ensure`), then this process's hold on the build it installed. A build a concurrent
276
+ * prune removed between the two is fetched again, once; removed twice, it is `ArtifactMissingError`.
277
+ */
278
+ async #ensureHeld(request) {
279
+ for (let attempt = 0;; attempt++) {
280
+ const resolved = await this.#ensure(request);
281
+ if (hold(resolved.dir) !== 'vanished')
282
+ return resolved;
283
+ if (attempt === 1)
284
+ throw removedWhileHeld(request, resolved.dir);
285
+ }
286
+ }
287
+ /**
288
+ * Joins the fetch in progress for `request`, or starts it: every caller waiting on it gets its answer, and it
289
+ * leaves the table as it settles, so a failed fetch is never remembered and the next caller starts a new one.
290
+ */
291
+ #ensure(request) {
292
+ let flight = this.#fetches.get(request);
293
+ if (flight === undefined) {
294
+ const started = ensure(request, this.#fetch).finally(() => {
295
+ if (this.#fetches.get(request) === started)
296
+ this.#fetches.delete(request);
297
+ });
298
+ this.#fetches.set(request, started);
299
+ flight = started;
300
+ }
301
+ fetchWaitHooks.get(this)?.(request);
302
+ return flight;
303
+ }
145
304
  }
146
305
  /**
147
306
  * A filesystem failure in the fetch layer (an unwritable or full cache) as
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
package/dist/schema.d.ts CHANGED
@@ -16,23 +16,47 @@
16
16
  * thread, so the close guard of the other bindings reduces to this check: no
17
17
  * call is ever in flight while `close` runs.
18
18
  */
19
- import type { BlockHandle, Calls, FilterHandle, SchemaHandle } from './abi2/index.js';
19
+ import type { BlockHandle, Calls, FilterHandle, Posture, SchemaHandle } from './abi2/index.js';
20
20
  import { type Format } from './abi2/index.js';
21
21
  import { type BatchResult, type FilterResult, type RowResult, type SchemaDescription } from './documents.js';
22
- import { type BytesIn, type Settings } from './settings.js';
22
+ import type { Server } from './server.js';
23
+ import { type BytesIn, type ColumnDefault, type DeferDefaults, type ParamEncoding, type SettingValue, type Settings, type VerdictBasis } from './settings.js';
23
24
  /** Options of `Library.compileTable`: the profile settings a schema compiles under, and the zone that profile defaults to. */
24
25
  export interface CompileOptions {
25
26
  readonly settings?: Settings | undefined;
26
- /** In a compile profile it is a default for later calls on the schema; a compiled type always takes the image zone, never the profile's. */
27
- readonly sessionTimezone?: string | undefined;
27
+ /** In a compile profile it is a default for later calls on the schema; a compiled type always takes the image zone, never the profile's. Bytes that are not valid UTF-8 are sent in the `{"b64": ...}` object form. */
28
+ readonly sessionTimezone?: SettingValue | undefined;
29
+ /**
30
+ * Compile on this server (`Library.newServer`): the schema's home zone is the
31
+ * server's timezone, the server's settings layer under the schema's own, and a
32
+ * Replicated engine's ZooKeeper path and replica name expand the server's
33
+ * macros. A closed server is a `UsageError`, raised before any call; a server
34
+ * from another library is that library's own refusal, also a `UsageError`.
35
+ * Absent (or `undefined`) is no server: the schema is on the image's own server.
36
+ */
37
+ readonly server?: Server | undefined;
38
+ /** `schema_options.posture` (ABI v2): how the statement is compiled, `Posture.Create` (the default) as a server's CREATE TABLE, or `Posture.Load` as a server loads the stored definition of a table it holds. */
39
+ readonly posture?: Posture | undefined;
40
+ /** Any other member of `schema_options`: key to its value as JSON text, passed through as given (rule r1; a key also named above keeps this value). Text that is not valid JSON is a `UsageError` before any call. */
41
+ readonly schemaOptionsExtra?: Readonly<Record<string, string>> | undefined;
28
42
  }
29
- /** Options of `Schema.row` and `Schema.parseBlock`. */
43
+ /** Options of `Schema.row` and `Schema.parseBlock`: the settings, the zone, the INSERT column list and the `insert_options` members (ABI v2). */
30
44
  export interface RowOptions {
31
45
  readonly settings?: Settings | undefined;
32
46
  /** The per-call zone: written into the settings as `session_timezone`, verbatim. */
33
- readonly sessionTimezone?: string | undefined;
47
+ readonly sessionTimezone?: SettingValue | undefined;
34
48
  /** The INSERT column list. */
35
49
  readonly columns?: readonly BytesIn[] | undefined;
50
+ /** `insert_options.insertable_columns` (ABI v2): the columns an INSERT may supply. Absent leaves the member out (every column); `[]` is sent as `[]` (no column). */
51
+ readonly insertableColumns?: readonly BytesIn[] | undefined;
52
+ /** `insert_options.column_defaults`: per-call DEFAULT overrides. Absent leaves the member out; `[]` is sent as `[]`. */
53
+ readonly columnDefaults?: readonly ColumnDefault[] | undefined;
54
+ /** `insert_options.verdict_basis`. */
55
+ readonly verdictBasis?: VerdictBasis | undefined;
56
+ /** `insert_options.defer_defaults`. */
57
+ readonly deferDefaults?: DeferDefaults | undefined;
58
+ /** Any other member of `insert_options`: key to its value as JSON text, passed through as given (rule r1; a key also named above keeps this value). Text that is not valid JSON is a `UsageError` before any call. */
59
+ readonly insertOptionsExtra?: Readonly<Record<string, string>> | undefined;
36
60
  }
37
61
  /** Options of `Schema.rows`. */
38
62
  export interface RowsOptions extends RowOptions {
@@ -49,12 +73,31 @@ export interface FilterOptions {
49
73
  readonly params?: Settings | undefined;
50
74
  /** The filter's own zone and profile: fixed when it is compiled, and every evaluation of it runs its WHERE under them. */
51
75
  readonly settings?: Settings | undefined;
52
- readonly sessionTimezone?: string | undefined;
76
+ readonly sessionTimezone?: SettingValue | undefined;
77
+ /** `filter_options.param_encoding` (ABI v2): how a query parameter's value is read. */
78
+ readonly paramEncoding?: ParamEncoding | undefined;
79
+ /** Any other member of `filter_options`, as `insertOptionsExtra` is for `insert_options`. */
80
+ readonly filterOptionsExtra?: Readonly<Record<string, string>> | undefined;
53
81
  }
54
- /** Options of `Filter.rows`. The settings are PARSE settings only: they decide how the body is parsed, never the filter's WHERE. */
82
+ /**
83
+ * Options of `Filter.rows`. The settings are PARSE settings only: they decide how the body is parsed, never the filter's WHERE.
84
+ * `columns` and the `insert_options` members model the same INSERT as on `Schema.rows` (ABI v2).
85
+ */
55
86
  export interface EvalOptions {
56
87
  readonly settings?: Settings | undefined;
57
- readonly sessionTimezone?: string | undefined;
88
+ readonly sessionTimezone?: SettingValue | undefined;
89
+ /** The INSERT column list. */
90
+ readonly columns?: readonly BytesIn[] | undefined;
91
+ /** `insert_options.insertable_columns` (ABI v2): the columns an INSERT may supply. Absent leaves the member out (every column); `[]` is sent as `[]` (no column). */
92
+ readonly insertableColumns?: readonly BytesIn[] | undefined;
93
+ /** `insert_options.column_defaults`: per-call DEFAULT overrides. Absent leaves the member out; `[]` is sent as `[]`. */
94
+ readonly columnDefaults?: readonly ColumnDefault[] | undefined;
95
+ /** `insert_options.verdict_basis`. */
96
+ readonly verdictBasis?: VerdictBasis | undefined;
97
+ /** `insert_options.defer_defaults`. */
98
+ readonly deferDefaults?: DeferDefaults | undefined;
99
+ /** Any other member of `insert_options`: key to its value as JSON text, passed through as given (rule r1; a key also named above keeps this value). Text that is not valid JSON is a `UsageError` before any call. */
100
+ readonly insertOptionsExtra?: Readonly<Record<string, string>> | undefined;
58
101
  }
59
102
  /** A compiled `WHERE`-style expression bound to a schema. It holds its own zone, fixed at compile. */
60
103
  export declare class Filter {
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAyB,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EACL,KAAK,WAAW,EAKhB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,iBAAiB,EACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,OAAO,EAAwD,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAElH,8HAA8H;AAC9H,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IACzC,4IAA4I;IAC5I,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/C;AAED,uDAAuD;AACvD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IACzC,oFAAoF;IACpF,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,8BAA8B;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,CAAC;CACnD;AAED,gCAAgC;AAChC,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C,kEAAkE;IAClE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,2DAA2D;IAC3D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC;AAED,yCAAyC;AACzC,MAAM,WAAW,aAAa;IAC5B,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IACvC,0HAA0H;IAC1H,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/C;AAED,oIAAoI;AACpI,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/C;AASD,sGAAsG;AACtG,qBAAa,MAAM;;IAIjB,mDAAmD;IACnD,YAAY,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAI7C;IAED,4BAA4B;IAC5B,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,GAAE,WAAgB,GAAG,YAAY,CAI9E;IAED,oIAAoI;IACpI,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,CAE/B;IAED,uCAAuC;IACvC,KAAK,IAAI,IAAI,CAEZ;IAED,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAEvB;CACF;AAID,8DAA8D;AAC9D,qBAAa,KAAK;;IAGhB,gDAAgD;IAChD,YAAY,MAAM,EAAE,WAAW,EAG9B;IAED,sCAAsC;IACtC,KAAK,IAAI,IAAI,CAEZ;IAED,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAEvB;CACF;AAED,4HAA4H;AAC5H,qBAAa,MAAM;;IAIjB,mDAAmD;IACnD,YAAY,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAG7C;IAED,sCAAsC;IACtC,QAAQ,IAAI,iBAAiB,CAE5B;IAED,eAAe;IACf,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,GAAE,UAAe,GAAG,SAAS,CAUzE;IAED,oBAAoB;IACpB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,GAAE,WAAgB,GAAG,WAAW,CAc7E;IAED,gDAAgD;IAChD,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CAUhE;IAED,yBAAyB;IACzB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,GAAE,UAAe,GAAG,KAAK,CAU5E;IAED,qFAAqF;IACrF,KAAK,IAAI,IAAI,CAEZ;IAED,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAEvB;CACF"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
package/dist/schema.js CHANGED
@@ -18,7 +18,7 @@
18
18
  */
19
19
  import { DocFlags, EXPORT_NONE } from './abi2/index.js';
20
20
  import { decodeBatch, decodeFilterResult, decodeRow, decodeSchemaDescription, } from './documents.js';
21
- import { bytesIn, encodeColumns, encodeParams, encodeSettings } from './settings.js';
21
+ import { bytesIn, encodeColumns, encodeFilterOptions, encodeInsertOptions, encodeParams, encodeSettings, } from './settings.js';
22
22
  function bodyIn(body) {
23
23
  if (typeof body === 'string')
24
24
  throw new TypeError('chtypes: a body is bytes (a Uint8Array); it never accepts the text type');
@@ -37,7 +37,7 @@ export class Filter {
37
37
  }
38
38
  /** Evaluate over a body. */
39
39
  rows(format, body, options = {}) {
40
- return decodeFilterResult(this.#calls.filterEvalBody(this.#h, format, bodyIn(body), encodeSettings(options.settings, options.sessionTimezone)));
40
+ return decodeFilterResult(this.#calls.filterEvalBody(this.#h, format, bodyIn(body), encodeSettings(options.settings, options.sessionTimezone), encodeColumns(options.columns), encodeInsertOptions(options)));
41
41
  }
42
42
  /** Evaluate over a parsed block. The filter brings its zone and the block brought its parse zone, so there are no settings here. */
43
43
  eval(block) {
@@ -83,22 +83,22 @@ export class Schema {
83
83
  }
84
84
  /** One row. */
85
85
  row(format, body, options = {}) {
86
- return decodeRow(this.#calls.previewRow(this.#h, format, bodyIn(body), encodeSettings(options.settings, options.sessionTimezone), encodeColumns(options.columns)));
86
+ return decodeRow(this.#calls.previewRow(this.#h, format, bodyIn(body), encodeSettings(options.settings, options.sessionTimezone), encodeColumns(options.columns), encodeInsertOptions(options)));
87
87
  }
88
88
  /** A whole body. */
89
89
  rows(format, body, options = {}) {
90
90
  const filter = options.rowFilter === undefined ? null : filterHandles.get(options.rowFilter);
91
91
  const exporting = options.exportFormat !== undefined;
92
- const out = this.#calls.previewBatch(this.#h, format, bodyIn(body), encodeSettings(options.settings, options.sessionTimezone), encodeColumns(options.columns), filter, exporting ? options.exportFormat : EXPORT_NONE, options.docFlags ?? DocFlags.All);
92
+ const out = this.#calls.previewBatch(this.#h, format, bodyIn(body), encodeSettings(options.settings, options.sessionTimezone), encodeColumns(options.columns), filter, exporting ? options.exportFormat : EXPORT_NONE, options.docFlags ?? DocFlags.All, encodeInsertOptions(options));
93
93
  return decodeBatch(out.out, exporting ? out.outExport : undefined);
94
94
  }
95
95
  /** Compile a filter. Its zone is fixed here. */
96
96
  compileFilter(expr, options = {}) {
97
- return new Filter(this.#calls, this.#calls.filterCreate(this.#h, bytesIn(expr), encodeParams(options.params), encodeSettings(options.settings, options.sessionTimezone)));
97
+ return new Filter(this.#calls, this.#calls.filterCreate(this.#h, bytesIn(expr), encodeParams(options.params), encodeSettings(options.settings, options.sessionTimezone), encodeFilterOptions(options)));
98
98
  }
99
99
  /** Parse a body once. */
100
100
  parseBlock(format, body, options = {}) {
101
- return new Block(this.#calls.blockCreate(this.#h, format, bodyIn(body), encodeSettings(options.settings, options.sessionTimezone), encodeColumns(options.columns)));
101
+ return new Block(this.#calls.blockCreate(this.#h, format, bodyIn(body), encodeSettings(options.settings, options.sessionTimezone), encodeColumns(options.columns), encodeInsertOptions(options)));
102
102
  }
103
103
  /** Release this schema; idempotent. Filters and blocks made from it keep working. */
104
104
  close() {
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * `Server`: one ClickHouse server as a profile describes it (`chs_server`,
3
+ * `input:server_profile`, `chs_server_create`, `chs_server_free`), made by
4
+ * `Library.newServer` and passed to `Library.compileTable` as `server`. The
5
+ * binding serializes the profile and validates nothing in it (`./settings.ts`).
6
+ *
7
+ * A server is immutable once made. `close` releases the caller's reference; a
8
+ * schema compiled on the server holds its own counted reference inside the
9
+ * library, so a server and its schemas close in any order. A closed server
10
+ * raises a `UsageError` before any call (its freed handle would otherwise cross
11
+ * as NULL, which the library takes for no server). A `FinalizationRegistry`
12
+ * frees what the caller abandons.
13
+ */
14
+ import type { ServerHandle } from './abi2/index.js';
15
+ export type { ServerProfile } from './settings.js';
16
+ /** The generated layer's handle behind a `Server`. */
17
+ export declare function serverHandleOf(server: Server): ServerHandle;
18
+ /** One ClickHouse server, made by `Library.newServer`. */
19
+ export declare class Server {
20
+ #private;
21
+ /** Not for callers: use `Library.newServer`. */
22
+ constructor(handle: ServerHandle);
23
+ /** Release this server; idempotent. Schemas compiled on it keep working. */
24
+ close(): void;
25
+ [Symbol.dispose](): void;
26
+ }
27
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAInD,sDAAsD;AACtD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAE3D;AAED,0DAA0D;AAC1D,qBAAa,MAAM;;IAGjB,gDAAgD;IAChD,YAAY,MAAM,EAAE,YAAY,EAG/B;IAED,4EAA4E;IAC5E,KAAK,IAAI,IAAI,CAEZ;IAED,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAEvB;CACF"}