@chkit/plugin-backfill 0.1.0-beta.2 → 0.1.0-beta.21

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 (164) hide show
  1. package/README.md +170 -0
  2. package/dist/args.d.ts +109 -6
  3. package/dist/args.d.ts.map +1 -1
  4. package/dist/args.js +73 -97
  5. package/dist/args.js.map +1 -1
  6. package/dist/async-backfill.d.ts +64 -0
  7. package/dist/async-backfill.d.ts.map +1 -0
  8. package/dist/async-backfill.js +251 -0
  9. package/dist/async-backfill.js.map +1 -0
  10. package/dist/check.d.ts +9 -0
  11. package/dist/check.d.ts.map +1 -0
  12. package/dist/check.js +79 -0
  13. package/dist/check.js.map +1 -0
  14. package/dist/chunking/analyze.d.ts +8 -0
  15. package/dist/chunking/analyze.d.ts.map +1 -0
  16. package/dist/chunking/analyze.js +8 -0
  17. package/dist/chunking/analyze.js.map +1 -0
  18. package/dist/chunking/boundary-codec.d.ts +10 -0
  19. package/dist/chunking/boundary-codec.d.ts.map +1 -0
  20. package/dist/chunking/boundary-codec.js +79 -0
  21. package/dist/chunking/boundary-codec.js.map +1 -0
  22. package/dist/chunking/build.d.ts +11 -0
  23. package/dist/chunking/build.d.ts.map +1 -0
  24. package/dist/chunking/build.js +51 -0
  25. package/dist/chunking/build.js.map +1 -0
  26. package/dist/chunking/e2e/constants.d.ts +2 -0
  27. package/dist/chunking/e2e/constants.d.ts.map +1 -0
  28. package/dist/chunking/e2e/constants.js +2 -0
  29. package/dist/chunking/e2e/constants.js.map +1 -0
  30. package/dist/chunking/e2e/seed-datasets.script.d.ts +20 -0
  31. package/dist/chunking/e2e/seed-datasets.script.d.ts.map +1 -0
  32. package/dist/chunking/e2e/seed-datasets.script.js +134 -0
  33. package/dist/chunking/e2e/seed-datasets.script.js.map +1 -0
  34. package/dist/chunking/introspect.d.ts +40 -0
  35. package/dist/chunking/introspect.d.ts.map +1 -0
  36. package/dist/chunking/introspect.js +187 -0
  37. package/dist/chunking/introspect.js.map +1 -0
  38. package/dist/chunking/partition-slices.d.ts +14 -0
  39. package/dist/chunking/partition-slices.d.ts.map +1 -0
  40. package/dist/chunking/partition-slices.js +111 -0
  41. package/dist/chunking/partition-slices.js.map +1 -0
  42. package/dist/chunking/planner.d.ts +3 -0
  43. package/dist/chunking/planner.d.ts.map +1 -0
  44. package/dist/chunking/planner.js +343 -0
  45. package/dist/chunking/planner.js.map +1 -0
  46. package/dist/chunking/services/distribution-source.d.ts +11 -0
  47. package/dist/chunking/services/distribution-source.d.ts.map +1 -0
  48. package/dist/chunking/services/distribution-source.js +60 -0
  49. package/dist/chunking/services/distribution-source.js.map +1 -0
  50. package/dist/chunking/services/metadata-source.d.ts +4 -0
  51. package/dist/chunking/services/metadata-source.d.ts.map +1 -0
  52. package/dist/chunking/services/metadata-source.js +138 -0
  53. package/dist/chunking/services/metadata-source.js.map +1 -0
  54. package/dist/chunking/services/row-probe.d.ts +14 -0
  55. package/dist/chunking/services/row-probe.d.ts.map +1 -0
  56. package/dist/chunking/services/row-probe.js +62 -0
  57. package/dist/chunking/services/row-probe.js.map +1 -0
  58. package/dist/chunking/splitter.d.ts +20 -0
  59. package/dist/chunking/splitter.d.ts.map +1 -0
  60. package/dist/chunking/splitter.js +76 -0
  61. package/dist/chunking/splitter.js.map +1 -0
  62. package/dist/chunking/sql.d.ts +20 -0
  63. package/dist/chunking/sql.d.ts.map +1 -0
  64. package/dist/chunking/sql.js +304 -0
  65. package/dist/chunking/sql.js.map +1 -0
  66. package/dist/chunking/strategies/equal-width-split.d.ts +4 -0
  67. package/dist/chunking/strategies/equal-width-split.d.ts.map +1 -0
  68. package/dist/chunking/strategies/equal-width-split.js +46 -0
  69. package/dist/chunking/strategies/equal-width-split.js.map +1 -0
  70. package/dist/chunking/strategies/group-by-key-split.d.ts +3 -0
  71. package/dist/chunking/strategies/group-by-key-split.d.ts.map +1 -0
  72. package/dist/chunking/strategies/group-by-key-split.js +54 -0
  73. package/dist/chunking/strategies/group-by-key-split.js.map +1 -0
  74. package/dist/chunking/strategies/metadata-single-chunk.d.ts +3 -0
  75. package/dist/chunking/strategies/metadata-single-chunk.d.ts.map +1 -0
  76. package/dist/chunking/strategies/metadata-single-chunk.js +5 -0
  77. package/dist/chunking/strategies/metadata-single-chunk.js.map +1 -0
  78. package/dist/chunking/strategies/quantile-range-split.d.ts +5 -0
  79. package/dist/chunking/strategies/quantile-range-split.d.ts.map +1 -0
  80. package/dist/chunking/strategies/quantile-range-split.js +132 -0
  81. package/dist/chunking/strategies/quantile-range-split.js.map +1 -0
  82. package/dist/chunking/strategies/refinement.d.ts +4 -0
  83. package/dist/chunking/strategies/refinement.d.ts.map +1 -0
  84. package/dist/chunking/strategies/refinement.js +61 -0
  85. package/dist/chunking/strategies/refinement.js.map +1 -0
  86. package/dist/chunking/strategies/string-prefix-split.d.ts +4 -0
  87. package/dist/chunking/strategies/string-prefix-split.d.ts.map +1 -0
  88. package/dist/chunking/strategies/string-prefix-split.js +73 -0
  89. package/dist/chunking/strategies/string-prefix-split.js.map +1 -0
  90. package/dist/chunking/strategies/temporal-bucket-split.d.ts +4 -0
  91. package/dist/chunking/strategies/temporal-bucket-split.d.ts.map +1 -0
  92. package/dist/chunking/strategies/temporal-bucket-split.js +67 -0
  93. package/dist/chunking/strategies/temporal-bucket-split.js.map +1 -0
  94. package/dist/chunking/strategy-policy.d.ts +3 -0
  95. package/dist/chunking/strategy-policy.d.ts.map +1 -0
  96. package/dist/chunking/strategy-policy.js +4 -0
  97. package/dist/chunking/strategy-policy.js.map +1 -0
  98. package/dist/chunking/types.d.ts +139 -0
  99. package/dist/chunking/types.d.ts.map +1 -0
  100. package/dist/chunking/types.js +2 -0
  101. package/dist/chunking/types.js.map +1 -0
  102. package/dist/chunking/utils/binary-string.d.ts +8 -0
  103. package/dist/chunking/utils/binary-string.d.ts.map +1 -0
  104. package/dist/chunking/utils/binary-string.js +52 -0
  105. package/dist/chunking/utils/binary-string.js.map +1 -0
  106. package/dist/chunking/utils/ids.d.ts +4 -0
  107. package/dist/chunking/utils/ids.d.ts.map +1 -0
  108. package/dist/chunking/utils/ids.js +11 -0
  109. package/dist/chunking/utils/ids.js.map +1 -0
  110. package/dist/chunking/utils/ranges.d.ts +5 -0
  111. package/dist/chunking/utils/ranges.d.ts.map +1 -0
  112. package/dist/chunking/utils/ranges.js +19 -0
  113. package/dist/chunking/utils/ranges.js.map +1 -0
  114. package/dist/detect.d.ts +13 -0
  115. package/dist/detect.d.ts.map +1 -0
  116. package/dist/detect.js +113 -0
  117. package/dist/detect.js.map +1 -0
  118. package/dist/index.d.ts +3 -0
  119. package/dist/index.d.ts.map +1 -1
  120. package/dist/index.js +1 -0
  121. package/dist/index.js.map +1 -1
  122. package/dist/logging.d.ts +12 -0
  123. package/dist/logging.d.ts.map +1 -0
  124. package/dist/logging.js +61 -0
  125. package/dist/logging.js.map +1 -0
  126. package/dist/options.d.ts +151 -4
  127. package/dist/options.d.ts.map +1 -1
  128. package/dist/options.js +161 -109
  129. package/dist/options.js.map +1 -1
  130. package/dist/payload.d.ts +7 -17
  131. package/dist/payload.d.ts.map +1 -1
  132. package/dist/payload.js +7 -19
  133. package/dist/payload.js.map +1 -1
  134. package/dist/planner.d.ts +10 -8
  135. package/dist/planner.d.ts.map +1 -1
  136. package/dist/planner.js +76 -97
  137. package/dist/planner.js.map +1 -1
  138. package/dist/plugin.d.ts +4 -3
  139. package/dist/plugin.d.ts.map +1 -1
  140. package/dist/plugin.js +311 -215
  141. package/dist/plugin.js.map +1 -1
  142. package/dist/queries.d.ts +21 -0
  143. package/dist/queries.d.ts.map +1 -0
  144. package/dist/queries.js +113 -0
  145. package/dist/queries.js.map +1 -0
  146. package/dist/runtime.d.ts +14 -0
  147. package/dist/runtime.d.ts.map +1 -1
  148. package/dist/runtime.js +162 -83
  149. package/dist/runtime.js.map +1 -1
  150. package/dist/sdk.d.ts +12 -0
  151. package/dist/sdk.d.ts.map +1 -0
  152. package/dist/sdk.js +9 -0
  153. package/dist/sdk.js.map +1 -0
  154. package/dist/state.d.ts +16 -28
  155. package/dist/state.d.ts.map +1 -1
  156. package/dist/state.js +73 -127
  157. package/dist/state.js.map +1 -1
  158. package/dist/table-config.d.ts +9 -0
  159. package/dist/table-config.d.ts.map +1 -0
  160. package/dist/table-config.js +2 -0
  161. package/dist/table-config.js.map +1 -0
  162. package/dist/types.d.ts +49 -114
  163. package/dist/types.d.ts.map +1 -1
  164. package/package.json +31 -2
package/dist/planner.d.ts CHANGED
@@ -1,13 +1,15 @@
1
1
  import type { ResolvedChxConfig } from '@chkit/core';
2
- import type { BuildBackfillPlanOutput, NormalizedBackfillPluginOptions } from './types.js';
2
+ import type { PlanOptions } from './options.js';
3
+ import type { BuildBackfillPlanOutput } from './types.js';
3
4
  export declare function buildBackfillPlan(input: {
4
- target: string;
5
- from: string;
6
- to: string;
5
+ opts: PlanOptions;
7
6
  configPath: string;
8
- config: Pick<ResolvedChxConfig, 'metaDir'>;
9
- options: NormalizedBackfillPluginOptions;
10
- chunkHours?: number;
11
- forceLargeWindow?: boolean;
7
+ config: Pick<ResolvedChxConfig, 'metaDir' | 'schema'>;
8
+ clickhouse?: {
9
+ url: string;
10
+ database: string;
11
+ };
12
+ clickhouseQuery: <T>(sql: string, settings?: Record<string, string | number | boolean | undefined>) => Promise<T[]>;
13
+ querySettings?: Record<string, string | number | boolean | undefined>;
12
14
  }): Promise<BuildBackfillPlanOutput>;
13
15
  //# sourceMappingURL=planner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../src/planner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAYpD,OAAO,KAAK,EAGV,uBAAuB,EACvB,+BAA+B,EAChC,MAAM,YAAY,CAAA;AAsFnB,wBAAsB,iBAAiB,CAAC,KAAK,EAAE;IAC7C,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAA;IAC1C,OAAO,EAAE,+BAA+B,CAAA;IACxC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAiEnC"}
1
+ {"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../src/planner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAOpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAQ/C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAEzD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE;IAC7C,IAAI,EAAE,WAAW,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,SAAS,GAAG,QAAQ,CAAC,CAAA;IACrD,UAAU,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9C,eAAe,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,CAAA;IACnH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAA;CACtE,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAqGnC"}
package/dist/planner.js CHANGED
@@ -1,113 +1,92 @@
1
+ import { dirname } from 'node:path';
2
+ import { loadSchemaDefinitions } from '@chkit/core/schema-loader';
3
+ import { encodeChunkPlanForPersistence } from './chunking/boundary-codec.js';
4
+ import { generateChunkPlan } from './chunking/planner.js';
5
+ import { findMvForTarget } from './detect.js';
1
6
  import { BackfillConfigError } from './errors.js';
2
- import { backfillPaths, computeBackfillStateDir, hashId, planIdentity, readExistingPlan, stableSerialize, writeJson, } from './state.js';
3
- function ensureHoursWithinLimits(input) {
4
- const fromMillis = new Date(input.from).getTime();
5
- const toMillis = new Date(input.to).getTime();
6
- if (toMillis <= fromMillis) {
7
- throw new BackfillConfigError('Invalid backfill window. Expected --to to be after --from.');
7
+ import { backfillPaths, computeBackfillStateDir, computeEnvironmentFingerprint, nowIso, writeJson, } from './state.js';
8
+ export async function buildBackfillPlan(input) {
9
+ const { opts } = input;
10
+ const [database, table] = opts.target.split('.');
11
+ if (!database || !table) {
12
+ throw new BackfillConfigError('Invalid target format. Expected <database.table>.');
8
13
  }
9
- const durationHours = (toMillis - fromMillis) / (1000 * 60 * 60);
10
- if (durationHours > input.limits.maxWindowHours && !input.forceLargeWindow) {
11
- throw new BackfillConfigError(`Requested window (${durationHours.toFixed(2)} hours) exceeds limits.maxWindowHours=${input.limits.maxWindowHours}. Retry with --force-large-window to acknowledge risk.`);
14
+ const chunkPlan = await generateChunkPlan({
15
+ database,
16
+ table,
17
+ from: opts.from,
18
+ to: opts.to,
19
+ targetChunkBytes: opts.maxChunkBytes,
20
+ query: input.clickhouseQuery,
21
+ querySettings: input.querySettings,
22
+ });
23
+ const firstPartition = chunkPlan.partitions[0];
24
+ if (!firstPartition) {
25
+ throw new BackfillConfigError(`No partitions found for ${opts.target}${opts.from || opts.to ? ' within the specified time range' : ''}. The table may be empty.`);
12
26
  }
13
- }
14
- function buildChunkSqlTemplate(chunk) {
15
- return [
16
- `/* chkit backfill plan=${chunk.planId} chunk=${chunk.chunkId} token=${chunk.token} */`,
17
- `INSERT INTO ${chunk.target}`,
18
- `SELECT *`,
19
- `FROM ${chunk.target}`,
20
- `WHERE event_time >= toDateTime('${chunk.from}')`,
21
- ` AND event_time < toDateTime('${chunk.to}');`,
22
- ].join('\n');
23
- }
24
- function buildChunks(input) {
25
- const fromMillis = new Date(input.from).getTime();
26
- const toMillis = new Date(input.to).getTime();
27
- const chunkMillis = input.chunkHours * 60 * 60 * 1000;
28
- const chunks = [];
29
- let current = fromMillis;
30
- while (current < toMillis) {
31
- const next = Math.min(current + chunkMillis, toMillis);
32
- const chunkFrom = new Date(current).toISOString();
33
- const chunkTo = new Date(next).toISOString();
34
- const idSeed = `${input.planId}:${chunkFrom}:${chunkTo}`;
35
- const chunkId = hashId(`chunk:${idSeed}`).slice(0, 16);
36
- const token = input.requireIdempotencyToken ? hashId(`token:${idSeed}`) : '';
37
- chunks.push({
38
- id: chunkId,
39
- from: chunkFrom,
40
- to: chunkTo,
41
- status: 'pending',
42
- attempts: 0,
43
- idempotencyToken: token,
44
- sqlTemplate: buildChunkSqlTemplate({
45
- planId: input.planId,
46
- chunkId,
47
- token,
48
- target: input.target,
49
- from: chunkFrom,
50
- to: chunkTo,
51
- }),
27
+ const env = computeEnvironmentFingerprint(input.clickhouse);
28
+ const derivedFrom = opts.from ?? chunkPlan.partitions.reduce((min, partition) => (partition.minTime < min ? partition.minTime : min), firstPartition.minTime);
29
+ const derivedTo = opts.to ?? chunkPlan.partitions.reduce((max, partition) => (partition.maxTime > max ? partition.maxTime : max), firstPartition.maxTime);
30
+ const stateDir = computeBackfillStateDir(input.config, input.configPath, opts.stateDir);
31
+ const paths = backfillPaths(stateDir, chunkPlan.planId);
32
+ let mvAsQuery;
33
+ let targetColumns;
34
+ try {
35
+ const definitions = await loadSchemaDefinitions(input.config.schema, {
36
+ cwd: dirname(input.configPath),
52
37
  });
53
- current = next;
38
+ const mv = findMvForTarget(definitions, database, table);
39
+ if (mv) {
40
+ mvAsQuery = mv.as;
41
+ const tableDef = definitions.find((definition) => definition.kind === 'table' && definition.database === database && definition.name === table);
42
+ if (tableDef?.kind === 'table') {
43
+ targetColumns = tableDef.columns.map((column) => column.name);
44
+ }
45
+ }
54
46
  }
55
- return chunks;
56
- }
57
- export async function buildBackfillPlan(input) {
58
- const chunkHours = input.chunkHours ?? input.options.defaults.chunkHours;
59
- if (chunkHours * 60 < input.options.limits.minChunkMinutes) {
60
- throw new BackfillConfigError(`Chunk size ${chunkHours}h is below limits.minChunkMinutes=${input.options.limits.minChunkMinutes}.`);
47
+ catch {
48
+ // Schema load failed, fall back to direct copy.
61
49
  }
62
- ensureHoursWithinLimits({
63
- from: input.from,
64
- to: input.to,
65
- limits: input.options.limits,
66
- forceLargeWindow: input.forceLargeWindow ?? false,
67
- });
68
- const planId = hashId(planIdentity(input.target, input.from, input.to, chunkHours)).slice(0, 16);
69
- const stateDir = computeBackfillStateDir(input.config, input.configPath, input.options);
70
- const paths = backfillPaths(stateDir, planId);
71
50
  const plan = {
72
- planId,
73
- target: input.target,
74
- createdAt: '1970-01-01T00:00:00.000Z',
75
- status: 'planned',
76
- from: input.from,
77
- to: input.to,
78
- chunks: buildChunks({
79
- planId,
80
- target: input.target,
81
- from: input.from,
82
- to: input.to,
83
- chunkHours,
84
- requireIdempotencyToken: input.options.defaults.requireIdempotencyToken,
85
- }),
51
+ planId: chunkPlan.planId,
52
+ target: opts.target,
53
+ createdAt: nowIso(),
54
+ ...(env ? { environment: env } : {}),
55
+ from: derivedFrom,
56
+ to: derivedTo,
57
+ chunkPlan,
58
+ execution: {
59
+ mode: mvAsQuery ? 'mv_replay' : 'copy',
60
+ sourceTarget: opts.target,
61
+ ...(mvAsQuery ? { mvAsQuery } : {}),
62
+ ...(targetColumns ? { targetColumns } : {}),
63
+ requireIdempotencyToken: opts.requireIdempotencyToken,
64
+ },
86
65
  options: {
87
- chunkHours,
88
- maxParallelChunks: input.options.defaults.maxParallelChunks,
89
- maxRetriesPerChunk: input.options.defaults.maxRetriesPerChunk,
90
- requireIdempotencyToken: input.options.defaults.requireIdempotencyToken,
66
+ maxChunkBytes: opts.maxChunkBytes,
67
+ maxParallelChunks: opts.maxParallelChunks,
68
+ maxRetriesPerChunk: opts.maxRetriesPerChunk,
69
+ requireIdempotencyToken: opts.requireIdempotencyToken,
70
+ sortKeyColumn: chunkPlan.table.sortKeys[0]?.name,
71
+ },
72
+ policy: {
73
+ requireDryRunBeforeRun: opts.requireDryRunBeforeRun,
74
+ requireExplicitWindow: opts.requireExplicitWindow,
75
+ blockOverlappingRuns: opts.blockOverlappingRuns,
76
+ failCheckOnRequiredPendingBackfill: opts.failCheckOnRequiredPendingBackfill,
77
+ },
78
+ limits: {
79
+ maxWindowHours: opts.maxWindowHours,
80
+ minChunkMinutes: opts.minChunkMinutes,
91
81
  },
92
- policy: input.options.policy,
93
- limits: input.options.limits,
94
82
  };
95
- const existing = await readExistingPlan(paths.planPath);
96
- if (existing) {
97
- if (stableSerialize(existing) !== stableSerialize(plan)) {
98
- throw new BackfillConfigError(`Backfill plan already exists at ${paths.planPath} but differs from current planning output. Remove it if you intentionally changed planning parameters.`);
99
- }
100
- return {
101
- plan: existing,
102
- planPath: paths.planPath,
103
- existed: true,
104
- };
105
- }
106
- await writeJson(paths.planPath, plan);
83
+ await writeJson(paths.planPath, {
84
+ ...plan,
85
+ chunkPlan: encodeChunkPlanForPersistence(plan.chunkPlan),
86
+ });
107
87
  return {
108
88
  plan,
109
89
  planPath: paths.planPath,
110
- existed: false,
111
90
  };
112
91
  }
113
92
  //# sourceMappingURL=planner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"planner.js","sourceRoot":"","sources":["../src/planner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"planner.js","sourceRoot":"","sources":["../src/planner.ts"],"names":[],"mappings":"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"}
package/dist/plugin.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import type { BackfillPlugin, BackfillPluginOptions, BackfillPluginRegistration } from './types.js';
2
- export declare function createBackfillPlugin(options?: BackfillPluginOptions): BackfillPlugin;
3
- export declare function backfill(options?: BackfillPluginOptions): BackfillPluginRegistration;
1
+ import { type PluginConfig } from './options.js';
2
+ import type { BackfillPlugin, BackfillPluginRegistration } from './types.js';
3
+ export declare function createBackfillPlugin(options?: PluginConfig): BackfillPlugin;
4
+ export declare function backfill(options?: PluginConfig): BackfillPluginRegistration;
4
5
  //# sourceMappingURL=plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAA;AAEnG,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,qBAA0B,GAAG,cAAc,CAkTxF;AAED,wBAAgB,QAAQ,CAAC,OAAO,GAAE,qBAA0B,GAAG,0BAA0B,CAOxF"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAOA,OAAO,EAWL,KAAK,YAAY,EAClB,MAAM,cAAc,CAAA;AAcrB,OAAO,KAAK,EACV,cAAc,EACd,0BAA0B,EAE3B,MAAM,YAAY,CAAA;AAkJnB,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,YAAiB,GAAG,cAAc,CAkS/E;AAED,wBAAgB,QAAQ,CAAC,OAAO,GAAE,YAAiB,GAAG,0BAA0B,CAO/E"}