@fluidframework/local-driver 2.0.0-dev.7.4.0.216897 → 2.0.0-dev.7.4.0.217884
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/api-report/local-driver.api.md +3 -3
- package/dist/local-driver-alpha.d.ts +71 -29
- package/dist/local-driver-untrimmed.d.ts +3 -3
- package/dist/localDocumentServiceFactory.cjs +1 -1
- package/dist/localDocumentServiceFactory.cjs.map +1 -1
- package/dist/localDocumentServiceFactory.d.ts +1 -1
- package/dist/localResolver.cjs +2 -2
- package/dist/localResolver.cjs.map +1 -1
- package/dist/localResolver.d.ts +2 -2
- package/lib/local-driver-alpha.d.ts +71 -29
- package/lib/local-driver-untrimmed.d.ts +3 -3
- package/lib/localDocumentServiceFactory.d.ts +1 -1
- package/lib/localDocumentServiceFactory.mjs +1 -1
- package/lib/localDocumentServiceFactory.mjs.map +1 -1
- package/lib/localResolver.d.ts +2 -2
- package/lib/localResolver.mjs +2 -2
- package/lib/localResolver.mjs.map +1 -1
- package/package.json +11 -11
- package/src/localDocumentServiceFactory.ts +1 -1
- package/src/localResolver.ts +2 -2
|
@@ -39,7 +39,7 @@ import type { Socket } from 'socket.io-client';
|
|
|
39
39
|
// @internal
|
|
40
40
|
export function createLocalDocumentService(resolvedUrl: IResolvedUrl, localDeltaConnectionServer: ILocalDeltaConnectionServer, tokenProvider: ITokenProvider, tenantId: string, documentId: string, documentDeltaConnectionsMap: Map<string, LocalDocumentDeltaConnection>, policies?: IDocumentServicePolicies, innerDocumentService?: IDocumentService, logger?: ITelemetryBaseLogger): IDocumentService;
|
|
41
41
|
|
|
42
|
-
// @
|
|
42
|
+
// @alpha (undocumented)
|
|
43
43
|
export function createLocalResolverCreateNewRequest(documentId: string): IRequest;
|
|
44
44
|
|
|
45
45
|
// @internal
|
|
@@ -73,7 +73,7 @@ export class LocalDocumentService implements IDocumentService {
|
|
|
73
73
|
readonly resolvedUrl: IResolvedUrl;
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
-
// @
|
|
76
|
+
// @alpha
|
|
77
77
|
export class LocalDocumentServiceFactory implements IDocumentServiceFactory {
|
|
78
78
|
constructor(localDeltaConnectionServer: ILocalDeltaConnectionServer, policies?: IDocumentServicePolicies | undefined, innerDocumentService?: IDocumentService | undefined);
|
|
79
79
|
// (undocumented)
|
|
@@ -106,7 +106,7 @@ export class LocalDocumentStorageService implements IDocumentStorageService {
|
|
|
106
106
|
uploadSummaryWithContext(summary: ISummaryTree, context: ISummaryContext): Promise<string>;
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
// @
|
|
109
|
+
// @alpha
|
|
110
110
|
export class LocalResolver implements IUrlResolver {
|
|
111
111
|
constructor();
|
|
112
112
|
// (undocumented)
|
|
@@ -3,13 +3,26 @@ import { IClient } from '@fluidframework/protocol-definitions';
|
|
|
3
3
|
import { ICreateBlobResponse } from '@fluidframework/protocol-definitions';
|
|
4
4
|
import { IDatabaseManager } from '@fluidframework/server-services-core';
|
|
5
5
|
import { IDb } from '@fluidframework/server-services-core';
|
|
6
|
+
import { IDocumentDeltaConnection } from '@fluidframework/driver-definitions';
|
|
7
|
+
import { IDocumentDeltaStorageService } from '@fluidframework/driver-definitions';
|
|
6
8
|
import { IDocumentMessage } from '@fluidframework/protocol-definitions';
|
|
9
|
+
import { IDocumentService } from '@fluidframework/driver-definitions';
|
|
10
|
+
import { IDocumentServiceFactory } from '@fluidframework/driver-definitions';
|
|
11
|
+
import { IDocumentServicePolicies } from '@fluidframework/driver-definitions';
|
|
12
|
+
import { IDocumentStorageService } from '@fluidframework/driver-definitions';
|
|
13
|
+
import { IDocumentStorageServicePolicies } from '@fluidframework/driver-definitions';
|
|
7
14
|
import { ILocalDeltaConnectionServer } from '@fluidframework/server-local-server';
|
|
15
|
+
import { IRequest } from '@fluidframework/core-interfaces';
|
|
16
|
+
import { IResolvedUrl } from '@fluidframework/driver-definitions';
|
|
8
17
|
import { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
|
|
9
18
|
import { ISnapshotTreeEx } from '@fluidframework/protocol-definitions';
|
|
19
|
+
import { IStream } from '@fluidframework/driver-definitions';
|
|
20
|
+
import { ISummaryContext } from '@fluidframework/driver-definitions';
|
|
10
21
|
import { ISummaryHandle } from '@fluidframework/protocol-definitions';
|
|
11
22
|
import { ISummaryTree } from '@fluidframework/protocol-definitions';
|
|
23
|
+
import { ITelemetryBaseLogger } from '@fluidframework/core-interfaces';
|
|
12
24
|
import { ITestDbFactory } from '@fluidframework/server-test-utils';
|
|
25
|
+
import { IUrlResolver } from '@fluidframework/driver-definitions';
|
|
13
26
|
import { IVersion } from '@fluidframework/protocol-definitions';
|
|
14
27
|
import { IWebSocketServer } from '@fluidframework/server-services-core';
|
|
15
28
|
import { NackErrorType } from '@fluidframework/protocol-definitions';
|
|
@@ -17,49 +30,78 @@ import type { Socket } from 'socket.io-client';
|
|
|
17
30
|
|
|
18
31
|
/* Excluded from this release type: createLocalDocumentService */
|
|
19
32
|
|
|
20
|
-
|
|
33
|
+
/**
|
|
34
|
+
* @alpha
|
|
35
|
+
*/
|
|
36
|
+
export declare function createLocalResolverCreateNewRequest(documentId: string): IRequest;
|
|
21
37
|
|
|
22
38
|
/* Excluded from this release type: DocumentDeltaConnection */
|
|
23
39
|
|
|
24
|
-
/* Excluded from this release type: IDocumentDeltaConnection */
|
|
25
|
-
|
|
26
|
-
/* Excluded from this release type: IDocumentDeltaStorageService */
|
|
27
|
-
|
|
28
|
-
/* Excluded from this release type: IDocumentService */
|
|
29
|
-
|
|
30
|
-
/* Excluded from this release type: IDocumentServiceFactory */
|
|
31
|
-
|
|
32
|
-
/* Excluded from this release type: IDocumentServicePolicies */
|
|
33
|
-
|
|
34
|
-
/* Excluded from this release type: IDocumentStorageService */
|
|
35
|
-
|
|
36
|
-
/* Excluded from this release type: IDocumentStorageServicePolicies */
|
|
37
|
-
|
|
38
|
-
/* Excluded from this release type: IRequest */
|
|
39
|
-
|
|
40
|
-
/* Excluded from this release type: IResolvedUrl */
|
|
41
|
-
|
|
42
|
-
/* Excluded from this release type: IStream */
|
|
43
|
-
|
|
44
|
-
/* Excluded from this release type: ISummaryContext */
|
|
45
|
-
|
|
46
|
-
/* Excluded from this release type: ITelemetryBaseLogger */
|
|
47
|
-
|
|
48
40
|
/* Excluded from this release type: ITokenProvider */
|
|
49
41
|
|
|
50
|
-
/* Excluded from this release type: IUrlResolver */
|
|
51
|
-
|
|
52
42
|
/* Excluded from this release type: LocalDeltaStorageService */
|
|
53
43
|
|
|
54
44
|
/* Excluded from this release type: LocalDocumentDeltaConnection */
|
|
55
45
|
|
|
56
46
|
/* Excluded from this release type: LocalDocumentService */
|
|
57
47
|
|
|
58
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Implementation of document service factory for local use.
|
|
50
|
+
* @alpha
|
|
51
|
+
*/
|
|
52
|
+
export declare class LocalDocumentServiceFactory implements IDocumentServiceFactory {
|
|
53
|
+
private readonly localDeltaConnectionServer;
|
|
54
|
+
private readonly policies?;
|
|
55
|
+
private readonly innerDocumentService?;
|
|
56
|
+
private readonly documentDeltaConnectionsMap;
|
|
57
|
+
/**
|
|
58
|
+
* @param localDeltaConnectionServer - delta connection server for ops
|
|
59
|
+
*/
|
|
60
|
+
constructor(localDeltaConnectionServer: ILocalDeltaConnectionServer, policies?: IDocumentServicePolicies | undefined, innerDocumentService?: IDocumentService | undefined);
|
|
61
|
+
createContainer(createNewSummary: ISummaryTree | undefined, resolvedUrl: IResolvedUrl, logger?: ITelemetryBaseLogger, clientIsSummarizer?: boolean): Promise<IDocumentService>;
|
|
62
|
+
/**
|
|
63
|
+
* Creates and returns a document service for testing using the given resolved
|
|
64
|
+
* URL for the tenant ID, document ID, and token.
|
|
65
|
+
* @param resolvedUrl - resolved URL of document
|
|
66
|
+
*/
|
|
67
|
+
createDocumentService(resolvedUrl: IResolvedUrl, logger?: ITelemetryBaseLogger, clientIsSummarizer?: boolean): Promise<IDocumentService>;
|
|
68
|
+
/**
|
|
69
|
+
* Gets the document delta connection for the clientId and asks it to disconnect the client.
|
|
70
|
+
* @param clientId - The ID of the client to be disconnected.
|
|
71
|
+
* @param disconnectReason - The reason of the disconnection.
|
|
72
|
+
*/
|
|
73
|
+
disconnectClient(clientId: string, disconnectReason: string): void;
|
|
74
|
+
/**
|
|
75
|
+
* Gets the document delta connection for the clientId and asks it to nack the client.
|
|
76
|
+
* @param clientId - The ID of the client to be Nack'd.
|
|
77
|
+
* @param code - An error code number that represents the error. It will be a valid HTTP error code.
|
|
78
|
+
* @param type - Type of the Nack.
|
|
79
|
+
* @param message - A message about the nack for debugging/logging/telemetry purposes.
|
|
80
|
+
*/
|
|
81
|
+
nackClient(clientId: string, code?: number, type?: NackErrorType, message?: any): void;
|
|
82
|
+
}
|
|
59
83
|
|
|
60
84
|
/* Excluded from this release type: LocalDocumentStorageService */
|
|
61
85
|
|
|
62
|
-
|
|
86
|
+
/**
|
|
87
|
+
* Resolves URLs by providing fake URLs which succeed with the other
|
|
88
|
+
* related local classes.
|
|
89
|
+
* @alpha
|
|
90
|
+
*/
|
|
91
|
+
export declare class LocalResolver implements IUrlResolver {
|
|
92
|
+
private readonly tenantId;
|
|
93
|
+
private readonly tokenKey;
|
|
94
|
+
constructor();
|
|
95
|
+
/**
|
|
96
|
+
* Resolves URL requests by providing fake URLs with an actually generated
|
|
97
|
+
* token from constant test strings. The root of the URL is fake, but the
|
|
98
|
+
* remaining relative URL can still be parsed.
|
|
99
|
+
* @param request - request to handle
|
|
100
|
+
*/
|
|
101
|
+
resolve(request: IRequest): Promise<IResolvedUrl>;
|
|
102
|
+
getAbsoluteUrl(resolvedUrl: IResolvedUrl, relativeUrl: string): Promise<string>;
|
|
103
|
+
createCreateNewRequest(documentId: string): IRequest;
|
|
104
|
+
}
|
|
63
105
|
|
|
64
106
|
/* Excluded from this release type: LocalSessionStorageDbFactory */
|
|
65
107
|
|
|
@@ -41,7 +41,7 @@ import type { Socket } from 'socket.io-client';
|
|
|
41
41
|
export declare function createLocalDocumentService(resolvedUrl: IResolvedUrl, localDeltaConnectionServer: ILocalDeltaConnectionServer, tokenProvider: ITokenProvider, tenantId: string, documentId: string, documentDeltaConnectionsMap: Map<string, LocalDocumentDeltaConnection>, policies?: IDocumentServicePolicies, innerDocumentService?: IDocumentService, logger?: ITelemetryBaseLogger): IDocumentService;
|
|
42
42
|
|
|
43
43
|
/**
|
|
44
|
-
* @
|
|
44
|
+
* @alpha
|
|
45
45
|
*/
|
|
46
46
|
export declare function createLocalResolverCreateNewRequest(documentId: string): IRequest;
|
|
47
47
|
|
|
@@ -136,7 +136,7 @@ export declare class LocalDocumentService implements IDocumentService {
|
|
|
136
136
|
|
|
137
137
|
/**
|
|
138
138
|
* Implementation of document service factory for local use.
|
|
139
|
-
* @
|
|
139
|
+
* @alpha
|
|
140
140
|
*/
|
|
141
141
|
export declare class LocalDocumentServiceFactory implements IDocumentServiceFactory {
|
|
142
142
|
private readonly localDeltaConnectionServer;
|
|
@@ -195,7 +195,7 @@ export declare class LocalDocumentStorageService implements IDocumentStorageServ
|
|
|
195
195
|
/**
|
|
196
196
|
* Resolves URLs by providing fake URLs which succeed with the other
|
|
197
197
|
* related local classes.
|
|
198
|
-
* @
|
|
198
|
+
* @alpha
|
|
199
199
|
*/
|
|
200
200
|
export declare class LocalResolver implements IUrlResolver {
|
|
201
201
|
private readonly tenantId;
|
|
@@ -11,7 +11,7 @@ const localDocumentService_1 = require("./localDocumentService.cjs");
|
|
|
11
11
|
const localCreateDocument_1 = require("./localCreateDocument.cjs");
|
|
12
12
|
/**
|
|
13
13
|
* Implementation of document service factory for local use.
|
|
14
|
-
* @
|
|
14
|
+
* @alpha
|
|
15
15
|
*/
|
|
16
16
|
class LocalDocumentServiceFactory {
|
|
17
17
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localDocumentServiceFactory.cjs","sourceRoot":"","sources":["../src/localDocumentServiceFactory.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { parse } from \"url\";\nimport {\n\tIDocumentService,\n\tIDocumentServiceFactory,\n\tIDocumentServicePolicies,\n\tIResolvedUrl,\n} from \"@fluidframework/driver-definitions\";\nimport { ITelemetryBaseLogger } from \"@fluidframework/core-interfaces\";\nimport { DefaultTokenProvider } from \"@fluidframework/routerlicious-driver\";\nimport { ILocalDeltaConnectionServer } from \"@fluidframework/server-local-server\";\nimport { ISummaryTree, NackErrorType } from \"@fluidframework/protocol-definitions\";\nimport { LocalDocumentDeltaConnection } from \"./localDocumentDeltaConnection\";\nimport { createLocalDocumentService } from \"./localDocumentService\";\nimport { createDocument } from \"./localCreateDocument\";\n\n/**\n * Implementation of document service factory for local use.\n * @
|
|
1
|
+
{"version":3,"file":"localDocumentServiceFactory.cjs","sourceRoot":"","sources":["../src/localDocumentServiceFactory.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { parse } from \"url\";\nimport {\n\tIDocumentService,\n\tIDocumentServiceFactory,\n\tIDocumentServicePolicies,\n\tIResolvedUrl,\n} from \"@fluidframework/driver-definitions\";\nimport { ITelemetryBaseLogger } from \"@fluidframework/core-interfaces\";\nimport { DefaultTokenProvider } from \"@fluidframework/routerlicious-driver\";\nimport { ILocalDeltaConnectionServer } from \"@fluidframework/server-local-server\";\nimport { ISummaryTree, NackErrorType } from \"@fluidframework/protocol-definitions\";\nimport { LocalDocumentDeltaConnection } from \"./localDocumentDeltaConnection\";\nimport { createLocalDocumentService } from \"./localDocumentService\";\nimport { createDocument } from \"./localCreateDocument\";\n\n/**\n * Implementation of document service factory for local use.\n * @alpha\n */\nexport class LocalDocumentServiceFactory implements IDocumentServiceFactory {\n\t// A map of clientId to LocalDocumentService.\n\tprivate readonly documentDeltaConnectionsMap: Map<string, LocalDocumentDeltaConnection> =\n\t\tnew Map();\n\n\t/**\n\t * @param localDeltaConnectionServer - delta connection server for ops\n\t */\n\tconstructor(\n\t\tprivate readonly localDeltaConnectionServer: ILocalDeltaConnectionServer,\n\t\tprivate readonly policies?: IDocumentServicePolicies,\n\t\tprivate readonly innerDocumentService?: IDocumentService,\n\t) {}\n\n\tpublic async createContainer(\n\t\tcreateNewSummary: ISummaryTree | undefined,\n\t\tresolvedUrl: IResolvedUrl,\n\t\tlogger?: ITelemetryBaseLogger,\n\t\tclientIsSummarizer?: boolean,\n\t): Promise<IDocumentService> {\n\t\tif (!this.localDeltaConnectionServer) {\n\t\t\tthrow new Error(\"Provide the localDeltaConnectionServer!!\");\n\t\t}\n\t\tif (createNewSummary !== undefined) {\n\t\t\tawait createDocument(this.localDeltaConnectionServer, resolvedUrl, createNewSummary);\n\t\t}\n\t\treturn this.createDocumentService(resolvedUrl, logger, clientIsSummarizer);\n\t}\n\n\t/**\n\t * Creates and returns a document service for testing using the given resolved\n\t * URL for the tenant ID, document ID, and token.\n\t * @param resolvedUrl - resolved URL of document\n\t */\n\tpublic async createDocumentService(\n\t\tresolvedUrl: IResolvedUrl,\n\t\tlogger?: ITelemetryBaseLogger,\n\t\tclientIsSummarizer?: boolean,\n\t): Promise<IDocumentService> {\n\t\tconst parsedUrl = parse(resolvedUrl.url);\n\t\tconst [, tenantId, documentId] = parsedUrl.path ? parsedUrl.path.split(\"/\") : [];\n\t\tif (!documentId || !tenantId) {\n\t\t\tthrow new Error(\n\t\t\t\t`Couldn't parse resolved url. [documentId:${documentId}][tenantId:${tenantId}]`,\n\t\t\t);\n\t\t}\n\n\t\tconst fluidResolvedUrl = resolvedUrl;\n\t\tconst jwtToken = fluidResolvedUrl.tokens.jwt;\n\t\tif (!jwtToken) {\n\t\t\tthrow new Error(`Token was not provided.`);\n\t\t}\n\n\t\tconst tokenProvider = new DefaultTokenProvider(jwtToken);\n\n\t\treturn createLocalDocumentService(\n\t\t\tresolvedUrl,\n\t\t\tthis.localDeltaConnectionServer,\n\t\t\ttokenProvider,\n\t\t\ttenantId,\n\t\t\tdocumentId,\n\t\t\tthis.documentDeltaConnectionsMap,\n\t\t\tthis.policies,\n\t\t\tthis.innerDocumentService,\n\t\t\tlogger,\n\t\t);\n\t}\n\n\t/**\n\t * Gets the document delta connection for the clientId and asks it to disconnect the client.\n\t * @param clientId - The ID of the client to be disconnected.\n\t * @param disconnectReason - The reason of the disconnection.\n\t */\n\tpublic disconnectClient(clientId: string, disconnectReason: string) {\n\t\tconst documentDeltaConnection = this.documentDeltaConnectionsMap.get(clientId);\n\t\tif (documentDeltaConnection === undefined) {\n\t\t\tthrow new Error(`No client with the id: ${clientId}`);\n\t\t}\n\t\tdocumentDeltaConnection.disconnectClient(disconnectReason);\n\t}\n\n\t/**\n\t * Gets the document delta connection for the clientId and asks it to nack the client.\n\t * @param clientId - The ID of the client to be Nack'd.\n\t * @param code - An error code number that represents the error. It will be a valid HTTP error code.\n\t * @param type - Type of the Nack.\n\t * @param message - A message about the nack for debugging/logging/telemetry purposes.\n\t */\n\tpublic nackClient(clientId: string, code?: number, type?: NackErrorType, message?: any) {\n\t\tconst documentDeltaConnection = this.documentDeltaConnectionsMap.get(clientId);\n\t\tif (documentDeltaConnection === undefined) {\n\t\t\tthrow new Error(`No client with the id: ${clientId}`);\n\t\t}\n\t\tdocumentDeltaConnection.nackClient(code, type, message);\n\t}\n}\n"]}
|
|
@@ -8,7 +8,7 @@ import { ILocalDeltaConnectionServer } from "@fluidframework/server-local-server
|
|
|
8
8
|
import { ISummaryTree, NackErrorType } from "@fluidframework/protocol-definitions";
|
|
9
9
|
/**
|
|
10
10
|
* Implementation of document service factory for local use.
|
|
11
|
-
* @
|
|
11
|
+
* @alpha
|
|
12
12
|
*/
|
|
13
13
|
export declare class LocalDocumentServiceFactory implements IDocumentServiceFactory {
|
|
14
14
|
private readonly localDeltaConnectionServer;
|
package/dist/localResolver.cjs
CHANGED
|
@@ -11,7 +11,7 @@ const driver_definitions_1 = require("@fluidframework/driver-definitions");
|
|
|
11
11
|
const protocol_definitions_1 = require("@fluidframework/protocol-definitions");
|
|
12
12
|
const auth_1 = require("./auth.cjs");
|
|
13
13
|
/**
|
|
14
|
-
* @
|
|
14
|
+
* @alpha
|
|
15
15
|
*/
|
|
16
16
|
function createLocalResolverCreateNewRequest(documentId) {
|
|
17
17
|
const createNewRequest = {
|
|
@@ -26,7 +26,7 @@ exports.createLocalResolverCreateNewRequest = createLocalResolverCreateNewReques
|
|
|
26
26
|
/**
|
|
27
27
|
* Resolves URLs by providing fake URLs which succeed with the other
|
|
28
28
|
* related local classes.
|
|
29
|
-
* @
|
|
29
|
+
* @alpha
|
|
30
30
|
*/
|
|
31
31
|
class LocalResolver {
|
|
32
32
|
constructor() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localResolver.cjs","sourceRoot":"","sources":["../src/localResolver.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,6BAA4B;AAC5B,2DAAoD;AAEpD,2EAA8F;AAC9F,+EAAiE;AACjE,qCAAuC;AAEvC;;GAEG;AACH,SAAgB,mCAAmC,CAAC,UAAkB;IACrE,MAAM,gBAAgB,GAAa;QAClC,GAAG,EAAE,yBAAyB,UAAU,EAAE;QAC1C,OAAO,EAAE;YACR,CAAC,iCAAY,CAAC,SAAS,CAAC,EAAE,IAAI;SAC9B;KACD,CAAC;IACF,OAAO,gBAAgB,CAAC;AACzB,CAAC;AARD,kFAQC;AAED;;;;GAIG;AACH,MAAa,aAAa;IAIzB;QAHiB,aAAQ,GAAG,UAAU,CAAC;QACtB,aAAQ,GAAG,UAAU,CAAC;IAExB,CAAC;IAEhB;;;;;OAKG;IACI,KAAK,CAAC,OAAO,CAAC,OAAiB;QACrC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QACtE,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,CAAC,gCAAS,CAAC,OAAO,EAAE,gCAAS,CAAC,QAAQ,EAAE,gCAAS,CAAC,YAAY,CAAC,CAAC;QAC/E,MAAM,QAAQ,GAAiB;YAC9B,SAAS,EAAE;gBACV,eAAe,EAAE,gCAAgC,IAAI,CAAC,QAAQ,IAAI,UAAU,EAAE;gBAC9E,UAAU,EAAE,uBAAuB;gBACnC,UAAU,EAAE,+BAA+B,IAAI,CAAC,QAAQ,EAAE;aAC1D;YACD,EAAE,EAAE,UAAU;YACd,MAAM,EAAE,EAAE,GAAG,EAAE,IAAA,oBAAa,EAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;YAChF,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,+BAA+B,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAAE;SAC/D,CAAC;QAEF,OAAO,QAAQ,CAAC;IACjB,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,WAAyB,EAAE,WAAmB;QACzE,IAAI,GAAG,GAAG,WAAW,CAAC;QACtB,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACxB,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACpB;QACD,MAAM,SAAS,GAAG,IAAA,WAAK,EAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;SACzD;QACD,MAAM,CAAC,EAAE,AAAD,EAAG,UAAU,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvD,IAAA,mBAAM,EAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,+DAA+D,CAAC,CAAC;QAE5F,OAAO,yBAAyB,UAAU,IAAI,GAAG,EAAE,CAAC;IACrD,CAAC;IAEM,sBAAsB,CAAC,UAAkB;QAC/C,OAAO,mCAAmC,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;CACD;AAlDD,sCAkDC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { parse } from \"url\";\nimport { assert } from \"@fluidframework/core-utils\";\nimport { IRequest } from \"@fluidframework/core-interfaces\";\nimport { IResolvedUrl, IUrlResolver, DriverHeader } from \"@fluidframework/driver-definitions\";\nimport { ScopeType } from \"@fluidframework/protocol-definitions\";\nimport { generateToken } from \"./auth\";\n\n/**\n * @
|
|
1
|
+
{"version":3,"file":"localResolver.cjs","sourceRoot":"","sources":["../src/localResolver.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,6BAA4B;AAC5B,2DAAoD;AAEpD,2EAA8F;AAC9F,+EAAiE;AACjE,qCAAuC;AAEvC;;GAEG;AACH,SAAgB,mCAAmC,CAAC,UAAkB;IACrE,MAAM,gBAAgB,GAAa;QAClC,GAAG,EAAE,yBAAyB,UAAU,EAAE;QAC1C,OAAO,EAAE;YACR,CAAC,iCAAY,CAAC,SAAS,CAAC,EAAE,IAAI;SAC9B;KACD,CAAC;IACF,OAAO,gBAAgB,CAAC;AACzB,CAAC;AARD,kFAQC;AAED;;;;GAIG;AACH,MAAa,aAAa;IAIzB;QAHiB,aAAQ,GAAG,UAAU,CAAC;QACtB,aAAQ,GAAG,UAAU,CAAC;IAExB,CAAC;IAEhB;;;;;OAKG;IACI,KAAK,CAAC,OAAO,CAAC,OAAiB;QACrC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QACtE,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,CAAC,gCAAS,CAAC,OAAO,EAAE,gCAAS,CAAC,QAAQ,EAAE,gCAAS,CAAC,YAAY,CAAC,CAAC;QAC/E,MAAM,QAAQ,GAAiB;YAC9B,SAAS,EAAE;gBACV,eAAe,EAAE,gCAAgC,IAAI,CAAC,QAAQ,IAAI,UAAU,EAAE;gBAC9E,UAAU,EAAE,uBAAuB;gBACnC,UAAU,EAAE,+BAA+B,IAAI,CAAC,QAAQ,EAAE;aAC1D;YACD,EAAE,EAAE,UAAU;YACd,MAAM,EAAE,EAAE,GAAG,EAAE,IAAA,oBAAa,EAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;YAChF,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,+BAA+B,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAAE;SAC/D,CAAC;QAEF,OAAO,QAAQ,CAAC;IACjB,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,WAAyB,EAAE,WAAmB;QACzE,IAAI,GAAG,GAAG,WAAW,CAAC;QACtB,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACxB,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACpB;QACD,MAAM,SAAS,GAAG,IAAA,WAAK,EAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;SACzD;QACD,MAAM,CAAC,EAAE,AAAD,EAAG,UAAU,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvD,IAAA,mBAAM,EAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,+DAA+D,CAAC,CAAC;QAE5F,OAAO,yBAAyB,UAAU,IAAI,GAAG,EAAE,CAAC;IACrD,CAAC;IAEM,sBAAsB,CAAC,UAAkB;QAC/C,OAAO,mCAAmC,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;CACD;AAlDD,sCAkDC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { parse } from \"url\";\nimport { assert } from \"@fluidframework/core-utils\";\nimport { IRequest } from \"@fluidframework/core-interfaces\";\nimport { IResolvedUrl, IUrlResolver, DriverHeader } from \"@fluidframework/driver-definitions\";\nimport { ScopeType } from \"@fluidframework/protocol-definitions\";\nimport { generateToken } from \"./auth\";\n\n/**\n * @alpha\n */\nexport function createLocalResolverCreateNewRequest(documentId: string): IRequest {\n\tconst createNewRequest: IRequest = {\n\t\turl: `http://localhost:3000/${documentId}`,\n\t\theaders: {\n\t\t\t[DriverHeader.createNew]: true,\n\t\t},\n\t};\n\treturn createNewRequest;\n}\n\n/**\n * Resolves URLs by providing fake URLs which succeed with the other\n * related local classes.\n * @alpha\n */\nexport class LocalResolver implements IUrlResolver {\n\tprivate readonly tenantId = \"tenantId\";\n\tprivate readonly tokenKey = \"tokenKey\";\n\n\tconstructor() {}\n\n\t/**\n\t * Resolves URL requests by providing fake URLs with an actually generated\n\t * token from constant test strings. The root of the URL is fake, but the\n\t * remaining relative URL can still be parsed.\n\t * @param request - request to handle\n\t */\n\tpublic async resolve(request: IRequest): Promise<IResolvedUrl> {\n\t\tconst parsedUrl = new URL(request.url);\n\t\tconst fullPath = `${parsedUrl.pathname.substr(1)}${parsedUrl.search}`;\n\t\tconst documentId = fullPath.split(\"/\")[0];\n\t\tconst scopes = [ScopeType.DocRead, ScopeType.DocWrite, ScopeType.SummaryWrite];\n\t\tconst resolved: IResolvedUrl = {\n\t\t\tendpoints: {\n\t\t\t\tdeltaStorageUrl: `http://localhost:3000/deltas/${this.tenantId}/${documentId}`,\n\t\t\t\tordererUrl: \"http://localhost:3000\",\n\t\t\t\tstorageUrl: `http://localhost:3000/repos/${this.tenantId}`,\n\t\t\t},\n\t\t\tid: documentId,\n\t\t\ttokens: { jwt: generateToken(this.tenantId, documentId, this.tokenKey, scopes) },\n\t\t\ttype: \"fluid\",\n\t\t\turl: `fluid-test://localhost:3000/${this.tenantId}/${fullPath}`,\n\t\t};\n\n\t\treturn resolved;\n\t}\n\n\tpublic async getAbsoluteUrl(resolvedUrl: IResolvedUrl, relativeUrl: string): Promise<string> {\n\t\tlet url = relativeUrl;\n\t\tif (url.startsWith(\"/\")) {\n\t\t\turl = url.substr(1);\n\t\t}\n\t\tconst parsedUrl = parse(resolvedUrl.url);\n\t\tif (parsedUrl.pathname === null) {\n\t\t\tthrow new Error(\"Url should contain tenant and docId!!\");\n\t\t}\n\t\tconst [, , documentId] = parsedUrl.pathname.split(\"/\");\n\t\tassert(!!documentId, 0x09a /* \"'documentId' must be a defined, non-zero length string.\" */);\n\n\t\treturn `http://localhost:3000/${documentId}/${url}`;\n\t}\n\n\tpublic createCreateNewRequest(documentId: string): IRequest {\n\t\treturn createLocalResolverCreateNewRequest(documentId);\n\t}\n}\n"]}
|
package/dist/localResolver.d.ts
CHANGED
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
import { IRequest } from "@fluidframework/core-interfaces";
|
|
6
6
|
import { IResolvedUrl, IUrlResolver } from "@fluidframework/driver-definitions";
|
|
7
7
|
/**
|
|
8
|
-
* @
|
|
8
|
+
* @alpha
|
|
9
9
|
*/
|
|
10
10
|
export declare function createLocalResolverCreateNewRequest(documentId: string): IRequest;
|
|
11
11
|
/**
|
|
12
12
|
* Resolves URLs by providing fake URLs which succeed with the other
|
|
13
13
|
* related local classes.
|
|
14
|
-
* @
|
|
14
|
+
* @alpha
|
|
15
15
|
*/
|
|
16
16
|
export declare class LocalResolver implements IUrlResolver {
|
|
17
17
|
private readonly tenantId;
|
|
@@ -3,13 +3,26 @@ import { IClient } from '@fluidframework/protocol-definitions';
|
|
|
3
3
|
import { ICreateBlobResponse } from '@fluidframework/protocol-definitions';
|
|
4
4
|
import { IDatabaseManager } from '@fluidframework/server-services-core';
|
|
5
5
|
import { IDb } from '@fluidframework/server-services-core';
|
|
6
|
+
import { IDocumentDeltaConnection } from '@fluidframework/driver-definitions';
|
|
7
|
+
import { IDocumentDeltaStorageService } from '@fluidframework/driver-definitions';
|
|
6
8
|
import { IDocumentMessage } from '@fluidframework/protocol-definitions';
|
|
9
|
+
import { IDocumentService } from '@fluidframework/driver-definitions';
|
|
10
|
+
import { IDocumentServiceFactory } from '@fluidframework/driver-definitions';
|
|
11
|
+
import { IDocumentServicePolicies } from '@fluidframework/driver-definitions';
|
|
12
|
+
import { IDocumentStorageService } from '@fluidframework/driver-definitions';
|
|
13
|
+
import { IDocumentStorageServicePolicies } from '@fluidframework/driver-definitions';
|
|
7
14
|
import { ILocalDeltaConnectionServer } from '@fluidframework/server-local-server';
|
|
15
|
+
import { IRequest } from '@fluidframework/core-interfaces';
|
|
16
|
+
import { IResolvedUrl } from '@fluidframework/driver-definitions';
|
|
8
17
|
import { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
|
|
9
18
|
import { ISnapshotTreeEx } from '@fluidframework/protocol-definitions';
|
|
19
|
+
import { IStream } from '@fluidframework/driver-definitions';
|
|
20
|
+
import { ISummaryContext } from '@fluidframework/driver-definitions';
|
|
10
21
|
import { ISummaryHandle } from '@fluidframework/protocol-definitions';
|
|
11
22
|
import { ISummaryTree } from '@fluidframework/protocol-definitions';
|
|
23
|
+
import { ITelemetryBaseLogger } from '@fluidframework/core-interfaces';
|
|
12
24
|
import { ITestDbFactory } from '@fluidframework/server-test-utils';
|
|
25
|
+
import { IUrlResolver } from '@fluidframework/driver-definitions';
|
|
13
26
|
import { IVersion } from '@fluidframework/protocol-definitions';
|
|
14
27
|
import { IWebSocketServer } from '@fluidframework/server-services-core';
|
|
15
28
|
import { NackErrorType } from '@fluidframework/protocol-definitions';
|
|
@@ -17,49 +30,78 @@ import type { Socket } from 'socket.io-client';
|
|
|
17
30
|
|
|
18
31
|
/* Excluded from this release type: createLocalDocumentService */
|
|
19
32
|
|
|
20
|
-
|
|
33
|
+
/**
|
|
34
|
+
* @alpha
|
|
35
|
+
*/
|
|
36
|
+
export declare function createLocalResolverCreateNewRequest(documentId: string): IRequest;
|
|
21
37
|
|
|
22
38
|
/* Excluded from this release type: DocumentDeltaConnection */
|
|
23
39
|
|
|
24
|
-
/* Excluded from this release type: IDocumentDeltaConnection */
|
|
25
|
-
|
|
26
|
-
/* Excluded from this release type: IDocumentDeltaStorageService */
|
|
27
|
-
|
|
28
|
-
/* Excluded from this release type: IDocumentService */
|
|
29
|
-
|
|
30
|
-
/* Excluded from this release type: IDocumentServiceFactory */
|
|
31
|
-
|
|
32
|
-
/* Excluded from this release type: IDocumentServicePolicies */
|
|
33
|
-
|
|
34
|
-
/* Excluded from this release type: IDocumentStorageService */
|
|
35
|
-
|
|
36
|
-
/* Excluded from this release type: IDocumentStorageServicePolicies */
|
|
37
|
-
|
|
38
|
-
/* Excluded from this release type: IRequest */
|
|
39
|
-
|
|
40
|
-
/* Excluded from this release type: IResolvedUrl */
|
|
41
|
-
|
|
42
|
-
/* Excluded from this release type: IStream */
|
|
43
|
-
|
|
44
|
-
/* Excluded from this release type: ISummaryContext */
|
|
45
|
-
|
|
46
|
-
/* Excluded from this release type: ITelemetryBaseLogger */
|
|
47
|
-
|
|
48
40
|
/* Excluded from this release type: ITokenProvider */
|
|
49
41
|
|
|
50
|
-
/* Excluded from this release type: IUrlResolver */
|
|
51
|
-
|
|
52
42
|
/* Excluded from this release type: LocalDeltaStorageService */
|
|
53
43
|
|
|
54
44
|
/* Excluded from this release type: LocalDocumentDeltaConnection */
|
|
55
45
|
|
|
56
46
|
/* Excluded from this release type: LocalDocumentService */
|
|
57
47
|
|
|
58
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Implementation of document service factory for local use.
|
|
50
|
+
* @alpha
|
|
51
|
+
*/
|
|
52
|
+
export declare class LocalDocumentServiceFactory implements IDocumentServiceFactory {
|
|
53
|
+
private readonly localDeltaConnectionServer;
|
|
54
|
+
private readonly policies?;
|
|
55
|
+
private readonly innerDocumentService?;
|
|
56
|
+
private readonly documentDeltaConnectionsMap;
|
|
57
|
+
/**
|
|
58
|
+
* @param localDeltaConnectionServer - delta connection server for ops
|
|
59
|
+
*/
|
|
60
|
+
constructor(localDeltaConnectionServer: ILocalDeltaConnectionServer, policies?: IDocumentServicePolicies | undefined, innerDocumentService?: IDocumentService | undefined);
|
|
61
|
+
createContainer(createNewSummary: ISummaryTree | undefined, resolvedUrl: IResolvedUrl, logger?: ITelemetryBaseLogger, clientIsSummarizer?: boolean): Promise<IDocumentService>;
|
|
62
|
+
/**
|
|
63
|
+
* Creates and returns a document service for testing using the given resolved
|
|
64
|
+
* URL for the tenant ID, document ID, and token.
|
|
65
|
+
* @param resolvedUrl - resolved URL of document
|
|
66
|
+
*/
|
|
67
|
+
createDocumentService(resolvedUrl: IResolvedUrl, logger?: ITelemetryBaseLogger, clientIsSummarizer?: boolean): Promise<IDocumentService>;
|
|
68
|
+
/**
|
|
69
|
+
* Gets the document delta connection for the clientId and asks it to disconnect the client.
|
|
70
|
+
* @param clientId - The ID of the client to be disconnected.
|
|
71
|
+
* @param disconnectReason - The reason of the disconnection.
|
|
72
|
+
*/
|
|
73
|
+
disconnectClient(clientId: string, disconnectReason: string): void;
|
|
74
|
+
/**
|
|
75
|
+
* Gets the document delta connection for the clientId and asks it to nack the client.
|
|
76
|
+
* @param clientId - The ID of the client to be Nack'd.
|
|
77
|
+
* @param code - An error code number that represents the error. It will be a valid HTTP error code.
|
|
78
|
+
* @param type - Type of the Nack.
|
|
79
|
+
* @param message - A message about the nack for debugging/logging/telemetry purposes.
|
|
80
|
+
*/
|
|
81
|
+
nackClient(clientId: string, code?: number, type?: NackErrorType, message?: any): void;
|
|
82
|
+
}
|
|
59
83
|
|
|
60
84
|
/* Excluded from this release type: LocalDocumentStorageService */
|
|
61
85
|
|
|
62
|
-
|
|
86
|
+
/**
|
|
87
|
+
* Resolves URLs by providing fake URLs which succeed with the other
|
|
88
|
+
* related local classes.
|
|
89
|
+
* @alpha
|
|
90
|
+
*/
|
|
91
|
+
export declare class LocalResolver implements IUrlResolver {
|
|
92
|
+
private readonly tenantId;
|
|
93
|
+
private readonly tokenKey;
|
|
94
|
+
constructor();
|
|
95
|
+
/**
|
|
96
|
+
* Resolves URL requests by providing fake URLs with an actually generated
|
|
97
|
+
* token from constant test strings. The root of the URL is fake, but the
|
|
98
|
+
* remaining relative URL can still be parsed.
|
|
99
|
+
* @param request - request to handle
|
|
100
|
+
*/
|
|
101
|
+
resolve(request: IRequest): Promise<IResolvedUrl>;
|
|
102
|
+
getAbsoluteUrl(resolvedUrl: IResolvedUrl, relativeUrl: string): Promise<string>;
|
|
103
|
+
createCreateNewRequest(documentId: string): IRequest;
|
|
104
|
+
}
|
|
63
105
|
|
|
64
106
|
/* Excluded from this release type: LocalSessionStorageDbFactory */
|
|
65
107
|
|
|
@@ -41,7 +41,7 @@ import type { Socket } from 'socket.io-client';
|
|
|
41
41
|
export declare function createLocalDocumentService(resolvedUrl: IResolvedUrl, localDeltaConnectionServer: ILocalDeltaConnectionServer, tokenProvider: ITokenProvider, tenantId: string, documentId: string, documentDeltaConnectionsMap: Map<string, LocalDocumentDeltaConnection>, policies?: IDocumentServicePolicies, innerDocumentService?: IDocumentService, logger?: ITelemetryBaseLogger): IDocumentService;
|
|
42
42
|
|
|
43
43
|
/**
|
|
44
|
-
* @
|
|
44
|
+
* @alpha
|
|
45
45
|
*/
|
|
46
46
|
export declare function createLocalResolverCreateNewRequest(documentId: string): IRequest;
|
|
47
47
|
|
|
@@ -136,7 +136,7 @@ export declare class LocalDocumentService implements IDocumentService {
|
|
|
136
136
|
|
|
137
137
|
/**
|
|
138
138
|
* Implementation of document service factory for local use.
|
|
139
|
-
* @
|
|
139
|
+
* @alpha
|
|
140
140
|
*/
|
|
141
141
|
export declare class LocalDocumentServiceFactory implements IDocumentServiceFactory {
|
|
142
142
|
private readonly localDeltaConnectionServer;
|
|
@@ -195,7 +195,7 @@ export declare class LocalDocumentStorageService implements IDocumentStorageServ
|
|
|
195
195
|
/**
|
|
196
196
|
* Resolves URLs by providing fake URLs which succeed with the other
|
|
197
197
|
* related local classes.
|
|
198
|
-
* @
|
|
198
|
+
* @alpha
|
|
199
199
|
*/
|
|
200
200
|
export declare class LocalResolver implements IUrlResolver {
|
|
201
201
|
private readonly tenantId;
|
|
@@ -8,7 +8,7 @@ import { ILocalDeltaConnectionServer } from "@fluidframework/server-local-server
|
|
|
8
8
|
import { ISummaryTree, NackErrorType } from "@fluidframework/protocol-definitions";
|
|
9
9
|
/**
|
|
10
10
|
* Implementation of document service factory for local use.
|
|
11
|
-
* @
|
|
11
|
+
* @alpha
|
|
12
12
|
*/
|
|
13
13
|
export declare class LocalDocumentServiceFactory implements IDocumentServiceFactory {
|
|
14
14
|
private readonly localDeltaConnectionServer;
|
|
@@ -8,7 +8,7 @@ import { createLocalDocumentService } from "./localDocumentService.mjs";
|
|
|
8
8
|
import { createDocument } from "./localCreateDocument.mjs";
|
|
9
9
|
/**
|
|
10
10
|
* Implementation of document service factory for local use.
|
|
11
|
-
* @
|
|
11
|
+
* @alpha
|
|
12
12
|
*/
|
|
13
13
|
export class LocalDocumentServiceFactory {
|
|
14
14
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localDocumentServiceFactory.mjs","sourceRoot":"","sources":["../src/localDocumentServiceFactory.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { parse } from \"url\";\nimport {\n\tIDocumentService,\n\tIDocumentServiceFactory,\n\tIDocumentServicePolicies,\n\tIResolvedUrl,\n} from \"@fluidframework/driver-definitions\";\nimport { ITelemetryBaseLogger } from \"@fluidframework/core-interfaces\";\nimport { DefaultTokenProvider } from \"@fluidframework/routerlicious-driver\";\nimport { ILocalDeltaConnectionServer } from \"@fluidframework/server-local-server\";\nimport { ISummaryTree, NackErrorType } from \"@fluidframework/protocol-definitions\";\nimport { LocalDocumentDeltaConnection } from \"./localDocumentDeltaConnection\";\nimport { createLocalDocumentService } from \"./localDocumentService\";\nimport { createDocument } from \"./localCreateDocument\";\n\n/**\n * Implementation of document service factory for local use.\n * @
|
|
1
|
+
{"version":3,"file":"localDocumentServiceFactory.mjs","sourceRoot":"","sources":["../src/localDocumentServiceFactory.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { parse } from \"url\";\nimport {\n\tIDocumentService,\n\tIDocumentServiceFactory,\n\tIDocumentServicePolicies,\n\tIResolvedUrl,\n} from \"@fluidframework/driver-definitions\";\nimport { ITelemetryBaseLogger } from \"@fluidframework/core-interfaces\";\nimport { DefaultTokenProvider } from \"@fluidframework/routerlicious-driver\";\nimport { ILocalDeltaConnectionServer } from \"@fluidframework/server-local-server\";\nimport { ISummaryTree, NackErrorType } from \"@fluidframework/protocol-definitions\";\nimport { LocalDocumentDeltaConnection } from \"./localDocumentDeltaConnection\";\nimport { createLocalDocumentService } from \"./localDocumentService\";\nimport { createDocument } from \"./localCreateDocument\";\n\n/**\n * Implementation of document service factory for local use.\n * @alpha\n */\nexport class LocalDocumentServiceFactory implements IDocumentServiceFactory {\n\t// A map of clientId to LocalDocumentService.\n\tprivate readonly documentDeltaConnectionsMap: Map<string, LocalDocumentDeltaConnection> =\n\t\tnew Map();\n\n\t/**\n\t * @param localDeltaConnectionServer - delta connection server for ops\n\t */\n\tconstructor(\n\t\tprivate readonly localDeltaConnectionServer: ILocalDeltaConnectionServer,\n\t\tprivate readonly policies?: IDocumentServicePolicies,\n\t\tprivate readonly innerDocumentService?: IDocumentService,\n\t) {}\n\n\tpublic async createContainer(\n\t\tcreateNewSummary: ISummaryTree | undefined,\n\t\tresolvedUrl: IResolvedUrl,\n\t\tlogger?: ITelemetryBaseLogger,\n\t\tclientIsSummarizer?: boolean,\n\t): Promise<IDocumentService> {\n\t\tif (!this.localDeltaConnectionServer) {\n\t\t\tthrow new Error(\"Provide the localDeltaConnectionServer!!\");\n\t\t}\n\t\tif (createNewSummary !== undefined) {\n\t\t\tawait createDocument(this.localDeltaConnectionServer, resolvedUrl, createNewSummary);\n\t\t}\n\t\treturn this.createDocumentService(resolvedUrl, logger, clientIsSummarizer);\n\t}\n\n\t/**\n\t * Creates and returns a document service for testing using the given resolved\n\t * URL for the tenant ID, document ID, and token.\n\t * @param resolvedUrl - resolved URL of document\n\t */\n\tpublic async createDocumentService(\n\t\tresolvedUrl: IResolvedUrl,\n\t\tlogger?: ITelemetryBaseLogger,\n\t\tclientIsSummarizer?: boolean,\n\t): Promise<IDocumentService> {\n\t\tconst parsedUrl = parse(resolvedUrl.url);\n\t\tconst [, tenantId, documentId] = parsedUrl.path ? parsedUrl.path.split(\"/\") : [];\n\t\tif (!documentId || !tenantId) {\n\t\t\tthrow new Error(\n\t\t\t\t`Couldn't parse resolved url. [documentId:${documentId}][tenantId:${tenantId}]`,\n\t\t\t);\n\t\t}\n\n\t\tconst fluidResolvedUrl = resolvedUrl;\n\t\tconst jwtToken = fluidResolvedUrl.tokens.jwt;\n\t\tif (!jwtToken) {\n\t\t\tthrow new Error(`Token was not provided.`);\n\t\t}\n\n\t\tconst tokenProvider = new DefaultTokenProvider(jwtToken);\n\n\t\treturn createLocalDocumentService(\n\t\t\tresolvedUrl,\n\t\t\tthis.localDeltaConnectionServer,\n\t\t\ttokenProvider,\n\t\t\ttenantId,\n\t\t\tdocumentId,\n\t\t\tthis.documentDeltaConnectionsMap,\n\t\t\tthis.policies,\n\t\t\tthis.innerDocumentService,\n\t\t\tlogger,\n\t\t);\n\t}\n\n\t/**\n\t * Gets the document delta connection for the clientId and asks it to disconnect the client.\n\t * @param clientId - The ID of the client to be disconnected.\n\t * @param disconnectReason - The reason of the disconnection.\n\t */\n\tpublic disconnectClient(clientId: string, disconnectReason: string) {\n\t\tconst documentDeltaConnection = this.documentDeltaConnectionsMap.get(clientId);\n\t\tif (documentDeltaConnection === undefined) {\n\t\t\tthrow new Error(`No client with the id: ${clientId}`);\n\t\t}\n\t\tdocumentDeltaConnection.disconnectClient(disconnectReason);\n\t}\n\n\t/**\n\t * Gets the document delta connection for the clientId and asks it to nack the client.\n\t * @param clientId - The ID of the client to be Nack'd.\n\t * @param code - An error code number that represents the error. It will be a valid HTTP error code.\n\t * @param type - Type of the Nack.\n\t * @param message - A message about the nack for debugging/logging/telemetry purposes.\n\t */\n\tpublic nackClient(clientId: string, code?: number, type?: NackErrorType, message?: any) {\n\t\tconst documentDeltaConnection = this.documentDeltaConnectionsMap.get(clientId);\n\t\tif (documentDeltaConnection === undefined) {\n\t\t\tthrow new Error(`No client with the id: ${clientId}`);\n\t\t}\n\t\tdocumentDeltaConnection.nackClient(code, type, message);\n\t}\n}\n"]}
|
package/lib/localResolver.d.ts
CHANGED
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
import { IRequest } from "@fluidframework/core-interfaces";
|
|
6
6
|
import { IResolvedUrl, IUrlResolver } from "@fluidframework/driver-definitions";
|
|
7
7
|
/**
|
|
8
|
-
* @
|
|
8
|
+
* @alpha
|
|
9
9
|
*/
|
|
10
10
|
export declare function createLocalResolverCreateNewRequest(documentId: string): IRequest;
|
|
11
11
|
/**
|
|
12
12
|
* Resolves URLs by providing fake URLs which succeed with the other
|
|
13
13
|
* related local classes.
|
|
14
|
-
* @
|
|
14
|
+
* @alpha
|
|
15
15
|
*/
|
|
16
16
|
export declare class LocalResolver implements IUrlResolver {
|
|
17
17
|
private readonly tenantId;
|
package/lib/localResolver.mjs
CHANGED
|
@@ -8,7 +8,7 @@ import { DriverHeader } from "@fluidframework/driver-definitions";
|
|
|
8
8
|
import { ScopeType } from "@fluidframework/protocol-definitions";
|
|
9
9
|
import { generateToken } from "./auth.mjs";
|
|
10
10
|
/**
|
|
11
|
-
* @
|
|
11
|
+
* @alpha
|
|
12
12
|
*/
|
|
13
13
|
export function createLocalResolverCreateNewRequest(documentId) {
|
|
14
14
|
const createNewRequest = {
|
|
@@ -22,7 +22,7 @@ export function createLocalResolverCreateNewRequest(documentId) {
|
|
|
22
22
|
/**
|
|
23
23
|
* Resolves URLs by providing fake URLs which succeed with the other
|
|
24
24
|
* related local classes.
|
|
25
|
-
* @
|
|
25
|
+
* @alpha
|
|
26
26
|
*/
|
|
27
27
|
export class LocalResolver {
|
|
28
28
|
constructor() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localResolver.mjs","sourceRoot":"","sources":["../src/localResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;OAEI,EAAE,KAAK,EAAE,MAAM,KAAK;OACpB,EAAE,MAAM,EAAE,MAAM,4BAA4B;OAE5C,EAA8B,YAAY,EAAE,MAAM,oCAAoC;OACtF,EAAE,SAAS,EAAE,MAAM,sCAAsC;OACzD,EAAE,aAAa,EAAE;AAExB;;GAEG;AACH,MAAM,UAAU,mCAAmC,CAAC,UAAkB;IACrE,MAAM,gBAAgB,GAAa;QAClC,GAAG,EAAE,yBAAyB,UAAU,EAAE;QAC1C,OAAO,EAAE;YACR,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,IAAI;SAC9B;KACD,CAAC;IACF,OAAO,gBAAgB,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,aAAa;IAIzB;QAHiB,aAAQ,GAAG,UAAU,CAAC;QACtB,aAAQ,GAAG,UAAU,CAAC;IAExB,CAAC;IAEhB;;;;;OAKG;IACI,KAAK,CAAC,OAAO,CAAC,OAAiB;QACrC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QACtE,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;QAC/E,MAAM,QAAQ,GAAiB;YAC9B,SAAS,EAAE;gBACV,eAAe,EAAE,gCAAgC,IAAI,CAAC,QAAQ,IAAI,UAAU,EAAE;gBAC9E,UAAU,EAAE,uBAAuB;gBACnC,UAAU,EAAE,+BAA+B,IAAI,CAAC,QAAQ,EAAE;aAC1D;YACD,EAAE,EAAE,UAAU;YACd,MAAM,EAAE,EAAE,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;YAChF,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,+BAA+B,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAAE;SAC/D,CAAC;QAEF,OAAO,QAAQ,CAAC;IACjB,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,WAAyB,EAAE,WAAmB;QACzE,IAAI,GAAG,GAAG,WAAW,CAAC;QACtB,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACxB,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACpB;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;SACzD;QACD,MAAM,CAAC,EAAE,AAAD,EAAG,UAAU,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvD,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,+DAA+D,CAAC,CAAC;QAE5F,OAAO,yBAAyB,UAAU,IAAI,GAAG,EAAE,CAAC;IACrD,CAAC;IAEM,sBAAsB,CAAC,UAAkB;QAC/C,OAAO,mCAAmC,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;CACD","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { parse } from \"url\";\nimport { assert } from \"@fluidframework/core-utils\";\nimport { IRequest } from \"@fluidframework/core-interfaces\";\nimport { IResolvedUrl, IUrlResolver, DriverHeader } from \"@fluidframework/driver-definitions\";\nimport { ScopeType } from \"@fluidframework/protocol-definitions\";\nimport { generateToken } from \"./auth\";\n\n/**\n * @
|
|
1
|
+
{"version":3,"file":"localResolver.mjs","sourceRoot":"","sources":["../src/localResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;OAEI,EAAE,KAAK,EAAE,MAAM,KAAK;OACpB,EAAE,MAAM,EAAE,MAAM,4BAA4B;OAE5C,EAA8B,YAAY,EAAE,MAAM,oCAAoC;OACtF,EAAE,SAAS,EAAE,MAAM,sCAAsC;OACzD,EAAE,aAAa,EAAE;AAExB;;GAEG;AACH,MAAM,UAAU,mCAAmC,CAAC,UAAkB;IACrE,MAAM,gBAAgB,GAAa;QAClC,GAAG,EAAE,yBAAyB,UAAU,EAAE;QAC1C,OAAO,EAAE;YACR,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,IAAI;SAC9B;KACD,CAAC;IACF,OAAO,gBAAgB,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,aAAa;IAIzB;QAHiB,aAAQ,GAAG,UAAU,CAAC;QACtB,aAAQ,GAAG,UAAU,CAAC;IAExB,CAAC;IAEhB;;;;;OAKG;IACI,KAAK,CAAC,OAAO,CAAC,OAAiB;QACrC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QACtE,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;QAC/E,MAAM,QAAQ,GAAiB;YAC9B,SAAS,EAAE;gBACV,eAAe,EAAE,gCAAgC,IAAI,CAAC,QAAQ,IAAI,UAAU,EAAE;gBAC9E,UAAU,EAAE,uBAAuB;gBACnC,UAAU,EAAE,+BAA+B,IAAI,CAAC,QAAQ,EAAE;aAC1D;YACD,EAAE,EAAE,UAAU;YACd,MAAM,EAAE,EAAE,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;YAChF,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,+BAA+B,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAAE;SAC/D,CAAC;QAEF,OAAO,QAAQ,CAAC;IACjB,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,WAAyB,EAAE,WAAmB;QACzE,IAAI,GAAG,GAAG,WAAW,CAAC;QACtB,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACxB,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACpB;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;SACzD;QACD,MAAM,CAAC,EAAE,AAAD,EAAG,UAAU,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvD,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,+DAA+D,CAAC,CAAC;QAE5F,OAAO,yBAAyB,UAAU,IAAI,GAAG,EAAE,CAAC;IACrD,CAAC;IAEM,sBAAsB,CAAC,UAAkB;QAC/C,OAAO,mCAAmC,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;CACD","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { parse } from \"url\";\nimport { assert } from \"@fluidframework/core-utils\";\nimport { IRequest } from \"@fluidframework/core-interfaces\";\nimport { IResolvedUrl, IUrlResolver, DriverHeader } from \"@fluidframework/driver-definitions\";\nimport { ScopeType } from \"@fluidframework/protocol-definitions\";\nimport { generateToken } from \"./auth\";\n\n/**\n * @alpha\n */\nexport function createLocalResolverCreateNewRequest(documentId: string): IRequest {\n\tconst createNewRequest: IRequest = {\n\t\turl: `http://localhost:3000/${documentId}`,\n\t\theaders: {\n\t\t\t[DriverHeader.createNew]: true,\n\t\t},\n\t};\n\treturn createNewRequest;\n}\n\n/**\n * Resolves URLs by providing fake URLs which succeed with the other\n * related local classes.\n * @alpha\n */\nexport class LocalResolver implements IUrlResolver {\n\tprivate readonly tenantId = \"tenantId\";\n\tprivate readonly tokenKey = \"tokenKey\";\n\n\tconstructor() {}\n\n\t/**\n\t * Resolves URL requests by providing fake URLs with an actually generated\n\t * token from constant test strings. The root of the URL is fake, but the\n\t * remaining relative URL can still be parsed.\n\t * @param request - request to handle\n\t */\n\tpublic async resolve(request: IRequest): Promise<IResolvedUrl> {\n\t\tconst parsedUrl = new URL(request.url);\n\t\tconst fullPath = `${parsedUrl.pathname.substr(1)}${parsedUrl.search}`;\n\t\tconst documentId = fullPath.split(\"/\")[0];\n\t\tconst scopes = [ScopeType.DocRead, ScopeType.DocWrite, ScopeType.SummaryWrite];\n\t\tconst resolved: IResolvedUrl = {\n\t\t\tendpoints: {\n\t\t\t\tdeltaStorageUrl: `http://localhost:3000/deltas/${this.tenantId}/${documentId}`,\n\t\t\t\tordererUrl: \"http://localhost:3000\",\n\t\t\t\tstorageUrl: `http://localhost:3000/repos/${this.tenantId}`,\n\t\t\t},\n\t\t\tid: documentId,\n\t\t\ttokens: { jwt: generateToken(this.tenantId, documentId, this.tokenKey, scopes) },\n\t\t\ttype: \"fluid\",\n\t\t\turl: `fluid-test://localhost:3000/${this.tenantId}/${fullPath}`,\n\t\t};\n\n\t\treturn resolved;\n\t}\n\n\tpublic async getAbsoluteUrl(resolvedUrl: IResolvedUrl, relativeUrl: string): Promise<string> {\n\t\tlet url = relativeUrl;\n\t\tif (url.startsWith(\"/\")) {\n\t\t\turl = url.substr(1);\n\t\t}\n\t\tconst parsedUrl = parse(resolvedUrl.url);\n\t\tif (parsedUrl.pathname === null) {\n\t\t\tthrow new Error(\"Url should contain tenant and docId!!\");\n\t\t}\n\t\tconst [, , documentId] = parsedUrl.pathname.split(\"/\");\n\t\tassert(!!documentId, 0x09a /* \"'documentId' must be a defined, non-zero length string.\" */);\n\n\t\treturn `http://localhost:3000/${documentId}/${url}`;\n\t}\n\n\tpublic createCreateNewRequest(documentId: string): IRequest {\n\t\treturn createLocalResolverCreateNewRequest(documentId);\n\t}\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/local-driver",
|
|
3
|
-
"version": "2.0.0-dev.7.4.0.
|
|
3
|
+
"version": "2.0.0-dev.7.4.0.217884",
|
|
4
4
|
"description": "Fluid local driver",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -49,20 +49,20 @@
|
|
|
49
49
|
"temp-directory": "nyc/.nyc_output"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@fluid-internal/client-utils": "2.0.0-dev.7.4.0.
|
|
53
|
-
"@fluidframework/core-interfaces": "2.0.0-dev.7.4.0.
|
|
54
|
-
"@fluidframework/core-utils": "2.0.0-dev.7.4.0.
|
|
55
|
-
"@fluidframework/driver-base": "2.0.0-dev.7.4.0.
|
|
56
|
-
"@fluidframework/driver-definitions": "2.0.0-dev.7.4.0.
|
|
57
|
-
"@fluidframework/driver-utils": "2.0.0-dev.7.4.0.
|
|
52
|
+
"@fluid-internal/client-utils": "2.0.0-dev.7.4.0.217884",
|
|
53
|
+
"@fluidframework/core-interfaces": "2.0.0-dev.7.4.0.217884",
|
|
54
|
+
"@fluidframework/core-utils": "2.0.0-dev.7.4.0.217884",
|
|
55
|
+
"@fluidframework/driver-base": "2.0.0-dev.7.4.0.217884",
|
|
56
|
+
"@fluidframework/driver-definitions": "2.0.0-dev.7.4.0.217884",
|
|
57
|
+
"@fluidframework/driver-utils": "2.0.0-dev.7.4.0.217884",
|
|
58
58
|
"@fluidframework/protocol-base": "^2.0.1",
|
|
59
59
|
"@fluidframework/protocol-definitions": "^3.0.0",
|
|
60
|
-
"@fluidframework/routerlicious-driver": "2.0.0-dev.7.4.0.
|
|
60
|
+
"@fluidframework/routerlicious-driver": "2.0.0-dev.7.4.0.217884",
|
|
61
61
|
"@fluidframework/server-local-server": "^2.0.1",
|
|
62
62
|
"@fluidframework/server-services-client": "^2.0.1",
|
|
63
63
|
"@fluidframework/server-services-core": "^2.0.1",
|
|
64
64
|
"@fluidframework/server-test-utils": "^2.0.1",
|
|
65
|
-
"@fluidframework/telemetry-utils": "2.0.0-dev.7.4.0.
|
|
65
|
+
"@fluidframework/telemetry-utils": "2.0.0-dev.7.4.0.217884",
|
|
66
66
|
"events": "^3.1.0",
|
|
67
67
|
"jsrsasign": "^10.5.25",
|
|
68
68
|
"url": "^0.11.0",
|
|
@@ -74,11 +74,11 @@
|
|
|
74
74
|
"@fluidframework/build-tools": "^0.28.0",
|
|
75
75
|
"@fluidframework/eslint-config-fluid": "^3.1.0",
|
|
76
76
|
"@fluidframework/local-driver-previous": "npm:@fluidframework/local-driver@2.0.0-internal.7.2.0",
|
|
77
|
-
"@fluidframework/mocha-test-setup": "2.0.0-dev.7.4.0.
|
|
77
|
+
"@fluidframework/mocha-test-setup": "2.0.0-dev.7.4.0.217884",
|
|
78
78
|
"@microsoft/api-extractor": "^7.38.3",
|
|
79
79
|
"@types/jsrsasign": "^8.0.8",
|
|
80
80
|
"@types/mocha": "^9.1.1",
|
|
81
|
-
"@types/node": "^
|
|
81
|
+
"@types/node": "^18.19.0",
|
|
82
82
|
"@types/uuid": "^9.0.2",
|
|
83
83
|
"c8": "^7.7.1",
|
|
84
84
|
"copyfiles": "^2.4.1",
|
|
@@ -20,7 +20,7 @@ import { createDocument } from "./localCreateDocument";
|
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* Implementation of document service factory for local use.
|
|
23
|
-
* @
|
|
23
|
+
* @alpha
|
|
24
24
|
*/
|
|
25
25
|
export class LocalDocumentServiceFactory implements IDocumentServiceFactory {
|
|
26
26
|
// A map of clientId to LocalDocumentService.
|
package/src/localResolver.ts
CHANGED
|
@@ -11,7 +11,7 @@ import { ScopeType } from "@fluidframework/protocol-definitions";
|
|
|
11
11
|
import { generateToken } from "./auth";
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
|
-
* @
|
|
14
|
+
* @alpha
|
|
15
15
|
*/
|
|
16
16
|
export function createLocalResolverCreateNewRequest(documentId: string): IRequest {
|
|
17
17
|
const createNewRequest: IRequest = {
|
|
@@ -26,7 +26,7 @@ export function createLocalResolverCreateNewRequest(documentId: string): IReques
|
|
|
26
26
|
/**
|
|
27
27
|
* Resolves URLs by providing fake URLs which succeed with the other
|
|
28
28
|
* related local classes.
|
|
29
|
-
* @
|
|
29
|
+
* @alpha
|
|
30
30
|
*/
|
|
31
31
|
export class LocalResolver implements IUrlResolver {
|
|
32
32
|
private readonly tenantId = "tenantId";
|