goscript 0.2.4 → 0.2.5
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/README.md +8 -8
- package/cmd/go_js_wasm_exec/main.go +1 -1
- package/cmd/go_js_wasm_exec/main_test.go +1 -1
- package/cmd/goscript/cmd-compile.go +9 -1
- package/cmd/goscript/cmd-test.go +1 -1
- package/cmd/goscript/cmd_compile_test.go +44 -0
- package/cmd/goscript/deps.go +1 -1
- package/cmd/goscript-wasm/main.go +2 -2
- package/compiler/compile-request.go +19 -0
- package/compiler/compile_bench_test.go +121 -0
- package/compiler/compliance_test.go +17 -1
- package/compiler/config.go +2 -0
- package/compiler/gotest/result.go +1 -1
- package/compiler/gotest/runner.go +2 -2
- package/compiler/gotest/runner_test.go +4 -7
- package/compiler/index.test.ts +28 -0
- package/compiler/index.ts +32 -16
- package/compiler/lowering.go +1238 -194
- package/compiler/lowering_bench_test.go +4 -0
- package/compiler/override-facts.go +1 -1
- package/compiler/package-graph.go +92 -0
- package/compiler/package-graph_test.go +113 -0
- package/compiler/runtime-contract.go +1 -1
- package/compiler/semantic-model.go +32 -0
- package/compiler/skeleton_test.go +241 -15
- package/compiler/wasm/compile.go +1 -1
- package/compiler/wasm/compile_test.go +1 -1
- package/dist/compiler/index.d.ts +4 -0
- package/dist/compiler/index.js +26 -15
- package/dist/compiler/index.js.map +1 -1
- package/dist/gs/database/sql/driver/index.d.ts +165 -0
- package/dist/gs/database/sql/driver/index.js +432 -0
- package/dist/gs/database/sql/driver/index.js.map +1 -0
- package/dist/gs/encoding/binary/index.d.ts +71 -0
- package/dist/gs/encoding/binary/index.js +778 -0
- package/dist/gs/encoding/binary/index.js.map +1 -0
- package/dist/gs/fmt/fmt.js +156 -57
- package/dist/gs/fmt/fmt.js.map +1 -1
- package/dist/gs/github.com/klauspost/cpuid/v2/index.d.ts +11 -0
- package/dist/gs/github.com/klauspost/cpuid/v2/index.js +28 -0
- package/dist/gs/github.com/klauspost/cpuid/v2/index.js.map +1 -0
- package/dist/gs/github.com/pkg/errors/errors.d.ts +0 -2
- package/dist/gs/github.com/pkg/errors/errors.js.map +1 -1
- package/dist/gs/github.com/pkg/errors/index.d.ts +2 -1
- package/dist/gs/github.com/pkg/errors/index.js +1 -1
- package/dist/gs/github.com/pkg/errors/index.js.map +1 -1
- package/dist/gs/github.com/pkg/errors/stack.d.ts +8 -19
- package/dist/gs/github.com/pkg/errors/stack.js +26 -61
- package/dist/gs/github.com/pkg/errors/stack.js.map +1 -1
- package/dist/gs/golang.org/x/crypto/cryptobyte/asn1/index.d.ts +19 -0
- package/dist/gs/golang.org/x/crypto/cryptobyte/asn1/index.js +25 -0
- package/dist/gs/golang.org/x/crypto/cryptobyte/asn1/index.js.map +1 -0
- package/dist/gs/golang.org/x/crypto/cryptobyte/index.d.ts +104 -0
- package/dist/gs/golang.org/x/crypto/cryptobyte/index.js +1107 -0
- package/dist/gs/golang.org/x/crypto/cryptobyte/index.js.map +1 -0
- package/dist/gs/golang.org/x/crypto/internal/alias/index.d.ts +3 -0
- package/dist/gs/golang.org/x/crypto/internal/alias/index.js +39 -0
- package/dist/gs/golang.org/x/crypto/internal/alias/index.js.map +1 -0
- package/dist/gs/runtime/runtime.d.ts +6 -1
- package/dist/gs/runtime/runtime.js +15 -8
- package/dist/gs/runtime/runtime.js.map +1 -1
- package/dist/gs/runtime/trace/index.d.ts +8 -5
- package/dist/gs/runtime/trace/index.js +324 -23
- package/dist/gs/runtime/trace/index.js.map +1 -1
- package/dist/gs/slices/slices.d.ts +2 -1
- package/dist/gs/slices/slices.js +9 -3
- package/dist/gs/slices/slices.js.map +1 -1
- package/dist/gs/sort/search.gs.d.ts +3 -1
- package/dist/gs/sort/search.gs.js +18 -53
- package/dist/gs/sort/search.gs.js.map +1 -1
- package/dist/gs/sync/sync.d.ts +1 -1
- package/dist/gs/sync/sync.js +3 -0
- package/dist/gs/sync/sync.js.map +1 -1
- package/dist/gs/time/time.d.ts +22 -29
- package/dist/gs/time/time.js +111 -32
- package/dist/gs/time/time.js.map +1 -1
- package/dist/gs/unsafe/unsafe.d.ts +3 -2
- package/dist/gs/unsafe/unsafe.js.map +1 -1
- package/go.mod +7 -5
- package/go.sum +12 -26
- package/gs/database/sql/driver/index.test.ts +88 -0
- package/gs/database/sql/driver/index.ts +675 -0
- package/gs/database/sql/driver/meta.json +3 -0
- package/gs/database/sql/driver/parity.json +144 -0
- package/gs/encoding/binary/index.test.ts +239 -0
- package/gs/encoding/binary/index.ts +999 -0
- package/gs/encoding/binary/meta.json +9 -0
- package/gs/encoding/binary/parity.json +72 -0
- package/gs/fmt/fmt.test.ts +28 -0
- package/gs/fmt/fmt.ts +198 -61
- package/gs/fmt/meta.json +2 -1
- package/gs/github.com/klauspost/cpuid/v2/index.ts +38 -0
- package/gs/github.com/klauspost/cpuid/v2/meta.json +3 -0
- package/gs/github.com/pkg/errors/errors.ts +1 -2
- package/gs/github.com/pkg/errors/index.ts +2 -1
- package/gs/github.com/pkg/errors/stack.ts +34 -62
- package/gs/golang.org/x/crypto/cryptobyte/asn1/index.test.ts +19 -0
- package/gs/golang.org/x/crypto/cryptobyte/asn1/index.ts +29 -0
- package/gs/golang.org/x/crypto/cryptobyte/index.test.ts +255 -0
- package/gs/golang.org/x/crypto/cryptobyte/index.ts +1441 -0
- package/gs/golang.org/x/crypto/cryptobyte/meta.json +3 -0
- package/gs/golang.org/x/crypto/internal/alias/index.test.ts +40 -0
- package/gs/golang.org/x/crypto/internal/alias/index.ts +40 -0
- package/gs/runtime/runtime.test.ts +16 -0
- package/gs/runtime/runtime.ts +17 -9
- package/gs/runtime/trace/index.test.ts +113 -14
- package/gs/runtime/trace/index.ts +384 -34
- package/gs/runtime/trace/meta.json +1 -0
- package/gs/slices/slices.test.ts +24 -1
- package/gs/slices/slices.ts +14 -4
- package/gs/sort/meta.json +1 -0
- package/gs/sort/search.gs.ts +20 -5
- package/gs/sync/sync.ts +4 -1
- package/gs/time/time.test.ts +79 -2
- package/gs/time/time.ts +133 -33
- package/gs/unsafe/unsafe.ts +4 -2
- package/package.json +2 -2
package/dist/compiler/index.js
CHANGED
|
@@ -16,21 +16,7 @@ export async function compile(config) {
|
|
|
16
16
|
}
|
|
17
17
|
const cwd = config.dir ? path.resolve(config.dir) : process.cwd();
|
|
18
18
|
const output = config.output ? path.resolve(config.output) : './output';
|
|
19
|
-
|
|
20
|
-
await execFileAsync(config.goscriptPath, [
|
|
21
|
-
'compile',
|
|
22
|
-
'--package',
|
|
23
|
-
config.pkg,
|
|
24
|
-
'--output',
|
|
25
|
-
output,
|
|
26
|
-
'--dir',
|
|
27
|
-
cwd,
|
|
28
|
-
]);
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
await execFileAsync('go', [
|
|
32
|
-
'run',
|
|
33
|
-
path.join(projectRoot, 'cmd/goscript'),
|
|
19
|
+
const args = [
|
|
34
20
|
'compile',
|
|
35
21
|
'--package',
|
|
36
22
|
config.pkg,
|
|
@@ -38,8 +24,33 @@ export async function compile(config) {
|
|
|
38
24
|
output,
|
|
39
25
|
'--dir',
|
|
40
26
|
cwd,
|
|
27
|
+
];
|
|
28
|
+
if (config.allDependencies) {
|
|
29
|
+
args.push('--all-dependencies');
|
|
30
|
+
}
|
|
31
|
+
const packageBlocklist = normalizePackageBlocklist(config.packageBlocklist);
|
|
32
|
+
if (packageBlocklist) {
|
|
33
|
+
args.push('--package-blocklist', packageBlocklist);
|
|
34
|
+
}
|
|
35
|
+
if (config.goscriptPath) {
|
|
36
|
+
await execFileAsync(config.goscriptPath, args);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
await execFileAsync('go', [
|
|
40
|
+
'run',
|
|
41
|
+
path.join(projectRoot, 'cmd/goscript'),
|
|
42
|
+
...args,
|
|
41
43
|
]);
|
|
42
44
|
}
|
|
45
|
+
function normalizePackageBlocklist(value) {
|
|
46
|
+
if (!value) {
|
|
47
|
+
return '';
|
|
48
|
+
}
|
|
49
|
+
if (Array.isArray(value)) {
|
|
50
|
+
return value.map((item) => item.trim()).filter(Boolean).join(',');
|
|
51
|
+
}
|
|
52
|
+
return value.trim();
|
|
53
|
+
}
|
|
43
54
|
/**
|
|
44
55
|
* Default export for convenience.
|
|
45
56
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../compiler/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AACzC,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AACrC,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../compiler/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AACzC,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AACrC,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;AAoBtC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAqB;IACjD,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;IAC1D,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;IACjE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;IACvE,MAAM,IAAI,GAAG;QACX,SAAS;QACT,WAAW;QACX,MAAM,CAAC,GAAG;QACV,UAAU;QACV,MAAM;QACN,OAAO;QACP,GAAG;KACJ,CAAA;IACD,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;IACjC,CAAC;IACD,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;IAC3E,IAAI,gBAAgB,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAA;IACpD,CAAC;IAED,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,MAAM,aAAa,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;QAC9C,OAAM;IACR,CAAC;IAED,MAAM,aAAa,CAAC,IAAI,EAAE;QACxB,KAAK;QACL,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC;QACtC,GAAG,IAAI;KACR,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAoC;IACrE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAA;IACX,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACnE,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAA;AACrB,CAAC;AAED;;GAEG;AACH,eAAe;IACb,OAAO;CACR,CAAA"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import * as $ from '@goscript/builtin/index.js';
|
|
2
|
+
import * as context from '@goscript/context/index.js';
|
|
3
|
+
export type Value = any;
|
|
4
|
+
export declare class NamedValue {
|
|
5
|
+
Name: string;
|
|
6
|
+
Ordinal: number;
|
|
7
|
+
Value: Value;
|
|
8
|
+
constructor(init?: Partial<{
|
|
9
|
+
Name: string;
|
|
10
|
+
Ordinal: number;
|
|
11
|
+
Value: Value;
|
|
12
|
+
}>);
|
|
13
|
+
clone(): NamedValue;
|
|
14
|
+
}
|
|
15
|
+
export interface Driver {
|
|
16
|
+
Open(name: string): [Conn | null, $.GoError];
|
|
17
|
+
}
|
|
18
|
+
export interface DriverContext {
|
|
19
|
+
OpenConnector(name: string): [Connector | null, $.GoError];
|
|
20
|
+
}
|
|
21
|
+
export interface Connector {
|
|
22
|
+
Connect(ctx: context.Context | null): [Conn | null, $.GoError];
|
|
23
|
+
Driver(): Driver | null;
|
|
24
|
+
}
|
|
25
|
+
export declare const ErrSkip: $.GoError;
|
|
26
|
+
export declare const ErrBadConn: $.GoError;
|
|
27
|
+
export interface Pinger {
|
|
28
|
+
Ping(ctx: context.Context | null): $.GoError;
|
|
29
|
+
}
|
|
30
|
+
export interface Execer {
|
|
31
|
+
Exec(query: string, args: $.Slice<Value>): [Result | null, $.GoError];
|
|
32
|
+
}
|
|
33
|
+
export interface ExecerContext {
|
|
34
|
+
ExecContext(ctx: context.Context | null, query: string, args: $.Slice<NamedValue>): [Result | null, $.GoError];
|
|
35
|
+
}
|
|
36
|
+
export interface Queryer {
|
|
37
|
+
Query(query: string, args: $.Slice<Value>): [Rows | null, $.GoError];
|
|
38
|
+
}
|
|
39
|
+
export interface QueryerContext {
|
|
40
|
+
QueryContext(ctx: context.Context | null, query: string, args: $.Slice<NamedValue>): [Rows | null, $.GoError];
|
|
41
|
+
}
|
|
42
|
+
export interface Conn {
|
|
43
|
+
Prepare(query: string): [Stmt | null, $.GoError];
|
|
44
|
+
Close(): $.GoError;
|
|
45
|
+
Begin(): [Tx | null, $.GoError];
|
|
46
|
+
}
|
|
47
|
+
export interface ConnPrepareContext {
|
|
48
|
+
PrepareContext(ctx: context.Context | null, query: string): [Stmt | null, $.GoError];
|
|
49
|
+
}
|
|
50
|
+
export type IsolationLevel = number;
|
|
51
|
+
export declare class TxOptions {
|
|
52
|
+
Isolation: IsolationLevel;
|
|
53
|
+
ReadOnly: boolean;
|
|
54
|
+
constructor(init?: Partial<{
|
|
55
|
+
Isolation: IsolationLevel;
|
|
56
|
+
ReadOnly: boolean;
|
|
57
|
+
}>);
|
|
58
|
+
clone(): TxOptions;
|
|
59
|
+
}
|
|
60
|
+
export interface ConnBeginTx {
|
|
61
|
+
BeginTx(ctx: context.Context | null, opts: TxOptions): [Tx | null, $.GoError];
|
|
62
|
+
}
|
|
63
|
+
export interface SessionResetter {
|
|
64
|
+
ResetSession(ctx: context.Context | null): $.GoError;
|
|
65
|
+
}
|
|
66
|
+
export interface Validator {
|
|
67
|
+
IsValid(): boolean;
|
|
68
|
+
}
|
|
69
|
+
export interface Result {
|
|
70
|
+
LastInsertId(): [number, $.GoError];
|
|
71
|
+
RowsAffected(): [number, $.GoError];
|
|
72
|
+
}
|
|
73
|
+
export interface Stmt {
|
|
74
|
+
Close(): $.GoError;
|
|
75
|
+
NumInput(): number;
|
|
76
|
+
Exec(args: $.Slice<Value>): [Result | null, $.GoError];
|
|
77
|
+
Query(args: $.Slice<Value>): [Rows | null, $.GoError];
|
|
78
|
+
}
|
|
79
|
+
export interface StmtExecContext {
|
|
80
|
+
ExecContext(ctx: context.Context | null, args: $.Slice<NamedValue>): [Result | null, $.GoError];
|
|
81
|
+
}
|
|
82
|
+
export interface StmtQueryContext {
|
|
83
|
+
QueryContext(ctx: context.Context | null, args: $.Slice<NamedValue>): [Rows | null, $.GoError];
|
|
84
|
+
}
|
|
85
|
+
export declare const ErrRemoveArgument: $.GoError;
|
|
86
|
+
export interface NamedValueChecker {
|
|
87
|
+
CheckNamedValue(value: NamedValue | $.VarRef<NamedValue> | null): $.GoError;
|
|
88
|
+
}
|
|
89
|
+
export interface ColumnConverter {
|
|
90
|
+
ColumnConverter(idx: number): ValueConverter | null;
|
|
91
|
+
}
|
|
92
|
+
export interface Rows {
|
|
93
|
+
Columns(): $.Slice<string>;
|
|
94
|
+
Close(): $.GoError;
|
|
95
|
+
Next(dest: $.Slice<Value>): $.GoError;
|
|
96
|
+
}
|
|
97
|
+
export interface RowsNextResultSet extends Rows {
|
|
98
|
+
HasNextResultSet(): boolean;
|
|
99
|
+
NextResultSet(): $.GoError;
|
|
100
|
+
}
|
|
101
|
+
export interface RowsColumnTypeScanType extends Rows {
|
|
102
|
+
ColumnTypeScanType(index: number): unknown;
|
|
103
|
+
}
|
|
104
|
+
export interface RowsColumnTypeDatabaseTypeName extends Rows {
|
|
105
|
+
ColumnTypeDatabaseTypeName(index: number): string;
|
|
106
|
+
}
|
|
107
|
+
export interface RowsColumnTypeLength extends Rows {
|
|
108
|
+
ColumnTypeLength(index: number): [number, boolean];
|
|
109
|
+
}
|
|
110
|
+
export interface RowsColumnTypeNullable extends Rows {
|
|
111
|
+
ColumnTypeNullable(index: number): [boolean, boolean];
|
|
112
|
+
}
|
|
113
|
+
export interface RowsColumnTypePrecisionScale extends Rows {
|
|
114
|
+
ColumnTypePrecisionScale(index: number): [number, number, boolean];
|
|
115
|
+
}
|
|
116
|
+
export interface Tx {
|
|
117
|
+
Commit(): $.GoError;
|
|
118
|
+
Rollback(): $.GoError;
|
|
119
|
+
}
|
|
120
|
+
export type RowsAffected = number;
|
|
121
|
+
export declare function RowsAffected_LastInsertId(_v: RowsAffected): [number, $.GoError];
|
|
122
|
+
export declare function RowsAffected_RowsAffected(v: RowsAffected): [number, $.GoError];
|
|
123
|
+
export declare const ResultNoRows: Result;
|
|
124
|
+
export interface ValueConverter {
|
|
125
|
+
ConvertValue(v: any): [Value, $.GoError];
|
|
126
|
+
}
|
|
127
|
+
export interface Valuer {
|
|
128
|
+
Value(): [Value, $.GoError];
|
|
129
|
+
}
|
|
130
|
+
declare class boolType implements ValueConverter {
|
|
131
|
+
String(): string;
|
|
132
|
+
ConvertValue(src: any): [Value, $.GoError];
|
|
133
|
+
}
|
|
134
|
+
export declare const Bool: boolType;
|
|
135
|
+
declare class int32Type implements ValueConverter {
|
|
136
|
+
ConvertValue(v: any): [Value, $.GoError];
|
|
137
|
+
}
|
|
138
|
+
export declare const Int32: int32Type;
|
|
139
|
+
declare class stringType implements ValueConverter {
|
|
140
|
+
ConvertValue(v: any): [Value, $.GoError];
|
|
141
|
+
}
|
|
142
|
+
export declare const String: stringType;
|
|
143
|
+
export declare class Null implements ValueConverter {
|
|
144
|
+
Converter: ValueConverter | null;
|
|
145
|
+
constructor(init?: Partial<{
|
|
146
|
+
Converter: ValueConverter | null;
|
|
147
|
+
}>);
|
|
148
|
+
clone(): Null;
|
|
149
|
+
ConvertValue(v: any): [Value, $.GoError];
|
|
150
|
+
}
|
|
151
|
+
export declare class NotNull implements ValueConverter {
|
|
152
|
+
Converter: ValueConverter | null;
|
|
153
|
+
constructor(init?: Partial<{
|
|
154
|
+
Converter: ValueConverter | null;
|
|
155
|
+
}>);
|
|
156
|
+
clone(): NotNull;
|
|
157
|
+
ConvertValue(v: any): [Value, $.GoError];
|
|
158
|
+
}
|
|
159
|
+
declare class defaultConverter implements ValueConverter {
|
|
160
|
+
ConvertValue(v: any): [Value, $.GoError];
|
|
161
|
+
}
|
|
162
|
+
export declare const DefaultParameterConverter: defaultConverter;
|
|
163
|
+
export declare function IsValue(v: any): boolean;
|
|
164
|
+
export declare function IsScanValue(v: any): boolean;
|
|
165
|
+
export {};
|
|
@@ -0,0 +1,432 @@
|
|
|
1
|
+
import * as $ from '@goscript/builtin/index.js';
|
|
2
|
+
import * as time from '@goscript/time/index.js';
|
|
3
|
+
export class NamedValue {
|
|
4
|
+
Name;
|
|
5
|
+
Ordinal;
|
|
6
|
+
Value;
|
|
7
|
+
constructor(init) {
|
|
8
|
+
this.Name = init?.Name ?? '';
|
|
9
|
+
this.Ordinal = init?.Ordinal ?? 0;
|
|
10
|
+
this.Value = init?.Value ?? null;
|
|
11
|
+
}
|
|
12
|
+
clone() {
|
|
13
|
+
return new NamedValue({
|
|
14
|
+
Name: this.Name,
|
|
15
|
+
Ordinal: this.Ordinal,
|
|
16
|
+
Value: this.Value,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export const ErrSkip = $.newError('driver: skip fast-path; continue as if unimplemented');
|
|
21
|
+
export const ErrBadConn = $.newError('driver: bad connection');
|
|
22
|
+
export class TxOptions {
|
|
23
|
+
Isolation;
|
|
24
|
+
ReadOnly;
|
|
25
|
+
constructor(init) {
|
|
26
|
+
this.Isolation = init?.Isolation ?? 0;
|
|
27
|
+
this.ReadOnly = init?.ReadOnly ?? false;
|
|
28
|
+
}
|
|
29
|
+
clone() {
|
|
30
|
+
return new TxOptions({
|
|
31
|
+
Isolation: this.Isolation,
|
|
32
|
+
ReadOnly: this.ReadOnly,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export const ErrRemoveArgument = $.newError('driver: remove argument from query');
|
|
37
|
+
export function RowsAffected_LastInsertId(_v) {
|
|
38
|
+
return [0, $.newError('LastInsertId is not supported by this driver')];
|
|
39
|
+
}
|
|
40
|
+
export function RowsAffected_RowsAffected(v) {
|
|
41
|
+
return [v, null];
|
|
42
|
+
}
|
|
43
|
+
class noRows {
|
|
44
|
+
LastInsertId() {
|
|
45
|
+
return [0, $.newError('no LastInsertId available after DDL statement')];
|
|
46
|
+
}
|
|
47
|
+
RowsAffected() {
|
|
48
|
+
return [0, $.newError('no RowsAffected available after DDL statement')];
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export const ResultNoRows = new noRows();
|
|
52
|
+
class boolType {
|
|
53
|
+
String() {
|
|
54
|
+
return 'Bool';
|
|
55
|
+
}
|
|
56
|
+
ConvertValue(src) {
|
|
57
|
+
guardReflectValue('Bool.ConvertValue', src);
|
|
58
|
+
if (typeof src === 'boolean') {
|
|
59
|
+
return [src, null];
|
|
60
|
+
}
|
|
61
|
+
if (typeof src === 'string') {
|
|
62
|
+
return parseBoolValue(src, JSON.stringify(src));
|
|
63
|
+
}
|
|
64
|
+
if (isBytes(src)) {
|
|
65
|
+
const text = $.bytesToString(src);
|
|
66
|
+
return parseBoolValue(text, JSON.stringify(text));
|
|
67
|
+
}
|
|
68
|
+
if (isIntegerLike(src)) {
|
|
69
|
+
const value = toBigInt(src);
|
|
70
|
+
if (value === 0n || value === 1n) {
|
|
71
|
+
return [value === 1n, null];
|
|
72
|
+
}
|
|
73
|
+
return [null, $.newError(`sql/driver: couldn't convert ${value} into type bool`)];
|
|
74
|
+
}
|
|
75
|
+
return [
|
|
76
|
+
null,
|
|
77
|
+
$.newError(`sql/driver: couldn't convert ${globalThis.String(src)} (${typeName(src)}) into type bool`),
|
|
78
|
+
];
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
export const Bool = new boolType();
|
|
82
|
+
class int32Type {
|
|
83
|
+
ConvertValue(v) {
|
|
84
|
+
guardReflectValue('Int32.ConvertValue', v);
|
|
85
|
+
const [value, parseErr] = int32InputValue(v);
|
|
86
|
+
if (parseErr !== null) {
|
|
87
|
+
return [null, parseErr];
|
|
88
|
+
}
|
|
89
|
+
if (value == null) {
|
|
90
|
+
return [
|
|
91
|
+
null,
|
|
92
|
+
$.newError(`sql/driver: unsupported value ${globalThis.String(v)} (${typeName(v)}) converting to int32`),
|
|
93
|
+
];
|
|
94
|
+
}
|
|
95
|
+
if (value > 2147483647n || value < -2147483648n) {
|
|
96
|
+
return [null, $.newError(`sql/driver: value ${globalThis.String(v)} overflows int32`)];
|
|
97
|
+
}
|
|
98
|
+
return [Number(value), null];
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
export const Int32 = new int32Type();
|
|
102
|
+
class stringType {
|
|
103
|
+
ConvertValue(v) {
|
|
104
|
+
guardReflectValue('String.ConvertValue', v);
|
|
105
|
+
if (typeof v === 'string' || isBytes(v)) {
|
|
106
|
+
return [v, null];
|
|
107
|
+
}
|
|
108
|
+
if (typeof v === 'number' || typeof v === 'bigint' || typeof v === 'boolean') {
|
|
109
|
+
return [globalThis.String(v), null];
|
|
110
|
+
}
|
|
111
|
+
return [
|
|
112
|
+
null,
|
|
113
|
+
$.newError(`database/sql/driver: String.ConvertValue of ${typeName(v)} is not supported in the GoScript browser build`),
|
|
114
|
+
];
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
export const String = new stringType();
|
|
118
|
+
export class Null {
|
|
119
|
+
Converter;
|
|
120
|
+
constructor(init) {
|
|
121
|
+
this.Converter = init?.Converter ?? null;
|
|
122
|
+
}
|
|
123
|
+
clone() {
|
|
124
|
+
return new Null({ Converter: this.Converter });
|
|
125
|
+
}
|
|
126
|
+
ConvertValue(v) {
|
|
127
|
+
if (v === null || v === undefined) {
|
|
128
|
+
return [null, null];
|
|
129
|
+
}
|
|
130
|
+
return converterValue(this.Converter).ConvertValue(v);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
export class NotNull {
|
|
134
|
+
Converter;
|
|
135
|
+
constructor(init) {
|
|
136
|
+
this.Converter = init?.Converter ?? null;
|
|
137
|
+
}
|
|
138
|
+
clone() {
|
|
139
|
+
return new NotNull({ Converter: this.Converter });
|
|
140
|
+
}
|
|
141
|
+
ConvertValue(v) {
|
|
142
|
+
if (v === null || v === undefined) {
|
|
143
|
+
return [null, $.newError('nil value not allowed')];
|
|
144
|
+
}
|
|
145
|
+
return converterValue(this.Converter).ConvertValue(v);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
class defaultConverter {
|
|
149
|
+
ConvertValue(v) {
|
|
150
|
+
if (IsValue(v)) {
|
|
151
|
+
return [v ?? null, null];
|
|
152
|
+
}
|
|
153
|
+
if (isValuer(v)) {
|
|
154
|
+
const [sv, err] = callValuerValue(v);
|
|
155
|
+
if (err !== null) {
|
|
156
|
+
return [null, err];
|
|
157
|
+
}
|
|
158
|
+
if (!IsValue(sv)) {
|
|
159
|
+
return [null, $.newError(`non-Value type ${typeName(sv)} returned from Value`)];
|
|
160
|
+
}
|
|
161
|
+
return [sv, null];
|
|
162
|
+
}
|
|
163
|
+
if (isReflectPointer(v)) {
|
|
164
|
+
unsupportedReflect('DefaultParameterConverter.ConvertValue', 'pointer');
|
|
165
|
+
}
|
|
166
|
+
if (isNamedValue(v)) {
|
|
167
|
+
unsupportedReflect('DefaultParameterConverter.ConvertValue', 'named type');
|
|
168
|
+
}
|
|
169
|
+
return [
|
|
170
|
+
null,
|
|
171
|
+
$.newError(`database/sql/driver: DefaultParameterConverter.ConvertValue of ${typeName(v)} is not supported in the GoScript browser build`),
|
|
172
|
+
];
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
export const DefaultParameterConverter = new defaultConverter();
|
|
176
|
+
function callValuerValue(vr) {
|
|
177
|
+
if (vr === null) {
|
|
178
|
+
return [null, null];
|
|
179
|
+
}
|
|
180
|
+
return vr.Value();
|
|
181
|
+
}
|
|
182
|
+
export function IsValue(v) {
|
|
183
|
+
if (v === null || v === undefined) {
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
186
|
+
return (isBytes(v) ||
|
|
187
|
+
typeof v === 'string' ||
|
|
188
|
+
typeof v === 'boolean' ||
|
|
189
|
+
typeof v === 'number' ||
|
|
190
|
+
typeof v === 'bigint' ||
|
|
191
|
+
v instanceof time.Time ||
|
|
192
|
+
isDecimalDecompose(v));
|
|
193
|
+
}
|
|
194
|
+
export function IsScanValue(v) {
|
|
195
|
+
return IsValue(v);
|
|
196
|
+
}
|
|
197
|
+
function converterValue(converter) {
|
|
198
|
+
if (converter === null) {
|
|
199
|
+
throw new Error('runtime error: invalid memory address or nil pointer dereference');
|
|
200
|
+
}
|
|
201
|
+
return converter;
|
|
202
|
+
}
|
|
203
|
+
function parseBoolValue(value, quoted) {
|
|
204
|
+
switch (value) {
|
|
205
|
+
case '1':
|
|
206
|
+
case 't':
|
|
207
|
+
case 'T':
|
|
208
|
+
case 'TRUE':
|
|
209
|
+
case 'true':
|
|
210
|
+
case 'True':
|
|
211
|
+
return [true, null];
|
|
212
|
+
case '0':
|
|
213
|
+
case 'f':
|
|
214
|
+
case 'F':
|
|
215
|
+
case 'FALSE':
|
|
216
|
+
case 'false':
|
|
217
|
+
case 'False':
|
|
218
|
+
return [false, null];
|
|
219
|
+
default:
|
|
220
|
+
return [
|
|
221
|
+
null,
|
|
222
|
+
$.newError(`sql/driver: couldn't convert ${quoted} into type bool`),
|
|
223
|
+
];
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
function isBytes(v) {
|
|
227
|
+
return v instanceof Uint8Array;
|
|
228
|
+
}
|
|
229
|
+
function isIntegerLike(v) {
|
|
230
|
+
return (typeof v === 'bigint' ||
|
|
231
|
+
(typeof v === 'number' && Number.isFinite(v) && Number.isInteger(v)));
|
|
232
|
+
}
|
|
233
|
+
function toBigInt(v) {
|
|
234
|
+
if (typeof v === 'bigint') {
|
|
235
|
+
return v;
|
|
236
|
+
}
|
|
237
|
+
return BigInt(Math.trunc(v));
|
|
238
|
+
}
|
|
239
|
+
function int32InputValue(v) {
|
|
240
|
+
if (isIntegerLike(v)) {
|
|
241
|
+
return [toBigInt(v), null];
|
|
242
|
+
}
|
|
243
|
+
if (typeof v !== 'string') {
|
|
244
|
+
return [null, null];
|
|
245
|
+
}
|
|
246
|
+
if (!/^[+-]?\d+$/.test(v)) {
|
|
247
|
+
return [
|
|
248
|
+
null,
|
|
249
|
+
$.newError(`sql/driver: value ${JSON.stringify(v)} can't be converted to int32`),
|
|
250
|
+
];
|
|
251
|
+
}
|
|
252
|
+
return [BigInt(v), null];
|
|
253
|
+
}
|
|
254
|
+
function isValuer(v) {
|
|
255
|
+
return v !== null && typeof v === 'object' && typeof v.Value === 'function';
|
|
256
|
+
}
|
|
257
|
+
function isDecimalDecompose(v) {
|
|
258
|
+
return v !== null && typeof v === 'object' && typeof v.Decompose === 'function';
|
|
259
|
+
}
|
|
260
|
+
function isNamedValue(v) {
|
|
261
|
+
return v !== null && typeof v === 'object' && typeof v.__goType === 'string';
|
|
262
|
+
}
|
|
263
|
+
function isReflectPointer(v) {
|
|
264
|
+
return $.isVarRef(v) || (isNamedValue(v) && v.__goType.startsWith('*'));
|
|
265
|
+
}
|
|
266
|
+
function guardReflectValue(fn, v) {
|
|
267
|
+
if (isReflectPointer(v)) {
|
|
268
|
+
unsupportedReflect(fn, 'pointer');
|
|
269
|
+
}
|
|
270
|
+
if (isNamedValue(v)) {
|
|
271
|
+
unsupportedReflect(fn, 'named type');
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
function unsupportedReflect(fn, kind) {
|
|
275
|
+
throw $.newError(`database/sql/driver: ${fn} of ${kind} is not supported in the GoScript browser build`);
|
|
276
|
+
}
|
|
277
|
+
function typeName(v) {
|
|
278
|
+
if (v === null || v === undefined) {
|
|
279
|
+
return '<nil>';
|
|
280
|
+
}
|
|
281
|
+
if (isNamedValue(v)) {
|
|
282
|
+
return v.__goType;
|
|
283
|
+
}
|
|
284
|
+
if ($.isVarRef(v)) {
|
|
285
|
+
return 'pointer';
|
|
286
|
+
}
|
|
287
|
+
if (isBytes(v)) {
|
|
288
|
+
return '[]uint8';
|
|
289
|
+
}
|
|
290
|
+
if (v instanceof time.Time) {
|
|
291
|
+
return 'time.Time';
|
|
292
|
+
}
|
|
293
|
+
return typeof v;
|
|
294
|
+
}
|
|
295
|
+
const anyType = {
|
|
296
|
+
kind: $.TypeKind.Interface,
|
|
297
|
+
methods: [],
|
|
298
|
+
};
|
|
299
|
+
const boolTypeInfo = { kind: $.TypeKind.Basic, name: 'bool' };
|
|
300
|
+
const intTypeInfo = { kind: $.TypeKind.Basic, name: 'int' };
|
|
301
|
+
const int64TypeInfo = { kind: $.TypeKind.Basic, name: 'int64' };
|
|
302
|
+
const stringTypeInfo = {
|
|
303
|
+
kind: $.TypeKind.Basic,
|
|
304
|
+
name: 'string',
|
|
305
|
+
};
|
|
306
|
+
const errorType = 'error';
|
|
307
|
+
const valueType = anyType;
|
|
308
|
+
const valueSliceType = {
|
|
309
|
+
kind: $.TypeKind.Slice,
|
|
310
|
+
elemType: valueType,
|
|
311
|
+
};
|
|
312
|
+
const namedValueType = 'driver.NamedValue';
|
|
313
|
+
const namedValueSliceType = {
|
|
314
|
+
kind: $.TypeKind.Slice,
|
|
315
|
+
elemType: namedValueType,
|
|
316
|
+
};
|
|
317
|
+
const namedValuePointerType = {
|
|
318
|
+
kind: $.TypeKind.Pointer,
|
|
319
|
+
elemType: namedValueType,
|
|
320
|
+
};
|
|
321
|
+
function arg(name, type) {
|
|
322
|
+
return { name, type };
|
|
323
|
+
}
|
|
324
|
+
function ret(name, type) {
|
|
325
|
+
return { name, type };
|
|
326
|
+
}
|
|
327
|
+
const rowsMethods = [
|
|
328
|
+
{ name: 'Close', args: [], returns: [ret('_r0', errorType)] },
|
|
329
|
+
{ name: 'Columns', args: [], returns: [ret('_r0', { kind: $.TypeKind.Slice, elemType: stringTypeInfo })] },
|
|
330
|
+
{ name: 'Next', args: [arg('dest', valueSliceType)], returns: [ret('_r0', errorType)] },
|
|
331
|
+
];
|
|
332
|
+
$.registerInterfaceType('driver.Driver', null, [
|
|
333
|
+
{ name: 'Open', args: [arg('name', stringTypeInfo)], returns: [ret('_r0', 'driver.Conn'), ret('_r1', errorType)] },
|
|
334
|
+
]);
|
|
335
|
+
$.registerInterfaceType('driver.DriverContext', null, [
|
|
336
|
+
{ name: 'OpenConnector', args: [arg('name', stringTypeInfo)], returns: [ret('_r0', 'driver.Connector'), ret('_r1', errorType)] },
|
|
337
|
+
]);
|
|
338
|
+
$.registerInterfaceType('driver.Connector', null, [
|
|
339
|
+
{ name: 'Connect', args: [arg('ctx', 'context.Context')], returns: [ret('_r0', 'driver.Conn'), ret('_r1', errorType)] },
|
|
340
|
+
{ name: 'Driver', args: [], returns: [ret('_r0', 'driver.Driver')] },
|
|
341
|
+
]);
|
|
342
|
+
$.registerInterfaceType('driver.Pinger', null, [
|
|
343
|
+
{ name: 'Ping', args: [arg('ctx', 'context.Context')], returns: [ret('_r0', errorType)] },
|
|
344
|
+
]);
|
|
345
|
+
$.registerInterfaceType('driver.Execer', null, [
|
|
346
|
+
{ name: 'Exec', args: [arg('query', stringTypeInfo), arg('args', valueSliceType)], returns: [ret('_r0', 'driver.Result'), ret('_r1', errorType)] },
|
|
347
|
+
]);
|
|
348
|
+
$.registerInterfaceType('driver.ExecerContext', null, [
|
|
349
|
+
{ name: 'ExecContext', args: [arg('ctx', 'context.Context'), arg('query', stringTypeInfo), arg('args', namedValueSliceType)], returns: [ret('_r0', 'driver.Result'), ret('_r1', errorType)] },
|
|
350
|
+
]);
|
|
351
|
+
$.registerInterfaceType('driver.Queryer', null, [
|
|
352
|
+
{ name: 'Query', args: [arg('query', stringTypeInfo), arg('args', valueSliceType)], returns: [ret('_r0', 'driver.Rows'), ret('_r1', errorType)] },
|
|
353
|
+
]);
|
|
354
|
+
$.registerInterfaceType('driver.QueryerContext', null, [
|
|
355
|
+
{ name: 'QueryContext', args: [arg('ctx', 'context.Context'), arg('query', stringTypeInfo), arg('args', namedValueSliceType)], returns: [ret('_r0', 'driver.Rows'), ret('_r1', errorType)] },
|
|
356
|
+
]);
|
|
357
|
+
$.registerInterfaceType('driver.Conn', null, [
|
|
358
|
+
{ name: 'Begin', args: [], returns: [ret('_r0', 'driver.Tx'), ret('_r1', errorType)] },
|
|
359
|
+
{ name: 'Close', args: [], returns: [ret('_r0', errorType)] },
|
|
360
|
+
{ name: 'Prepare', args: [arg('query', stringTypeInfo)], returns: [ret('_r0', 'driver.Stmt'), ret('_r1', errorType)] },
|
|
361
|
+
]);
|
|
362
|
+
$.registerInterfaceType('driver.ConnPrepareContext', null, [
|
|
363
|
+
{ name: 'PrepareContext', args: [arg('ctx', 'context.Context'), arg('query', stringTypeInfo)], returns: [ret('_r0', 'driver.Stmt'), ret('_r1', errorType)] },
|
|
364
|
+
]);
|
|
365
|
+
$.registerInterfaceType('driver.ConnBeginTx', null, [
|
|
366
|
+
{ name: 'BeginTx', args: [arg('ctx', 'context.Context'), arg('opts', 'driver.TxOptions')], returns: [ret('_r0', 'driver.Tx'), ret('_r1', errorType)] },
|
|
367
|
+
]);
|
|
368
|
+
$.registerInterfaceType('driver.SessionResetter', null, [
|
|
369
|
+
{ name: 'ResetSession', args: [arg('ctx', 'context.Context')], returns: [ret('_r0', errorType)] },
|
|
370
|
+
]);
|
|
371
|
+
$.registerInterfaceType('driver.Validator', null, [
|
|
372
|
+
{ name: 'IsValid', args: [], returns: [ret('_r0', boolTypeInfo)] },
|
|
373
|
+
]);
|
|
374
|
+
$.registerInterfaceType('driver.Result', null, [
|
|
375
|
+
{ name: 'LastInsertId', args: [], returns: [ret('_r0', int64TypeInfo), ret('_r1', errorType)] },
|
|
376
|
+
{ name: 'RowsAffected', args: [], returns: [ret('_r0', int64TypeInfo), ret('_r1', errorType)] },
|
|
377
|
+
]);
|
|
378
|
+
$.registerInterfaceType('driver.Stmt', null, [
|
|
379
|
+
{ name: 'Close', args: [], returns: [ret('_r0', errorType)] },
|
|
380
|
+
{ name: 'Exec', args: [arg('args', valueSliceType)], returns: [ret('_r0', 'driver.Result'), ret('_r1', errorType)] },
|
|
381
|
+
{ name: 'NumInput', args: [], returns: [ret('_r0', intTypeInfo)] },
|
|
382
|
+
{ name: 'Query', args: [arg('args', valueSliceType)], returns: [ret('_r0', 'driver.Rows'), ret('_r1', errorType)] },
|
|
383
|
+
]);
|
|
384
|
+
$.registerInterfaceType('driver.StmtExecContext', null, [
|
|
385
|
+
{ name: 'ExecContext', args: [arg('ctx', 'context.Context'), arg('args', namedValueSliceType)], returns: [ret('_r0', 'driver.Result'), ret('_r1', errorType)] },
|
|
386
|
+
]);
|
|
387
|
+
$.registerInterfaceType('driver.StmtQueryContext', null, [
|
|
388
|
+
{ name: 'QueryContext', args: [arg('ctx', 'context.Context'), arg('args', namedValueSliceType)], returns: [ret('_r0', 'driver.Rows'), ret('_r1', errorType)] },
|
|
389
|
+
]);
|
|
390
|
+
$.registerInterfaceType('driver.NamedValueChecker', null, [
|
|
391
|
+
{ name: 'CheckNamedValue', args: [arg('_p0', namedValuePointerType)], returns: [ret('_r0', errorType)] },
|
|
392
|
+
]);
|
|
393
|
+
$.registerInterfaceType('driver.ColumnConverter', null, [
|
|
394
|
+
{ name: 'ColumnConverter', args: [arg('idx', intTypeInfo)], returns: [ret('_r0', 'driver.ValueConverter')] },
|
|
395
|
+
]);
|
|
396
|
+
$.registerInterfaceType('driver.Rows', null, rowsMethods);
|
|
397
|
+
$.registerInterfaceType('driver.RowsNextResultSet', null, [
|
|
398
|
+
...rowsMethods,
|
|
399
|
+
{ name: 'HasNextResultSet', args: [], returns: [ret('_r0', boolTypeInfo)] },
|
|
400
|
+
{ name: 'NextResultSet', args: [], returns: [ret('_r0', errorType)] },
|
|
401
|
+
]);
|
|
402
|
+
$.registerInterfaceType('driver.RowsColumnTypeScanType', null, [
|
|
403
|
+
...rowsMethods,
|
|
404
|
+
{ name: 'ColumnTypeScanType', args: [arg('index', intTypeInfo)], returns: [ret('_r0', 'reflect.Type')] },
|
|
405
|
+
]);
|
|
406
|
+
$.registerInterfaceType('driver.RowsColumnTypeDatabaseTypeName', null, [
|
|
407
|
+
...rowsMethods,
|
|
408
|
+
{ name: 'ColumnTypeDatabaseTypeName', args: [arg('index', intTypeInfo)], returns: [ret('_r0', stringTypeInfo)] },
|
|
409
|
+
]);
|
|
410
|
+
$.registerInterfaceType('driver.RowsColumnTypeLength', null, [
|
|
411
|
+
...rowsMethods,
|
|
412
|
+
{ name: 'ColumnTypeLength', args: [arg('index', intTypeInfo)], returns: [ret('length', int64TypeInfo), ret('ok', boolTypeInfo)] },
|
|
413
|
+
]);
|
|
414
|
+
$.registerInterfaceType('driver.RowsColumnTypeNullable', null, [
|
|
415
|
+
...rowsMethods,
|
|
416
|
+
{ name: 'ColumnTypeNullable', args: [arg('index', intTypeInfo)], returns: [ret('nullable', boolTypeInfo), ret('ok', boolTypeInfo)] },
|
|
417
|
+
]);
|
|
418
|
+
$.registerInterfaceType('driver.RowsColumnTypePrecisionScale', null, [
|
|
419
|
+
...rowsMethods,
|
|
420
|
+
{ name: 'ColumnTypePrecisionScale', args: [arg('index', intTypeInfo)], returns: [ret('precision', int64TypeInfo), ret('scale', int64TypeInfo), ret('ok', boolTypeInfo)] },
|
|
421
|
+
]);
|
|
422
|
+
$.registerInterfaceType('driver.Tx', null, [
|
|
423
|
+
{ name: 'Commit', args: [], returns: [ret('_r0', errorType)] },
|
|
424
|
+
{ name: 'Rollback', args: [], returns: [ret('_r0', errorType)] },
|
|
425
|
+
]);
|
|
426
|
+
$.registerInterfaceType('driver.ValueConverter', null, [
|
|
427
|
+
{ name: 'ConvertValue', args: [arg('v', anyType)], returns: [ret('_r0', valueType), ret('_r1', errorType)] },
|
|
428
|
+
]);
|
|
429
|
+
$.registerInterfaceType('driver.Valuer', null, [
|
|
430
|
+
{ name: 'Value', args: [], returns: [ret('_r0', valueType), ret('_r1', errorType)] },
|
|
431
|
+
]);
|
|
432
|
+
//# sourceMappingURL=index.js.map
|