lib: fix build on windows, better API name

This commit is contained in:
Fedor Indutnyy 2023-01-25 15:02:12 -08:00
parent 6d8b420079
commit dc255273fe
8 changed files with 21 additions and 20 deletions

9
index.d.ts vendored
View File

@ -43,7 +43,7 @@ declare namespace BetterSqlite3 {
type: string | null;
}
interface Tokenizer {
interface FTS5Tokenizer {
// The resulting array consists of the following triples:
// [..., segment_start_idx, segment_end_idx, segment | null, ...]
//
@ -52,8 +52,8 @@ declare namespace BetterSqlite3 {
run(value: string): ReadonlyArray<number | string | undefined | null>;
}
interface TokenizerConstructor {
new (params: ReadonlyArray<string>): Tokenizer;
interface FTS5TokenizerConstructor {
new (params: ReadonlyArray<string>): FTS5Tokenizer;
}
interface Transaction<F extends VariableArgFunction> {
@ -95,7 +95,7 @@ declare namespace BetterSqlite3 {
table(name: string, options: VirtualTableOptions): this;
unsafeMode(unsafe?: boolean): this;
serialize(options?: Database.SerializeOptions): Buffer;
createTokenizer(name: string, tokenizer: TokenizerConstructor): void;
createFTS5Tokenizer(name: string, tokenizer: FTS5TokenizerConstructor): void;
}
interface DatabaseConstructor {
@ -166,6 +166,7 @@ declare namespace Database {
: BetterSqlite3.Statement<[BindParameters]>;
type ColumnDefinition = BetterSqlite3.ColumnDefinition;
type Transaction<T extends VariableArgFunction = VariableArgFunction> = BetterSqlite3.Transaction<T>;
type FTS5Tokenizer = BetterSqlite3.FTS5Tokenizer;
type Database = BetterSqlite3.Database;
}

View File

@ -84,7 +84,7 @@ Database.prototype.serialize = require('./methods/serialize');
Database.prototype.function = require('./methods/function');
Database.prototype.aggregate = require('./methods/aggregate');
Database.prototype.table = require('./methods/table');
Database.prototype.createTokenizer = require('./methods/createTokenizer');
Database.prototype.createFTS5Tokenizer = require('./methods/createFTS5Tokenizer');
Database.prototype.loadExtension = wrappers.loadExtension;
Database.prototype.exec = wrappers.exec;
Database.prototype.close = wrappers.close;

View File

@ -1,13 +1,13 @@
'use strict';
const { cppdb } = require('../util');
module.exports = function createTokenizer(name, factory) {
module.exports = function createFTS5Tokenizer(name, factory) {
// Validate arguments
if (typeof name !== 'string') throw new TypeError('Expected first argument to be a string');
if (!name) throw new TypeError('Virtual table module name cannot be an empty string');
if (typeof factory !== 'function') throw new TypeError('Expected second argument to be a constructor');
this[cppdb].createTokenizer(name, function create(params) {
this[cppdb].createFTS5Tokenizer(name, function create(params) {
const instance = new factory(params);
function run(str) {

View File

@ -368,7 +368,7 @@ v8::Local <v8 :: Function> Database::Init (v8::Isolate * isolate, v8::Local <v8
SetPrototypeMethod(isolate, data, t, "close", JS_close);
SetPrototypeMethod(isolate, data, t, "defaultSafeIntegers", JS_defaultSafeIntegers);
SetPrototypeMethod(isolate, data, t, "unsafeMode", JS_unsafeMode);
SetPrototypeMethod(isolate, data, t, "createTokenizer", JS_createTokenizer);
SetPrototypeMethod(isolate, data, t, "createFTS5Tokenizer", JS_createFTS5Tokenizer);
SetPrototypeGetter(isolate, data, t, "open", JS_open);
SetPrototypeGetter(isolate, data, t, "inTransaction", JS_inTransaction);
return t->GetFunction( isolate -> GetCurrentContext ( ) ).ToLocalChecked();
@ -757,9 +757,9 @@ void Database::JS_unsafeMode (v8::FunctionCallbackInfo <v8 :: Value> const & inf
sqlite3_db_config(db->db_handle, SQLITE_DBCONFIG_DEFENSIVE, static_cast<int>(!db->unsafe_mode), NULL);
}
#line 416 "./src/objects/database.lzz"
void Database::JS_createTokenizer (v8::FunctionCallbackInfo <v8 :: Value> const & info)
void Database::JS_createFTS5Tokenizer (v8::FunctionCallbackInfo <v8 :: Value> const & info)
#line 416 "./src/objects/database.lzz"
{
{
Addon * addon = static_cast < Addon * > ( info . Data ( ) . As < v8 :: External > ( ) -> Value ( ) ) ;
v8 :: Isolate * isolate = info . GetIsolate ( ) ;
@ -1551,9 +1551,9 @@ int TokenizerModule::xTokenize (Fts5Tokenizer * tokenizer, void * pCtx, int flag
}
#line 150 "./src/objects/tokenizer.lzz"
fts5_tokenizer TokenizerModule::api_object = {
.xCreate = &xCreate,
.xDelete = &xDelete,
.xTokenize = &xTokenize,
&xCreate,
&xDelete,
&xTokenize,
};
#line 4 "./src/util/data-converter.lzz"
void DataConverter::ThrowDataConversionError (sqlite3_context * invocation, bool isBigInt)

View File

@ -311,7 +311,7 @@ private:
#line 409 "./src/objects/database.lzz"
static void JS_unsafeMode (v8::FunctionCallbackInfo <v8 :: Value> const & info);
#line 416 "./src/objects/database.lzz"
static void JS_createTokenizer (v8::FunctionCallbackInfo <v8 :: Value> const & info);
static void JS_createFTS5Tokenizer (v8::FunctionCallbackInfo <v8 :: Value> const & info);
#line 452 "./src/objects/database.lzz"
static void JS_open (v8::Local <v8 :: String> _, v8::PropertyCallbackInfo <v8 :: Value> const & info);
#line 456 "./src/objects/database.lzz"

View File

@ -14,7 +14,7 @@ public:
SetPrototypeMethod(isolate, data, t, "close", JS_close);
SetPrototypeMethod(isolate, data, t, "defaultSafeIntegers", JS_defaultSafeIntegers);
SetPrototypeMethod(isolate, data, t, "unsafeMode", JS_unsafeMode);
SetPrototypeMethod(isolate, data, t, "createTokenizer", JS_createTokenizer);
SetPrototypeMethod(isolate, data, t, "createFTS5Tokenizer", JS_createFTS5Tokenizer);
SetPrototypeGetter(isolate, data, t, "open", JS_open);
SetPrototypeGetter(isolate, data, t, "inTransaction", JS_inTransaction);
return t->GetFunction(OnlyContext).ToLocalChecked();
@ -413,7 +413,7 @@ private:
sqlite3_db_config(db->db_handle, SQLITE_DBCONFIG_DEFENSIVE, static_cast<int>(!db->unsafe_mode), NULL);
}
NODE_METHOD(JS_createTokenizer) {
NODE_METHOD(JS_createFTS5Tokenizer) {
UseAddon;
UseIsolate;

View File

@ -148,9 +148,9 @@ private:
}
static fts5_tokenizer api_object = {
.xCreate = &xCreate,
.xDelete = &xDelete,
.xTokenize = &xTokenize,
&xCreate,
&xDelete,
&xTokenize,
};
v8::Isolate* isolate;

View File

@ -15,7 +15,7 @@ describe('Database#serialize()', function () {
beforeEach(function () {
this.db = new Database(':memory:');
this.db.createTokenizer('js', class Tokenizer {
this.db.createFTS5Tokenizer('js', class Tokenizer {
constructor(params) {
expect(params).to.eql(['arg1', 'arg2']);
}