@ganju/utils 0.0.21 → 0.0.22
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/dist/data.d.ts +4 -4
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +16 -2
- package/dist/dataApi.d.ts +32 -2
- package/dist/dataApi.d.ts.map +1 -1
- package/dist/dataApi.js +11 -1
- package/dist/dataCompiler.d.ts +1 -0
- package/dist/dataCompiler.d.ts.map +1 -1
- package/dist/dataCompiler.js +3 -2
- package/dist/dataEngine.d.ts +17 -1
- package/dist/dataEngine.d.ts.map +1 -1
- package/dist/dataEngine.js +368 -10
- package/dist/dataImport.d.ts +3 -0
- package/dist/dataImport.d.ts.map +1 -1
- package/dist/dataImport.js +12 -2
- package/dist/dataRpc.d.ts +9 -1
- package/dist/dataRpc.d.ts.map +1 -1
- package/dist/dataSheet.d.ts +34 -0
- package/dist/dataSheet.d.ts.map +1 -0
- package/dist/dataSheet.js +100 -0
- package/dist/dataTriggers.d.ts +43 -4
- package/dist/dataTriggers.d.ts.map +1 -1
- package/dist/dataTriggers.js +401 -19
- package/dist/dataTypes.d.ts +23 -0
- package/dist/dataTypes.d.ts.map +1 -1
- package/dist/dataTypes.js +15 -1
- package/dist/index.d.ts +35 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/localizeDataError.d.ts.map +1 -1
- package/dist/localizeDataError.js +45 -1
- package/dist/schema.d.ts +33 -4
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +26 -3
- package/dist/untrustedContent.d.ts +7 -0
- package/dist/untrustedContent.d.ts.map +1 -1
- package/dist/untrustedContent.js +13 -1
- package/package.json +1 -1
- package/src/data.ts +19 -3
- package/src/dataApi.ts +14 -2
- package/src/dataCompiler.ts +4 -1
- package/src/dataEngine.ts +485 -10
- package/src/dataImport.ts +16 -1
- package/src/dataRpc.ts +10 -1
- package/src/dataSheet.ts +147 -0
- package/src/dataTriggers.ts +528 -19
- package/src/dataTypes.ts +46 -0
- package/src/index.ts +4 -0
- package/src/localizeDataError.ts +82 -1
- package/src/schema.ts +27 -3
- package/src/untrustedContent.ts +15 -0
package/dist/data.d.ts
CHANGED
|
@@ -3,8 +3,8 @@ export { DATA_IDENTIFIER_PATTERN, DATA_SYSTEM_COLUMNS, DATA_HIDDEN_COLUMNS, iden
|
|
|
3
3
|
export { createTableSql, columnDefinitionSql, desiredIndexes, desiredTriggers, ftsCreateSql, ftsTableName, searchableColumns, sqlLiteral } from './dataDdl';
|
|
4
4
|
export { chunkRows, rowsPerInsert, ftsMatch, keysetCondition, encodeCursor, decodeCursor, isSensitiveWrite, fileUriOf, unknownFileUris, tidyArgs, zoned } from './dataCompiler';
|
|
5
5
|
export type { SqlValue, KeysetCursor, SortKey } from './dataCompiler';
|
|
6
|
-
export { INTERNAL_MIGRATIONS, INTERNAL_SCHEMA_VERSION, hasInternalTables, getMeta, setMeta, migrateInternal, loadSchema, toTableInput, normaliseColumn, translateSqliteError, describe, query, write, rowHistory, pruneHistory, deleteImpact, fileLinks, replaceFileLinks, createTable, updateTable, dropTable, addColumn, updateColumn, dropColumn, columnChangeNeedsRebuild, dropColumnNeedsRebuild, readTableCopy, clearFailedTableCopy, copyTableStep, writeReachesCopy, assertActor, assertWritable, exportRows } from './dataEngine';
|
|
7
|
-
export type { SqlRow, SqlRunner } from './dataEngine';
|
|
6
|
+
export { INTERNAL_MIGRATIONS, INTERNAL_SCHEMA_VERSION, hasInternalTables, getMeta, setMeta, migrateInternal, loadSchema, toTableInput, normaliseColumn, translateSqliteError, describe, query, write, rowHistory, pruneHistory, deleteImpact, fileLinks, replaceFileLinks, createTable, updateTable, dropTable, addColumn, updateColumn, dropColumn, columnChangeNeedsRebuild, dropColumnNeedsRebuild, readTableCopy, clearFailedTableCopy, copyTableStep, writeReachesCopy, assertActor, assertWritable, assertNotSynced, syncRows, recordSyncFailure, exportRows } from './dataEngine';
|
|
7
|
+
export type { SqlRow, SqlRunner, SheetSyncArgs } from './dataEngine';
|
|
8
8
|
export { adviseIndexes, adviceDoubled } from './dataIndexAdvice';
|
|
9
9
|
export type { IndexAdviceCandidate, IndexAdviceInput, IndexAdviceStat } from './dataIndexAdvice';
|
|
10
10
|
export { DATA_QUERY_PARAM_TYPES, DATA_MAX_QUERIES, DATA_MAX_QUERY_SQL, DATA_MAX_QUERY_PARAMS, DATA_DEFAULT_QUERY_ROWS, compileQuerySql, checkQueryPlan, listQueries, queriesFor, saveQuery, dropQuery, runQuery } from './dataQueries';
|
|
@@ -12,6 +12,6 @@ export type { DataQuery, DataQueryInput, DataQueryParam, DataQueryParamType } fr
|
|
|
12
12
|
export type { ProjectDatabaseRpc, DatabaseInfo, ExportFile, ExportFormat, ExportState, RestoreResult } from './dataRpc';
|
|
13
13
|
export { DATA_TOOL_DESCRIBE, DATA_TOOL_QUERY, DATA_TOOL_WRITE, DATA_TOOL_ADMIN, DATA_TOOL_NAMES, DATA_TOOL_TITLES, DATA_TOOL_MAX_LIMIT, DATA_ADMIN_ACTIONS, hasDataToolTables, dataToolDefinitions, dataAdminToolDefinition } from './dataTools';
|
|
14
14
|
export type { DataToolDefinition, DataAdminAction } from './dataTools';
|
|
15
|
-
export { DATA_TRIGGER_EVENTS, DATA_TRIGGER_ACTIONS, DATA_MAX_TRIGGERS, DATA_TRIGGER_MAX_DEPTH, DATA_TRIGGER_DEFAULT_RATE, DATA_TRIGGER_MAX_RATE, DATA_OUTBOX_BATCH, DATA_TRIGGER_MAX_MESSAGE_BYTES, utf8Bytes, conditionMatches, renderTriggerText, renderCustomerMessage, readEventRow, normaliseTrigger, normaliseCustomerAction, listTriggers, getTrigger, saveTrigger, dropTrigger, setTriggerEnabled, replaceManagedTriggers, collectTriggerEvents, readOutbox, deleteOutbox, outboxSize, clearOutbox, triggersUsingColumn, renameColumnInTriggers } from './dataTriggers';
|
|
16
|
-
export type { DataTrigger, DataTriggerAction, DataTriggerActionType, DataTriggerCondition, DataTriggerCustomerMessage, DataTriggerEvent, DataTriggerEventMessage, DataTriggerInput, DataTriggerTemplate, DataTriggerTest, DataTriggerWithSecret, SavedTrigger } from './dataTriggers';
|
|
15
|
+
export { DATA_TRIGGER_EVENTS, DATA_CHANGE_EVENTS, DATA_TRIGGER_ACTIONS, DATA_MAX_TRIGGERS, DATA_TRIGGER_MAX_DEPTH, DATA_TRIGGER_DEFAULT_RATE, DATA_TRIGGER_MAX_RATE, DATA_OUTBOX_BATCH, DATA_TRIGGER_MAX_MESSAGE_BYTES, DATA_TIME_SCAN_MS, DATA_TIME_MIN_MINUTES, DATA_TIME_MAX_MINUTES, DATA_MAX_TIME_TRIGGERS, DATA_TIME_EVENTS_PER_SCAN, DATA_TIME_EVENTS_PER_DAY, utf8Bytes, conditionMatches, renderTriggerText, renderCustomerMessage, readEventRow, normaliseTrigger, normaliseCustomerAction, listTriggers, getTrigger, saveTrigger, dropTrigger, setTriggerEnabled, replaceManagedTriggers, collectTriggerEvents, readOutbox, deleteOutbox, outboxSize, clearOutbox, triggersUsingColumn, renameColumnInTriggers, timeTriggersCountingFrom, syncTimeIndexes, hasTimeTriggers, scanTimeTriggers } from './dataTriggers';
|
|
16
|
+
export type { DataTrigger, DataTriggerAction, DataTriggerActionType, DataTriggerCondition, DataTriggerCustomerMessage, DataTriggerEvent, DataTriggerEventMessage, DataTriggerInput, DataTriggerSchedule, DataTriggerTemplate, DataTriggerTest, DataTriggerWithSecret, SavedTrigger, TimeScanResult } from './dataTriggers';
|
|
17
17
|
//# sourceMappingURL=data.d.ts.map
|
package/dist/data.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAEA,cAAc,aAAa,CAAC;AAC5B,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACX,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,SAAS,EACT,aAAa,EACb,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,QAAQ,EACR,KAAK,EACN,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,OAAO,EACP,OAAO,EACP,eAAe,EACf,UAAU,EACV,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,QAAQ,EACR,KAAK,EACL,KAAK,EACL,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,SAAS,EACT,SAAS,EACT,YAAY,EACZ,UAAU,EACV,wBAAwB,EACxB,sBAAsB,EACtB,aAAa,EACb,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,UAAU,EACX,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"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"}
|
package/dist/data.js
CHANGED
|
@@ -15,8 +15,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.dropColumnNeedsRebuild = exports.columnChangeNeedsRebuild = exports.dropColumn = exports.updateColumn = exports.addColumn = exports.dropTable = exports.updateTable = exports.createTable = exports.replaceFileLinks = exports.fileLinks = exports.deleteImpact = exports.pruneHistory = exports.rowHistory = exports.write = exports.query = exports.describe = exports.translateSqliteError = exports.normaliseColumn = exports.toTableInput = exports.loadSchema = exports.migrateInternal = exports.setMeta = exports.getMeta = exports.hasInternalTables = exports.INTERNAL_SCHEMA_VERSION = exports.INTERNAL_MIGRATIONS = exports.zoned = exports.tidyArgs = exports.unknownFileUris = exports.fileUriOf = exports.isSensitiveWrite = exports.decodeCursor = exports.encodeCursor = exports.keysetCondition = exports.ftsMatch = exports.rowsPerInsert = exports.chunkRows = exports.sqlLiteral = exports.searchableColumns = exports.ftsTableName = exports.ftsCreateSql = exports.desiredTriggers = exports.desiredIndexes = exports.columnDefinitionSql = exports.createTableSql = exports.isValidIdentifier = exports.identifierIssue = exports.DATA_HIDDEN_COLUMNS = exports.DATA_SYSTEM_COLUMNS = exports.DATA_IDENTIFIER_PATTERN = void 0;
|
|
18
|
-
exports.
|
|
19
|
-
exports.renameColumnInTriggers = exports.triggersUsingColumn = exports.clearOutbox = exports.outboxSize = exports.deleteOutbox = exports.readOutbox = exports.collectTriggerEvents = exports.replaceManagedTriggers = exports.setTriggerEnabled = exports.dropTrigger = void 0;
|
|
18
|
+
exports.DATA_TIME_EVENTS_PER_DAY = exports.DATA_TIME_EVENTS_PER_SCAN = exports.DATA_MAX_TIME_TRIGGERS = exports.DATA_TIME_MAX_MINUTES = exports.DATA_TIME_MIN_MINUTES = exports.DATA_TIME_SCAN_MS = exports.DATA_TRIGGER_MAX_MESSAGE_BYTES = exports.DATA_OUTBOX_BATCH = exports.DATA_TRIGGER_MAX_RATE = exports.DATA_TRIGGER_DEFAULT_RATE = exports.DATA_TRIGGER_MAX_DEPTH = exports.DATA_MAX_TRIGGERS = exports.DATA_TRIGGER_ACTIONS = exports.DATA_CHANGE_EVENTS = exports.DATA_TRIGGER_EVENTS = exports.dataAdminToolDefinition = exports.dataToolDefinitions = exports.hasDataToolTables = exports.DATA_ADMIN_ACTIONS = exports.DATA_TOOL_MAX_LIMIT = exports.DATA_TOOL_TITLES = exports.DATA_TOOL_NAMES = exports.DATA_TOOL_ADMIN = exports.DATA_TOOL_WRITE = exports.DATA_TOOL_QUERY = exports.DATA_TOOL_DESCRIBE = exports.runQuery = exports.dropQuery = exports.saveQuery = exports.queriesFor = exports.listQueries = exports.checkQueryPlan = exports.compileQuerySql = exports.DATA_DEFAULT_QUERY_ROWS = exports.DATA_MAX_QUERY_PARAMS = exports.DATA_MAX_QUERY_SQL = exports.DATA_MAX_QUERIES = exports.DATA_QUERY_PARAM_TYPES = exports.adviceDoubled = exports.adviseIndexes = exports.exportRows = exports.recordSyncFailure = exports.syncRows = exports.assertNotSynced = exports.assertWritable = exports.assertActor = exports.writeReachesCopy = exports.copyTableStep = exports.clearFailedTableCopy = exports.readTableCopy = void 0;
|
|
19
|
+
exports.scanTimeTriggers = exports.hasTimeTriggers = exports.syncTimeIndexes = exports.timeTriggersCountingFrom = exports.renameColumnInTriggers = exports.triggersUsingColumn = exports.clearOutbox = exports.outboxSize = exports.deleteOutbox = exports.readOutbox = exports.collectTriggerEvents = exports.replaceManagedTriggers = exports.setTriggerEnabled = exports.dropTrigger = exports.saveTrigger = exports.getTrigger = exports.listTriggers = exports.normaliseCustomerAction = exports.normaliseTrigger = exports.readEventRow = exports.renderCustomerMessage = exports.renderTriggerText = exports.conditionMatches = exports.utf8Bytes = void 0;
|
|
20
20
|
// Entry point for `@ganju/utils/data`: everything a project's database and
|
|
21
21
|
// its callers share, without pulling in the rest of the package.
|
|
22
22
|
__exportStar(require("./dataTypes"), exports);
|
|
@@ -80,6 +80,9 @@ Object.defineProperty(exports, "copyTableStep", { enumerable: true, get: functio
|
|
|
80
80
|
Object.defineProperty(exports, "writeReachesCopy", { enumerable: true, get: function () { return dataEngine_1.writeReachesCopy; } });
|
|
81
81
|
Object.defineProperty(exports, "assertActor", { enumerable: true, get: function () { return dataEngine_1.assertActor; } });
|
|
82
82
|
Object.defineProperty(exports, "assertWritable", { enumerable: true, get: function () { return dataEngine_1.assertWritable; } });
|
|
83
|
+
Object.defineProperty(exports, "assertNotSynced", { enumerable: true, get: function () { return dataEngine_1.assertNotSynced; } });
|
|
84
|
+
Object.defineProperty(exports, "syncRows", { enumerable: true, get: function () { return dataEngine_1.syncRows; } });
|
|
85
|
+
Object.defineProperty(exports, "recordSyncFailure", { enumerable: true, get: function () { return dataEngine_1.recordSyncFailure; } });
|
|
83
86
|
Object.defineProperty(exports, "exportRows", { enumerable: true, get: function () { return dataEngine_1.exportRows; } });
|
|
84
87
|
var dataIndexAdvice_1 = require("./dataIndexAdvice");
|
|
85
88
|
Object.defineProperty(exports, "adviseIndexes", { enumerable: true, get: function () { return dataIndexAdvice_1.adviseIndexes; } });
|
|
@@ -111,6 +114,7 @@ Object.defineProperty(exports, "dataToolDefinitions", { enumerable: true, get: f
|
|
|
111
114
|
Object.defineProperty(exports, "dataAdminToolDefinition", { enumerable: true, get: function () { return dataTools_1.dataAdminToolDefinition; } });
|
|
112
115
|
var dataTriggers_1 = require("./dataTriggers");
|
|
113
116
|
Object.defineProperty(exports, "DATA_TRIGGER_EVENTS", { enumerable: true, get: function () { return dataTriggers_1.DATA_TRIGGER_EVENTS; } });
|
|
117
|
+
Object.defineProperty(exports, "DATA_CHANGE_EVENTS", { enumerable: true, get: function () { return dataTriggers_1.DATA_CHANGE_EVENTS; } });
|
|
114
118
|
Object.defineProperty(exports, "DATA_TRIGGER_ACTIONS", { enumerable: true, get: function () { return dataTriggers_1.DATA_TRIGGER_ACTIONS; } });
|
|
115
119
|
Object.defineProperty(exports, "DATA_MAX_TRIGGERS", { enumerable: true, get: function () { return dataTriggers_1.DATA_MAX_TRIGGERS; } });
|
|
116
120
|
Object.defineProperty(exports, "DATA_TRIGGER_MAX_DEPTH", { enumerable: true, get: function () { return dataTriggers_1.DATA_TRIGGER_MAX_DEPTH; } });
|
|
@@ -118,6 +122,12 @@ Object.defineProperty(exports, "DATA_TRIGGER_DEFAULT_RATE", { enumerable: true,
|
|
|
118
122
|
Object.defineProperty(exports, "DATA_TRIGGER_MAX_RATE", { enumerable: true, get: function () { return dataTriggers_1.DATA_TRIGGER_MAX_RATE; } });
|
|
119
123
|
Object.defineProperty(exports, "DATA_OUTBOX_BATCH", { enumerable: true, get: function () { return dataTriggers_1.DATA_OUTBOX_BATCH; } });
|
|
120
124
|
Object.defineProperty(exports, "DATA_TRIGGER_MAX_MESSAGE_BYTES", { enumerable: true, get: function () { return dataTriggers_1.DATA_TRIGGER_MAX_MESSAGE_BYTES; } });
|
|
125
|
+
Object.defineProperty(exports, "DATA_TIME_SCAN_MS", { enumerable: true, get: function () { return dataTriggers_1.DATA_TIME_SCAN_MS; } });
|
|
126
|
+
Object.defineProperty(exports, "DATA_TIME_MIN_MINUTES", { enumerable: true, get: function () { return dataTriggers_1.DATA_TIME_MIN_MINUTES; } });
|
|
127
|
+
Object.defineProperty(exports, "DATA_TIME_MAX_MINUTES", { enumerable: true, get: function () { return dataTriggers_1.DATA_TIME_MAX_MINUTES; } });
|
|
128
|
+
Object.defineProperty(exports, "DATA_MAX_TIME_TRIGGERS", { enumerable: true, get: function () { return dataTriggers_1.DATA_MAX_TIME_TRIGGERS; } });
|
|
129
|
+
Object.defineProperty(exports, "DATA_TIME_EVENTS_PER_SCAN", { enumerable: true, get: function () { return dataTriggers_1.DATA_TIME_EVENTS_PER_SCAN; } });
|
|
130
|
+
Object.defineProperty(exports, "DATA_TIME_EVENTS_PER_DAY", { enumerable: true, get: function () { return dataTriggers_1.DATA_TIME_EVENTS_PER_DAY; } });
|
|
121
131
|
Object.defineProperty(exports, "utf8Bytes", { enumerable: true, get: function () { return dataTriggers_1.utf8Bytes; } });
|
|
122
132
|
Object.defineProperty(exports, "conditionMatches", { enumerable: true, get: function () { return dataTriggers_1.conditionMatches; } });
|
|
123
133
|
Object.defineProperty(exports, "renderTriggerText", { enumerable: true, get: function () { return dataTriggers_1.renderTriggerText; } });
|
|
@@ -138,3 +148,7 @@ Object.defineProperty(exports, "outboxSize", { enumerable: true, get: function (
|
|
|
138
148
|
Object.defineProperty(exports, "clearOutbox", { enumerable: true, get: function () { return dataTriggers_1.clearOutbox; } });
|
|
139
149
|
Object.defineProperty(exports, "triggersUsingColumn", { enumerable: true, get: function () { return dataTriggers_1.triggersUsingColumn; } });
|
|
140
150
|
Object.defineProperty(exports, "renameColumnInTriggers", { enumerable: true, get: function () { return dataTriggers_1.renameColumnInTriggers; } });
|
|
151
|
+
Object.defineProperty(exports, "timeTriggersCountingFrom", { enumerable: true, get: function () { return dataTriggers_1.timeTriggersCountingFrom; } });
|
|
152
|
+
Object.defineProperty(exports, "syncTimeIndexes", { enumerable: true, get: function () { return dataTriggers_1.syncTimeIndexes; } });
|
|
153
|
+
Object.defineProperty(exports, "hasTimeTriggers", { enumerable: true, get: function () { return dataTriggers_1.hasTimeTriggers; } });
|
|
154
|
+
Object.defineProperty(exports, "scanTimeTriggers", { enumerable: true, get: function () { return dataTriggers_1.scanTimeTriggers; } });
|
package/dist/dataApi.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export interface DataApiRoute {
|
|
|
10
10
|
body?: z.ZodType;
|
|
11
11
|
query?: z.ZodObject;
|
|
12
12
|
returns: string;
|
|
13
|
-
status?: 200 | 201;
|
|
13
|
+
status?: 200 | 201 | 202;
|
|
14
14
|
file?: boolean;
|
|
15
15
|
}
|
|
16
16
|
export declare const DATA_API_ROUTES: {
|
|
@@ -135,6 +135,11 @@ export declare const DATA_API_ROUTES: {
|
|
|
135
135
|
}>>;
|
|
136
136
|
customerScoped: z.ZodOptional<z.ZodBoolean>;
|
|
137
137
|
history: z.ZodOptional<z.ZodBoolean>;
|
|
138
|
+
source: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
139
|
+
uri: z.ZodString;
|
|
140
|
+
sheet: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
141
|
+
key: z.ZodString;
|
|
142
|
+
}, z.core.$strict>>>;
|
|
138
143
|
columns: z.ZodArray<z.ZodObject<{
|
|
139
144
|
name: z.ZodString;
|
|
140
145
|
type: z.ZodEnum<{
|
|
@@ -179,8 +184,14 @@ export declare const DATA_API_ROUTES: {
|
|
|
179
184
|
readonly path: "/table/:table";
|
|
180
185
|
readonly tag: "Tables";
|
|
181
186
|
readonly summary: "Rename a table or change its settings";
|
|
187
|
+
readonly description: "`source` (`{ uri, sheet?, key }`) keeps the table's rows in step with a spreadsheet or CSV in the project's knowledge, matched by `key`, a unique column: the sheet wins, and row writes to the table are refused until `source` is set back to null. It syncs when the file changes and from `POST …/sync`; `sync` on the table says how the last one went.";
|
|
182
188
|
readonly body: z.ZodObject<{
|
|
183
189
|
name: z.ZodOptional<z.ZodString>;
|
|
190
|
+
source: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
191
|
+
uri: z.ZodString;
|
|
192
|
+
sheet: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
193
|
+
key: z.ZodString;
|
|
194
|
+
}, z.core.$strict>>>>;
|
|
184
195
|
label: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
185
196
|
description: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
186
197
|
displayColumn: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
@@ -195,6 +206,15 @@ export declare const DATA_API_ROUTES: {
|
|
|
195
206
|
}, z.core.$strict>;
|
|
196
207
|
readonly returns: "{ table }";
|
|
197
208
|
};
|
|
209
|
+
readonly syncTable: {
|
|
210
|
+
readonly method: "post";
|
|
211
|
+
readonly path: "/table/:table/sync";
|
|
212
|
+
readonly tag: "Tables";
|
|
213
|
+
readonly summary: "Sync a table from its sheet now";
|
|
214
|
+
readonly description: "Queues a sync of a table that has a `source`: a Google Drive or OneDrive file is fetched again first if it changed. New keys are inserted, rows that differ updated (actor `system:sheet-sync`, so triggers fire), rows whose key is gone deleted. A sheet that doesn't fit (a missing key column, a repeated key, a value a column won't take) changes nothing; the table's `sync` says why.";
|
|
215
|
+
readonly returns: "{ queued: true }";
|
|
216
|
+
readonly status: 202;
|
|
217
|
+
};
|
|
198
218
|
readonly dropTable: {
|
|
199
219
|
readonly method: "delete";
|
|
200
220
|
readonly path: "/table/:table";
|
|
@@ -492,7 +512,7 @@ export declare const DATA_API_ROUTES: {
|
|
|
492
512
|
readonly path: "/trigger";
|
|
493
513
|
readonly tag: "Triggers";
|
|
494
514
|
readonly summary: "Save a trigger";
|
|
495
|
-
readonly description: "Runs one action when rows of `table` are inserted, updated or deleted, and `when` holds: `{ \"status\": { \"changedTo\": \"READY\" } }` fires on the transition only; `changedFrom`, `changed: true` and `equals` test a column too, and `all` / `any` combine them. The action is one of `function` (a function of this project, given `{ event, table, row, previous, actor, eventId, triggerId }`), `webhook` (an https URL, sent a POST signed in `x-ganju-signature`), `chat` (`{ channelId, chatId, text }`), `email` (`{ to, subject, text }`) or `customer` (`{ text, template? }`, to the row's customer on a customer-scoped table). Texts take `{{field}}` from the row, inserted as plain text. Saving under an existing name replaces it, unless `replace` is false; with no `name`, it always creates a new trigger, named from the table, event and action and numbered past those taken. Left out, `enabled` keeps a saved trigger on or off as it was. A new webhook answers with its signing `secret`, shown this once. An `email` goes to the organization's members; any other address is sent a link to confirm first, and those still waiting come back as `confirming`. Delivery is at least once: every event carries an `eventId`.";
|
|
515
|
+
readonly description: "Runs one action when rows of `table` are inserted, updated or deleted, and `when` holds: `{ \"status\": { \"changedTo\": \"READY\" } }` fires on the transition only; `changedFrom`, `changed: true` and `equals` test a column too, and `all` / `any` combine them. With `\"on\": \"time\"` it fires instead once a row comes due, with nothing written: `after` is `{ column, minutes }`, the column `created_at`, `updated_at` or a date or datetime column (a date counts from midnight in the database's time zone) and `minutes` 5 to 43,200, negative on a date or datetime for before it. Its `when` tests `equals` only, read when the row comes due; rows already due when it is saved don't fire, and each row fires once per due time (an `updated_at` trigger again after the next change). Due rows are looked for every 5 minutes, up to 100 events per trigger per scan; a database holds up to 10 time triggers, and the database's time triggers share 2,000 events a day (UTC): past that, each time trigger with another row due that day is turned off and the organization's admins are emailed. A time trigger is also turned off when its runs are paused (the plan no longer includes Data, or the month's trigger runs reached the plan's limit). The action is one of `function` (a function of this project, given `{ event, table, row, previous, actor, eventId, triggerId, dueAt? }`), `webhook` (an https URL, sent a POST signed in `x-ganju-signature`), `chat` (`{ channelId, chatId, text }`), `email` (`{ to, subject, text }`) or `customer` (`{ text, template? }`, to the row's customer on a customer-scoped table). Texts take `{{field}}` from the row, inserted as plain text. Saving under an existing name replaces it, unless `replace` is false; with no `name`, it always creates a new trigger, named from the table, event and action and numbered past those taken. Left out, `enabled` keeps a saved trigger on or off as it was. A new webhook answers with its signing `secret`, shown this once. An `email` goes to the organization's members; any other address is sent a link to confirm first, and those still waiting come back as `confirming`. Delivery is at least once: every event carries an `eventId`.";
|
|
496
516
|
readonly body: z.ZodObject<{
|
|
497
517
|
name: z.ZodOptional<z.ZodString>;
|
|
498
518
|
description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -501,7 +521,12 @@ export declare const DATA_API_ROUTES: {
|
|
|
501
521
|
insert: "insert";
|
|
502
522
|
update: "update";
|
|
503
523
|
delete: "delete";
|
|
524
|
+
time: "time";
|
|
504
525
|
}>;
|
|
526
|
+
after: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
527
|
+
column: z.ZodString;
|
|
528
|
+
minutes: z.ZodNumber;
|
|
529
|
+
}, z.core.$strict>>>;
|
|
505
530
|
when: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
506
531
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
507
532
|
replace: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -563,7 +588,12 @@ export declare const DATA_API_ROUTES: {
|
|
|
563
588
|
insert: "insert";
|
|
564
589
|
update: "update";
|
|
565
590
|
delete: "delete";
|
|
591
|
+
time: "time";
|
|
566
592
|
}>;
|
|
593
|
+
after: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
594
|
+
column: z.ZodString;
|
|
595
|
+
minutes: z.ZodNumber;
|
|
596
|
+
}, z.core.$strict>>>;
|
|
567
597
|
when: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
568
598
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
569
599
|
replace: z.ZodOptional<z.ZodBoolean>;
|
package/dist/dataApi.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataApi.d.ts","sourceRoot":"","sources":["../src/dataApi.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,aAAa,mEACwC,CAAC;AAEnE,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhE,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,aAAa,CAAC;IAEtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,EACC,UAAU,GACV,QAAQ,GACR,MAAM,GACN,SAAS,GACT,UAAU,GACV,oBAAoB,CAAC;IACzB,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;IAEpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"dataApi.d.ts","sourceRoot":"","sources":["../src/dataApi.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,aAAa,mEACwC,CAAC;AAEnE,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhE,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,aAAa,CAAC;IAEtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,EACC,UAAU,GACV,QAAQ,GACR,MAAM,GACN,SAAS,GACT,UAAU,GACV,oBAAoB,CAAC;IACzB,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;IAEpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAEzB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAiCD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoZqB,CAAC;AAElD,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,eAAe,CAAC;AAmB1D;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,WAAW,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8G5C,CAAC"}
|
package/dist/dataApi.js
CHANGED
|
@@ -115,9 +115,19 @@ exports.DATA_API_ROUTES = {
|
|
|
115
115
|
path: '/table/:table',
|
|
116
116
|
tag: 'Tables',
|
|
117
117
|
summary: 'Rename a table or change its settings',
|
|
118
|
+
description: "`source` (`{ uri, sheet?, key }`) keeps the table's rows in step with a spreadsheet or CSV in the project's knowledge, matched by `key`, a unique column: the sheet wins, and row writes to the table are refused until `source` is set back to null. It syncs when the file changes and from `POST …/sync`; `sync` on the table says how the last one went.",
|
|
118
119
|
body: DATA_TABLE_PATCH,
|
|
119
120
|
returns: '{ table }'
|
|
120
121
|
},
|
|
122
|
+
syncTable: {
|
|
123
|
+
method: 'post',
|
|
124
|
+
path: '/table/:table/sync',
|
|
125
|
+
tag: 'Tables',
|
|
126
|
+
summary: 'Sync a table from its sheet now',
|
|
127
|
+
description: "Queues a sync of a table that has a `source`: a Google Drive or OneDrive file is fetched again first if it changed. New keys are inserted, rows that differ updated (actor `system:sheet-sync`, so triggers fire), rows whose key is gone deleted. A sheet that doesn't fit (a missing key column, a repeated key, a value a column won't take) changes nothing; the table's `sync` says why.",
|
|
128
|
+
returns: '{ queued: true }',
|
|
129
|
+
status: 202
|
|
130
|
+
},
|
|
121
131
|
dropTable: {
|
|
122
132
|
method: 'delete',
|
|
123
133
|
path: '/table/:table',
|
|
@@ -271,7 +281,7 @@ exports.DATA_API_ROUTES = {
|
|
|
271
281
|
path: '/trigger',
|
|
272
282
|
tag: 'Triggers',
|
|
273
283
|
summary: 'Save a trigger',
|
|
274
|
-
description: 'Runs one action when rows of `table` are inserted, updated or deleted, and `when` holds: `{ "status": { "changedTo": "READY" } }` fires on the transition only; `changedFrom`, `changed: true` and `equals` test a column too, and `all` / `any` combine them. The action is one of `function` (a function of this project, given `{ event, table, row, previous, actor, eventId, triggerId }`), `webhook` (an https URL, sent a POST signed in `x-ganju-signature`), `chat` (`{ channelId, chatId, text }`), `email` (`{ to, subject, text }`) or `customer` (`{ text, template? }`, to the row\'s customer on a customer-scoped table). Texts take `{{field}}` from the row, inserted as plain text. Saving under an existing name replaces it, unless `replace` is false; with no `name`, it always creates a new trigger, named from the table, event and action and numbered past those taken. Left out, `enabled` keeps a saved trigger on or off as it was. A new webhook answers with its signing `secret`, shown this once. An `email` goes to the organization\'s members; any other address is sent a link to confirm first, and those still waiting come back as `confirming`. Delivery is at least once: every event carries an `eventId`.',
|
|
284
|
+
description: 'Runs one action when rows of `table` are inserted, updated or deleted, and `when` holds: `{ "status": { "changedTo": "READY" } }` fires on the transition only; `changedFrom`, `changed: true` and `equals` test a column too, and `all` / `any` combine them. With `"on": "time"` it fires instead once a row comes due, with nothing written: `after` is `{ column, minutes }`, the column `created_at`, `updated_at` or a date or datetime column (a date counts from midnight in the database\'s time zone) and `minutes` 5 to 43,200, negative on a date or datetime for before it. Its `when` tests `equals` only, read when the row comes due; rows already due when it is saved don\'t fire, and each row fires once per due time (an `updated_at` trigger again after the next change). Due rows are looked for every 5 minutes, up to 100 events per trigger per scan; a database holds up to 10 time triggers, and the database\'s time triggers share 2,000 events a day (UTC): past that, each time trigger with another row due that day is turned off and the organization\'s admins are emailed. A time trigger is also turned off when its runs are paused (the plan no longer includes Data, or the month\'s trigger runs reached the plan\'s limit). The action is one of `function` (a function of this project, given `{ event, table, row, previous, actor, eventId, triggerId, dueAt? }`), `webhook` (an https URL, sent a POST signed in `x-ganju-signature`), `chat` (`{ channelId, chatId, text }`), `email` (`{ to, subject, text }`) or `customer` (`{ text, template? }`, to the row\'s customer on a customer-scoped table). Texts take `{{field}}` from the row, inserted as plain text. Saving under an existing name replaces it, unless `replace` is false; with no `name`, it always creates a new trigger, named from the table, event and action and numbered past those taken. Left out, `enabled` keeps a saved trigger on or off as it was. A new webhook answers with its signing `secret`, shown this once. An `email` goes to the organization\'s members; any other address is sent a link to confirm first, and those still waiting come back as `confirming`. Delivery is at least once: every event carries an `eventId`.',
|
|
275
285
|
body: DATA_TRIGGER_INPUT,
|
|
276
286
|
returns: '{ trigger, secret?, confirming? }',
|
|
277
287
|
status: 201
|
package/dist/dataCompiler.d.ts
CHANGED
|
@@ -28,6 +28,7 @@ export declare const joinsSql: (joins: Map<string, SqlJoin>) => string;
|
|
|
28
28
|
export declare const joinsParams: (joins: Map<string, SqlJoin>) => SqlValue[];
|
|
29
29
|
export declare const relationJoin: (caller: DataCaller, target: DataTable, alias: string, on: string) => SqlJoin;
|
|
30
30
|
export declare const isoSeconds: (date: Date) => string;
|
|
31
|
+
export declare const localDatetime: (value: string, timeZone?: string) => Date | null;
|
|
31
32
|
export declare const fileUriOf: (value: unknown, label: string) => string;
|
|
32
33
|
export declare const unknownFileUris: (uris: string[]) => DataError;
|
|
33
34
|
export declare const toStored: (table: DataTable, column: ResolvableColumn, value: unknown, timeZone?: string) => SqlValue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataCompiler.d.ts","sourceRoot":"","sources":["../src/dataCompiler.ts"],"names":[],"mappings":"AAMA,OAAO,EAML,SAAS,EACV,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,cAAc,EACd,UAAU,EACV,SAAS,EACV,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AAE9C,eAAO,MAAM,gBAAgB,oGAYnB,CAAC;AAIX,MAAM,MAAM,gBAAgB,GACxB,UAAU,GACV;IACE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,IAAI,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAQN,eAAO,MAAM,cAAc,GACzB,QAAQ,gBAAgB,KACvB,MAAM,IAAI,OAAO,CAAC,gBAAgB,EAAE;IAAE,MAAM,EAAE,IAAI,CAAA;CAAE,CACT,CAAC;AAE/C,eAAO,MAAM,SAAS,GACpB,OAAO,SAAS,EAChB,MAAM,MAAM,KACX,gBAAgB,GAAG,SAKrB,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,SAAS,EAAE,MAAM,MAAM,cASzD,CAAC;AAIJ,eAAO,MAAM,QAAQ,GAAI,QAAQ,UAAU,EAAE,OAAO,SAAS,KAAG,UAKlD,CAAC;AAEf,eAAO,MAAM,aAAa,GAAI,QAAQ,UAAU,EAAE,QAAQ,UAAU,gBACW,CAAC;AAIhF,eAAO,MAAM,QAAQ,GACnB,QAAQ,UAAU,EAClB,QAAQ,UAAU,EAClB,MAAM,OAAO,EACb,OAAM,UAAmB,KACxB,SA4BF,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,QAAQ,UAAU,EAAE,OAAO,SAAS,YACT,CAAC;AAErD,eAAO,MAAM,OAAO,GAAI,QAAQ,UAAU,EAAE,OAAO,SAAS,YACZ,CAAC;AAIjD,eAAO,MAAM,aAAa,GAAI,QAAQ,UAAU,KAAG,MAQlD,CAAC;AAIF,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,QAAQ,EAAE,CAAC;CACpB;AAED,eAAO,MAAM,QAAQ,GAAI,OAAO,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,MACF,CAAC;AAEtD,eAAO,MAAM,WAAW,GAAI,OAAO,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,QAAQ,EAChB,CAAC;AAKnD,eAAO,MAAM,YAAY,GACvB,QAAQ,UAAU,EAClB,QAAQ,SAAS,EACjB,OAAO,MAAM,EACb,IAAI,MAAM,KACT,OAYF,CAAC;AAIF,eAAO,MAAM,UAAU,GAAI,MAAM,IAAI,WACS,CAAC;
|
|
1
|
+
{"version":3,"file":"dataCompiler.d.ts","sourceRoot":"","sources":["../src/dataCompiler.ts"],"names":[],"mappings":"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"}
|
package/dist/dataCompiler.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isSensitiveWrite = exports.tidyArgs = exports.chunkRows = exports.rowsPerInsert = exports.keysetCondition = exports.decodeCursor = exports.encodeCursor = exports.ftsMatch = exports.assertParamCount = exports.compileWhere = exports.resolvePath = exports.fromStored = exports.zoned = exports.zoneOffsetMinutes = exports.toStored = exports.unknownFileUris = exports.fileUriOf = exports.isoSeconds = exports.relationJoin = exports.joinsParams = exports.joinsSql = exports.participantOf = exports.canRead = exports.isScoped = exports.tableFor = exports.visibleTables = exports.accessOf = exports.unknownColumn = exports.columnFor = exports.isSystemColumn = exports.FILTER_OPERATORS = void 0;
|
|
3
|
+
exports.isSensitiveWrite = exports.tidyArgs = exports.chunkRows = exports.rowsPerInsert = exports.keysetCondition = exports.decodeCursor = exports.encodeCursor = exports.ftsMatch = exports.assertParamCount = exports.compileWhere = exports.resolvePath = exports.fromStored = exports.zoned = exports.zoneOffsetMinutes = exports.toStored = exports.unknownFileUris = exports.fileUriOf = exports.localDatetime = exports.isoSeconds = exports.relationJoin = exports.joinsParams = exports.joinsSql = exports.participantOf = exports.canRead = exports.isScoped = exports.tableFor = exports.visibleTables = exports.accessOf = exports.unknownColumn = exports.columnFor = exports.isSystemColumn = exports.FILTER_OPERATORS = void 0;
|
|
4
4
|
// Turns the structured query and write arguments into SQL with bound values.
|
|
5
5
|
// Identifiers are checked against the database's own schema and quoted;
|
|
6
6
|
// every value a caller sends is a parameter. Pure: the engine runs the SQL.
|
|
@@ -137,11 +137,12 @@ const localDatetime = (value, timeZone) => {
|
|
|
137
137
|
at = wall - (0, exports.zoneOffsetMinutes)(new Date(at), timeZone) * 60_000;
|
|
138
138
|
return new Date(at);
|
|
139
139
|
};
|
|
140
|
+
exports.localDatetime = localDatetime;
|
|
140
141
|
const normaliseDatetime = (value, label, timeZone) => {
|
|
141
142
|
if (typeof value !== 'string' && typeof value !== 'number') {
|
|
142
143
|
throw new dataTypes_1.DataError(`${label}: expected an ISO 8601 date and time.`);
|
|
143
144
|
}
|
|
144
|
-
const date = (typeof value === 'string' ? localDatetime(value, timeZone) : null) ??
|
|
145
|
+
const date = (typeof value === 'string' ? (0, exports.localDatetime)(value, timeZone) : null) ??
|
|
145
146
|
new Date(value);
|
|
146
147
|
if (Number.isNaN(date.getTime())) {
|
|
147
148
|
throw new dataTypes_1.DataError(`${label}: "${value}" is not a date and time; use ISO 8601, e.g. 2026-10-19T09:00:00-05:00.`);
|
package/dist/dataEngine.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { SqlValue } from './dataCompiler';
|
|
2
2
|
import { toTableInput, DataError } from './dataTypes';
|
|
3
|
-
import type { DataCaller, DataColumn, DataDefaultValue, DataDeleteImpact, DataFileLinks, DataFileLinksReplaced, DataQueryShape, DataSchema, DataTable, DataTableCopy, DataUsage, DataWriteShape } from './dataTypes';
|
|
3
|
+
import type { DataCaller, DataColumn, DataDefaultValue, DataDeleteImpact, DataFileLinks, DataFileLinksReplaced, DataQueryShape, DataSchema, DataTable, DataTableCopy, DataTableSync, DataUsage, DataWriteShape } from './dataTypes';
|
|
4
4
|
export type SqlRow = Record<string, SqlValue>;
|
|
5
5
|
export interface SqlRunner {
|
|
6
6
|
all(sql: string, params?: readonly SqlValue[]): SqlRow[];
|
|
@@ -94,6 +94,7 @@ export declare const query: (runner: SqlRunner, schema: DataSchema, caller: Data
|
|
|
94
94
|
};
|
|
95
95
|
export declare const assertActor: (caller: DataCaller) => void;
|
|
96
96
|
export declare const assertWritable: (runner: SqlRunner, caller: DataCaller, addsData: boolean) => void;
|
|
97
|
+
export declare const assertNotSynced: (table: DataTable) => void;
|
|
97
98
|
type WriteResult = {
|
|
98
99
|
op: 'insert';
|
|
99
100
|
table: string;
|
|
@@ -111,6 +112,21 @@ export declare const write: (runner: SqlRunner, schema: DataSchema, caller: Data
|
|
|
111
112
|
ok: true;
|
|
112
113
|
results: WriteResult[];
|
|
113
114
|
};
|
|
115
|
+
export interface SheetSyncArgs {
|
|
116
|
+
table: string;
|
|
117
|
+
columns: string[];
|
|
118
|
+
rows: Record<string, unknown>[];
|
|
119
|
+
lines?: number[];
|
|
120
|
+
title?: string | null;
|
|
121
|
+
version?: string | null;
|
|
122
|
+
}
|
|
123
|
+
export declare const syncRows: (runner: SqlRunner, schema: DataSchema, caller: DataCaller, args: SheetSyncArgs) => DataTableSync;
|
|
124
|
+
export declare const recordSyncFailure: (runner: SqlRunner, schema: DataSchema, args: {
|
|
125
|
+
table: string;
|
|
126
|
+
error: string;
|
|
127
|
+
title?: string | null;
|
|
128
|
+
version?: string | null;
|
|
129
|
+
}) => DataTableSync | null;
|
|
114
130
|
export declare const deleteImpact: (runner: SqlRunner, schema: DataSchema, caller: DataCaller, rawArgs: unknown) => DataDeleteImpact;
|
|
115
131
|
export declare const fileLinks: (runner: SqlRunner, schema: DataSchema, caller: DataCaller, rawArgs: unknown) => DataFileLinks;
|
|
116
132
|
export declare const replaceFileLinks: (runner: SqlRunner, schema: DataSchema, caller: DataCaller, rawArgs: unknown) => DataFileLinksReplaced;
|
package/dist/dataEngine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataEngine.d.ts","sourceRoot":"","sources":["../src/dataEngine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dataEngine.d.ts","sourceRoot":"","sources":["../src/dataEngine.ts"],"names":[],"mappings":"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"}
|