@certik/skynet 0.10.42 → 0.10.43

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/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.10.43
4
+
5
+ - Fixed modeIndexer one and range mode
6
+ - Fixed `dynamodb`.`getRecordsByKey` pagination handling bug
7
+
3
8
  ## 0.10.42
4
9
 
5
10
  - Added "contentType" option for `s3`.`writeFile`
package/dynamodb.js CHANGED
@@ -168,8 +168,23 @@ async function getRecordsByKey(tableName, keys, indexName) {
168
168
 
169
169
  try {
170
170
  data = await docClient.query(params).promise();
171
- return data.Items;
171
+
172
+ let items = data.Items;
173
+
174
+ while (data.LastEvaluatedKey) {
175
+ data = await docClient
176
+ .query({
177
+ ExclusiveStartKey: data.LastEvaluatedKey,
178
+ ...params,
179
+ })
180
+ .promise();
181
+
182
+ items = items.concat(data.Items);
183
+ }
184
+
185
+ return items;
172
186
  } catch (err) {
187
+ console.log(err);
173
188
  if (err.statusCode && err.statusCode === 400) {
174
189
  return null;
175
190
  }
package/indexer.js CHANGED
@@ -103,6 +103,10 @@ function createModeIndexerApp({
103
103
  return fillNumberRange(from, to);
104
104
  }
105
105
 
106
+ function offsetRange(from, to) {
107
+ return fillRange(from, to).length;
108
+ }
109
+
106
110
  async function runMode({ mode, from, to, status, verbose, ...selectorFlags }) {
107
111
  if (status) {
108
112
  const stateItem = await getRecordByKey(STATE_TABLE_NAME, {
@@ -122,13 +126,13 @@ function createModeIndexerApp({
122
126
  process.exit(0);
123
127
  }
124
128
 
125
- if (from === 0) {
129
+ if (!from) {
126
130
  from = await finalState.getMinId(selectorFlags);
127
131
  }
128
132
 
129
133
  inline.log(
130
134
  `[MODE INDEXER] mode=${mode}, from=${from}, to=${
131
- to > 0 ? to : "undefined"
135
+ to ? to : "undefined"
132
136
  }, env=${getEnvironment()}, ${toSelectorString(selectorFlags, ", ")}`
133
137
  );
134
138
 
@@ -136,14 +140,14 @@ function createModeIndexerApp({
136
140
  await runReset(selectorFlags);
137
141
  } else if (mode === "rebuild") {
138
142
  await runReset(selectorFlags);
139
- await runRebuild(selectorFlags, from, to > 0 ? to : await finalState.getMaxId(selectorFlags), verbose);
143
+ await runRebuild(selectorFlags, from, to ? to : await finalState.getMaxId(selectorFlags), verbose);
140
144
  } else if (mode === "resume-rebuild") {
141
145
  const previousRebuildEnds = await getIndexerLatestId(name, selectorFlags);
142
146
 
143
147
  await runRebuild(
144
148
  selectorFlags,
145
149
  previousRebuildEnds ? increaseId(finalState.type, previousRebuildEnds, 1) : from,
146
- to > 0 ? to : await finalState.getMaxId(selectorFlags),
150
+ to ? to : await finalState.getMaxId(selectorFlags),
147
151
  verbose
148
152
  );
149
153
  } else if (mode === "validate" || mode === "validation") {
@@ -151,17 +155,17 @@ function createModeIndexerApp({
151
155
 
152
156
  const previousValidatedTo = await getIndexerValidatedId(name, selectorFlags);
153
157
 
154
- const shouldSaveState = to === 0;
158
+ const shouldSaveState = !to;
155
159
 
156
160
  await runValidate(
157
161
  selectorFlags,
158
- from > 0 ? from : previousValidatedTo,
159
- to > 0 ? to : previousRebuildEnds,
162
+ from ? from : previousValidatedTo,
163
+ to ? to : previousRebuildEnds,
160
164
  shouldSaveState,
161
165
  verbose
162
166
  );
163
167
  } else if (mode === "one") {
164
- if (to > 0) {
168
+ if (to) {
165
169
  inline.log("[MODE INDEXER] one mode ignores --to option. you may want to use range mode instead");
166
170
  }
167
171
  await runRange(selectorFlags, from, from, verbose);
@@ -265,7 +269,7 @@ function createModeIndexerApp({
265
269
  }
266
270
 
267
271
  inline.log(
268
- `[MODE INDEXER] validated ${to - from + 1} ${finalState.type} successfully in ${Date.now() - startTime}ms`
272
+ `[MODE INDEXER] validated ${offsetRange(from, to)} ${finalState.type} successfully in ${Date.now() - startTime}ms`
269
273
  );
270
274
  }
271
275
 
@@ -367,13 +371,13 @@ function createModeIndexerApp({
367
371
 
368
372
  if (failedIds.length > 0) {
369
373
  inline.log(
370
- `[MODE INDEXER] built ${to - from + 1} ${finalState.type} with some failed ${finalState.type}`,
374
+ `[MODE INDEXER] built ${offsetRange(from, to)} ${finalState.type}(s) with some failed ${finalState.type}`,
371
375
  failedIds
372
376
  );
373
377
  process.exit(1);
374
378
  } else {
375
379
  inline.log(
376
- `[MODE INDEXER] built ${to - from + 1} ${finalState.type} successfully in ${Date.now() - startTime}ms`
380
+ `[MODE INDEXER] built ${offsetRange(from, to)} ${finalState.type}(s) successfully in ${Date.now() - startTime}ms`
377
381
  );
378
382
  process.exit(0);
379
383
  }
@@ -386,7 +390,7 @@ function createModeIndexerApp({
386
390
 
387
391
  // only build when rebuild succeed
388
392
  if (stateItem && stateItem.value === "succeed") {
389
- const from = (await getIndexerLatestId(name, selectorFlags)) + 1;
393
+ const from = increaseId(await getIndexerLatestId(name, selectorFlags), 1);
390
394
 
391
395
  const startTime = Date.now();
392
396
  const to = await state.getMaxId(selectorFlags);
@@ -504,13 +508,11 @@ ${getSelectorDesc(selector)}
504
508
  },
505
509
  from: {
506
510
  alias: "since",
507
- type: "number",
508
- default: 0,
511
+ type: "string",
509
512
  },
510
513
  to: {
511
514
  alias: "until",
512
- type: "number",
513
- default: 0,
515
+ type: "string",
514
516
  },
515
517
  status: {
516
518
  type: "boolean",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@certik/skynet",
3
- "version": "0.10.42",
3
+ "version": "0.10.43",
4
4
  "description": "Skynet Shared JS library",
5
5
  "main": "index.js",
6
6
  "author": "CertiK Engineering",